Ich möchte einen compose
Schlüssel auf meinem System definieren (Debian Sid "Wheezy"). Ich habe kein Xorg (und möchte keine Desktop-Umgebung). Nur im Terminal.
Ich möchte es auf meinem Alt-Gr
Schlüssel einrichten (rechts Alt
). Ich habe es eine Weile versucht, aber ich kann nicht herausfinden, wie ich es einrichten soll.
Ich habe nachgeforscht und einige Anweisungen gefunden:
$ showkey
gibt mir denAlt-Gr
Schlüsselcode meines Schlüssels (# 100)$ dumpkeys
und$ dumpkeys --compose-only
"den aktuellen Inhalt des Tastaturtreibers" in dem von angegebenen Formatkeymaps
gemäß derman
Seite ausgeben$ loadkeys
Laden Sie eine Tastaturübersetzungstabelle
Ich bin mir sicher, dass es nicht so schwierig ist, aber ich vermisse es, damit umzugehen ...
console
keyboard-layout
Cedbeu
quelle
quelle
Antworten:
Auf neueren Debian- und Ubuntu-Systemen werden Ihre Tastatureinstellungen eingegeben
/etc/default/keyboard
und zwischen X und der Konsole geteilt. Lauf einfachund wählen Sie
Compose key:
Right Alt (AltGr)
auf dem entsprechenden Bildschirm.Sie könnten auch setzen
XKBOPTIONS=compose:ralt
in/etc/default/keyboard
und laufenÄltere Systeme haben standardmäßig einen Compose-Schlüssel auf der Konsole. Im
us
Layout verhält es sich so, wenn Sie beide Alt Tasten gleichzeitig drücken Compose. 1Zum Beispiel: Alt+ AltGr, ", A=> Ä
Wenn Sie AltGrnur sein möchten , müssen ComposeSie ändern
in Ihrer aktiven Tastaturbelegung zu
Der einfachste Weg, dies zu tun, besteht darin, die obigen Änderungen in vorzunehmen
/lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc
.Eine bessere Möglichkeit besteht darin, eine neue Datei
/lib/kbd/keymaps/i386/include/altgr-is-compose.inc
mit dem Namen der obigen Zeile zu erstellen, eine neue Keymap zu erstellen, die diese enthält, und diese auf Ihre Standard-Keymap festzulegen.quelle
dpkg-reconfigure
Assistent fragt zwar nach einem Erstellungsschlüssel, sagt jedoch, dass er im "Unicode-Modus" (?) Nicht funktioniert. Wenn Sie sich nicht in diesem Modus befinden, wird angezeigt, dass Strg + als Erstellungsschlüssel fungiert. Aber ich bekomme das auch nicht zum Laufen.unicode_start
. Bei mir funktioniert es immer noch, vorausgesetzt ich laufesetupcon
wiedpkg-reconfigure
gesagt.setupcon
in meinem X-Terminal (urxvt
) starte, heißt es: "Wir befinden uns nicht in der Konsole, die Konsole ist nicht konfiguriert." Außerdemshowkey
beschwert sich "Konnte keinen Dateideskriptor an die Konsole senden". Intty
beiden Werkenshowkey
heißt es aber (als Erstes), dass "kb mode was UNICODE" war, und vielleicht funktioniert es deshalb auch nicht. Die Control + -Periode funktioniert jedoch intty
. OK, jetzt macht es Sinn.X
? Sie müssensetupcon
auf der virtuellen Linux-Konsole ausgeführt werden, z. B. Strg + Alt + F1.console-setup
es nicht sehr viele Kompositionssequenzen standardmäßig unterstützen. Sie können laufen, umdumpkeys --compose-only
zu sehen, welche. Sie sollten in der Lage sein, dasconsole-setup
Init-Skript zu ändern , um dort, wo es ausgeführt wird, zusätzliche Erstellungsregeln hinzuzufügenloadkeys
."compose" auf der Konsole ermöglicht die Eingabe von zwei Zeichen, gibt jedoch ein drittes aus.
Das Problem ist, dass die Compose-Definitionen Bytes verwenden , und zwar sowohl für die beiden Eingaben (dh Sie können Compose nicht in Form von eingegebenen Schlüsseln definieren, sondern nur in Form von eingegebenen Symbolen) als auch für die Ausgabe.
Damit es in UTF-8 funktioniert, das aus mehreren Bytes (mindestens 1 bis 4 Bytes) besteht, müsste die Art und Weise, wie die Konsoleneingabe verarbeitet wird, erheblich geändert werden. Es scheint, dass es keine Pläne gibt, dies zu tun (der Konsens unter den Kernelentwicklern ist, dass die Konsole eine Konsole bleiben sollte, etwas Einfaches, das nur für den letzten Neustart verwendet wird; wenn Sie tatsächlich Unicode benötigen, brauchen Sie wahrscheinlich auch Bidi, Shaping usw .;) Es ist besser, ein Grafikterminal auszuführen (ein Vollbild-xterm auf X11; es gibt jedoch auch andere Möglichkeiten).
Tatsächlich funktioniert es mit Multibyte-Zeichen auf der Konsole nicht und auch nicht. ABER es funktioniert immer noch, wenn Sie die Erstellungsdefinitionen auf reines ASCII beschränken.
Und ich fand auch heraus, dass es auch funktioniert, wenn die Ausgabe in ISO-8859-1 ist (das entspricht Unicode-Werten bis zu 0x00ff); dafür kannst du in ein Startskript eine Zeile einfügen:
und fügen Sie in diese Datei die gewünschten Compose-Definitionen ein (achten Sie darauf, die Datei in der ISO-8859-1-Codierung zu speichern; und verwenden Sie nur Zeichen größer als 0x7f als Ausgabe). Die Syntax einer solchen Datei ist sehr einfach:
z.B:
Der Apostroph muss entkommen.
Die Auswirkung von toten diakritischen Schlüsseln wird ebenfalls in dieser Datei definiert. für dead_acute + a definieren Sie eine Zeile wie:
dead_grave verwendet backtick (`), dead_diaeresis verwendet doublequote ("), dead_circumflex verwendet circumflex (^) und dead_tilde verwendet tilde (~).
quelle
compose 'a' 'a' to 'å'
incompose 'o' 'a' to U+00E5
, andernfallsloadkeys
zu einem Syntaxfehler beschwert.iconv -f utf-8 -t utf-8 filename
Wenn keine Fehlerecho $?
zumindest keine Fehler und keine Ausgabe anstderr
.file
Sagt mir auch, dass es UTF-8 ist, also macht es Sinn.