Як дозволити акордам клавіш клавіатури тимчасово змінювати карту клавіш?


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 для контролю та втечі ??
Отей

Позначте CapsLock для керування, а потім використовуйте xcape (зв'язане вище) для відображення коротких натискань керування на Escape. У запитанні я посилаюся на Vi-подібний режим KeyRemap4MacBook, а не на себе vim. Поки що найперспективніший варіант, який я знайшов для того, що шукаю, - це використовувати модуль Python Xlib таким чином, який використовує Plover. Поки що у мене не було багато часу над цим працювати.
ws_e_c421

Відповіді:


2

Ви не можете цього зробити зі стандартними інструментами, вам доведеться щось написати (можливо, це вплине на багато xserver, і якщо ви хочете, щоб це працювало поза X, відбудуться зміни ядра).

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


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

Мій коментар із лібінпутом був неправильно поінформований. Я думав, що 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.