как изменить правую клавишу управления в модификаторе super/hyper в emacs

как изменить правую клавишу управления в модификаторе super/hyper в emacs

Я хотел бы изменить правую controlклавишу на модификатор "super", а правую altклавишу на модификатор "alt" (не Meta) в Solaris и Linux (так как я знаю, как это сделать в Windows с помощью AutoHotKey). Я знаю, как сделать это:

(define-key local-function-key-map (kbd "<rwindow>") 'event-apply-super-modifier

Но я не знаю, как указатьверно controlключ иливерно altkey (которые удобнее набирать, чем клавиши Windows). Если это можно сделать прямо в emacs (и избежать AutoHotKey в Windows), это было бы здорово. В противном случае я хотел бы узнать, что может сделать в Solaris и Linux то же самое, что AutoHotKey.

решение1

Я не знаю способа сделать это в Emacs. Насколько мне известно, эти две Ctrlклавиши обрабатываются одинаково. Для некоторых ОС есть возможность изменить keysym для, R-Altно я не знаю такой для X Windows. Обратите внимание, что вы можете использовать x-alt-keysymпеременную, чтобы изменить 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-Altкак meta). Я никогда этого не пробовал.

    Если это не сработает, вам придется выбрать неиспользуемый модификатор для привязки R-Alt, например. hyper. Затем вы можете использовать его в привязках Emacs.

  • Вы можете активировать изменения, сохранив файл как ~/.Xmodmapи запустив его

    xmodmap ~/.Xmodmap
    

    Во многих средах рабочего стола ~/.Xmodmapбудет автоматически запускаться при запуске. Если нет, вам придется запустить его в вашем ~/.xinitrcфайле:

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

Связанный контент