详细步骤
例行说明
- 有了 104 个按钮后,就需要绑定键盘上的按键,使其一一对应
那问题来了,怎么做 按键绑定 呢?实际上键盘上的每个按键都有一个特定的值(vkCode
),所以在做绑定之前,是不是应该把这些 识别码 给找出来呀!
单纯知道这些值并没有什么卵用,将其成员化为我所用才是硬道理,所以该版本主要做的就是对vkCode
的获取及其成员化
具体步骤
-
呃,copy 代码 (⊙﹏⊙) img1
如果想要学习正规的偷懒方式,请见 Option1
说白了,什么粗活脏活累活全交给机器做,机器做得不合格的再做处理
但其实直接 copy 源代更直接些,只不过这里介绍个偷懒的办法而已(●ω●) -
之所以选了
vkCode
而不用KeyEvent
,原因可见 Option2 & Option3 -
vkCode
的详细介绍请见文末的相关链接
总的而言它可以识别键盘上绝大多数的按键,为什么说是绝大多数,因为 Fn 就没有 (  ̄﹏ ̄;)
所以这里 Fn 初始值为 -1,表示啥也不是。。。
这算是美中不足吧,不过这并不妨碍后续开发,所以无伤大雅 -
img1
Options
Option1
- [vkCode 变量及其初始化(正解)] 注: 这里用到下一个版本的内容
KeyboardHook
KeyboardPiano
中弄个内部类,如KeyAdapter implements KeyListener
=>
@Override keyPressed(KeyEvent e)
=>
String keyName = KeyEvent.getKeyText(e.getKeyCode())
获取按键名称,作为变量名KeyboardHook
=>WinUser.LowLevelKeyboardProc
=>callback()
在该回调函数(C++ 的称呼,后续版本有详细介绍)中获取按键的vkCode
,并初始化KeyAdapter
中输出的变量- 详细过程及其输出示例见此链接:keyPressed & callback 前方又一次英语预警(@_@)
Option2
- [为何要用 vkCode]
- 之所以费这么大劲,放着
java
自带的键盘监听类不用(详见 Option1),非得透过外包接口访问系统获取信息(Windows DDL),其主要原因还不是为了好用,不仅功能强大而且对后续开发有积极的影响(比如说,监听按键,关联按钮,屏蔽系统按键,etc) - 更何况导入几个外包也不是什么难事,最重要还是能简单有效地把功能实现,其他的都好谈嘛(∩ω∩)
- 之所以费这么大劲,放着
Option3
- [KeyEvent 的不足之处]
- 起初博主使用
KeyListener
对键盘进行监听,原理就是系统把键盘的信息扔给KeyEvent
,从而通过KeyEvent
进行相应的处理 - 但是
java
自带的键盘监听接口功能有限,键盘中重复的键不能区分,比如说,L & R Ctrl, Alt, Shift
可能也是博主没有对该接口(以及其实现类?)进行深入学习,所以用起来感觉一般(有待商榷) - 不过该接口也不是说没有用,后面测试的时候还有用处,比如说 Option1
- 起初博主使用