完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛扫一扫,分享给好友
|
我设计了PIC16F1459固件,它的功能是USB HID键盘。我从MLA包中的HIDIG键盘开始。当按下任何按钮时,我的客户需要微控制器发送额外的键码为“F13”到“F24”。首先,我修改文件app_device_keyboard.c中的“hid_rpt01”表。修改USAGE_MAXIMUM的值从0x65到0x73.0x29、0x73、/(F24)//USAGE_MAXIMUM(键盘应用程序)如下hid_rpt01代码.//类特定描述符-HID键盘键盘结构体-HID键盘特定描述符-HID键盘-HID键盘结构体{uint8_t报告[HID_RPT01_SIZE]{uint8_HID_RPT01_RPT01_RPT01_SIZE];}hid hid-键盘结构体{uint8_t8_t8_t报告[HID_RPD_RPTRPT01_RPT01_SIZE];}hid hid_rpt01={{0XD 0XD_HID_RPT01_RPT01[HID_RPT01_RPT01_RPT01_RPT01_SIZE[HID_SIZE]];}}19,0xe0,//USAGE_MINIM0x29,0xe7,//USAGE_MAXIMUM(键盘右键盘右GUI)0x15,0x00,//USGE_MAMAXIMUM(键盘右键盘右GUI)0x00,//LOGICAL_LOGICAL_MIMINIMUM(0)0x25,0x01,//LOGICAL_MAMAXIMUM(1)0x75,0x75,0x01,//LOGICAL_MAXIMUM UM(1)0x75,0x75,0x01,//REPORT_SIZE(1)0x95,0x95,0x08//REPORT_SIZE(1)0x95,0x95,0x95,0x95,0x08,//REPO0x95、0x01、//REPORT_COUNT(1)0x75、0x08、//REPORT_尺寸(8)0x81,0x03,//INPUT(Cnst,Var,Abs)0x95,0x05,//REPORT_COUNT(5/REREPORT_COUNT(5)0x75,0x01,//REPORT_REPORT_COUNT(5)0x75,0x01,//REPORT/REPORT_REPORT_REPORT_COUNT(5)0x75,0x01,//REPOPORT/REPORT_REPORT_SIZE(1)0x05,0x05,0x08,//USAGE_PAGE_USAGE_PAGE_PAGE_PAGE(LED LEDs)0XX(LEDs)0x19,0x19,0x01,OUTPUT(Data,Var,Abs)0x95,0x01,//REPORT_COUNT(1)0x75,0x03,//REPORT_SIZE(3)0x91,0x03,//OUTPUT(Cnst,Var,Abs)0x95,0x06,//输出输出(Cnst,Var,Abs)0x950x950x950x950x06,//REREPORT_REPORT_COUNT(6)REPOPOREPORT_REPORT_COUNT(6)0x75,0x08,//REPOPORT_SIZE(8)0x15,0x15,0x00,//LOGICAL_MIMIMINIMUM(0,//LOGICAL_LOGICAL_MIMINIMUM(0)0x25,0x25,0x65,//LOGICAL_0x19,0x00,//USAGE_MINIMUM(保留(未指示事件))0x29,0x73,//(F24)//USAGE_MAXIMUM(键盘应用程序)0x81、0x00、//INPUT(数据、Ary、Abs)0xc0}//结束收集};接下来,修改发送相关键代码的按钮函数代码,例如“F13”=0x68Code:if(keyboard.waitingForRelease==false){keyboard.waitingForRelease=true;inputReport.keys[0]=0X68;//F13}我把这个USB键盘插入到PC机,操作系统是Windows 7。虽然“F13”是不能在编辑器上打印的额外密钥,但我可以编写一个Windows应用程序来捕获“F13”键。它不是Windows操作系统中的程序,但是我的客户需要在Linux FEDORA OS下运行的这个USB键盘插件。我尝试FEDORA XEV工具,XEV工具可以捕获FEDORA OS中的任何关键事件。但是在FEDORA OS中按下任何按钮(例如F13)时,没有任何按键响应。正常的ASCII密钥代码没有问题(例如F12)。我的客户想知道在固件中实现的关键代码是否出了问题。有什么想法吗?
|
|
相关推荐
3个回答
|
|
|
嗨,我们设计PIC16F1459作为USB HID键盘功能,当任何按键按下时,它会发送F13~F24键码。代码隐藏键盘是通用的HID键盘功能,首先修改HID报表描述符。将UsAGEX最大值修改为0x63(原件为0x65),通知OS,该设备将密钥号扩展到F24。请参见下面的代码。构造为{uint8_t报告[HID_RPT01_SIZE]}hid_rpt01={_{{___0x05,0x07,//USAGE_PAGE_PAGE(键盘)//USAGE_PAGE_PAGE_PAGE(键盘)0x19,0x00,//USAGE_USAGE_MINIMUM(保留(未指示事件(未指示未未事件))0x29,0x73,///(F24)////////(F24)//USGE_MAMAXIMUM_MAMAXIMUM 0xXXXXXXXXXXXXMAMAMAMAX81,0x81,0x00/////USGE_USGE_x0C}接下来,根据H修改密钥代码ID使用ID。(例如,发送F13键,HID使用ID是0x68),请参阅下面的代码inputReport.key[0]=0x68;//F13//数组输入如下:LSB[0x68][0x00][0x00][0x00][0x00][0x00]MSB F13到F24是标准键盘的额外键。没问题。目的是当任何按钮按下时发送F13到F24键码。里克
|
|
|
|
|
|
当Usage-max被扩展时,Logical-max也应该被增加,以便覆盖扩展的使用范围。0x25、0x73、//LOGICAL_MAXIMUM(115)Tsuneo
|
|
|
|
|
|
嗨,Tsuneo,在修改LogiLogi最大值到0x03之后,Linux能够捕获F13密钥码。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 04:21 , Processed in 0.743840 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1143