OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3863|回复: 6

关于USB键盘判断按键按下先后顺序的问题

[复制链接]

34

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
912
金钱
912
注册时间
2019-7-5
在线时间
189 小时
发表于 2020-11-17 10:13:43 | 显示全部楼层 |阅读模式
10金钱
各位大神,本人最近在做一个USB键盘,如果按住a, b,c三个按键,怎么判断那个先按下,就是怎么判断三个按键按下的先后顺序?如下代码,三个按键同时按下时,每次都是key0是装在buf[0]中,如何解决按键排序问题?


i=0;
if(KEY0==0)
{//
        buf[i]=0x1E;i++;
}
if(KEY1==0)
{
        buf[i]=0x05;i++;
}
                               
if(KEY2==0)
{
        buf[i]=0x06;i++;
}

Joystick_Send(buf[4],0,buf[0],buf[1],buf[2],buf[3],0,0); //

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
366
金钱
366
注册时间
2017-2-13
在线时间
125 小时
发表于 2020-11-17 11:12:32 | 显示全部楼层
对于电脑来说按键只有按下和抬起两种状态,实际先后顺序并没有影响,楼主可以抓一下键盘的数据看看
回复

使用道具 举报

34

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
912
金钱
912
注册时间
2019-7-5
在线时间
189 小时
 楼主| 发表于 2020-11-17 11:22:31 | 显示全部楼层
492393275 发表于 2020-11-17 11:12
对于电脑来说按键只有按下和抬起两种状态,实际先后顺序并没有影响,楼主可以抓一下键盘的数据看看

抓了,一般的标准键盘数据根据按键按下的顺序是有先后之分的
回复

使用道具 举报

0

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
366
金钱
366
注册时间
2017-2-13
在线时间
125 小时
发表于 2020-11-17 14:23:14 | 显示全部楼层
liaohaijian 发表于 2020-11-17 11:22
抓了,一般的标准键盘数据根据按键按下的顺序是有先后之分的

那确实需要区分先后就使用同级中断触发,类似FIFO的机制,但是比较费IO
回复

使用道具 举报

34

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
912
金钱
912
注册时间
2019-7-5
在线时间
189 小时
 楼主| 发表于 2020-11-17 16:50:21 | 显示全部楼层
492393275 发表于 2020-11-17 14:23
那确实需要区分先后就使用同级中断触发,类似FIFO的机制,但是比较费IO

硬件是矩阵键盘,比较难搞
回复

使用道具 举报

12

主题

3406

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8699
金钱
8699
注册时间
2020-5-11
在线时间
4196 小时
发表于 2020-11-18 10:16:08 | 显示全部楼层
本帖最后由 LcwSwust 于 2020-11-18 10:17 编辑

按4楼的思路来,类似FIFO,
假设buf[0]、buf[1]已有两个键值,第三键按下时先判断buf[0]、buf[1]中是否已存在该键,若有则不处理,若无则添加到buf[2],
假如buf[1]中的按键放开,要从队列中删除,右方数据左移,即:buf[[1]=buf[2],buf[2]=0;
感觉有点像链表,还挺麻烦的,不知有没有更简单的思路?
专治疑难杂症
回复

使用道具 举报

34

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
912
金钱
912
注册时间
2019-7-5
在线时间
189 小时
 楼主| 发表于 2020-11-19 20:31:18 | 显示全部楼层
LcwSwust 发表于 2020-11-18 10:16
按4楼的思路来,类似FIFO,
假设buf[0]、buf[1]已有两个键值,第三键按下时先判断buf[0]、buf[1]中是否已 ...

确实很麻烦,用的51单片机本来就内存有限
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-4 08:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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