여러 키보드가 설치된 페어링 스테이션에서 자주 작업합니다. setxkbmap
와 함께 사용 -device <ID>
하여 특정 키보드의 레이아웃을 설정할 수 있지만 (의 IDxinput
사용 ) 종종 어떤 키보드를 사용하고 있는지 명확하지 않습니다. 두 키보드를 모두 시도하는 것을 피하는 것이 좋습니다. 따라서이 정보를 얻을 수있는 빠른 도구를 작성하고 싶습니다 setxkbmap
. 다음과 같은 일반적인 유스 케이스를 기대합니다.
$ setxkbmap -device "$(get-keyboard-id)" -layout gb
Press Enter to detect keyboard ID
Linux에서이 정보를 제공하는 인터페이스는 무엇입니까? 이상적으로는 X없이 작동해야하지만 요구 사항은 아닙니다 (X없이 이것을 지원하는 많은 도구는 보이지 않습니다).
지금까지의 결과 :
- Linux 는 여러 키보드에 대해 서로 다른 레이아웃을 동시에 지원하기 위해 입력하는 키보드 를 알고 있어야합니다 .
xinput
→ list.c →list_xi2
→에서XIQueryDevice
사용할 수있는 장치 ID를 제공합니다setxkbmap
.showkey
및xev
키보드 ID를 인쇄되지 않습니다.xinput list-props $ID
키보드 이벤트가 전송되는 위치를 보여줍니다 . 그러나 다른 답변의 코드를 사용 하면이 장치가 키보드를 식별하기 위해 아무것도 인쇄하지 않는 것 같습니다.거의 가능한 해결책 중 하나는
xinput --test <ID> &
각 키보드 ID마다 실행 하고 어떤 것이 먼저 무언가를 반환하는지 확인하는 것입니다. 이것의 문제점은 어떤 "키보드"가 실제로 키보드 인지 알아내는 것입니다 .$ xinput | grep keyboard ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ WebCam SC-13HDL10931N id=10 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
less -f /dev/input/eventX
및 해당 키보드의 키를 누르면, 당신은 당신의 키 누름이 실제로 다른 사람을 하나 개의 디바이스 파일로 연출되지 않도록 "쓰레기", 게재 볼 수 있습니다.