저는 Dvorak 레이아웃을 선호하기 때문에 멋진 USB Das 키보드를 가지고 있고 Virtual Console과 X11에서 나에게 맞는 레이아웃을 할당했습니다. 부팅 시 적용되도록 사용 loadkeys
하고 install-keymap
예약했는데 매우 만족합니다.
하지만 대부분의 동료들은 Qwerty 레이아웃을 선호하는데, 이는 페어 프로그래밍에 방해가 됩니다. 이 작업을 수행하기 위해 연결할 수 있는 USB 키보드가 몇 개 있지만 연결하면 모두 내 Dvorak 레이아웃을 채택합니다.
추가 키보드에 Qwerty 레이아웃을 사용하도록 udev(또는 심지어 X11)에게 지시하는 방법이 있습니까? 이를 구별하는 데 사용할 수 있는 다양한 USB 공급업체 및 장치 식별자가 있습니다.
내 시스템은 Debian 베타 버전이고 udev 버전은 232입니다. 디스크 장애 후 재설치를 했더니 systemd에 감염되어서 기존에 익숙했던 표준(SysV 스타일) 방식이 작동하지 않더라구요.
유제키보드마다 키보드 레이아웃이 다릅니다나에게는 어떤 도움도 제공되지 않았습니다.
답변1
일반적인 배경: 키에는 세 가지 다른 "코드" 세트가 할당됩니다. 첫 번째는스캔 코드(하드웨어에 따른 모든 숫자는 키보드의 키를 나타냅니다.)키 코드shift( 또는 와 같은 특정 키를 나타내는 보다 추상적인 숫자 1 / !), 마지막으로키보드 기호á
(키 기호, 키 또는 키 조합에 의해 생성되는 실제 기호).
나는 최근에 각 /dev/input/event*
장치에 키코드 매핑에 대한 자체 스캔 코드가 있다는 것을 알게 되었습니다. 이러한 매핑은 EVIOCGKEYCODE_V2
iotcls( , )를 통해 읽고 변경할 수 있지만 EVIOCSKEYCODE_V2
흥미롭게도 이러한 매핑에 액세스하기 위한 일반적인 도구는 없는 것 같습니다(궁금해서 이를 덤프하기 위한 간단한 C 프로그램을 빠르게 작성했습니다).
그러면 Linux 커널과 X 모두 키 코드를 키 기호에 매핑합니다. 커널, kbd
핸들러에 대한 전역 매핑은 단 하나뿐입니다(또는 매우 가상 콘솔에 대한 전역 매핑은 하나 이상입니다. 서로 다른 가상 콘솔이 서로 다른 매핑을 가질 수 있는지 확실하지 않습니다). X는 각 장치에 대한 지도를 유지합니다.
따라서 가상 콘솔에서 키보드 간의 차이점을 원하는 경우 유일한 옵션은 스캔코드를 키코드 매핑으로 사용하는 것입니다. Dvorak 대 Qwerty의 경우와 마찬가지로 문자 키만 다시 매핑하고 이동된 상태와 이동되지 않은 상태의 기호를 다르게 다시 매핑하지 않으려는 한 실제로 작동할 수 있습니다.
최신 버전의 udev는 하드웨어 데이터베이스( /etc/udev/hwdb.d
)를 사용하여 특수 스캔코드를 키코드 매핑으로 초기화합니다. 사용자 고유의 매핑을 추가할 수 있습니다.맞춤형 버전.
또 다른 방법은 가상 콘솔에서 Dvorak 또는 Qwerty를 사용하는 것입니다. 하지만 설정은 이 변형을 원하지 않습니다). 이 접근 방식의 장점은 기호, 데드 키, 구성 등을 다양한 방식으로 매핑할 수도 있다는 것입니다.