사용자 정의 키보드에서 키의 키코드 가져오기

사용자 정의 키보드에서 키의 키코드 가져오기

Minitel을 Raspberry Pi가 있는 컴퓨터로 변환하려고 합니다.

이 호텔은 작은 호텔입니다.

여기에 이미지 설명을 입력하세요.

그래서 미니텔 키보드의 매트릭스를 USB 키보드 PCB에 다음과 같이 납땜했습니다. 여기에 이미지 설명을 입력하세요.

모든 것이 잘 작동합니다. 맞춤 키보드에서 키를 몇 번 누르는 경우가 있습니다. 키를 적절하게 다시 매핑하면 됩니다.

a그래서 해당 키코드를 누르고 캡처한 다음 사용자 정의 키보드의 모든 키를 사용하여 결국 xmodmap 파일을 생성하는 프로그램을 만들려고 했습니다 .

내 유일한 문제는 해당 키 코드를 얻는 방법을 모른다는 것입니다(그게 전부입니다!). 시도해 보았 xev으나 필터링할 수 없을 정도로 많은 데이터가 표시되었습니다.

모든 키코드를 수동으로 추적할 수 있다는 것을 알고 있지만 10개의 미니 텔레그램을 변환할 것이므로 더 빠른 방법을 선호합니다!

답변1

나는 당신이 쉘이나 유사한 곳에서 이 작업을 수행하려고 한다고 가정합니다(그렇지 않으면 X 라이브러리를 직접 사용할 수 있습니다). 그렇다면 xinput --test «device-name»구문 분석이 훨씬 더 쉬울 수 있습니다.

불행하게도 쉘 스크립팅에는 적합하지 않습니다. 하지만 stdbuf.read

따라서 다음과 같이 할 수 있습니다.

stty -echo
stdbuf -oL xinput test 'AT Translated Set 2 keyboard' \
    | perl -nE 'BEGIN {$| = 1} m/^key press\s+(\d+)/ and say $1' \
    | for key in q w e r t y; do
         echo -n "Please press $key: "
         read -r keycode
         echo "key $key = $keycode"
    done
stty echo

"AT Translated Set 2 Keyboard" 대신 올바른 키보드 이름을 사용해야 합니다. 다음을 통해 찾을 수 있습니다 xinput list.

anthony@Zia:~$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=8    [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]

아쉽게도 특정 장치를 사용해야 하며, 핵심 키보드를 사용할 수 없습니다.

(또한 위에서 xinput을 종료하는 방법을 찾거나 모든 키를 입력한 후 Control-C를 누르는 것으로 만족해야 합니다. 그리고 qwerty보다 더 많은 키를 나열할 수도 있습니다.)

관련 정보