Dan*_*ler 10 linux keyboard xmodmap
我有一个 Mac 键盘,其中 Alt/Win(即 Option/Command)键与普通 PC 键盘相反,我想交换它们。到目前为止,我对 xmodmap 没有任何运气。标准配置如下:
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Run Code Online (Sandbox Code Playgroud)
目前,左/右 alt 键是键码 64 和 108,而左/右 Windows 键是 133 和 134。
我感谢任何帮助!
小智 12
这是我的 Xmodmaprc:
! Exchange left Alt and left Win
remove mod1 = Alt_L
remove mod4 = Super_L
add mod1 = Super_L
add mod4 = Alt_L
! Exchange tilde and lesser/greater
keycode 94 = grave asciitilde dead_grave dead_tilde grave asciitilde
keycode 49 = less greater less greater bar brokenbar bar brokenbar
! Steve, your keyboard sucks
Run Code Online (Sandbox Code Playgroud)
你必须修改你的 .xsession 或 .xinitrc 来调用 xmodmap .Xmodmaprc
我在 Ubuntu 13.04 中通过结合 Christophe 的答案(这对我有帮助,但对修饰符不起作用,我不需要坟墓和波浪号作为死键)来实现这一点,另一个关于 setxkbmap 的答案,在设置中使用不同的选项 -键盘布局选项(甚至查看源代码)并使用命令检查当前配置setxkbmap -query(您也应该运行该命令,以检查您的特定键盘型号和布局代码,因为它们可能有所不同)。
我有一个脚本,当我切换到 Apple 键盘时调用该脚本(关键选项是altwin:swap_lalt_lwin交换 Alt 和 Super 修饰键):
# clear all options
setxkbmap -model "pc105" -layout "hr,us" -option ""
# set the Apple keyboard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier,altwin:swap_lalt_lwin"
# swap the grave-tilde with less-greater key
# - variant without dead keys
xmodmap -e "keycode 94 = grave asciitilde"
xmodmap -e "keycode 49 = less greater less greater bar brokenbar bar brokenbar"
Run Code Online (Sandbox Code Playgroud)
当我回到普通键盘上时,我会调用另一个:
# clear settings
setxkbmap -model "pc105" -layout "hr,us" -option ""
# pc keyobard
setxkbmap -rules "evdev" -model "pc105" -layout "hr,us" -option "terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier"
Run Code Online (Sandbox Code Playgroud)
请注意,我添加了设置
terminate:ctrl_alt_bksp,lv3:rwin_switch,grp:shifts_toggle,caps:ctrl_modifier
Run Code Online (Sandbox Code Playgroud)
启用 ctrl+alt+backspace Gnome 会话终止,使用右键 Win 键进行 3 级键访问,通过按下两个 shift 键来切换布局并将我的 Caps Lock 变成一个额外的 Ctrl(分别)。您可能希望排除其中的部分或全部。
您可以使用AutoKey将调用绑定到某些键盘快捷键,或者从您的.profile或一直.bashrc使用 Apple 键盘调用它。
我发现在使用 xkb 和 gnome 的 Ubuntu 16.04 上,如果您想保留 alt 和 super 键的所有快捷方式,与上面的Christopher Devine 的答案相比,您需要一些额外的步骤。这是我找到的最简单的解决方案。
要获取您的密钥代码,请在命令行上$ xev
键入您想要获取其编号的密钥。有关更多信息,请参阅此帖子:xev and xmodmap usage
这样做给了我:
Super_L有键码 133
Alt_L有键码 64
因此,要将 Windows aka Command(在 Mac 上)又名 Super 键与左 Alt 键交换,我会这样做:
remove mod1 = Alt_L
remove mod4 = Super_L
keycode 133 = Alt_L
keycode 64 = Super_L
add mod1 = Alt_L
add mod4 = Super_L
Run Code Online (Sandbox Code Playgroud)
最后两行将 mod1 和 mod4 添加回 Alt_L 和 Super_L 的键符,就像它们被删除一样。如果没有这样做,我会失去与超级键(搜索)相关联的快捷方式,它也会破坏 alt+tab 组合以在窗口之间切换。
您可以将这些命令添加到 .xmodmap 之类的文件中,然后
$ xmodmap .xmodmap运行它们。
或者,您可以在命令行上按顺序运行这些,例如:
$ xmodmap -e <expression here>
如果要返回默认键映射,则可以将上面代码中的数字反转,例如:
remove mod1 = Alt_L
remove mod4 = Super_L
keycode 64 = Alt_L
keycode 133 = Super_L
add mod1 = Alt_L
add mod4 = Super_L
Run Code Online (Sandbox Code Playgroud)
或者在 Ubuntu 中我只是运行:
$ setxkbmap