USB论坛-百合电子工作室USB专题站

 找回密码
 我要注册
搜索
热搜: USB学习板
查看: 8779|回复: 4
打印 上一主题 下一主题

我要写ctrl和shift同时按下该怎么办呢?

[复制链接]

12

主题

0

好友

100

积分

产品用户

Rank: 4

跳转到指定楼层
楼主
发表于 2015-11-23 20:57:15 |只看该作者 |倒序浏览
我要写ctrl和shift同时按下该怎么办呢?
回复

使用道具 举报

12

主题

0

好友

100

积分

产品用户

Rank: 4

沙发
发表于 2015-11-23 20:58:54 |只看该作者
还有我单独按shift和ctrl,该怎么写呢?
回复

使用道具 举报

6

主题

0

好友

1158

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2015-11-23 21:21:02 |只看该作者
学习板键盘示例的报告描述符定义了报告包的第一个字节的八个位分别代表八个特殊功能键的状态,这八个特殊功能键可以查HID USBAGE TABLE(Table 12: Keyboard/Keypad Page ,Usage ID值从224到231的八个键)。所以发送时第一个字节发0x01代表左Control键单独按下,第一个字节发0x02代表左Shift单独按下,第一个字节发0x03代表左Control和左Shift同时按下。0x10代表右Control键单独按下,0x20代表右Shift键单独按下,0x30代表右Control和右Shift同时按下
回复

使用道具 举报

12

主题

0

好友

100

积分

产品用户

Rank: 4

地板
发表于 2015-11-23 21:55:33 |只看该作者
恩,对的。好棒!
可为什么0x01代表左Control键单独按下,第一个字节发0x02代表左Shift单独按下,第一个字节发0x03代表左Control和左Shift同时按下?

本帖子中包含更多资源

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

回复

使用道具 举报

6

主题

0

好友

1158

积分

管理员

Rank: 9Rank: 9Rank: 9

5#
发表于 2015-11-23 23:01:44 |只看该作者
看报告描述符,其定义第一个字节是这样定义的:
[code=cpp]//用途最小值,这里为左ctrl键      
    0x19, 0xe0,                    //   USAGE_MINIMUM (Keyboard LeftControl)      
    //用途最大值,这里为右GUI键,即window键      
    0x29, 0xe7,                    //   USAGE_MAXIMUM (Keyboard Right GUI)      
    //逻辑最小值为0      
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)      
    //逻辑最大值为1      
    0x25, 0x01,                    //   LOGICAL_MAXIMUM (1)      
    //报告大小(即这个字段的宽度)为1bit,所以前面的逻辑最小值为0,逻辑最大值为1      
    0x75, 0x01,                    //   REPORT_SIZE (1)      
    //报告的个数为8,即总共有8个bits      
    0x95, 0x08,                    //   REPORT_COUNT (8)[/code]
注释里已经说得非常明白了,用途最小值是0xe0,用途最大值是右GUI键,就是最后的八个特殊功能键
回复

使用道具 举报

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

USB开发网 (渝ICP备09006681号-4)

GMT+8, 2024-4-27 01:21 , Processed in 0.052491 second(s), 19 queries .

百合电子工作室版权所有
回顶部