Das Terminal akzeptiert einige eingegebene Unicode-Zeichen nicht

Das Terminal akzeptiert einige eingegebene Unicode-Zeichen nicht

Ich muss das Problem beheben, warum die Eingabe einiger Unicode-Zeichen in meinem Terminal nicht funktioniert.

Ich verwende ein anderes Tastaturlayout als QWERTY (nämlichNeo), wodurch ich Unicode-Zeichen wie direkt eingeben kann α β γ δ … ∀ ∃ … ∘ ⇒ ⇔, was für die meisten Anwendungen problemlos funktioniert.

Bei Terminals wie rxvt-unicodeoder xtermpassiert bei der Eingabe der Zeichen und jedoch nichts –obwohl die Charaktere perfekt dargestellt werdenwenn ich sie kopiere und einfüge.

Informationen zu den konkreten Zeichen und Tasten, die nicht funktionieren:

  • : Hex-Code 0x21D4; Neo-Sequenz:Capslock + AltGr + m
  • : Hex-Code: 0x2218; Neo-Sequenz:Capslock + AltGr + [

Auch andere Zeichen, die über eingegeben werden Capslock + AltGr + ⟨some key⟩, beispielsweise , funktionieren auf meinem Terminal problemlos. Das verwirrt mich.

Weiß also jemand, wo hier das Problem liegen könnte? Hat jemand eine Ahnung, wo man suchen muss?

Ich verwende Parabola GNU/Linux (im Wesentlichen Arch Linux).

Antwort1

Okay, ich habe jetzt zumindest einen Workaround gefunden.

Das Problem besteht offenbar darin, dass ifonlyifund jotnicht als Schlüsselsymbolnamen erkannt werden xmodmap. In meiner Konfiguration werden sie verwendet.

$ xmodmap -pke | egrep "jot|ifonlyif" 
keycode  34 = ssharp U1E9E ssharp U1E9E U017F Greek_finalsmallsigma U2212 NoSymbol jot NoSymbol U017F Greek_finalsmallsigma U2212 NoSymbol jot
keycode  58 = m M m M percent Greek_mu KP_1 KP_1 ifonlyif

Wenn man sie durch ihre Unicode-Hex-Codes ersetzt, funktioniert alles gut. Also habe ich einfach Folgendes gemacht:

$ xmodmap -pke | sed -e 's:ifonlyif:U21D4:' -e 's:jot:U2218:' > .Xmodmap
$ xmodmap .Xmodmap
$ xmodmap -pke | egrep "keycode  (34|58)" 
keycode  34 = ssharp U1E9E ssharp U1E9E U017F Greek_finalsmallsigma U2212 NoSymbol U2218 NoSymbol U017F Greek_finalsmallsigma U2212
keycode  58 = m M m M percent Greek_mu KP_1 KP_1 U21D4

Falls dies für andere hilfreich sein könnte, bin ich wie folgt darauf gekommen: Ich habe die xevAusgabe beim Versuch beobachtet, (ifonlyif) bzw. (jot) einzugeben.

KeyPress event, serial 34, synthetic NO, window 0x2400001,
    root 0x9b, subw 0x0, time 170075495, (1,1), root:(552,302),
    state 0xa0, keycode 58 (keysym 0x8cd, ifonlyif), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x2400001,
    root 0x9b, subw 0x0, time 170075574, (1,1), root:(552,302),
    state 0xa0, keycode 58 (keysym 0x8cd, ifonlyif), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x2400001,
    root 0x9b, subw 0x0, time 170076304, (1,1), root:(552,302),
    state 0xa0, keycode 34 (keysym 0xbca, jot), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x2400001,
    root 0x9b, subw 0x0, time 170076336, (1,1), root:(552,302),
    state 0xa0, keycode 34 (keysym 0xbca, jot), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

ΘWenn Sie dagegen andere, funktionierende Zeichen ( , ) eingeben, erhalten Sie Zeilen wie:


state 0xa0, keycode 61 (keysym 0x7c8, Greek_THETA), same_screen YES,
XLookupString gives 2 bytes: (ce 98) "Θ"

state 0xa0, keycode 59 (keysym 0x10021d2, U21D2), same_screen YES,
XLookupString gives 3 bytes: (e2 87 92) "⇒"

Ich wusste also, dass das Problem möglicherweise darin bestand, XLookupStringdass nichts zurückgegeben wurde. Also tat ich man xlookupstringund man xmodmap. Dann untersuchte ich die Xmodmap-Tabelle xmodmap -pkeund verglich die fehlgeschlagene Suche von ifonlyifas mit der erfolgreichen Suche von U21D2as .

verwandte Informationen