我将一个键盘插入了一个 linux 盒子,然后我通过 ssh 运行我的 Java。我想知道是否有办法告诉 Java 监听来自特定键盘/终端的输入。由于我要捕获的键盘已插入物理机并且没有用户登录,我不确定是否有办法做到这一点,但我想我可以在这里问一下?
最佳答案
如果您有 root 权限,您可以直接从 /dev/input
下的键盘设备读取键盘事件。解码事件需要一些努力,但可以做到;您可以在 /dev/input keyboard format 中阅读有关数据格式的信息.
此代码段读取键盘事件并识别您按下和释放的 A-Z 键:
// 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));
}
关于java - 告诉 java 要听哪个键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19167789/