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よりも多くのキーを一覧表示することもできます。)