Linux ボックスに 1 つのキーボードを接続してから、ssh 経由で Java を実行しています。特定のキーボード/端末からの入力をリッスンするよう Java に指示する方法があるかどうかを知りたいです。キャプチャしたいキーボードが物理マシンに接続されており、ユーザーがログインしていないため、これを行う方法があるかどうかはわかりませんが、ここで質問できると思いましたか?
1757 次
1 に答える
8
root 権限を持っている場合は、 の下にあるキーボード デバイスから直接キーボード イベントを読み取ることができます/dev/input
。イベントのデコードには少し手間がかかりますが、実行できます。/dev/input keyboard formatでデータ形式について読むことができます。
このスニペットは、キーボード イベントを読み取り、どのキー AZ を押して離したかを認識します。
// replace path with path from your system
DataInputStream in = new DataInputStream(
new FileInputStream("/dev/input/by-id/usb-0430_0005-event-kbd"));
String map = " abcdefghijlkmnopqrstuvwxyz ";
// sizeof(struct timeval) = 16
byte[] timeval = new byte[16];
short type, code;
int value;
while (true) {
in.readFully(timeval);
type = in.readShort();
code = in.readShort();
value = in.readInt();
System.out.printf("%04x %04x %08x %c\n", type, code, value,
map.charAt(value>>>24));
}
于 2013-10-04T11:00:40.493 に答える