如何更改 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。拱門維基文章涵蓋了它的用途。基本上:

  • 鍵入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鍵將可用作altEmacs 中使用的修飾符(以及L-Altas meta)。我從來沒有嘗試過這個。

    如果這不起作用,您將必須選擇一個未使用的修飾符來綁定R-Alt,例如。hyper。然後您可以在 Emacs 綁定中使用它。

  • 您可以啟動更改,將文件另存為~/.Xmodmap並運行

    xmodmap ~/.Xmodmap
    

    在許多桌面環境中,~/.Xmodmap都會在啟動時自動執行。如果沒有,您必須在文件中運行它~/.xinitrc

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

相關內容