Ctrl 및 Alt 키 재할당 - xmodmap 'BadValue' 오류

Ctrl 및 Alt 키 재할당 - xmodmap 'BadValue' 오류

Emacs를 사용할 수 있도록 키보드를 다시 매핑하려고 합니다. 내 인체공학적 키보드에는 왼쪽에 있는 별도의 4키 아일랜드에 단일 제어 키가 있습니다.

운영체제는 데비안 스퀴즈(Debian squeeze)이다.

다음은 제가 입력하려고 했던 행입니다 xmodmap. 이를 ~/.Xmodmap 파일에 넣었습니다.

명확한 통제
모듈 1 지우기
! 내 키보드의 Alt 키에는 "옵션"이라는 라벨이 붙어 있습니다.
! Alt_L 및 Alt_R 키 기호를 각각 보내는 것을 표시하려면 xev를 사용하십시오.
키 기호 Alt_L = Control_L
키 기호 Alt_R = Control_R
! Super_L 및 Super_R 키는 Windows 키입니다.
주요 기호 Super_L = Alt_L
주요 기호 Super_R = Alt_R
컨트롤 추가 = Control_L Control_R
Mod1 = Alt_L Alt_R 추가

내 목표는 Option(Super라고도 함 Alt) 키가 Control 키처럼 작동하고 Windows(Super라고도 함) 키가 처럼 작동하도록 하는 것입니다 Alt.

다음은 해당 키에 대해 xev가 출력하는 키 코드와 키 정보입니다. 내 키보드(Goldtouch Ergonomic Keyboard)에는 제어 키가 하나만 있습니다.

키 코드 37(키 기호 0xffe3, Control_L)
키 코드 64(키 기호 0xffe9, Alt_L)
키 코드 133(키 기호 0xffeb, Super_L)
키 코드 134(키 기호 0xffec, Super_R)
키 코드 108(키 기호 0xffea, Alt_R)

xev가 실행될 때 표시되는 내용입니다.xmodmap .Xmodmap

MappingNotify 이벤트, 시퀀스 번호 34, 합성 NO, 창 0x0,
    MappingKeyboard 요청, first_keycode 204, 개수 1

MappingNotify 이벤트, 시퀀스 번호 34, 합성 NO, 창 0x0,
    매핑 키보드 요청, first_keycode 64, 개수 1

MappingNotify 이벤트, 시퀀스 번호 34, 합성 NO, 창 0x0,
    MappingKeyboard 요청, first_keycode 108, 개수 1

MappingNotify 이벤트, 시퀀스 번호 34, 합성 NO, 창 0x0,
    MappingKeyboard 요청, first_keycode 206, 개수 1

MappingNotify 이벤트, 시퀀스 번호 34, 합성 NO, 창 0x0,
    매핑 키보드 요청, first_keycode 133, 개수 1

MappingNotify 이벤트, 시퀀스 번호 34, 합성 NO, 창 0x0,
    매핑 키보드 요청, first_keycode 134, 개수 1

반환된 오류는 다음과 같습니다 xmodmap.

오류로 인해 X 요청이 실패했습니다: BadValue(작업 범위를 벗어난 정수 매개변수)
실패한 요청에 대한 기본 opcode: 118(X_SetModifierMapping)
실패한 요청의 값: 0x17
실패한 요청의 시퀀스 번호: 17
출력 스트림의 현재 시퀀스 번호: 17

이 문제를 해결하는 방법에 대한 제안 사항이 있습니까?

답변1

Giles가 연결한 해결 방법을 살펴보세요. 이는 저에게 효과적이었습니다.

clear Mod1
clear Mod4

keycode 204 = NoSymbol NoSymbol NoSymbol NoSymbol
keycode 206 = NoSymbol NoSymbol NoSymbol NoSymbol

keycode 64 = Control_L Control_L Control_L Control_L
keycode 133 = Alt_L Alt_L Alt_L Alt_L
keycode 134 = Alt_R Alt_R Alt_R Alt_R
keycode 108 = Control_R Control_R Control_R Control_R

add Control = Control_L Control_R
add Mod1 = Alt_L Alt_R

내 Option 키는 이제 Control 키처럼 작동하고 Windows 키는 Alt 키처럼 작동합니다.

답변2

이는 다음과 같이 보고되었습니다.데비안 버그 #564327,데비안 버그 #565279,우분투 버그 #524774, 그리고FreeDesktop 오류 20145. FreeDesktop 버그 토론에 소스 패치가 첨부되어 있습니다. Ubuntu 버그 토론에는 몇 가지 해결 방법 제안이 있습니다. 특히.Xmodmap솔루션.

답변3

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

예를 들어:

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 -pke)

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

add lock    = Caps_Lock

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

답변4

실제로 귀하의 질문에 대한 답변은 아니지만 귀하의 문제에 대한 또 다른 해결책이 있습니다. xorg.conf를 편집하고 "InputDevice" 섹션에 다음을 삽입하십시오:

 Option "XkbOptions" "ctrl:swapcaps"

관련 정보