VirtualBox

Opened 4 years ago

Closed 4 years ago

#20216 closed defect (invalid)

Meta key in X.org guest not repeating on Windows 10 host

Reported by: anrxc Owned by:
Component: guest additions/x11/graphics Version: VirtualBox 6.1.16
Keywords: meta, alt, emacs Cc:
Guest type: Linux Host type: other

Description

In terminal emulators, in Emacs, and in GTK applications when gtk-key-theme-name=Emacs is used the meta key (Escape and/or left Alt) can be used to quickly navigate the command line or text and source code. Meta+f will go one word forward, Meta+b one word backwards etc.

In a Linux console and in a native Linux desktop environment if you wanted to move 3 words forward you could press: Meta+f ... f ... f. But in a VirtualBox guest on my Windows 10 host you must press: Meta+f Meta+f Meta+f.

The meta key does not repeat. Instead it inserts an "f" into the text for each subsequent press.

Another example, if you wanted to cycle through irssi chat windows you cannot press Meta+2 then 3, then 4... you have to press Meta+2 Meta+3 Meta+4 to cycle to each window.

This destroys productivity completely and is incredibly frustrating! Last two decades I developed muscle memory and various techniques to manipulate systems and code quickly, and now it's all useless.

Before X.org is started the meta key shortcuts behave as they should on the console/terminal, for example Meta+f ... f ... f just works, but when X.org is started they do not.

If you are an experienced Linux user and know exactly what I'm talking about, the type of shortcuts I'm talking about, and if you wanted to reproduce this issue then first remember that Alt is seemingly some kind of a reserved key on a Windows host. You need an Xmodmap such as this to assign it like it behaves typically on native Linux desktops:

$ cat ~/.Xmodmap

! Swap Esc and Alt under VirtualBox guest
! - Todo: unreliable in VirtualBox guest, sometimes must be 
!         ran 2-3 times, open a separate report about this
!
remove mod1 = Alt_L
keysym Escape = Alt_L
keysym Alt_L = Escape
add mod1 = Alt_L

$ xmodmap ~/.Xmodmap

Extra information,

Host Windows 10 19042 virtualbox extension pack 6.1.16r140961

Guest Arch Linux virtualbox-guest-utils 6.1.16 xorg-server 1.20.10 xf86-input-libinput 0.30.0 libinput 1.16.4

X.org configuration:

Section "InputClass"
    Identifier      "keyboard"
    MatchIsKeyboard "on"
    Option     "XkbLayout"   "hr,us"
    # XkbOptions list: /usr/share/X11/xkb/rules/base.lst
    Option     "XkbOptions"  "grp:shifts_toggle,terminate:ctrl_alt_bksp"
EndSection

Change History (2)

comment:1 by anrxc, 4 years ago

This was user error. Please close the issue.

For the first time in many years I used Xterm instead of Urxvt. But Xterm by default does not behave the same. This must be set in ~/.Xdefaults:

xterm*metaSendsEscape: true

comment:2 by janitor, 4 years ago

Resolution: invalid
Status: newclosed

Thanks for the update.

Note: See TracTickets for help on using tickets.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette