Aktivieren Sie Strg + C zum Kopieren und Strg + Umschalt + C zum Interrput

8

Ich möchte Ctrl+ Cfür das Kopieren und Ctrl+ Shift+ Cfür SIGINT / Interrupt in xterm aktivieren .

Ich habe folgendes gefunden .

XTerm*VT100.Translations: #override \
      Shift Ctrl<Key>V: insert-selection(CLIPBOARD) \n\ 
      Shift Ctrl<Key>V: insert-selection(PRIMARY) \n\ 
      Shift<Btn1Down>: select-start() \n\ 
      Shift<Btn1Motion>: select-extend() \n\ 
      Shift<Btn1Up>: select-end(CLIPBOARD) \n\

was ich glaube, ist teilweise da, gibt aber keine Demonstration, wie man Ctrl+ überschreibt C.

Wilhelm
quelle

Antworten:

8

Das ist "teilweise da", stößt aber auf das Problem, dass es kein vordefiniertes (Einzelbyte-) Zeichen gibt, das Ctrl+ Shift+ Coder Ctrl+ Shift+ entspricht V. Sie benötigen dieses Einzelbytezeichen für die Interrupt ( intr) - Einstellung mit stty. Ebenso ist Strg + V die Literaleinstellung next ( lnext) in stty.

Sie können die Übersetzungsressource verwenden, um mithilfe der Funktion ein Ctrl+ C-Zeichen zu senden string, z. B. etwa diese Zeilen in einer translationsRessource:

ctrl shift <key>C : string(0x03) \n\
ctrl shift <key>V : string(0x16) \n\

und weisen Sie dann die nicht verschobenen Tasten zu (setzen Sie eine Tilde ~vor das Schlüsselwort `shift).

Aus dem nachfolgenden Kommentar stimme ich zu, dass es ausreichen sollte , nur das nicht verschobene Muster anzugeben :

~Shift Ctrl <KeyPress> v: insert-selection(CLIPBOARD)\n\
~Shift Ctrl <KeyPress> c: copy-selection(CLIPBOARD)\n

ein paar Anmerkungen (die möglicherweise dokumentiert sind, aber der Quellcode hilft):

  • <KeyPress> bedeutet das gleiche wie <Key>
  • Die Modifikatoren (und <KeyPress>) werden ohne Berücksichtigung der Groß- und Kleinschreibung abgeglichen.
  • Bei den Teilen auf der rechten Seite :wird zwischen Groß- und Kleinschreibung unterschieden.

Normalerweise wird für Ctrl+ Cmit oder ohne Shift-Modifikator keine Übersetzung durchgeführt . xterm erhält einfach eine, XKeyEventdie die Modifikatorinformationen und das Zeichen enthält, und decodiert diese . Die translationsRessource ändert die Ereignisse, die möglicherweise an xterm gesendet werden.

Sie würden Modifikatoren in einer Übersetzung verwenden, um die Übereinstimmungen zu begrenzen. Wenn ShiftSie beispielsweise weglassen , entspricht dies der Übereinstimmung, ob die Umschalttaste gedrückt wird oder nicht. Das Hinzufügen eines expliziten Modifikators ~shift( ohne Verschiebung) hat keine Auswirkung auf die Übereinstimmung für shift.

Weiterführende Literatur:

Thomas Dickey
quelle
Haben Sie etwas dagegen, ein etwas vollständigeres Beispiel für Strg + C, Strg + Umschalt + C, Strg + V, Strg + Umschalt + V zu veröffentlichen? Ich versuche das gleiche zu erreichen, wie hier beschrieben und erreicht ist askubuntu.com/questions/53688/… mit Ausnahme von xterm
William
1
Dies scheint also zu funktionieren. ~Shift Ctrl <KeyPress> v: insert-selection(CLIPBOARD)\n\ ~Shift Ctrl <KeyPress> c: copy-selection(CLIPBOARD)\n Es scheint, dass Strg + Umschalt + C und Strg + Umschalt + V nicht geändert werden müssen, da dies automatisch erfolgt.
William
Ich habe dies als akzeptierte Antwort markiert. Vielen Dank! Gibt es einen ähnlichen Befehl, mit dem dies funktioniert ?gnome-terminal Ich versuche, eine Möglichkeit zu finden, Text über mehrere Seiten auszuwählen, die xterm unix.stackexchange.com/questions/339411/…
William
3

Dies scheint in xterm zu funktionieren

xterm -xrm 'XTerm*VT100.Translations: #override\n\
 ~Shift <KeyPress> Prior: scroll-back(1,halfpage)\n\
 ~Shift <KeyPress> Next:  scroll-forw(1,halfpage)\n\
  Shift <KeyPress> Prior: string(0x1b)string("[5~")\n\
  Shift <KeyPress> Next:  string(0x1b)string("[6~")\n\
 ~Shift Ctrl <KeyPress> v: insert-selection(CLIPBOARD)\n\
 ~Shift Ctrl <KeyPress> c: copy-selection(CLIPBOARD)\n
'
Wilhelm
quelle