私は最新のコンピューターで使用するために変更している古いIBM 122キーMキーボードを持っています。私はUSB側をエンコードして処理するためにTeensy 2.0を使用しています。 Humble Hackerキーボードプロジェクトからファームウェアを借りました(https://github.com/humblehacker/keyboard)、ビルド構成に追加のキーを追加しました。今まではそんなに良くなった。
すべての「一般」キーは機能しますが、カーネルが追加のキー(F13-F24など)を削除するようです。
スキャンコードを実行すると、/lib/udev/keymap -i input/event0
すべての一般キーが表示されますが、追加キーのスキャンコードは表示されません。
wireshark
USBポートパケットキャプチャ表示の実行キーボード転送中コードをスキャンしましたが、カーネルが原則としてそのコードを捨てているようです。
カーネルドライバのどの部分が予期しないスキャンコードを提供していないようです。
カーネルソースコードのどこかにファイルにある種の「基本」キーマッピングがあると思います.h
が、これまでは正常に見つかりませんでした。
私よりも多くの人がしたように、Xで追加のキーをマッピングする方法を尋ねないことを強調する価値があります。これは低レベルのカーネル関連の問題のようです。しばらくXをまったく使用しないとしましょう。私にとって必要なのは、実行中にスキャンコードを表示することです。/lib/udev/keymap -i
その後、そこで残りの作業を実行できます。
答え1
カーネルは奇妙なスキャンコードを見つけてそれを破棄します。これらのスキャンコード値を取得し、ハードウェアデータベースインデックスを更新しようとします。簡単に言えば、計画はこうです。
dmesg出力からコードを取得する - 不明なキーコードを押すと、dmesgは次の内容を出力する必要があります。
Unknown key pressed (translated set 2, code 0xa0 on isa0060/serio0)
a0
コード値です。
カスタムキーコードマッピングファイルを作成します。例とヘルプは基本ファイルにあります
(/usr/lib/udev/hwdb.d/60-keyboard.hwdb
Archの場合は他のディストリビューションでは異なる場合があります)。次のコマンドを実行して、ハードウェアデータベースを更新してトリガします。
> udevadm hwdb --update > udevadm trigger /dev/input/eventXX
ここでeventXX
キーボードに対応します(を実行して取得できますevtest
)。トリガーの代わりに再起動することもできます。
覗くよりアーチスウィキより詳細な説明のためのデフォルトのキーコードマッピングファイル(Arch以外の場合は配布文書にあります)
これはカーネルレベルでマッピングする信頼性が高くシンプルな方法なので、ディスプレイサーバー、DEなどが何であっても機能します。
答え2
このウェブサイトはカスタムキーボード変換を提供します。 http://straypoetry.com/ibm-model-m-keyboard/
ウェブサイトによると: http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html