xmodmap 오류 진단

xmodmap 오류 진단

xmodmap다음을 사용하여 Caps Lock을 제거하려고 하면 이 오류가 발생합니다.

$ xmodmap -e 'clear Lock'
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  118 (X_SetModifierMapping)
  Value in failed request:  0x17
  Serial number of failed request:  8
  Current serial number in output stream:  8

xfce를 실행 중입니다. 이 문제는 패널에 키보드 레이아웃 애플릿을 추가하기 전까지는 발생하지 않았습니다. 그 전에는 xmodmap 스크립트를 실행하여 Esc와 CapsLock을 바꿀 수 있었습니다.

!Remap Caps_Lock as Escape
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

키보드 레이아웃 환경 설정에서 키보드 스위치 조합으로 alt-capslock을 선택했기 때문에 이것이 관련될 수 있습니다.

이전에도 다른 컴퓨터에서 openbox를 실행할 때 비슷한 문제가 있었습니다. 해당 컴퓨터에서 Lucid로 업그레이드했을 때 문제가 시작되었습니다. 하나 신고했어요허점그러나 이것이 실제로 xorg의 문제인지, 아니면 단지 내 구성에 문제가 있는 것인지는 확실하지 않습니다.

다른 사람이 이 문제를 겪은 적이 있나요? 누군가 여기서 무슨 일이 일어나고 있는지 설명해 줄 수 있습니까? 관련된 레이어가 많은 것 같고 그중 어떤 것에 대해서도 특별히 지식이 없기 때문에 어떤 정보라도 도움이 될 것입니다.

고쳐 쓰다

특히 캐나다 레이아웃 변형인 "다국어"(ca-multix)를 추가하여 문제가 발생한 것으로 나타났습니다. 대신 "다국어(1부)"(ca-multi) 변형을 추가하면 문제가 발생하지 않습니다. 이것이 결국에는 해결 가능한 해결 방법이 될 수 있다고 생각하지만, 변형 간의 차이점이 무엇인지 아직 모르겠습니다.

나는무료 데스크탑 문제, 님이 댓글을 달고 있습니다.우분투 문제.

답변1

최신 Xorg는 XKB 확장을 사용하여 키보드 레이아웃을 지원합니다. Xmodmap은 호환성 레이어를 통해 에뮬레이트되지만 몇 가지 단점이 있습니다. XKB를 완전히 비활성화하면 Xorg가 이전 Xmodmap 키맵을 사용하도록 되돌아갑니다. 내 생각에는 xorg.conf에서 XkbDisable 옵션을 true로 설정하는 것 같지만 이를 수행하려면 XKB 방법을 사용할 수도 있습니다. /usr/share/X11/xkb/rules/xorg.xml에는 구성 가능한 옵션이 많이 있습니다. Caps Lock과 Escape를 바꾸려면 caps:swapescape가 필요하다고 생각합니다. setxkbmap -option caps:swapescape를 사용해 보세요.

답변2

다른 수정자 키에 추가된 수정자에 키 기호를 추가하려고 하면 문제가 발생합니다. 하나의 키 기호를 수정자에 추가하면 해당 키 기호와 함께 사용되는 다른 모든 키 기호도 해당 수정자에 추가된다는 점을 아는 것이 중요합니다.

예를 들어:

clear mod5
add mod5    = ISO_Level3_Shift Mode_switch

이어질 수 있습니다

mod5        backslash (0x33),  Caps_Lock (0x42),  ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

왜냐하면 당신은 다음과 같은 것을 가지고 있기 때문입니다

keycode  66 = Caps_Lock NoSymbol ISO_Level3_Shift

~/.Xmodmap(또는 .xmodmap,...)에서 "를 통해 현재 키코드와 키심볼 매핑을 볼 수 있습니다.xmodmap-pke")

다음과 같은 작업을 시도할 때 문제가 있는 BadValue 오류가 발생합니다.

add lock    = Caps_Lock

Mod5 수정자에 Caps_Lock이 추가되었기 때문입니다.

답변3

setxkbmap -option caps:escape # use caps as esc

또는

setxkbmap -option caps:swapescape # to swap caps with esc

관련 정보