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


33

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
:이 봐 가지고 할 수 있습니다 키보드 레이아웃에 독립적 바로 가기 키
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을 생성하는 키뿐만 아니라 키 조합 Winl( 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.