Как разрешить аккордам клавиш клавиатуры временно менять раскладку клавиатуры?


9

Я действительно привык к функциональности «Синхронный режим Vi» из KeyRemap4MacBook , который позволяет нажать и удерживать sи dодновременно клавиши , а затем использовать h, j, kи lклавиши как клавиши со стрелками. Когда sи dнажаты вместе, нет sили dсобытие запускается, но когда я печатаю в обычном режиме, я не замечаю каких-либо проблем с задержкой удара sили по dотдельности.

Как я мог воссоздать эту функциональность в Linux (в частности, RHEL 6.4)?

У меня была пара идей:

  1. Если s+ dможет быть переназначены в качестве модификатора, а затем клавиши h, j, k, l+ модификатор могут быть отображены соответствующим образом . (Клавиатура я использую в настоящее время не имеет запасные ключи модификаторов , доступных для использования вместо s+ d, плюс точка режима Синхронный Vi должен держать все пальцы на домашней подряд. CapsLockУже переназначен к Controlи Escape).

  2. В идеале я бы нашел способ сделать это, используя системные настройки или что-то вроде клавиатуры XKB, которую я уже использую. Если это невозможно, возможно, можно написать что-то похожее на программу xcape (которую я использую и которая позволяет сопоставлять клавиши различным символам нажатия клавиш и клавиш-модификаторов). xcapeзапускается при отпускании ключа, поэтому его нужно настроить, чтобы не допустить слишком медленной работы клавиш sи d.


На RHEL 6.4? Вы используете Vim из X или через терминал?
Отей

О, а как вы сопоставляете CapsLock с Control and Escape?
Отей

Сопоставьте CapsLock с Control, а затем используйте xcape (см. Выше), чтобы отобразить короткие нажатия Control на Escape. В вопросе я имею в виду Vi-подобный режим KeyRemap4MacBook, а не сам vim. Пока что наиболее многообещающий вариант, который я нашел, - это использовать модуль Python Xlib аналогично тому, как это делает Plover. До сих пор у меня не было много времени, чтобы работать над этим.
ws_e_c421

Ответы:


2

Вы не можете сделать это со стандартными инструментами, вам придется что-то написать (вероятно, это повлияет на многие xserver, и если вы хотите, чтобы это работало вне X, будут изменения в ядре).

Причина этого заключается в том, что идеи, на которых основан дизайн (и оптимизированный для них), не включают в себя запись обычных клавиш или испускание символов из модификаторов.


Я все еще смотрю на это (нужно больше времени). Я нашел проект Plover, который, казалось, предоставил шаблон для решения на основе X, но я хочу переключиться на Wayland, поэтому я перестал изучать это. Недавно я обнаружил caps2esc, который использует libevdev и libudev для динамического захвата и переназначения устройств. Я думаю, что такой подход может работать для записи в дополнение к переназначению, но его необходимо изучить дополнительно (я бы также предпочел решение libinput).
ws_e_c421

Мой комментарий по libinput был дезинформирован. Я думал, что caps2esc работает с драйвером xf86-input-evdev, который является альтернативой libinput, но на самом деле он работает на уровне libevdev, который является библиотекой более низкого уровня, используемой обоими проектами. Инструменты для caps2esc были реорганизованы в проект инструментов перехвата . Я считаю, что хорошо написанный плагин для инструментов перехвата может обеспечить описанную мной функцию. Это в моем списке для расследования.
ws_e_c421

2

Итак, через четыре года у меня наконец есть черновик ответа на этот вопрос. Ответ заключается в использовании инструментов перехвата, которые используют libevdev для захвата ввода с клавиатуры и обработки его перед повторной передачей. Что касается отображения одновременного ключа, я сделал грубый плагин для перехвата Инструментов под названием хордовой Keymap , что позволяет h, j, k, lдействует как клавиши со стрелками , когда sи dнажимается одновременно.


0

Вам нужно будет приобрести программируемый адаптер, который находится между клавиатурой и компьютером. Они там, но их трудно найти.

Или еще немного, например: https://www.youtube.com/watch?v=ixbVd8rn6-8

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.