我希望在完成我的right alt主要工作的left control同时,仍将left control工作作为左控制。所以我像这样编辑了我的 evdev 文件:
<LALT> = 64;
<LCTL> = 37; // original binding 37
<SPCE> = 65;
<RCTL> = 105;
<RALT> = 37; // original binding: 108
然而这不起作用,现在两个键都不起作用ctrl。我怎样才能做到这一点?
答案1
您更改的键码文件是一个 XKB 映射,它<FOO>
通过按下某个键时内核键盘驱动程序发出的键码来定义 XKB 布局 ( ) 中使用的符号代码。更改那里的代码不会更改该键生成的代码,它会更改 XKB 布局在看到更改后的符号时认为其处理的代码。
假设您可以将系统 XKB 文件恢复到其原始状态,那么 XKB 执行您想要的操作的方法是加载一个将覆盖标准布局的选项。有一个现有选项 ( ctrl:ralt_rctrl
) 接近您想要的:
# definition in /usr/share/X11/xkb/rules/evdev
ctrl:rctrl_ralt = +ctrl(rctrl_ralt)
# similar rule for swapped option?
ctrl:ralt_rctrl = +ctrl(ralt_rctrl)
您可以使用以下命令加载它setxkbmap
:
$ setxkbmap -option ctrl:ralt_rctrl
如果这符合您的要求,您可以通过将该命令添加到.xprofile
或.xinitrc
您的窗口管理器autorun
脚本中来使其永久化。在 GNOME 中,您可能需要其他步骤。
如果您仍然希望Alt_R重新映射为 asCtrl_L而不是Ctrl_R,则需要创建一个本地覆盖子句。使用现有选项作为起点;在里面/usr/share/X11/xkb/symbols/ctrl
。看我的超级用户对 XKB 修改的回答和一些额外的资源:
答案2
该文件/usr/share/X11/xkb/keycodes/evdev
不是“evdev 文件”,它是 X 键盘转换表 (xkb) 的众多源文件之一。不,登录时不会加载。相反,它充当编译器的源文件xkbcomp
,并且编译文件的输出在 X 服务器启动时加载。整个主题有点复杂,所以不要随意进行更改并期望事情能够正常工作。另外,制作自己的键盘映射的常用方法是编写新的文件,并将旧文件保留在原处。参见示例不可靠的 XKB 配置指南进行介绍。
如果您想让右侧 alt 键用作控制键,更好的方法是保留这些文件原样,~/.Xmodmap
使用以下两行创建一个文件
remove mod4 = Alt_R
add control = Alt_R
xmodmap -pk
通过查看旧状态来测试它是否有效,然后使用 加载它xmodmap ~/.Xmodmap
,然后再次执行xmodmap -pk
并确保它看起来正确。
这样做的结果是,该right alt键仍然显示在其自己的键码下,但被视为修饰符,control因此您可以将其与其他键结合使用。
某些显示管理器~/.Xmodmap
在登录时默认加载,某些新的显示管理器已丢失此功能,您必须对其进行配置才能执行此操作。