Последовательности сочетаний клавиш Emacs после переназначения CapsLock с помощью Authotkey

Я сделал простое переназначение CapsLock на Control с помощью autohotkey:

Capslock::Control   ; make Caps Lock the control button

Это работает нормально, но в Emacs, если мне нужно выполнить последовательность клавиш вроде Ctrl-x Ctrl-f, постоянно удерживая клавишу CapsLock все время, регистрируется Ctrl-x f. Чтобы получить правильную последовательность, мне теперь нужно отпускать CapsLock между нажатиями клавиш, например Ctrl-x <release> Ctrl-f, что очень неудобно.

Есть ли способ выполнить повторную привязку, чтобы удерживание CapsLock работало точно так же, как удерживание кнопки Control?

Я также безуспешно пробовал следующий фрагмент:

#IfWinActive ahk_class Emacs
{
CapsLock::
Sendinput {Ctrl Down}
KeyWait, CapsLock
Sendinput {Ctrl Up}
return
}

Использование Send или Sendplay в приведенном выше примере вместо Sendinput также не решает мою проблему.

Моя система:

Windows 7 32-разрядная версия AHK v1.1.13.01 Emacs 24.3

Спасибо!


person user673592    schedule 04.12.2013    source источник
comment
Просто используйте другую программу. KeyTweak и sharpkeys являются бесплатными программами и имеют простой графический интерфейс для переключения Caps Lock на Ctrl.   -  person abo-abo    schedule 08.01.2014
comment
Хорошо, я попробовал KeyTweak, и он работает, с той лишь проблемой, что время регистрации ключа иногда отключено (C-x C-v C-m всегда регистрируется как C-x C-m C-v).   -  person user673592    schedule 09.01.2014
comment
Я бы предпочел решение autohotkey, но если ничего не будет найдено до окончания награды, я дам вам очки, если вы отправите это как правильный ответ. Мы также будем очень благодарны за помощь с вопросом времени ...   -  person user673592    schedule 09.01.2014
comment
Я использовал Emacs в Windows 7 около года, и у меня не было этой проблемы. Проблема в том, что сейчас я не помню, пользовался ли я KeyTweak или резкими клавишами. Не могли бы вы попробовать другой и посмотреть, сохраняется ли проблема?   -  person abo-abo    schedule 09.01.2014
comment
Пробовал оба, и оба ведут себя одинаково, т.е. есть проблема с синхронизацией, а также ни один из них не регистрирует удвоенные нажатия клавиш, такие как _1 _...   -  person user673592    schedule 12.01.2014
comment
Хорошо, я посмотрю, когда у меня будет доступ к моему ноутбуку. У меня до сих пор стоит Windows для игр. Так ты говоришь, что не можешь даже C-c C-c?   -  person abo-abo    schedule 12.01.2014


Ответы (3)


Вот что я использую, и это работает:

*Capslock::LCtrl

Звездочка задокументирована в справке в разделе Управление клавиатурой> Горячие клавиши и горячие строки:

Подстановочный знак: активировать горячую клавишу, даже если удерживаются дополнительные модификаторы. Это часто используется вместе с переназначением клавиш или кнопок. Например:

* # c :: Run Calc.exe; Win + C, Shift + Win + C, Ctrl + Win + C и т. Д. Активируют эту горячую клавишу.

* ScrollLock :: Запустить блокнот; Нажатие Scrolllock активирует эту горячую клавишу, даже если клавиша (-и) модификатора нажата.

Этот символ игнорируется в Windows 95/98 / ME.

У меня тоже есть этот, Win + Caps Lock , если я действительно хочу Caps Lock:

<#Capslock::Capslock
person acelent    schedule 14.01.2014

Я не уверен, почему он у вас не работает. Я добавил ваше переназначение в свой существующий сценарий, и, похоже, он работает нормально. Можете ли вы опубликовать больше того, что у вас есть? У меня есть следующие команды вверху, но я не думаю, что они должны повлиять на вашу проблему.

#Persistent
#SingleInstance, Force

Команды GetKeystate и SetKeyDelay может оказаться полезным.

person colinwurtz    schedule 05.12.2013
comment
Спасибо за советы ... первоначальные флаги, к сожалению, не помогли ... проблема все еще сохраняется. - person user673592; 13.12.2013

Попробуй это;

SetCapsLockState, AlwaysOff
CapsLock:: SendInput, {LCtrl Down}
Capslock Up:: SendInput, {LCtrl Up}
person Michael    schedule 08.01.2014
comment
Извините, не повезло ... такое же поведение, как и в других фрагментах, которые я пробовал. - person user673592; 09.01.2014
comment
Возможно, проблема в вашей клавише Capslock. Вы пробовали установить другую клавишу как Ctrl, чтобы посмотреть, что произойдет? - person Michael; 10.01.2014
comment
Пара предложений, не знаю, помогут ли они вам. Попробуйте закрыть все остальные запущенные вами скрипты AHK, посмотрите, поможет ли это. Если это работает в других местах, только не в EMACS, попробуйте изучить встроенные горячие клавиши EMACS. - person Michael; 14.01.2014