2

Я использую emacs в Cygwin и использую Autohotkey, чтобы переназначить левую клавишу «Alt» и левую клавишу «Windows» на (левый)Ctrl и (левый)Alt соответственно.

Это означает, что последовательность emacs, такая как Ctrl-x Ctrl-c , выполняется моим большим пальцем левой руки, нажимая клавишу с надписью 'Alt', чтобы получить Ctrl. Хорошо.

Кажется, все в порядке, за исключением того, что я не могу заставить M-SPC работать, поэтому мой вопрос - попросить помощи по этому вопросу.

Вот сценарий Autohotkey, который я использую (кстати, только для теоретической полноты я переназначил левую клавишу Ctrl на левую кнопку Windows - я никогда не нажимал ее при использовании emacs):

#IfWinActive ahk_class mintty
LWin::LAlt
LAlt::LCtrl
LCtrl::LWin

Для ясности, когда я говорю «все в порядке», я имею в виду, что в emacs я использую функцию «описать последовательность клавиш» (Ch затем k), а затем пробую комбинацию клавиш, которую я хочу. Например, все они показывают документацию emacs для последовательности, которую я ожидал:

  • Ключ с надписью 'Alt' + g сообщает документацию Emacs для C-g . Хорошо
  • Клавиша с надписью 'Alt' + SPACE сообщает о документации для C-@ , которая, по словам emacs, также сопоставлена с C-SPC , так что, похоже, все в порядке. Хорошо
  • Ключ с надписью «MSWin Symbol» + x сообщает документацию для M-x . Хорошо
  • Ключ с надписью «MSWin Symbol» + ключ с надписью «Alt» + k сообщает документацию для C-M-k . Хорошо

Но:

  • Ключ с надписью «MSWin Symbol» + SPACE показывает мне меню «щелчка правой кнопкой мыши» для окна cygwin, а не для перехода к документации по M-SPC . Плохо
  • Кстати, я могу получить документацию по M-SPC , вместо этого выполнив ESC, а затем SPACE .

Позвольте мне добавить еще один момент, который возник в процессе реагирования на комментарии по этому вопросу:

  • Ключ с надписью «MSWin Symbol» + ключ с надписью «Alt» + SPACE приводит меня к документации по C-@ , поэтому я подозреваю, что emacs понимает ее как C-SPC, а не как CM-SPC, как я думал, что мой скрипт Autohotkey будет сопоставьте это с. Плохо

Любые идеи о том, почему Autohotkey не будет делать M-SPC как я ожидал, или почему CM-SPC понимается emacs как C-SPC (я подозреваю)?

Спасибо

2 ответа2

2

Вот ответы на вашу проблему:

Проблемы переназначения Ctrl для Alt и Alt для Ctrl для Emacs

И обсуждение того, почему это происходит

Плюс к сценарию, который можно найти по первой ссылке, вы можете добавить этот код, чтобы работали все возможные раскладки клавиатуры.

#IfWinNotActive, ahk_group HaveEmacsHotkeys
#InputLevel 1
; Aditionally remaps Window keys and AppsKey
*RWin::
    SetKeyDelay, -1
    Send, {Blind}{Alt DownTemp}
    return 
*RWin up::
    SetKeyDelay, -1
    Send, {Blind}{Alt Up}
    return

*LWin::
    SetKeyDelay, -1
    Send, {Blind}{Alt DownTemp}
    return 
*LWin up::
    SetKeyDelay, -1
    Send, {Blind}{Alt Up}
    return

*AppsKey::
    SetKeyDelay, -1
    Send, {Blind}{Alt DownTemp}
    return 
*AppsKey up::
    SetKeyDelay, -1
    Send, {Blind}{Alt Up}
#IfWinActive
1

Alt+Space - это стандартный ярлык Windows для отображения меню окна, которое вы также можете получить, щелкнув левой кнопкой мыши по значку окна или щелкнув правой кнопкой мыши по заголовку.

Вы можете отключить этот ярлык на странице ключей параметров терминала Cygwin (вместе с сочетанием клавиш Alt+Enter для полноэкранного режима, для которого вместо этого можно использовать Alt+F11).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .