Das sind keine Funktionen von Bash, sondern Funktionen des Terminaltreibers. Als solche werden sie durch stty(1)
spezifiziert .
$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Das ist fast jetzt komplett gelöst. Auf einen Teil der Lösung wurde ich zuerst von MTK358 unter http://www.linuxquestions.org/questions/linux-software-2/change-bash-shortcut-keys-such-as-ctrl-c-818170/ aufmerksam gemacht. . Er wies auf die (ziemlich offensichtliche, sehr zu meiner Verlegenheit) Tatsache hin, dass die Tastenkombinationen zum Kopieren und Einfügen einfach durch die Menüeinstellungen von Konsole geändert werden können. Als ich das sah, dauerte es ungefähr 1 Minute, um Strg-C und Strg-V zum Kopieren und Einfügen mit dem Terminal einzurichten.
Der andere Teil der Lösung hätte aus der stty-Manpage klar sein sollen, war es aber (für mich) nicht. Am Ende habe ich einfach auf der Grundlage verschiedener Hinweise experimentiert, wie zum Beispiel den oben geposteten.
Ich entschied, welche nicht-numerische Taste ich Strg-C als Beendigungsbefehl ersetzen wollte. (Ich habe "k" verwendet). Ich habe nie Informationen darüber gefunden, wie man einen Shift-Modifikator an stty übermittelt, also habe ich das aufgegeben. Nachdem ich mich entschieden hatte, musste ich nur noch Folgendes in die Befehlszeile eingeben:
stty intr \^k
Ich habe überprüft, ob alles wie gewünscht funktioniert.
Jetzt musste ich nur noch den einzelnen Befehl oben (stty intr \^k) in ein Startskript einfügen. Ich bin mir nicht sicher, welches das "richtige" ist. Ich möchte, dass diese Änderung systemweit und dauerhaft erfolgt.
Irgendwelche Vorschläge, in welches Skript ich den Befehl einfügen sollte?
Und schließlich die predigenden Antworten, sie sind unnötig und wenig hilfreich.
Einige davon können mit dem normalen KDE-Tastaturkürzelmechanismus eingestellt werden. Klicken Sie im Menü "Einstellungen" von Konsole auf "Verknüpfungen konfigurieren", und Sie erhalten einen Dialog, mit dem Sie die Tastenbelegungen für die von KDE verwalteten Funktionen ändern können. Auf diese Weise können Sie Strg + C zum Kopieren und Strg + V zum Einfügen neu zuordnen. Denken Sie jedoch daran, dass diese Tastenfolgen dann nicht mehr an das Terminal weitergeleitet werden, sodass Sie sie nicht verwenden können Strg+C, um beispielsweise ein Programm zu unterbrechen.
Andere Funktionen werden über readline
gesteuert Bibliothek, die Sie konfigurieren können, indem Sie die Datei ~/.inputrc
bearbeiten . Um Strg+Z dazu zu bringen, alle in der aktuellen Zeile vorgenommenen Änderungen rückgängig zu machen, möchten Sie hinzufügen
C-z: revert-line
aber diese Tastenfolge wird wahrscheinlich bereits vom Terminal abgefangen, sodass Sie möglicherweise stty
verwenden müssen um es zu lösen, bevor es funktioniert. Suchen Sie zuerst nach ^Z
in der Ausgabe von stty -a
(wie in Ignacios Antwort gezeigt) und dann, zum Beispiel, wenn es in susp = ^Z
auftaucht , ausführen
stty susp ^-
um diese Tastenbelegung aufzuheben.
Die anderen Änderungen, nach denen Sie fragen, müssten mit stty
vorgenommen werden wie Ignacio sagt, da dies Terminalfunktionen sind, aber ich bin mir nicht sicher, wie genau. Das Problem ist, dass ich nicht weiß, ob das Terminal Shift erkennt, oder wenn ja, wie ich diese Informationen an stty
übermitteln soll .