X11: поменять местами клавишу клавиатуры и кнопку мыши

X11: поменять местами клавишу клавиатуры и кнопку мыши

Я хочу, чтобы клавиша «Меню» на клавиатуре (код клавиши 135) выполняла ту же функцию, что и правая кнопка мыши.

https://superuser.com/questions/336674/эмуляция-щелчка-мышью-с-клавиатуройделает это, но это жертвует областью цифровой панели на моей клавиатуре, так что эти клавиши больше не выполняют свою обычную функцию. Поскольку я использую свою клавиатуру, я не заинтересован в том, чтобы жертвовать этим.

Поэтому я ищу решение, котороетольконажимает кнопку Меню (код клавиши 135).

решение1

[Примечание: очевидно и намеренно, это не"менять"клавиша клавиатуры с кнопкой мыши; она просто позволяет клавише клавиатуры действовать как кнопка мыши; но кнопка мыши НЕ начнет действовать как клавиша клавиатуры в свою очередь]

xkbset m
xkbset exp =m  # keep the state unchanged after the AccessX timeout
xkbcomp "$DISPLAY" - |
  sed -e 's/ Menu / Pointer_Button3 /' -e '/interpret KP_/,/};/d' | 
  xkbcomp - "$DISPLAY"

Вы также можете назначить другую комбинацию клавиш для переключения MouseKeysэлементов управления. Например, с помощью Shift-Menu:

xkbcomp "$DISPLAY" - |
  sed -e 's/ Menu \| Pointer_Button3 / Pointer_Button3, MouseKeys_Enable /' -e '/interpret KP_/,/};/d' |
  xkbcomp - "$DISPLAY"

Это предполагает, что Menuклавиша еще не была переназначена на что-то другое.

Вместо xbksetи xkbcompвы можете легко написать небольшую программу, которая будет делать то же самое (все операции, которые они выполняют, могут быть выполнены любым обычным клиентом X11).

Как интегрировать это с капризными «окружениями рабочего стола» (которые сами изменяют настройки xkb на основе своих собственных правил) — оставим в качестве упражнения читателю.

Связанный контент