Comments (10)
你提到的remapBuffer[i] |= 0x80 >> j
确实是或,不干扰其他的,但后面还有一段hidBuffer相关的代码:
index = (int16_t) (keyMap[_layer][i * 8 + j] / 8 + 1);
bitIndex = (int16_t) (keyMap[_layer][i * 8 + j] % 8);
……
if (remapBuffer[i] & (0x80 >> j))
hidBuffer[index + 1] |= 1 << (bitIndex);
layer1最后的几个值也是0,就相当于在hidBuffer中把keycode为0的按键也放进去了,keycode 0是Reserved。
也就是说按下pageUP时,实际hidBuffer中包含了Reserved以及pageUP,不知道操作系统会如何处理,
如果操作系统认为包含了Reserved的按键信息是无效的,丢弃掉不处理,那pageUP也就无效了
没有验证,纯看代码猜想。
还是要等稚晖君debug解决。
from helloword-keyboard.
是一个bug,我晚点调试一下
from helloword-keyboard.
pageUP的bug,应该跟按键定义有关:
- keymap[KEYMAP_NUM][IO_NUMBER],有5层映射,每层88个(82个按键+6个Touchpad)
- 但在定义每层映射时,实际只有83个值,后面的几个默认初始化了0
- 默认给的0值,恰好是pageUP对应的IO pin
可以尝试下,把keymap 0层映射,最后面的几个值补充完整,应该能搞定,比如:
int16_t keyMap[KEYMAP_NUM][IO_NUMBER] = {
// The first layer, used for aligning 74HC165 IO pins to PCB key layout
{67, 61, 60, 58, 59, 52, 55, 51, 50, 49, 48, 47, 46, 3,
80, 81, 64, 57, 62, 63, 53, 54, 45, 44, 40, 31, 26, 18, 2,
19, 70, 71, 66, 65, 56, 36, 37, 38, 39, 43, 42, 41, 28, 1,
15, 74, 73, 72, 68, 69, 29, 30, 35, 34, 33, 32, 24, 0,
14, 76, 77, 78, 79, 16, 20, 21, 22, 23, 27, 25, 17, 4,
13, 12, 8, 75, 9, 10, 7, 11, 6, 5,
82, 83, 84, 85, 86, 87} //最后的几个值,不要空着
from helloword-keyboard.
pageUP的bug,应该跟按键定义有关:
- keymap[KEYMAP_NUM][IO_NUMBER],有5层映射,每层88个(82个按键+6个Touchpad)
- 但在定义每层映射时,实际只有83个值,后面的几个默认初始化了0
- 默认给的0值,恰好是pageUP对应的IO pin
可以尝试下,把keymap 0层映射,最后面的几个值补充完整,应该能搞定,比如: int16_t keyMap[KEYMAP_NUM][IO_NUMBER] = { // The first layer, used for aligning 74HC165 IO pins to PCB key layout {67, 61, 60, 58, 59, 52, 55, 51, 50, 49, 48, 47, 46, 3, 80, 81, 64, 57, 62, 63, 53, 54, 45, 44, 40, 31, 26, 18, 2, 19, 70, 71, 66, 65, 56, 36, 37, 38, 39, 43, 42, 41, 28, 1, 15, 74, 73, 72, 68, 69, 29, 30, 35, 34, 33, 32, 24, 0, 14, 76, 77, 78, 79, 16, 20, 21, 22, 23, 27, 25, 17, 4, 13, 12, 8, 75, 9, 10, 7, 11, 6, 5, 82, 83, 84, 85, 86, 87} //最后的几个值,不要空着
您好,我觉得您的解答非常有道理,应该是与初始化的 0 有关,但是还是不太想得明白为什么会导致 Page Up 失灵。缺少的五个值对应触摸条的后五个触点,如果被初始化为 0 是否应该只是代表多出了五个 Page Up 键(因为 remapBuffer[i] |= 0x80 >> j; 用的是或等于,似乎不会干扰相同功能键的使用)?手上还没有硬件可以尝试,只能空想,希望能得到解答,谢谢 orz。
from helloword-keyboard.
您好,我觉得您的解答非常有道理,应该是与初始化的 0 有关,但是还是不太想得明白为什么会导致 Page Up 失灵。缺少的五个值对应触摸条的后五个触点,如果被初始化为 0 是否应该只是代表多出了五个 Page Up 键(因为 remapBuffer[i] |= 0x80 >> j; 用的是或等于,似乎不会干扰相同功能键的使用)?手上还没有硬件可以尝试,只能空想,希望能得到解答,谢谢 orz。
我也没有硬件,只是对着代码看的猜测,发出来也是想请有板子的这位兄弟验证下。
from helloword-keyboard.
你提到的
remapBuffer[i] |= 0x80 >> j
确实是或,不干扰其他的,但后面还有一段hidBuffer相关的代码:index = (int16_t) (keyMap[_layer][i * 8 + j] / 8 + 1); bitIndex = (int16_t) (keyMap[_layer][i * 8 + j] % 8); …… if (remapBuffer[i] & (0x80 >> j)) hidBuffer[index + 1] |= 1 << (bitIndex);
layer1最后的几个值也是0,就相当于在hidBuffer中把keycode为0的按键也放进去了,keycode 0是Reserved。 也就是说按下pageUP时,实际hidBuffer中包含了Reserved以及pageUP,不知道操作系统会如何处理, 如果操作系统认为包含了Reserved的按键信息是无效的,丢弃掉不处理,那pageUP也就无效了
没有验证,纯看代码猜想。 还是要等稚晖君debug解决。
您好!您这个方法可以解决了pageup这个问题!(其实几天前看到您评论这个就弄了解决了)但是最后我删评了主要是因为部分游戏还是无法识别pageup,目前我试过了有csgo、apex、堡垒之夜都没办法在设置页面通过点击绑定pageup按键。但是在office、chrome网站和其他我常用的几款软件都是可以的,无法识别的均是游戏,所以当时就先删评想解决这个问题。但是研究了几天还是没啥思路,不知您是否有看法和解决的方案?感觉像是驱动问题,但是不太懂这方面开发,不知从哪里入手。
from helloword-keyboard.
您好!您这个方法可以解决了pageup这个问题!(其实几天前看到您评论这个就弄了解决了)但是最后我删评了主要是因为部分游戏还是无法识别pageup,目前我试过了有csgo、apex、堡垒之夜都没办法在设置页面通过点击绑定pageup按键。但是在office、chrome网站和其他我常用的几款软件都是可以的,无法识别的均是游戏,所以当时就先删评想解决这个问题。但是研究了几天还是没啥思路,不知您是否有看法和解决的方案?感觉像是驱动问题,但是不太懂这方面开发,不知从哪里入手。
如你所说,在office、网页等应用pageUP已经可以使用,那我觉得就跟固件没什么关系了。至于游戏无法绑定pageup,这个我不了解,你可以试下其他的键盘是否有同样游戏的问题,个人认为不是键盘固件的问题。
ps: 羡慕你们都已经拿到键盘了,太快了…… 我才上了PCBA的车,东西估计还要几周才能到。
from helloword-keyboard.
您好!您这个方法可以解决了pageup这个问题!(其实几天前看到您评论这个就弄了解决了)但是最后我删评了主要是因为部分游戏还是无法识别pageup,目前我试过了有csgo、apex、堡垒之夜都没办法在设置页面通过点击绑定pageup按键。但是在office、chrome网站和其他我常用的几款软件都是可以的,无法识别的均是游戏,所以当时就先删评想解决这个问题。但是研究了几天还是没啥思路,不知您是否有看法和解决的方案?感觉像是驱动问题,但是不太懂这方面开发,不知从哪里入手。
如你所说,在office、网页等应用pageUP已经可以使用,那我觉得就跟固件没什么关系了。至于游戏无法绑定pageup,这个我不了解,你可以试下其他的键盘是否有同样游戏的问题,个人认为不是键盘固件的问题。
ps: 羡慕你们都已经拿到键盘了,太快了…… 我才上了PCBA的车,东西估计还要几周才能到。
哈哈,我朋友是出国在瑞士那边留学,留下来给罗技做工程师了,稚晖君大佬开源了大部分东西,小部分问题他都帮我设计好了。我表弟刚好是干外设厂的,所以制造也没什么难题哈哈哈(主要是可以白嫖大赚特赚)。我自己研究研究这个问题吧,之前达尔优A98也出现-/_和=/+键chrome和打字上没问题,游戏死活没反应。最后给大家发了个新驱动解决了,我去打听打听!也可能是我自己硬件的问题,感谢您的解答和建议哈哈哈~
from helloword-keyboard.
你提到的
remapBuffer[i] |= 0x80 >> j
确实是或,不干扰其他的,但后面还有一段hidBuffer相关的代码:index = (int16_t) (keyMap[_layer][i * 8 + j] / 8 + 1); bitIndex = (int16_t) (keyMap[_layer][i * 8 + j] % 8); …… if (remapBuffer[i] & (0x80 >> j)) hidBuffer[index + 1] |= 1 << (bitIndex);
layer1最后的几个值也是0,就相当于在hidBuffer中把keycode为0的按键也放进去了,keycode 0是Reserved。 也就是说按下pageUP时,实际hidBuffer中包含了Reserved以及pageUP,不知道操作系统会如何处理, 如果操作系统认为包含了Reserved的按键信息是无效的,丢弃掉不处理,那pageUP也就无效了
没有验证,纯看代码猜想。 还是要等稚晖君debug解决。
感谢解答,之前是忽略了后面的层 hhh,到手再试试了。祝好。
from helloword-keyboard.
已经修复了
from helloword-keyboard.
Related Issues (20)
- 未知 USB 设备(设备描述符请求失败) HOT 2
- 更新墨水屏图片失败!驱动已安装完成 HOT 6
- 关于PCB加入优联主控实现无线多设备切换及拓展部分实现音频软件推子的功能 HOT 1
- MUTE,VOLUME_UP,VOLUME_DOWN这类功能键不起作用 HOT 3
- Helloword HOT 1
- Helloword
- Helloword
- Hallo
- LED灯闪烁问题和TYPE-C上电出现啸叫声
- Type-C电源供电和发热问题 HOT 9
- 改键软件-qt实现 HOT 1
- 立创开源的键盘工程是不是没了 HOT 11
- Pcb files again HOT 10
- Setembroflow
- 关于按键滤波方案的一个想法
- 无法理解keymap和keyboard.remap HOT 2
- 如何更改轴体数量 HOT 1
- Gerber files/PCB files to my email
- E-Ink doesn't turn on - .json file for VIA?
- 立创商城的硬件开源工程没有了
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from helloword-keyboard.