使用GDK3开发魔法键盘
目标
把GDK3开发成一个特殊的键盘设备,使其自动发送键盘事件,这时从用户的角度,有趣的事情发生了:电脑的键盘像会魔法一样自己打字。
思路
修改GDK3中运行的程序,让GDK3自动发送敲击键盘的命令,并使用其他主机测试发送行为。
开发过程
1 . 引入gekm项目源码,我们在gekm项目的基础上开发。
2 . 测试原本的gekm项目,只有当原本的项目功能和逻辑均正确时,我们才可以在在他基础上开发新项目。
a . 打开GNU工具
b . 引入gcc gdb等编译调试工具的路径:
export PATH=/d/gedu_work/GNU/bin/:$PATH
c . 切换到项目所在的工作目录:
cd /d/gedu_work/gdk3/sdk/src/gekm/
d . 开始编译
make -s
e . 烧录运行
!program D:\\gedu_work\\gdk3\\sdk\\src\\gekm\\gekm.hex
!reset
f . 检查GDK3是否可以作为usb设备被识别
打开usbview软件,观察主机接入GDK3的USB端口。(usbview 是一个usb设备查看器,能够对系统中全部的USB设备进行枚举,可以查看每个设备的详细信息)。
g . 至此,测试完毕,原本的gekm项目一切正常。
3 . 测试完毕之后,我们可以在项目原有的基础上开发魔法键盘项目了。
a . 编写自己的键盘发送函数,并在主函数中调用这个发送函数。(代码仅供参考)
void KB_Send_Data(void)
{
// 测试发送 gedu
uint8_t KB_Data[8] = {0, 0, KC_G, KC_E, KC_D, KC_U, 0, 0};
uint8_t KB_Empty[8] = {0};
// 开始发送数据
Delay_Ms(700); // Delay_Ms() 函数是延时
USBHD_Endp_DataUp(DEF_UEP1, KB_Data, sizeof(KB_Data), DEF_UEP_CPY_LOAD);
Delay_Ms(700);
USBHD_Endp_DataUp(DEF_UEP1, KB_Empty, sizeof(KB_Empty), DEF_UEP_CPY_LOAD);
Delay_Ms(700);
}
b . 重新编译程序 -> 重新烧录 -> 重启GDK3
c . 打开键盘测试工具或文本编辑器
看到上述结果就说明魔法键盘开发成功了。而这个魔法键盘不仅支持发送单个字母,同时也支持发送 shift Ctrl Alt等,所以我们可以利用这个特性开发更好玩的项目,例如发送一套游戏里的连招,或者发送一些有意义的文字。
总结:
由于我本身专业知识不够扎实,并且也缺少嵌入式的开发经验,所以刚开始做这个项目的时总想着追根溯源,想着先看明白,先理清思路再动手,所以就这样,傻傻的看了半天也没什么实质性的进展,张老师指点道:你有任何想法和思路就去尝试啊,不要在这里空想,想法能不能成只有做了才能验证,你在这里空想是没有结果的。于是我每遇到一个想法,就上手测试一下,并记录下来。在这个验证的过程中,我对这个项目的理解逐渐加深,同时我也明白,动手实践远比脑袋空想来的实际。
最后,放一张GDK3的照片。
作者:李宜桐 创建时间:2023-01-05 11:39
最后编辑:李宜桐 更新时间:2024-05-24 18:52
最后编辑:李宜桐 更新时间:2024-05-24 18:52