X11: Tastaturtaste mit Maustaste tauschen

X11: Tastaturtaste mit Maustaste tauschen

Ich möchte, dass meine Menütaste auf der Tastatur (Tastencode 135) dasselbe tut wie meine rechte Maustaste.

https://superuser.com/questions/336674/emulating-mouse-click-with-a-keyboardtut das, aber es geht dabei der Ziffernblockbereich meiner Tastatur verloren, sodass diese Tasten nicht mehr ihre normale Funktion haben. Da ich meinen Ziffernblock verwende, bin ich nicht daran interessiert, darauf zu verzichten.

Deshalb suche ich nach einer Lösung, dienurberührt die Menütaste (Tastencode 135).

Antwort1

[NB: offensichtlich und absichtlich nicht"tauschen"eine Tastaturtaste mit einer Maustaste; es lässt eine Tastaturtaste einfach wie eine Maustaste agieren; die Maustaste wird jedoch NICHT beginnen, sich wiederum wie die Tastaturtaste zu verhalten]

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"

Sie können auch eine andere Tastenkombination zuweisen, um die MouseKeysSteuerung umzuschalten. Zum Beispiel mit Shift-Menu:

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

Dies setzt voraus, dass die MenuTaste nicht bereits für etwas anderes reserviert wurde.

Anstelle von xbksetund xkbcompkönnen Sie einfach ein kleines Programm schreiben, das dasselbe tut (alle von ihnen ausgeführten Vorgänge können von jedem regulären X11-Client ausgeführt werden).

Wie man dies in widerspenstige „Desktopumgebungen“ (die die XKB-Einstellungen basierend auf ihren eigenen Regeln selbst ändern) integriert, bleibt dem Leser als Übung überlassen.

verwandte Informationen