Benutzerdefiniertes xkb-Layout, in dem ein Schlüssel zwei Unicode-Codepunkte erstellt

14

Ich schreibe ein neues benutzerdefiniertes Tastaturlayout für Xorg, aber es gibt eine bestimmte Glyphe, die in Unicode nicht vorhanden ist. Es ist jedoch einfach, es mit einem Standardbuchstaben und einem diakritischen Kombinationszeichen zu erstellen.

Wenn ich zum Beispiel den Buchstaben vmit einem Makron darunter haben möchte , erstellt die Sequenz U0073+U0331das gewünschte Zeichen.

In meiner xkb-Layoutdefinition kann ich einen einzelnen Unicode-Punkt angeben (hier altgr+dist er an ḏ und altgr+shift+dan Ḏ gebunden ):

key <AC03>  { [         d,          D,        U1E0F,        U1E0E ] }; // d with macron below

Es scheint mir jedoch nicht möglich zu sein, ein kombiniertes Unicode-Symbol für einen einzelnen Schlüssel anzugeben:

key <AB04>  { [         v,          V,  U0076+U0331,  U0056+U0331 ] }; // v with macron below

Ist es möglich, eine systemweite xkb-Definition wie diese zu erstellen?

SigueSigueBen
quelle

Antworten:

11

BEARBEITEN:

Versuche immer noch...

Tests haben ergeben, dass die Tastaturbelegung NUR einen einzelnen Schlüssel an jeder Position akzeptiert.

ABER, wenn Sie einen seltenen / nie verwendeten Keysym in der Keymap-Definition verwenden, funktioniert eine globale Xmodmap, damit dieser Keysym die verschiedenen benötigten Unicode-Zeichen ausgibt.

In der Keymap:

key <AB04>  { [ v, V, XF86LaunchA, XF86LaunchB ] };

In einer globalen Xmodmap: (möglicherweise von /etc/profile.d geladen?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

Es gibt eine ganze Reihe nicht verwendeter / speziell verwendeter Schlüsselwörter, ich habe LaunchA / B als Beispiel gewählt.

Lornix
quelle
Danke für die Antwort. Ein Nachteil ist, dass dies eine benutzerspezifische Einstellung ist, oder? Wenn Sie es mit xkb machen, wird es systemweit und kann in einer einzigen Datei verteilt werden. Natürlich waren diese Bedingungen in meiner ursprünglichen Frage!
SigueSigueBen
2
Ich habe den Quellcode durchgearbeitet, es scheint keine Unterstützung für das Einfügen mehrerer Tastenanschläge in die Tastendefinitionen der Tastaturbelegung zu geben. Natürlich können Sie es selbst umschreiben, um diese Fähigkeit zu implementieren!
Lornix
Nicht die Antwort, die ich wollte, aber das ist trotzdem die Antwort. Ich stöbere selbst ein bisschen im Quellcode herum und schaue mir die von Ihnen vorgeschlagenen Optionen an. Vielen Dank.
SigueSigueBen
4

Auf der anderen Seite können Sie an einen bestimmten Schlüssel den Unicode anhängen, der das Diaktizitätszeichen selbst kombiniert, und ihn dann nach jedem anderen Zeichen eingeben. Auf diese Weise sollen die Unicode-Kombinationszeichen funktionieren.

In X11 gibt es tote Schlüssel, tote Schlüssel funktionieren umgekehrt: zuerst der tote Schlüssel, dann der Basisbuchstabe. Es gibt eine <dead_belowmacron>, die Sie an einen Schlüssel anhängen können.

Dann müssen Sie die Compose-Datei für Ihr Gebietsschema bearbeiten (wenn jemand weiß, wie man Definitionen an die Compose-Datei an einem benutzerdefinierten Ort anfügt, den ich zu schätzen weiß) und Zeilen hinzufügen wie:

# when the output is a single unicode char, you put also the corresponding
# X11 symbol name
# <symbol> <symbol> : "one-char-string" <symbol>
<dead_belowmacron> <d> : "ḏ" U1E0F
<dead_tilde> <n> : "ñ" <ntilde>
# when the output is a multicharacter string, you put just the string
# <symbol> <symbol> : "string"
<dead_belowmacron> <v> : "v̱"

Die zu verwendende Compose-Datei wird durch das Gebietsschema in der Datei /usr/share/X11/locale/compose.dir definiert (der Pfad kann variieren).

Pablo Saratxaga
quelle