
터미널에 일부 유니코드 문자를 입력하면 작동하지 않는 문제를 해결해야 합니다.
나는 쿼티가 아닌 키보드 레이아웃을 사용합니다(즉,네오)를 사용하면 와 같은 유니코드 문자를 직접 입력할 수 있으며 α β γ δ … ∀ ∃ … ∘ ⇒ ⇔
대부분의 응용 프로그램에서 잘 작동합니다.
rxvt-unicode
그러나 또는 같은 터미널에서는 xterm
문자를 입력해도 아무 작업 ∘
도 ⇔
수행되지 않습니다.문자가 완벽하게 잘 표시되지만복사해서 붙여넣을 때요.
작동하지 않는 특정 문자 및 키에 대한 정보:
Capslock + AltGr + ⟨some key⟩
예를 들어 를 통해 입력한 다른 문자도 ⇒
내 터미널에서 문제 없이 작동합니다. 이것은 나를 당황하게 한다.
그렇다면 여기서 문제가 어디에 있는지 아는 사람이 있습니까? 어디를 봐야 할지 아는 사람 있나요?
저는 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
유니코드 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 테이블을 조사 하고 as xmodmap -pke
의 실패한 조회 와 as 의 성공적인 조회를 비교했습니다 .ifonlyif
⇔
U21D2
⇒