13 年来,我一直使用Ctrl+“箭头键”在 X windows 中切换虚拟桌面,最近我决定改用 Super 键(windows 键和上下文菜单键,我已重新映射)。这在大多数情况下都运行良好。但是,某些东西仍然会拾取这些键发送的按键事件,就好像它们是普通的字母数字键一样。
例如,我第一次在 Google Docs 电子表格中注意到这一点,如果我单独按下单元格上方的 Windows 键,它就会开始编辑该单元格。它不会插入任何内容,只是发送 Firefox 看到的按键事件并开始编辑单元格。这导致我正在处理的协作文档出现问题,因为 Google 文档的工作方式,导致我意外删除了几个字段中的数据,然后我才意识到发生了什么。
我喜欢使用超级键,但我希望它们的行为更像Ctrl或Alt键,因为它是一个修饰键,并且在按下第二个键之前不会发送任何内容。
我的设置如下:
- Ubuntu 10.10
- XFCE 4
- Microsoft Natural Ergo 4000 键盘(当然,徽标被划掉了)
- 以下是我的.Xmodmap文件:
删除 Lock = Caps_Lock
键码 66 = Escape
!下面映射了我的其他窗口上下文菜单键。
密钥代码 135 = Super_R
编辑:根据要求,以下是 xev 对我的 Super_L(左 Windows 键)的按键和释放的相关输出
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
答案1
与 XFCE 无关的内容
这不是您问题的确切答案,对此深表歉意,但至少对某些人还是有用的。在 Gnome 中,它在最近的 Ubuntu 中已修复。我的意思是将其视为Win修饰键。在过去,例如在 Ubuntu 9.04 中,您必须进行以下更改:
转到System -> Preferences -> Keyboard
,在Layouts
选项卡下单击Layout options...
按钮,然后在Alt/Win key behavior
列表中选择Meta is mapped to Win keys
(或Meta is mapped to Left Win
)而不是Default
。
它到底是做什么的?更改文件altwin
中的选项$HOME/.gconf/desktop/gnome/peripherals/keyboard/kbd/%gconf.xml
(如果不存在则创建它):
<?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>
如果您选择了Left Win
,那么将会有以下字符串值:
altwin altwin:left_meta_win
在 Ubuntu 10.10 中它不再需要,因为Default
显然已经发生了改变。
但是您有 XFCE,而不是 Gnome,所以这对您没有帮助。
XFCE 相关内容
我下载了 Xubuntu (9.10),玩了一下之后终于找到了解决方案。
不过,首先我必须说,XFCE 中的键盘设置确实很糟糕。在选项卡Settings -> Keyboard
下Layout
,您没有太多选项。您无法XkbOptions
在那里更改,即使您在中手动进行更改,它也会被覆盖。所以我通过添加到~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml
进行更改(如果已经有其他选项,请使用逗号作为分隔符)。仍然没有运气。/etc/default/console-setup
altwin:meta_win
XKBOPTIONS
总结
解决方案是什么?
不必在意 XFCE 处理键盘的方式,因为它显然有问题。setxkbmap
直接使用:
setxkbmap -option altwin:meta_win
(或者left_meta_win
,无论您喜欢什么)
现在你必须检查它是否真的解决了你的问题。:)
如何永久应用它?
echo -option altwin:meta_win >>~/.Xkbmap
也可以通过写信给 来为所有用户完成此操作/etc/X11/Xkbmap
。
我如何快速检查altwin:meta_win
或是否altwin:left_meta_win
已被应用?
setxkbmap -print
行xkb_symbols
应该有类似的东西altwin(meta_win)
。