如何让我的 Super 键(Windows 键)在 Linux 中的行为更像 Ctrl/Alt/Shift

如何让我的 Super 键(Windows 键)在 Linux 中的行为更像 Ctrl/Alt/Shift

13 年来,我一直使用Ctrl+“箭头键”在 X windows 中切换虚拟桌面,最近我决定改用 Super 键(windows 键和上下文菜单键,我已重新映射)。这在大多数情况下都运行良好。但是,某些东西仍然会拾取这些键发送的按键事件,就好像它们是普通的字母数字键一样。

例如,我第一次在 Google Docs 电子表格中注意到这一点,如果我单独按下单元格上方的 Windows 键,它就会开始编辑该单元格。它不会插入任何内容,只是发送 Firefox 看到的按键事件并开始编辑单元格。这导致我正在处理的协作文档出现问题,因为 Google 文档的工作方式,导致我意外删除了几个字段中的数据,然后我才意识到发生了什么。

我喜欢使用超级键,但我希望它们的行为更像CtrlAlt键,因为它是一个修饰键,并且在按下第二个键之前不会发送任何内容。

我的设置如下:

  • 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 -> KeyboardLayout,您没有太多选项。您无法XkbOptions在那里更改,即使您在中手动进行更改,它也会被覆盖。所以我通过添加到~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml进行更改(如果已经有其他选项,请使用逗号作为分隔符)。仍然没有运气。/etc/default/console-setupaltwin:meta_winXKBOPTIONS

总结

解决方案是什么?

不必在意 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)

相关内容