2015-04-20 78 views
0

我有一个全局键盘记录器,它在控制台上打印出按键。你可以找到代码here将密钥文本转换为密钥字符

当我按下一个普通的关键字母或数字时,它会打印出关键字符,但“特殊”键如ENTER,SPACE等打印他们的名字而不是关键字符。

我例如得到ENTER但我真的想要一个新的行字符,如\nSystem.lineSeparator()。不是手动检查和转换所有东西,有没有办法让所有正确的关键字符写出类似于文本编辑器如何产生结果的日志?

我尝试使用NativeKeyEvent类中的getKeyChar(),但它只显示?

回答

1

我的建议是编写自己的转换器,取自jnativehook的源代码。从您提供的链接查看代码,可拨打

NativeKeyEvent.getKeyText(int keyCode);

所以在我看来,最简单的方法是编写类似的东西或重用该代码,更改键的值(如VC_SPACE)以返回您想要的内容。我不相信任何事情都能按照你想要的方式工作,所以这将是一个很好的妥协。

注意:在你的实现中,要小心如何返回键盘代码,如VC_ENTER这可能是特定于平台的,但它取决于你的需求 - 我不会担心太多,如果你想要的只是一个简单的键盘记录。

-1

所以,你要打印这样的普通键:A,B,C,4和特别像空间:输入像\ n ...

你可以做NativeKeyEvent.getKeyText(e.getKeyCode()).replace("enter","\n");,但你不想要的。 ... 没有其他posibillity ...

+0

'getKeyCode()'返回一个'int' ... – BullyWiiPlaza

+0

哦,sry我知道,但我没有在代码中...修复它 – tobiinformatik

+0

方法'getText() ''字符串类型未定义。 – BullyWiiPlaza