数码之家

 找回密码
 立即注册
搜索
查看: 1899|回复: 7

[外设] STM32 多功能通用键盘鼠标控制器固件之 [矩阵扫描]

[复制链接]
发表于 2020-2-14 15:31:15 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x

Q. 这个固件的目标是什么?
A. 实现高度自定义的键盘鼠标控制器。

Q. 这个控制器能干什么?
A. 把常见的笔记本内置键盘和指点杆转成 USB 接口的,同时还能替换已有键盘的控制器。

Q. 有什么特点?
A. 比如键盘模拟鼠标,分成多层虚拟键盘等,重要的是矩阵可以通过虚拟串口灵活录入。


之前发布过功能差不多的固件
但是大家反馈用起来很麻烦,有的矩阵甚至对应不上,有的键盘行列分组也不好查找。
https://www.mydigit.cn/forum.php?mod=viewthread&tid=122321

所以重新做一个功能更强大,更方便使用的。

硬件还是用的之前的那种小板,这里给出更详细的图示和原理图。

                               
登录/注册后可看大图


                               
登录/注册后可看大图



目前大家主要反映的是适配和调整矩阵的过程太麻烦太难用了,拿着万用表戳来戳去太折腾人了。
故先放出解决矩阵行列分组和映射的扫描固件,可扫描任意行数加列数小于等于30的按键矩阵。


通用矩阵扫描固件
https://webd.cf/dl/fw/stm32f103.matrix.scanner.tar.gz
stm32f103.matrix.scanner.zip (6.93 KB, 下载次数: 11)

[0...29]共30个pin对应 kb_scan_pins.txt 的内容, 注意 usb 的PA11 PA12没有使用。
为了方便连线,直接用了小板的顺序。

刷入固件 scanner.bin
通过usb连接电脑,会发现新设备,一个串口,一个键盘,一个鼠标。
串口驱动只有一个 kbcfg_acm.inf 文件,不用签名应该也能装。

测试固件
用putty等软件打开这个串口,然后按下原来已有键盘的caplock键,能看到串口有输出信息。
在putty界面内按下Ctrl同时按方向键,能看到鼠标会移动。

连接待扫描的键盘
拆下开发板,把30个pin连接到键盘的排线,用不完没关系。
尽量从0开始用,方便排线的序列和固件打印序列对应。


生成矩阵和按键对照列表
把小板连接电脑,等待设备加载。
打开记事本等编辑器,用原键盘写上 ESC 三个字母,再按tab跳格
然后在连接小板的键盘上按下 Esc 按键,这样会出现两个数字,代表Esc键所在的行和列对应的排线标号。
再依次记录其它按键的行列标号,直到完成所有按键。
最后得到的文件可能是这样的
ESC         1        23
F1         2         6
F2        11        17
...

用这个文件就很容易生成二维的矩阵了。
但最关键的是把排线分成行和列两组,之前用万用表操作这是最麻烦的问题了。
现在直接在电脑上借助excel轻松搞定了。

改造键盘或其他类似场合都可以用这个固件解决,但注意按键矩阵不能带电。

行和列分好了,焊线就行了,不用在乎顺序。
后续本固件会增加通过虚拟串口动态加载矩阵到rom里面的功能。
这样硬件方面的工作就可以通过软件调整来完成了,扩展起来相当容易。

打赏

参与人数 3家元 +66 收起 理由
baikunlun + 6 謝謝分享
aacyxjz + 10
家睦 + 50

查看全部打赏

 楼主| 发表于 2020-2-14 15:34:01 | 显示全部楼层
注意这个固件适用于有固定USB上拉电阻和8Mhz晶振的硬件

打赏

参与人数 1家元 +30 收起 理由
jounge + 30 優秀文章

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

发表于 2020-2-14 22:37:45 | 显示全部楼层
高手!!!谢谢分享。
回复 支持 反对

使用道具 举报

发表于 2020-2-15 08:37:06 来自手机浏览器 | 显示全部楼层
厉害厉害哈哈,支持
回复 支持 反对

使用道具 举报

发表于 2020-2-15 10:01:32 来自手机浏览器 | 显示全部楼层
厉害厉害,好东西,以后改键盘方便了。不过我有个建议,现在输入按键,比如“ESC”ESC还是有点麻烦,不如改成键盘自动输出:请按下Esc键,然后用户按下对应按键,接着输出请按下1键,等等,直到扫描完成整个键盘,代码方面应该也比现在简单一点
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-15 12:01:27 | 显示全部楼层
晴天不会哭 发表于 2020-2-15 10:01
厉害厉害,好东西,以后改键盘方便了。不过我有个建议,现在输入按键,比如“ESC”ESC还是有点麻烦,不如改 ...

录入的时候可以这么搞。

这个固件的主要目的是搞清排线的行和列分组。
搞清排线的行和列分组的目的是让后续真正使用的扫描程序更快一些。
当然不分组也能工作,但是慢一些。

扫描矩阵的时候要尽量通用一些,不同的键盘按键个数差异很大。
当然还可以提前给出一个已经输入按键名称的
回复 支持 反对

使用道具 举报

发表于 2020-3-8 23:01:06 | 显示全部楼层
楼主好人,能不能共享一下固件的代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-26 20:21 , Processed in 0.140400 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表