After using the Ctrl + "arrow keys" for 13 years to switch virtual desktops in X windows, I've been convinced recently to change to using the Super keys instead (the windows key and the context menu key, which I've remapped). This all works fine for the most part. However, something is still picking up the key events that these keys are sending as if they are a normal alphanumeric like key.
For example, I first noticed this in Google Docs spreadsheet that if I press the windows key alone over top of a cell, that it starts editing that cell. It doesn't insert anything, it just sends a key event that Firefox sees and starts editing the cell. This caused problems on a collaborative document I was working on as the way Google docs works, it led to me accidentally erasing the data in a few fields before I realised what was going on.
I like using the super keys, but I want them to behave more like a Ctrl or Alt key does in that its a modifier key and doesn't send anything until a second key is pressed.
My setup is the following:
- Ubuntu 10.10
- XFCE 4
- Microsoft Natural Ergo 4000 keyboard (with the logo scratched out of course)
- The following is my .Xmodmap file:
remove Lock = Caps_Lock
keycode 66 = Escape
! The below maps my other windows context menu key.
keycode 135 = Super_R
Edit: As requested, here is the relevant output from xev for a keypress and keyrelease of my Super_L (left windows key)
KeyPress event, serial 34, synthetic NO, window 0x8200001,
root 0x15d, subw 0x0, time 2428849342, (177,174), root:(182,228),
state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 34, synthetic NO, window 0x8200001,
root 0x15d, subw 0x0, time 2428849430, (177,174), root:(182,228),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Best Answer
Non XFCE-related stuff
It won't be exactly an answer to your problem, sorry for that, but still should be useful for someone at least. In Gnome it was fixed in recent Ubuntus. By it I mean treating Win not as a modifier key. In the old days, e.g. in Ubuntu 9.04, you had to do following change:
Go to
System -> Preferences -> Keyboard
, underLayouts
tab clickLayout options...
button and inAlt/Win key behavior
list chooseMeta is mapped to Win keys
(orMeta is mapped to Left Win
) instead ofDefault
.What it really does? Changes
altwin
option in$HOME/.gconf/desktop/gnome/peripherals/keyboard/kbd/%gconf.xml
file (or creates it if it does not exist):If you've chosen
Left Win
, then there will be following string value:In Ubuntu 10.10 it's not needed as
Default
apparently has changed.But you have XFCE, not Gnome, so this rather won't help you.
XFCE-related stuff
I've downloaded Xubuntu (9.10), played with it a bit and finally found a solution.
Firstly, though, I must say that keyboard settings are really screwed in XFCE. In
Settings -> Keyboard
underLayout
tab you don't have too many options. You cannot changeXkbOptions
there and even if you do it manually in~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml
, it will be overwritten. So I've changed/etc/default/console-setup
by addingaltwin:meta_win
toXKBOPTIONS
(use comma as separator if there are some other option(s) already). Still, no luck.tl;dr
What's the solution?
Do not care about XFCE way of handling keyboard, because it's apparently broken. Use
setxkbmap
directly:(or
left_meta_win
, whatever you prefer)Now you have to check that it really solved your problem. :)
How to apply it permanently?
It can be also done for all users by writing to
/etc/X11/Xkbmap
instead.How can I quickly check if
altwin:meta_win
oraltwin:left_meta_win
has been applied?Line with
xkb_symbols
should have something likealtwin(meta_win)
.