LINUX.ORG.RU

XKB. Как разблокировать шифт-уровень?

 


0

1

Ситуация.
Пробел блокирует «шифт-уровень», тем самым позволяя выделять текст при движении курсора.

Клавиша «c» копирует выделенный текст.

Выглядит это следующим образом:

key <SPCE> {
    symbols [Group1] = [ space, space ],
    actions [Group3] = [ LockMods(mods=Shift) ]};

key <AB03> {
    symbols = [ NoSymbol ],
    actions = [ RedirectKey(key=<INS>, mods=Control, clearmods=Shift) ]};

Всё работает, но после того как текст скопирован, у меня нет необходимости продолжать выделеление текста, а шифт продолжает оставаться зажатым. Приходится нажимать повторно «пробел», чтобы выйти из «режима выделения».

Как сделать, чтобы при нажатии клавиши «c» снимался флаг «Shift_Lock»?

Почему не срабатывает директива «clearmods=Shift»?

Это действие в XKB вообще возможно?



Последнее исправление: Dreamdrawer (всего исправлений: 3)

(мимокрокодил) не мучай XKB, пиши свой ремаппер, evdev+uinput. Не сегодня так завтра все равно захочешь большего.

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

(тоже мимокрокодил)

ремаппер, evdev+uinput

Уж если ремапать, то на хардварном уровне. Остальное — полумеры.

mord0d ★★★★★
()

Предположу, что RedirectKey снимает модификатор на время перенаправления, а потом возвращает обратно. Можно попробовать в определение клавиши INS добавить LockMods(mods=Shift).

Жаль, что нормальной документации на xkb нет.

rassol
()
Ответ на: комментарий от mord0d

Естественно, если можно на хардварном, то ремапь на хардварном.

Но не всегда и не все можно на хардварном.

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

«overlay» подразумевает использование дополнительной клавиши, что не вписывается в мою концепцию. Используя дополнительную клавишу можно было бы переключать, например радиогруппы, или ещё что-нибудь хитрое придумать, но смысл теряется.

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