端末は特定の入力 Unicode 文字を受け入れません。

端末は特定の入力 Unicode 文字を受け入れません。

端末に特定のUnicode文字を入力すると、機能しない理由を解決する必要があります。

非標準キーボードレイアウト(例:新しい)を使用すると、Unicode文字を直接入力できます。たとえば、α β γ δ … ∀ ∃ … ∘ ⇒ ⇔ほとんどのアプリケーションでうまく機能します。

ただし、文字を入力するrxvt-unicodeなどの端末では何も実行されません。xtermキャラクターの演技がうまくいったにもかかわらずコピーして貼り付けるときです。

機能しない特定の文字とキーに関する情報:

  • :16進コード0x21D4。新しいシーケンス:Capslock + AltGr + m
  • :16進コード:0x2218;新しいシーケンス:Capslock + AltGr + [

Capslock + AltGr + ⟨some key⟩たとえば、viaで入力した他の文字は私の端末でうまく機能します。これは私を混乱させる。

それでは、問題がどこにあるのかを知っている人はいますか?どこを見るべきかを知っている人はいますか?

私はParabola GNU / Linux(デフォルトではArch Linux)を使用しています。

ベストアンサー1

まあ、私は少なくとも今は解決策を見つけました。

問題はキーシンボル名として認識されifonlyifないjotようです。xmodmap私の設定に使用されます。

$ 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

Unicode 16進コードに置き換えると、すべてがうまく機能します。だから私は次のようにしました。

$ 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

これが他の人に役立つ場合に備えて、私が結論に達した方法は次のとおりです。 (ifonlyif)と(jot)を別々にxev入力しようとした結果を観察しました。

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

一方、別の作業文字(Θ、、)を入力すると、次の行が表示されます。


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) "⇒"

だから私は問題がおそらくXLookupString何も返すことができないことを知っています。man xlookupstringだからそうしました、man xmodmap。次にxmodmapテーブルを調べて、xmodmap -pke失敗したifonlyifaslookupsと成功したlookupsをU21D2比較しました

おすすめ記事