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
, under Layouts
tab click Layout options...
button and in Alt/Win key behavior
list choose Meta is mapped to Win keys
(or Meta is mapped to Left Win
) instead of Default
.
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):
<?xml version="1.0"?>
<gconf>
<entry name="options" mtime="1298496603" type="list" ltype="string">
<li type="string">
<stringvalue>altwin altwin:meta_win</stringvalue>
</li>
</entry>
</gconf>
If you've chosen Left Win
, then there will be following string value:
altwin altwin:left_meta_win
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
under Layout
tab you don't have too many options. You cannot change XkbOptions
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 adding altwin:meta_win
to XKBOPTIONS
(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:
setxkbmap -option altwin:meta_win
(or left_meta_win
, whatever you prefer)
Now you have to check that it really solved your problem. :)
How to apply it permanently?
echo -option altwin:meta_win >>~/.Xkbmap
It can be also done for all users by writing to /etc/X11/Xkbmap
instead.
How can I quickly check if altwin:meta_win
or altwin:left_meta_win
has been applied?
setxkbmap -print
Line with xkb_symbols
should have something like altwin(meta_win)
.
Press Fn + Caps
This will toggle the Fn key so that F-keys are the default.
You may need to install/update the "Trackpad Settings" app and install all your Windows Updates -- I think this keyboard shortcut may have came in a recent update.
Also, I beleive this fix currently only works with Surface Pro + Type Cover. Please post a comment if you can confirm it works on others combos (RT, Touch Cover)...
Enjoy! :D
Best Answer
Apparently the FN key is not handled by the Windows keyboard driver, but rather by drivers developed by Lenovo. Hence remapping of the FN key is impossible by any Windows utility that switches keys, because the Fn key doesn't generate any scan-codes.
Apparently Lenovo is currently considering a modification to the BIOS that will make this possible. See this article: "Switch Mode for Fn/Ctrl Keys".
In conclusion you should (1) regard your BIOS to see if such an option already exists, and if not (2) check the Lenovo site for BIOS upgrades from time to time (just note that BIOS upgrades need to be done very very carefully, since a mistake means bricking your computer).
In the meantime, you can use this solution (just joking):