사용자 지정 키보드 스캔 코드를 삭제하는 Linux 커널 에서 펌웨어를 빌려 빌드 구성에 추가 키를

최신 컴퓨터에서 사용하기 위해 개조 한 빈티지 IBM 122 키 모델 M 키보드가 있습니다. 인코딩을 수행하고 USB를 처리하기 위해 Teensy 2.0을 사용하고 있습니다. Humble Hacker 키보드 프로젝트 ( https://github.com/humblehacker/keyboard ) 에서 펌웨어를 빌려 빌드 구성에 추가 키를 추가했습니다. 여태까지는 그런대로 잘됐다.

모든 “일반”키는 작동하지만 커널이 추가 키 ( F13F24등)를 삭제하는 것으로 보입니다 .

Running /lib/udev/keymap -i input/event0은 모든 일반 키의 스캔 코드를 표시하지만 추가 키는 스캔 코드를 표시하지 않습니다.

wiresharkUSB 포트를 패킷 캡처로 실행 하면 키보드 가 스캔 코드를 전송 하고 있지만 커널이 원칙적으로 코드를 삭제하는 것처럼 보입니다.

나는 이것이 예상하지 않은 스캔 코드를 제공하지 않는 커널 드라이버에 있다고 생각합니다.

.h커널 소스에있는 어떤 파일에는 일종의 “마스터”키 맵이있을 것이라고 생각 했지만 지금까지 나는 그것을 찾기위한 노력에 성공하지 못했다.

X 앞에 여분의 키를 매핑하는 것에 대해 묻지 않을 것을 강조 할 가치가 있습니다. 이것은 커널과 관련된 낮은 수준의 문제입니다. X를 전혀 사용하지 않을 것이라고 가정하십시오. 내가 실행할 때 스캔 코드가 표시되어야 /lib/udev/keymap -i나머지는 할 수 있습니다.



답변

커널은 이상한 스캔 코드를보고 삭제합니다. 스캔 코드 값을 얻은 다음 하드웨어 데이터베이스 색인을 업데이트하려고합니다. 간단히 말해서 계획은 다음과 같습니다.

  • dmesg 출력에서 ​​코드를 가져옵니다-알 수없는 키 코드를 누르면 dmesg는 다음과 같이 출력해야합니다.

    Unknown key pressed (translated set 2, code 0xa0 on isa0060/serio0)
    

a0 코드 값입니다.

  • 사용자 정의 키 코드 매핑 파일을 만듭니다. 예제와 도움말은 기본 파일에 있습니다
    ( /usr/lib/udev/hwdb.d/60-keyboard.hwdb아치의 경우 다른 배포판과 다를 수 있음).

  • 다음 명령을 실행하여 하드웨어 데이터베이스를 업데이트하고 트리거하십시오.

    > udevadm hwdb --update
    > udevadm trigger /dev/input/eventXX
    

여기서 eventXX키보드에 해당이 (당신은 그것을 실행하여 얻을 수 있습니다 evtest). 트리거하는 대신 재부팅 할 수도 있습니다.

자세한 설명은 (아키가 아닌 경우 배포 문서 에서) 아치 위키 와 기본 키 코드 매핑 파일을 참조하십시오.

이것은 신뢰할 수 있고 간단한 방법이며 커널 수준에서 매핑하므로 디스플레이 서버, DE 등 어떤 것이 든 작동합니다.


답변

이 웹 사이트는 사용자 정의 키보드 변환을 제공합니다
http://straypoetry.com/ibm-model-m-keyboard/

이 웹 사이트의 정보를 기반으로 :
http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html


답변