터미널에 특정 유니코드 문자를 입력하면 작동하지 않는 이유를 해결해야 합니다.
비표준 키보드 레이아웃(예:새로운)를 사용하면 유니코드 문자를 직접 입력할 수 있습니다. 예를 들어 α β γ δ … ∀ ∃ … ∘ ⇒ ⇔
대부분의 응용 프로그램에서 잘 작동합니다.
그러나 문자를 입력하는 rxvt-unicode
것과 같은 터미널 에서는 아무 것도 수행되지 않습니다.xterm
∘
⇔
캐릭터 연기가 너무 잘됐음에도 불구하고복사해서 붙여넣을 때요.
작동하지 않는 특정 문자 및 키에 대한 정보:
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
유니코드 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
failed ifonlyif
aslookups ⇔
와 성공적인 lookups를 U21D2
비교했습니다 ⇒
.