我有一个全局键盘记录器,可以在控制台上打印出按键。您可以找到代码here。
当我按常规的关键字母或数字时,它会打印出关键字符,但是"特殊的"像ENTER
,SPACE
之类的键等打印其名称而不是关键字符。
我举例来说ENTER
,但我真的想要一个新的字符,例如\n
或System.lineSeparator()
。有没有办法让所有正确的关键字符写入一个类似于文本编辑器产生结果的日志?
我尝试使用getKeyChar()
课程中的NativeKeyEvent
,但它只显示?
。
答案 0 :(得分:1)
我的建议是编写自己的转换器,取自jnativehook
的源代码。查看您提供的链接中的代码,可以调用
NativeKeyEvent.getKeyText(int keyCode);
。
因此,在我看来,最简单的方法是编写类似的东西或重用该代码,更改VC_SPACE
等键的值以返回您想要的内容。我不相信有任何东西可以按你想要的方式运作,所以这将是一个很好的妥协。
注意:在您的实施中,请注意返回哪些关键代码(例如VC_ENTER
)可能是特定于平台的,但这实际上取决于您的需求 - 如果不是,我不会太担心它你想要的只是一个简单的键盘记录器。
答案 1 :(得分:-1)
所以你想要像这样印刷的普通键:a,b,c,4和特殊的空格:,输入就像\ n ...
你可以做NativeKeyEvent.getKeyText(e.getKeyCode()).replace("enter","\n");
,但你不想......
没有其他可能性......