Ctrl 및 Alt 키 재 지정-xmodmap 'BadValue'오류


13

emacs를 사용할 수 있도록 키보드를 다시 매핑하려고합니다. 인체 공학적 키보드는 단일 Control 키를 격리 된 4 키 섬에 왼쪽으로 놓습니다.

OS는 데비안 스퀴즈입니다.

다음은 공급하려고하는 줄입니다. xmodmap~ / .Xmodmap 파일에 넣습니다.

명확한 제어
클리어 모드 1
! Alt 키는 키보드에서 '옵션'으로 표시됩니다.
! xev를 사용하면 Alt_L 및 Alt_R keysym을 각각 보내는 것으로 표시됩니다.
keysym Alt_L = Control_L
keysym Alt_R = Control_R
! Super_L 및 Super_R 키는 Windows 키입니다.
keysym Super_L = Alt_L
keysym Super_R = Alt_R
제어 추가 = Control_L Control_R
Mod1 추가 = Alt_L Alt_R

내 목표는 내 옵션 (일명 Alt) 키를 제어 키처럼 동작시키고 내 Windows (일명 슈퍼) 키는처럼 동작하게하는 것 Alt입니다.

다음은 해당 키에 대해 xev가 출력 한 키 코드 및 키 ms입니다. 내 키보드 (Goldtouch 인체 공학적 키보드)에는 하나의 제어 키만 있습니다.

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

실행 중에 xev가 표시하는 내용은 다음과 같습니다. xmodmap .Xmodmap

MappingNotify 이벤트, 시리얼 34, 합성 NO, 윈도우 0x0,
    요청 매핑 키보드, first_keycode 204, 개수 1

MappingNotify 이벤트, 시리얼 34, 합성 NO, 윈도우 0x0,
    요청 매핑 키보드, first_keycode 64, 카운트 1

MappingNotify 이벤트, 시리얼 34, 합성 NO, 윈도우 0x0,
    요청 매핑 키보드, first_keycode 108, 카운트 1

MappingNotify 이벤트, 시리얼 34, 합성 NO, 윈도우 0x0,
    요청 매핑 키보드, 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

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


어떤 운영 체제 및 버전에서? 어떤 종류의 키보드 (PC / Mac / Sun / ...)? xev터미널에서 실행 한 다음 xmodmap다른 터미널에서 실행하십시오 . 의 일부 MappingNotify스탠자를 보고 xev질문에 추가해야합니다. 또한 xev창에서 관련된 여러 키를 누르고 해당 키 코드와 키심 (xev 출력의 "키 코드 37 (keysym 0xffe3, Control_L)"부분)을 알려주십시오.
Gilles 'SO- 악마 중지

답변:



7

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

내 옵션 키는 이제 Control 키와 같은 기능을하고 Windows 키는 Alt 키와 같은 기능을합니다.


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

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


2

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

 Option "XkbOptions" "ctrl:swapcaps"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.