카테고리 보관물: Unix

Unix

여러 스캔 코드를 생성하는 키 다시 매핑 키패드 위에 4 개의

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

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

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

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



답변

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

  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을 생성하는 키뿐만 아니라 키 조합 Winl( Win왼쪽 또는 오른쪽도 동일하게 수행) 자본을 만들어야합니다 A.

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


답변

백 슬래시 / 파이프 키를 올바른 키에 리 바인드하기 위해 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


답변