Frage Wie man Ctrl zu Escape umordnet, wenn es selbst gedrückt und losgelassen wird


Ich möchte Control neu zuordnen, damit:

  1. Wenn es mit keinem anderen Schlüssel gedrückt und losgelassen wird, fungiert es als   Esc.
  2. Wenn es gedrückt und zusammen mit einer anderen Taste gehalten wird, ist es handelt als Strg (keine Änderung des Verhaltens in diesem Fall).

Ich bin mir bewusst über Wie ordne ich bestimmte Schlüssel oder Geräte neu zu?, also vermute ich, dass es mit xmodmap gemacht werden kann. Diese Antwort erklärt jedoch nicht, wie die Zusatztasten zugeordnet werden. Ich habe mir die Beispiele und Grammatikbereiche der xmodmap-Manpage angeschaut, aber sie erklären das nicht. Die Antwort in Caps Lock neu zuweisen, um zu steuern und zu entkommen (nicht wie üblich) erwähnen, dass es nicht möglich ist, das zu tun Feststelltaste, da es eine Lock-Taste ist, aber ich hoffe, dass dies mit Control möglich ist, das eine Mod-Taste ist. Eine Lösung mit etwas anderem als xmodmap wird ebenfalls akzeptiert. (Ich benutze Xmonad in Ubuntu 12.04, also gibt es vielleicht eine Möglichkeit, das in xmonad.hs einzurichten?)

EDIT: Der nächste, den ich bekommen kann, ist:

xmodmap -e 'remove Control = Control_L'
xmodmap -e 'keysym Control_L = Escape'
xmodmap -e 'add Control = Escape'

Damit bekomme ich Escape, wenn ich die Taste drücke Linke Strg Schlüssel allein, aber um zu sagen, Strg+EIN Ich muss drücken  Linke Strg zweimal drücken: Strg, Strg+EIN (anstatt nur Strg+EIN) - nicht sicher, warum ich es zweimal drücken muss.


4
2017-11-22 22:30


Ursprung




Antworten:


Die letzte Antwort auf Caps Lock neu zuweisen, um zu steuern und zu entkommen (nicht wie üblich) sagt, dass dieses Dienstprogramm tun wird, was Sie wollen: https://github.com/alols/xcape


3
2017-12-04 08:21





Dies kann mit durchgeführt werden xmodmap, aber sei dir bewusst, dass, wenn du ein paar Dinge vorbereitet hast setxkbmapDas letztere Programm überschreibt und löscht xmodmap die Einstellungen.

Um genau das zu machen, was Sie wollen xmodmap, Sie können eintreten

xmodmap -e "keysym Control_L control = Escape Control_L" 

Jetzt, wenn du es ansiehst xmodmap -pm, Escape wurde dem Steuermodifikator hinzugefügt. Dies bedeutet, dass wenn die linke Steuerung gedrückt wird, stattdessen die Escape - Taste gedrückt wird, aber wenn die Steuerung mit einer anderen Taste (wie in) gedrückt wird Strg+C), wird es immer noch das gleiche Ergebnis wie zuvor geben.

Testen Sie es, indem Sie in das Terminal eingeben man xmodmap und dann drücke ctrl, während du auf die Manpage guckst und es wird 'esc', aber wenn du drückst Strg+Z Es wird die Seite anhalten.

Wenn Sie Ihre Experimente mit zurücksetzen möchten xmodmaploggen Sie sich aus und loggen Sie sich erneut ein, und wenn Sie das oben einstellen möchten xmodmap Befehl als Startup-Objekt, siehe meine Antwort hier:


1
2017-11-26 18:07



Danke für deine Antwort. Leider komme ich, nachdem ich Ihre Schritte angewendet habe, in fast der gleichen Situation, wie ich oben erwähnt habe; das heißt, Strg + A, Strg + K, Strg + R usw. funktionieren nicht (sie senden stattdessen Escape). Um wirklich, sagen wir, Strg + A zu bekommen, muss ich die Strg zweimal drücken, das zweite Mal zusammen mit A. (FWIW, ich habe setxkbmap nie gesetzt, es sei denn, es kommt mit der Standardinstallation von ubuntu 12.04). - psvm
@ psvm Es hat für mich funktioniert - ich konnte ctrl als escape und dann ctrl + C zum Beispiel benutzen, also bin ich mir nicht sicher, warum es nicht für dich war. Es ist seltsam, dass du zweimal Strg drücken musst: Ich denke, das könnte Teil des Problems sein. Es könnte ein beschädigter Schlüssel sein. Ich sollte auch überprüfen, ob Sie irgendwelche Einstellungen in der Tastatur GUI angewendet haben, da vielleicht diese Einstellungen die Probleme verursachen. Wenn es ein Problem mit Ihren Schlüsseln gibt, werden keine Befehle erfolgreich ausgeführt.
Lass mich klarer werden: Ich stimme dir zu, dass Strg + C, Strg + Z funktionieren. Ich stimme nicht zu, dass Strg + K, Strg + R, Strg + A funktionieren. Das heißt, ich behaupte, dass mit dieser Lösung einige Kombinationen funktionieren und andere nicht. Könnten Sie zum Beispiel überprüfen, dass Strg + A in der Befehlszeile funktioniert, nachdem Sie Ihre Lösung angewendet haben? Öffnen Sie einfach ein einfaches Terminal und geben Sie etwas an der Bash-Eingabeaufforderung ein und verwenden Sie dann Strg + A: Bekommen Sie den Cursor an den Anfang dieser Zeile? Für mich funktioniert es nicht (Standardinstallation von 12.04, habe nie die Tastatureinstellungen berührt) und ich muss zweimal A oder zweimal Ctrl drücken. - psvm
@ psvm Ich werde das überprüfen, nur eine Minute.
@ psvm Ja, Sie haben Recht - crtl-a braucht zwei Mal die Strg-Taste, aber Strg-C und Strg-Z funktionieren. Ich werde sehen, ob ich herausfinden kann, warum.