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보다 더 많은 키를 나열할 수도 있습니다.)