如何在 emacs 中的 super/hyper 修饰符中更改右控制键

如何在 emacs 中的 super/hyper 修饰符中更改右控制键

我想在 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-Ctrlsuper,这应该有效:

        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-Altas meta)。我从未尝试过这样做。

    如果这不起作用,您必须选择一个未使用的修饰符进行绑定R-Alt,例如。hyper然后您可以在 Emacs 绑定中使用它。

  • 您可以将更改另存为~/.Xmodmap并运行

    xmodmap ~/.Xmodmap
    

    在许多桌面环境中,~/.Xmodmap将在启动时自动运行。如果没有,您必须在文件中运行它~/.xinitrc

    if [ -s ~/.Xmodmap ]; then
        xmodmap ~/.Xmodmap
    fi
    

相关内容