Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

USB模式下tmk的二合一按键有问题 #7

Open
genokolar opened this issue Feb 21, 2019 · 5 comments
Open

USB模式下tmk的二合一按键有问题 #7

genokolar opened this issue Feb 21, 2019 · 5 comments

Comments

@genokolar
Copy link
Contributor

当通过USB连接到电脑后,二合一按键有问题:
如设置FN1键为长按不放是LALT键,短按是方向左,在蓝牙模式下工作良好。如果采用USB连接的话,会出现短按方向键没有输出。如果短按激活能输出后,再次短按就不会出现问题。

也就是USB模式下至少需要短按两次,才会激活方向键左,但是短按两次只输出一个方向键左,第一次仅仅激活了短按功能。蓝牙模式下,短按一次就会输出一次方向键左,短按两次就是输出两次方向键左。

二合一键设置参看这里:

https://github.com/genokolar/nrf51822-keyboard/blob/2637b19a4f98b70dd3be84dd44012a9ec3ff4bc1/main/keyboard/keymap_plain.c#L68

@jim-kirisame
Copy link
Member

static void send_keyboard(report_keyboard_t * report)
{
#ifdef UART_SUPPORT
if(uart_is_using_usb())
uart_send_packet(PACKET_KEYBOARD, report->raw, KEYBOARD_REPORT_SIZE);
else
#endif
hids_keys_send(KEYBOARD_REPORT_SIZE, report->raw);
hook_send_keyboard(report);

按理来说蓝牙和USB的包应该是一样的来着……

@jim-kirisame
Copy link
Member

你手上有调试器的话可以看看第一次按下按键的时候uart_send_packet发送了些什么,反正要么是这边的数据有问题要么是解析数据有问题……

@genokolar
Copy link
Contributor Author

genokolar commented Feb 21, 2019

你手上有调试器的话可以看看第一次按下按键的时候uart_send_packet发送了些什么,反正要么是这边的数据有问题要么是解析数据有问题……

我烧写固件用的Jink OB v2 ,带串口,应该可以调试。但是我不会调试 😭

我觉得问题出在二合一的检测时间上,第一次按的时候有很短的时间做检测是输出ALT还是方向左;但是按下一次后,快速第二次按默认是方向键,所以相当于第二次按的时候ALT就是方向键,而不再是二合一。

要么就是UART的双方的时钟频率有不一致的地方?学习的东西好多 :)

@jim-kirisame
Copy link
Member

按理来说蓝牙和USB两者的检测时间应该是一致的才对啊……不应该会出现这种情况来着……你切换到蓝牙模式下就正常了吗?

@genokolar
Copy link
Contributor Author

按理来说蓝牙和USB两者的检测时间应该是一致的才对啊……不应该会出现这种情况来着……你切换到蓝牙模式下就正常了吗?

蓝牙模式完全没有问题。二合一功能,很实用的,比如我的设置就相当于有独立的方向键和Delete键

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants