外设堂

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 26555|回复: 50

[改造] 【试玩】做了个按键映射器,顺带聊聊按键自定义各种方法的优劣

  [复制链接]
发表于 2020-4-6 17:49 | 显示全部楼层 |阅读模式
本帖最后由 只是试玩啊 于 2020-4-6 17:49 编辑

按键映射器以及各种方案的优劣讨论
Part 1. 按键映射器

按键映射器:就是个能自定义按键的小东西。其实很多游戏键盘都已经带了这样的功能。可是像Filco HHKB这种牛逼哄哄的“大厂”,连个驱动都没有,自定义个毛啊:美其名曰:免驱动即插即用设计。。。哈哈哈哈哈。。。
目前来说,仅办公配置这一块的话,罗技游戏键盘的驱动 >= razer 驱动 >= 罗技办公键盘的驱动

罗技的驱动是很完善的,多平台都支持。razer的雷云2还可以,但是雷云3是没有mac版本的,这个也是我掉过的一个坑
前段时间,特别想搞个自定义按键的键盘,可是我手上只有个filco,就想着能不能自己搞个自定义按键的东西,然后就开始研究方法了:
      软件方法:按键精灵等一系列软件编程,这个方法的好处是没有硬件成本。软件装好了,坑头码代码就行,但是这个的学习成本也是比较高的。除了需要熟悉软件本身的编程语言之外,还需要调试bug之类的时间,另外就是,有的系统,比如公司的系统 或者 那种安全性高的系统,可能直接就给你杀掉了,因为这个基本上都是用脚本在运行的,或者 修改注册表,这两种方法,在有的系统里面是会直接被杀掉的。
另外一个不好的地方是,因为是软件的,这个会把外界从的键盘全都统一识别成一个键盘,也就是不管你接几把键盘,本质上你只能有一套按键的方案,两个不同的键盘按相同的按键 是产生相同的效果的。
      硬件方法:做一个键盘的解释器,来解释按键相关的信息,然后在直接解释成新的按键信息传送给PC,这个 TMK的固件里面有USB to USB 转换器的开源方案,我这次用的这个方案也是基于这个的。但是 这个也是有坑的,开源的东西 能用但是性能和易用性嘛。。。我只能说适合折腾,而且 有的键盘是不兼容的,尽管HASU大神的这套方案已经发布了好多年了,然而github上,他还在一直持续不断的优化,编程的语言也是直接从c变成了c++,这个代码风格嘛。。。看了就头大系列。。。这也为后来的坑埋下了伏笔。。。(这边最后会有详细的总结,直接往下翻即可)
当然,好处就是,首先图形化的编程工具,然后每把键盘都能做自己特定的键盘自定义,不会被识别成一个。
下图就是HASU的实物:
Snipaste_2020-04-06_16-35-43.png
所以,脑子一热,就选了硬件的方案 HASU大神的tmk方案,这也是这次坑的开始(开源方案嘛。。。你懂的)
去github上找资料,然后就开始了一路坑的过程。。。其实hasu的硬件只有国外才能买到,没办法只能自己做一个了。
首先,这个开源的硬件吧,没办法,电路图找到了之后 还得自己画pcb,而且 这个电路图还有xx的地方,需要自己改,这个都是开源的硬件不会告诉你的。。。然后就自己画图,然后自己优化,顺带pcb也优化了下:
Snipaste_2020-04-06_16-43-26.png
Snipaste_2020-04-06_16-44-09.png
然后就是发出去打样制作,
下图是成品的样子,其实中间还有焊接啊 什么的我就不放出来了。。。
WeChat Image_20200406164743.jpg
然后就是左右两边焊上usb线,接到键盘上:
似乎有点不太精致啊,不过不重要,性能还可以。。。主要是没有做外壳,有机会搞个3D打印的壳子;
其中:白色的线是插到电脑的,黑色的线是插在键盘上的。
Snipaste_2020-04-06_17-46-09.png
然后再去TMK keyboard map editor网站上去自定义按键,
Snipaste_2020-04-06_16-49-41.png
然后 就是调试了。 问题这就来了。其实目前写的是支持Filco的87 单模的,而且我在看了filoc的usb传输数据的配置描述符之后,理论上来说同样的usb通道的话,双模和单模应该是一样的,然而,插上去并没有反应。。。。
Snipaste_2020-04-06_16-52-24.png
折就尴尬了啊,mmp的,只能下载源代码 一步一步的看了,于是乎就开始了坑路:
Snipaste_2020-04-06_16-54-24.png
而且这个,也是C 和 C++混在一起的,简直了。。。哎。。慢慢啃吧。最后发现,应该是解释器没法工作了,其中抓出来的数据显示的都是0,也就是没有按键按下,应该是解释器没有正常工作,usb的报告描述符没有顺利的抓到。
然后为了验证 硬件是ok的,我就把另外一把键盘拆了,把映射器装了进去:
一把sony一体机上的键盘,做工真的很不错,就是脚腕的压力克数有点大。纯码字的话,我是坚持不了30分钟的。。。
Snipaste_2020-04-06_16-57-16.png
翻开屁股 拆掉8个螺丝之后,直接拿开就好了。
目前hasu的固件支持boot protocal的键盘,别的不支持,主要是报告描述符的解析起来的话,如果不是标准的描述符适配起来太麻烦了:
Snipaste_2020-04-06_17-13-35.png
这个也是看过usb hid之后才决定拆的,这个也是有坑的, 后面细说:
Snipaste_2020-04-06_16-59-07.png
这个键盘里面的主控 和 带usb磁环的线,这个做工还是不错的,比有些高价的键盘的做工都好。
顺带这个usb线 里面是有屏蔽和防止拉拽的,比几百块一更的diy定制线似乎好了不少。。。。哈哈哈哈哈。。。
白色的是放拉拽的加强线才,然后外面有纯铜的屏蔽芯:那些卖大几十上百的diy线材,有部分里面有这些东西吗。。。。
WeChat Image_20200406161731.jpg
然后焊接,把板子串到usb线里面去,这条usb线就直接牺牲了。。。哭了。。。
WeChat Image_20200406161735.jpg WeChat Image_20200406161740.jpg
然后还要再键盘外壳上掏个小洞,用来reset和编程用:
WeChat Image_20200406161706.jpg
WeChat Image_20200406161744.jpg
这样的话 直接组好,硬件部分就完成了:
WeChat Image_20200406170617.jpg
这就是组装好的样子。。。。
然后再去tmk keyboard map editor设置按键 ,然后用flip烧录:
然后再调试,功能就正常了。。。
下图是我的按键设置:空格键作为层且换功能,这样的话 可以最大限度的减少手指的移动,然后还不影响已有的键盘功能;
Snipaste_2020-04-06_17-08-33.png

这次就很顺利了,一切正常,
再usb hid 里面也能捕捉到正常的数据:
Snipaste_2020-04-06_17-10-26.png

Part 2. 聊聊按键映射的方法优劣:
1,买原厂就带驱动的键盘:比如 雷蛇 罗技等,
目前来说:办公这一块的话,驱动完整行易用度:罗技游戏键盘的驱动 >= razer 驱动 >= 罗技办公键盘的驱动优点:省事,到手即用,双击666就行
缺点:你说罗技吧,非得用个romerG轴,哎真的是一言难尽。。。没办法自己客制化,如果驱动里面没法定义的话,那就没办法了。
2,软件的方案:比如按键精灵啊 之类的
优点
1.没有额外的硬件开销,不需要硬件的钱
2.携带只要U盘就行,而且没有额外的键盘学习开销,因为键位都是标准键位
缺点
1.需要学习相关的编程语言和规则
2.只能映射一把键盘,如果你需要多把键盘映射,软件的方案是映射不了的,因为再win或者mac下面的话,任意几把键盘的按键识别都是一样的
3.有的系统是不给你运行脚本的,在公司上班什么的可能会用不了,这个卡死了很多公司使用的人,而且直接卡死没有解决方法。
3,硬件的方案:
优点
1.任意多键盘的自定义都能搞,不会被识别成一把键盘。
2.tmk的可视化编程的话很方便,直接鼠标操作即可。
3.即插即用,最方便的,而且不会被系统杀死,不存在系统问题,不存在系统杀毒的问题。
缺点
1.需要硬件成本,HASU的硬件大概在50刀一个,我自己做的这个 前后也花了好几百吧。。。
2.因为是开源的方案,如果用hasu的那个硬件的话,其实pcb布局什么的并不是太好,但是不影响使用;
3.自己做的话,硬件需要花时间,花成本,成本的话是三个方案里面最高的
4.然后就是遇到不兼容的问题,只能等待大神修复 或者自己吭呲吭呲解bug。。。

优缺点基本上就是如上所说,各位可以自己挑选自己喜欢方案去做自己喜欢的按键自定义方法;
从此按键自定义完结,我去继续坑开源的代码吧。。。哈哈哈哈哈哈。。。。






评分

3

查看全部评分

发表于 2020-4-6 20:27 | 显示全部楼层
动手能力强,技术贴。
发表于 2020-4-6 20:35 | 显示全部楼层
厉害啊
发表于 2020-4-6 20:35 | 显示全部楼层
技术贴
发表于 2020-4-7 07:50 来自手机 | 显示全部楼层
技术帖 干货
发表于 2020-4-7 11:54 | 显示全部楼层
sony键盘真少见啊 这个模块会增加延迟么
 楼主| 发表于 2020-4-7 12:30 | 显示全部楼层
warhead 发表于 2020-4-7 11:54
sony键盘真少见啊 这个模块会增加延迟么

这个实际的话没法测 但是我是感觉不出来的。实际的回报延迟 你是感觉不到的,理论上来说 跑代码就增加延迟。。。哈哈哈哈哈哈。。。
发表于 2020-4-7 15:01 | 显示全部楼层
只是试玩啊 发表于 2020-4-7 12:30
这个实际的话没法测 但是我是感觉不出来的。实际的回报延迟 你是感觉不到的,理论上来说 跑代码就增加延 ...

感觉不出来就ok 楼主你这键盘是无线的吧 手感怎么样 薄膜么
发表于 2020-4-7 15:19 | 显示全部楼层
学习学习
 楼主| 发表于 2020-4-7 16:01 | 显示全部楼层
warhead 发表于 2020-4-7 15:01
感觉不出来就ok 楼主你这键盘是无线的吧 手感怎么样 薄膜么

这键盘是有线的啊。。。手感就是 几百块钱的薄膜那种手感。。。比几十的要好一些。。。嘿嘿
发表于 2020-4-8 09:17 | 显示全部楼层
只能看个热闹啦…… 这技术活
 楼主| 发表于 2020-4-8 09:23 | 显示全部楼层
hider2015 发表于 2020-4-8 09:17
只能看个热闹啦…… 这技术活

看热闹的人都不多了。。。
发表于 2020-4-8 09:53 | 显示全部楼层
只是试玩啊 发表于 2020-4-8 09:23
看热闹的人都不多了。。。

嗯……像我这种整个帖子看下来,虽说还是云里雾里的,唯一印象就是坑多。
哈哈哈
 楼主| 发表于 2020-4-8 12:34 | 显示全部楼层
hider2015 发表于 2020-4-8 09:53
嗯……像我这种整个帖子看下来,虽说还是云里雾里的,唯一印象就是坑多。
哈哈哈

开源的啥坑都多。。。
发表于 2020-4-8 15:16 | 显示全部楼层
我就看到了坑坑坑
发表于 2020-4-8 15:17 | 显示全部楼层
只是试玩啊 发表于 2020-4-8 09:23
看热闹的人都不多了。。。

看热闹的人还是有滴
发表于 2020-4-8 16:25 | 显示全部楼层
只是试玩啊 发表于 2020-4-7 16:01
这键盘是有线的啊。。。手感就是 几百块钱的薄膜那种手感。。。比几十的要好一些。。。嘿嘿

这个映射模块只能扩展有线键盘么

点评

嗯是的 只能有线 无线的原理和这个完全不一样。。。  详情 回复 发表于 2020-4-8 19:38
 楼主| 发表于 2020-4-8 19:38 | 显示全部楼层
warhead 发表于 2020-4-8 16:25
这个映射模块只能扩展有线键盘么

嗯是的 只能有线 无线的原理和这个完全不一样。。。

点评

谢谢 了解了  详情 回复 发表于 2020-4-9 14:17
发表于 2020-4-9 14:17 | 显示全部楼层
只是试玩啊 发表于 2020-4-8 19:38
嗯是的 只能有线 无线的原理和这个完全不一样。。。

谢谢 了解了
发表于 2020-4-9 14:39 | 显示全部楼层
相当于两个主控,原键盘主控的按键信号重映射?

点评

对的。。。可以直接接再外面 直接做成usb线 不需要拆解键盘。我是为了藏起来板子 所以就放在里面了。。。  详情 回复 发表于 2020-4-9 15:56
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|外设堂 ( 辽ICP备13014379号 )辽公网安备 21010202000549号

GMT+8, 2025-2-22 13:45 , Processed in 0.091887 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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