KeyboardPianoV1.2.2 vkCodes


详细步骤

例行说明

  • 有了 104 个按钮后,就需要绑定键盘上的按键,使其一一对应
    那问题来了,怎么做 按键绑定 呢?实际上键盘上的每个按键都有一个特定的值(vkCode),所以在做绑定之前,是不是应该把这些 识别码 给找出来呀!
    单纯知道这些值并没有什么卵用,将其成员化为我所用才是硬道理,所以该版本主要做的就是对 vkCode获取及其成员化

具体步骤

  • 呃,copy 代码 (⊙﹏⊙) img1
    如果想要学习正规的偷懒方式,请见 Option1
    说白了,什么粗活脏活累活全交给机器做,机器做得不合格的再做处理
    但其实直接 copy 源代更直接些,只不过这里介绍个偷懒的 办法而已(●ω●)

  • 之所以选了 vkCode 而不用 KeyEvent,原因可见 Option2 & Option3

  • vkCode 的详细介绍请见文末的相关链接
    总的而言它可以识别键盘上绝大多数的按键,为什么说是绝大多数,因为 Fn 就没有 (  ̄﹏ ̄;)
    所以这里 Fn 初始值为 -1,表示啥也不是。。。
    这算是美中不足吧,不过这并不妨碍后续开发,所以无伤大雅

  • img1
    img1


Options

Option1

  • [vkCode 变量及其初始化(正解)] 注: 这里用到下一个版本的内容 KeyboardHook
    1. KeyboardPiano 中弄个内部类,如 KeyAdapter implements KeyListener =>
      @Override keyPressed(KeyEvent e) =>
      String keyName = KeyEvent.getKeyText(e.getKeyCode()) 获取按键名称,作为变量名
    2. KeyboardHook => WinUser.LowLevelKeyboardProc => callback() 在该回调函数C++ 的称呼,后续版本有详细介绍)中获取按键的 vkCode,并初始化 KeyAdapter 中输出的变量
    3. 详细过程及其输出示例见此链接:keyPressed & callback 前方又一次英语预警(@_@)

Option2

  • [为何要用 vkCode]
    1. 之所以费这么大劲,放着 java 自带的键盘监听类不用(详见 Option1),非得透过外包接口访问系统获取信息(Windows DDL),其主要原因还不是为了好用,不仅功能强大而且对后续开发有积极的影响(比如说,监听按键,关联按钮,屏蔽系统按键,etc)
    2. 更何况导入几个外包也不是什么难事,最重要还是能简单有效地把功能实现,其他的都好谈嘛(∩ω∩)

Option3

  • [KeyEvent 的不足之处]
    1. 起初博主使用 KeyListener 对键盘进行监听,原理就是系统把键盘的信息扔给 KeyEvent,从而通过 KeyEvent 进行相应的处理
    2. 但是 java 自带的键盘监听接口功能有限,键盘中重复的键不能区分,比如说,L & R Ctrl, Alt, Shift
      可能也是博主没有对该接口(以及其实现类?)进行深入学习,所以用起来感觉一般(有待商榷)
    3. 不过该接口也不是说没有用,后面测试的时候还有用处,比如说 Option1

相关链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值