3

GNU/Linux テキスト コンソール、X11 は関係なく、実際にはインストールさえされていません。キーボードは US レイアウト、キーマップは US デフォルトです。カーネル バージョン 2.20.x 以降。

C で記述されたアプリケーションは、変換モード (つまりXLATE、 または) でキーボード入力を取得していますUNICODE。キーが押されると、アプリケーションは対応するキー文字列を受け取ります。例として、F1 を押すと、アプリケーションは"\033[[A".

カーネルがキー文字列をアプリケーションに送信する前に、どのキーが押されたかを知る必要があります。つまり、スキャンコードを知る必要があります。上記の F1 の例では、押されたキーのスキャンコードは 59 または 0x3b です。

つまり、キーボードが翻訳モードの場合でも、スキャンコードはメモリのどこかに保持されます。RAWキーボードをまたはMEDIUMRAWモードに切り替えずに、アプリケーションがそれらにアクセスするにはどうすれば よいですか? コードスニペットが役立ちます。

4

4 に答える 4

2

間違ったファイル記述子で ioctl コマンドを発行している可能性があります。ioctl および tcsetattr から返されるエラー コードを確認してください。

コンソール デバイスを開き、そのデバイスでキーボード変換コマンドを発行する必要があります。基本的に、X サーバーが行っていることを模倣する必要があります。

これはcodesearch.google.comのソース コードへのリンクです。

于 2008-09-19T15:44:56.860 に答える
1

確かに、見たいコードは「kbd」パッケージのソースバンドルである kbd-1.12.tar.bz2 にあります。「kbd」パッケージは、「dumpkeys」、「showkeys」、「loadkeys」などのツールを提供します。これらのツールは、現在のキーボード マッピングを確認したり、どのキーがどのスキャンコードを発行したかを確認したり、新しいマッピングをロードしたりするのに役立ちます。

ioctl を介してカーネルと通信する必要がありますが、これは非常に複雑なので、そのパッケージのソースを読んでその方法を確認することをお勧めします。

tarball へのリンクは次のとおりです: kbd-1.12.tar.bz2 (618K)

于 2008-09-18T07:46:51.240 に答える
0

ターミナルで入った

dumpkeys -f > test.txt

そして、以下を含む多くの詳細な情報がありました:

キーコード29=制御
...
文字列F1="\033[[A"
文字列F2="\033[[B"
文字列F3="\033[[C"
文字列F4="\033[[D"
文字列F5= "\ 033 [[E"
string F6 = "\ 033 [17〜"
string F7 = "\ 033 [18〜"
string F8 = "\ 033 [19〜"
...
string Prior = "\ 033 [5〜"
string Next = "\ 033 [6〜"
string Macro = "\ 033 [M"
string Pause = "\ 033 [P"

ダンプキーは、私のディストリビューションにデフォルトで含まれていました。しかし、jerubが投稿したものでそれを見つけることができるはずです。私は見ることから始めkbd-1.12/src/loadkeys.yます。

カーネルがそのデータを保持する責任があり、質問する方法を知っている人に報告できるようです。

于 2008-09-18T08:02:34.977 に答える
0

kbdevまたはevdev(まずDocumentation/input/input.txt、カーネル ソース ディレクトリ内のファイルを参照してください)を見たいと思うかもしれません。これは、コンソール アクセスで機能します。

于 2008-09-18T12:50:23.180 に答える