여러 스캔 코드를 생성하는 키 다시 매핑


33

ThinkPad W540이 있습니다. 키보드에는 숫자 키패드 위에 4 개의 멀티미디어 키가 있습니다. 이러한 키 중 두 개는 키 조합 Win_L+ L및 Win_L+ 에 해당하는 키 코드 (및 스캔 코드)를 생성 E합니다. 즉, 생성 키 Win_L+를 L,
showkey --scancodes이 반환합니다 :

0xe0 0x5b 0x26 0xa6 0xe0 0xdb

이 setkeycodes명령에는 스캔 코드를 나타 내기 위해 단일 바이트 이스케이프 처리되지 않거나 이스케이프 처리 된 2 바이트 시퀀스가 ​​필요하며 showkey그보다 더 많은 방법을 제공하므로 시스템에서 사용 가능한 키 코드 중 하나에 해당 키를 간단하게 다시 매핑 할 수 없습니다 setkeycodes <scancode> <keycode>.

키보드의 기존 키 조합 중 하나를 단순히 복제하지 않는 다른 키로 해당 키를 다시 매핑하는 방법에 대한 힌트를 얻을 수 있습니다.


1
:이 봐 가지고 할 수 있습니다 키보드 레이아웃에 독립적 바로 가기 키
— terdon

1
나는 이것이 까다로울 수 있다고 생각합니다. 적어도 오래된 Thinkpad에서는 이러한 종류의 매핑이 OS가 아닌 내장 컨트롤러에 의해 수행됩니다.
— mirabilos

1
같은 문제가있는 Microsoft All-in-One 미디어 키보드가 있는데 솔루션을 찾을 수 있었습니까?
— osolmaz

5
내가 사용하는 키를 매핑하여 얼마 전에 T61 씽크 패드에 비슷한했다 /etc/acpi/events 에있는 acpid패키지와 그 기능 키를 누를 때 바로 작업을 정의.
— cesar

2
X-windows에서 수정 자로 Win_L을 설정 했습니까? 기본 설정입니다.
— mcr

답변:


1

이 작업은 두 단계로 수행 할 수 있습니다.

  1. 키 조합을 잡기 위해
  2. 다른 키 입력을 시뮬레이션합니다.

당신이 사용할 수 xchainkeys에 대한 1 과 [xdotool][2]에 대한 2 :

와 시뮬레이션 새 키를 생성하려면 xdotool, 옵션 --clearmodifiers의는 key원래 시뮬레이션 수정을 눌러을 중화하는 것이 중요 할 수있다 :

xdotool key --clearmodifiers Shift+a

A테스트로 대문자 를 입력해야합니다 .

의 구성에서 xchainkeys의 ~/.config/xchainkeys/xchainkeys.conf, 우리는 키 조합에 명령을 바인딩 할 수 있습니다 :

W-l :exec xdotool key --clearmodifiers Shift+a

이제 Win_L + L을 생성하는 키뿐만 아니라 키 조합 Win과 l( Win왼쪽 또는 오른쪽도 동일하게 수행) 자본을 만들어야합니다 A.

(두 부분 모두에 사용할 수있는 다른 프로그램이 많이 있습니다. 첫째, 데스크탑 환경의 핫키 구성을 사용할 수 있지만 DE와 독립적으로 유지하는 것을 선호합니다.)


2
내가 실수하지 않은 경우이 솔루션의 문제는 단순히 해당 키 조합을 사용하여 작업을 트리거하는 것과 같습니다. 해당 작업은 동일한 키를 생성하는 실제 키 조합을 누르면 해당 키로 만 트리거되지 않습니다. 코드도 같은 결과를 제공합니다. 즉, "기존 키 조합 중 하나를 단순히 복제하지 않는 다른 키로 키를 다시 매핑"조건을 만족시키지 않습니다. 그러나 노력에 감사드립니다.
— moonwalker

3
네, 사실입니다-당신이 그 문장이 무엇을 의미하는지 잘 모르겠습니다. 이제는 이해합니다. 그러나 키가 하드웨어 (즉, 키보드 펌웨어)에서 두 개의 키 코드를 생성하는 것처럼 보입니다. 따라서 인공 키가 "modifier down", "other key"를 누르는 타이밍을 감지하지 않으면 전쟁이 발생하지 않습니다. "수정 자 위로". 흠 ... 아마도 납땜과 관련된 솔루션이 더 간단합니다.)
— Volker Siegel

1
@moonwalker 다른 키 대신 Win_L을 다시 매핑하고 다른 수정 자도 다시 매핑하는지 확인할 수 있습니까?
— Volker Siegel

1
음, Win_L + R, Win + Break, Win + L, Win + 등과 같은 조합을 잃지 않을 것입니다. 그런 경우?
— moonwalker

1
아니요, 그렇게 생각하지 않습니다. Win-L is Win-Shift-l그러나 키 조합 체인을 명령에 매핑 할 수도 있습니다. 마찬가지로 Win-a그 후 b. 아웃로 Win-a, b정상 작동합니다. 그것은 지금까지 가장 유용한 기능 xchainkeys이며 매우 독특하다고 생각합니다.
— Volker Siegel

-2

백 슬래시 / 파이프 키를 올바른 키에 리 바인드하기 위해 Thinkpad Yoga에서 수행 한 작업입니다. 어떤 이유로 든 모든 Linux 가상 머신에서 백 슬래시 \ 파이프 (\ |) 키를보다 작음 (<) 키로 해석했습니다.

먼저 다음 명령을 실행하십시오. xev

원하는 키를 눌러 리 바인드하려는 키의 키 코드를 얻습니다.

xev KeyPress 이벤트 출력

이 예제에서 키코 드는 94이고 동작은 "낮음"이지만 백 슬래시와 바 (일명 "파이프")의 동작을 갖기를 원합니다.

키 코드 94를 백 슬래시 및 바 키 ( "파이프")로 다시 매핑하십시오.

xmodmap -e 'keycode 94 = backslash bar'

이제 이것을 영속적으로 만들어 보자.

xmodmap -pke | egrep "backslash|bar" | grep 94 > ~/.Xmodmap`

파일에 다음을 반환합니다 ~/.Xmodmap.

keycode  94 = backslash bar backslash bar

그런 다음 지속적으로 작성하려면 다음 파일을 작성해야합니다.

echo "xmodmap .Xmodmap" > ~/.xinitrc

1
백 슬래시 / 파이프 키는 단일 스캔 코드를 생성합니다. 주제는 여러 스캔 코드를 생성하는 키를 다시 매핑하는 것입니다.
— moonwalker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.