xmodmap을 사용하여 키 매핑을 사용하면 여러 키가 변경됩니다.

xmodmap을 사용하여 키 매핑을 사용하면 여러 키가 변경됩니다.

저는 우분투 서버 16.04를 실행하고 있습니다. 이것이 중요한지는 확실하지 않지만 다음을 사용하여 화면을 브라우저로 전달하고 있습니다.XPRA.

일부 성가신 키 조합을 제외하면 모든 것이 잘 작동합니다. 저는 SHIFT와 Z 키 사이에 backslashand (파이프) 가 있는 키가 있는 GB 키보드를 사용합니다 bar. 이를 "바 키"라고 부릅니다. 키보드의 왼쪽 상단 모서리에는 "무덤 키"라고 불리는 grave키가 있습니다.notsign

이러한 키는 클라이언트 운영 체제와 SSH를 사용하여 서버에 연결할 때 제대로 작동합니다. 그러나 전달된 응용 프로그램(예: xterm)에서 사용할 때 잘못된 문자가 표시됩니다.

"Bar Key"는 "\"(올바른 것) 및 "Ø"(잘못된 것, "|"여야 함)을 표시합니다.

"grave key"는 무덤 "`"(올바른) 및 notsign "Ø"(올바른)을 표시합니다.

그래서 키코드를 찾아 매핑하기 위해 일반적인 xev& 조합을 시도했습니다.xmodmap

xev를 실행하면 "bar key"에 대해 다음과 같은 출력이 표시됩니다.

backslash (\): keycode 94 
bar (|): keycode 49

그리고 다음의 "무덤의 열쇠"

grave (`): keycode 49 
notsign (¬): keycode 49

여러 개의 물리적 키에 매핑되는 키코드 49를 사용하면 많은 일이 벌어지고 있는 것 같습니다.

사물이 어디에 매핑되어 있는지 확인하기 위해 다음 명령을 실행했습니다.

xmodmap -e "keycode 49 = 1 2 3 4 5 6"

다양한 키를 입력하면

\ = is still \ because we didn't remap 94
| = 2
` = 1
¬ = 2 (also 2 ... brilliant)

그렇다면 두 문자가 동일한 키코드/위치 조합에 매핑되는 경우 어떻게 다시 매핑합니까? (@key 출력 Q와 같이 다시 매핑해야 할 몇 가지 다른 항목이 있지만 먼저 첫 번째 항목부터 살펴보겠습니다.)

다음은 몇 가지 추가 진단 정보입니다.

~$ setxkbmap -query
rules: evdev
mode: pc105
layout: gb

~$ localectl status
   System Locale: LANG=en_GB.UTF-8
                  LANGUAGE=en_GB:en
       VC Keymap: n/a
      X11 Layout: gb
       X11 Model: pc101

관련 정보