LINUX.ORG.RU

emacs, bind caps lock


0

0

Мне удалось заставить xxkb не переключать раскладку в Emacs.

Теперь хотелось бы, чтобы при нажатии системного переключателя (Caps Lock) Emacs выполнял toggle-input-method.

При нажатии Caps Lock X сервер посылает ISO_Next_Group. Внимание вопрос: как заставить emacs при получении ISO_Next_Group выполнять toggle-input-method?

Спасибо.

★★★★

Вот, кстати, по теме ссылочка: http://besm6.livejournal.com/427.html

Чувствую я, что не все так просто будет, как показалось с первого взгляда. Как видно, первый метод работал в woody, но перестал работать в sarge. Конечно, еще можно на эту тему поспрашать в gnu.emacs.help.

Zubok ★★★★★
()
Ответ на: комментарий от stassats

Всё приблизительно так, как написано по ссылочке.

Всё остальное смогу проверить в понедельник, когда до ноута доберусь :)

Davidov ★★★★
() автор топика
Ответ на: комментарий от catap

>Могу приватно рассказать, ибо она очивидная.

А можно не приватно? ;)

Davidov ★★★★
() автор топика
Ответ на: комментарий от Zubok

>(global-set-key (kbd "<iso_next_group>") 'toggle-input-method)

Неа, не работает.

В статье написано:

>ISO_First_Group, повешенной на CapsLock, emacs видит ее как key-12

Собственно, как определить как видит emacs ту или иную клавишу?

Интерактивный global-set-key Caps Lock не видит.

Davidov ★★★★
() автор топика
Ответ на: комментарий от Davidov

Тогда я задумался. Это надо мне ставить xxkb и делать такую же операцию, чтобы разобраться. global-set-key должен жрать кнопки по символам, которые они отдают. Например, кнопка Windows-Menu отдает символ "Menu", и (global-set-key (kbd "<Menu>")... ) спокойно себе отрабатывается. И Print Screen (посылает "print") тоже работает. Я проверил с другими кнопками и обнаружил, что не их global-set-key видит. Например, Scroll Lock посылает "scroll_lock", а биндинг не работает. Ну так вот "iso_next_group" -- это такой же символ. Далее я плаваю, поэтому суждение, скорее всего, ошибочное. Возможно, что кнопка где-то раньше перехвачена. Поэтому у Артема (выше ссылка) потом была написана какая-то специальная программка, в которую передается через fvwm идентификатор окна Emacs $w.id и режим.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Ну, вообще, похоже что как-то так. xev ISO_Next_Group видит.

Ещё xfce тоже видит и может вызвать какой-нибудь скрип. Есть что-то на подобии emacs-remote (заставить уже запущенный емакс выполнить нужную команду)?

Davidov ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.