我想在 Solaris 和 Linux 中将右键更改control为“super”修饰键,并将右键更改alt为“alt”修饰键(不是 Meta)(因为我知道在 Windows 中使用 AutoHotKey 来执行此操作)。我知道如何做到这一点:
(define-key local-function-key-map (kbd "<rwindow>") 'event-apply-super-modifier
但我不知道如何指定正确的 control键或正确的 alt键(比 Windows 键更方便输入)。如果可以直接在 emacs 中完成此操作(同时避免在 Windows 中使用 AutoHotKey),那就太好了。否则,我想知道在 Solaris 和 Linux 中如何实现与 AutoHotKey 相同的功能。
答案1
我不知道在 Emacs 中如何做到这一点。据我所知,这两个Ctrl键的处理方式相同。对于某些操作系统,有一个选项可以更改键盘符号,R-Alt但我不知道 X Windows 是否有这个选项。请注意,您可以使用变量x-alt-keysym
来更改键盘符号两个都 Alt键。
您可以使用 更改 X Windows 中每个键绑定的修饰符xmodmap
。Arch Wiki文章涵盖了它的使用。基本上:
键入
xmodmap -pm
以打印修饰符和分配给它们的键的列表,例如。shift Shift_L (0x32), Shift_R (0x3e) lock control Control_L (0x42), Control_R (0x69) mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd) mod4 Super_L (0x85), Super_R (0x86) ....
然后创建一个文件,清除并重新绑定要更改的修饰符。例如,要更改R-Ctrl为
super
,这应该有效:clear super add super = Super_L Super_R Control_R clear control add control = Control_L
要处理Alt密钥,您可以使用:
clear meta add meta = Alt_L
这应该会导致 Emacs 找到现有的
meta
修饰符并停止默认Alt将键视为meta
。然后该R-Alt键将可用作alt
修饰符供 Emacs 使用(以及L-Altasmeta
)。我从未尝试过这样做。如果这不起作用,您必须选择一个未使用的修饰符进行绑定R-Alt,例如。
hyper
然后您可以在 Emacs 绑定中使用它。您可以将更改另存为
~/.Xmodmap
并运行xmodmap ~/.Xmodmap
在许多桌面环境中,
~/.Xmodmap
将在启动时自动运行。如果没有,您必须在文件中运行它~/.xinitrc
:if [ -s ~/.Xmodmap ]; then xmodmap ~/.Xmodmap fi