CH552G做鍵盤的問題

請問管理員。如何知道筆記本電腦的FN鍵碼?我拿CH552G做模擬鍵盤。

你們的DEMO中:

HIDKey[0] = buf[1];? ? // Modifier keys

HIDKey[1] = 0;? ? ? ? ?// Reserved

HIDKey[2] = buf[2];? ? // Keycode 1

HIDKey[3] = buf[3];? ? ? ? ?// Keycode 2

HIDKey[4] = buf[4];? ? ? ? ?// Keycode 3

HIDKey[5] = buf[5];? ? ? ? ?// Keycode 4

HIDKey[6] = buf[6];? ? ? ? ?// Keycode 5

HIDKey[7] = buf[7];? ? ? ? ?// Keycode 6? ?

Enp1IntIn();

也沒有提及FN鍵的辦法。


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

您好,

一些鍵盤或者部分筆記本鍵盤上的FN鍵其實(shí)并不是一個(gè)真正具有功能的按鍵,只是該鍵盤程序中設(shè)計(jì)好了當(dāng)這兩個(gè)鍵同時(shí)按下時(shí)會上傳一些特殊的HID報(bào)告。如某些鍵盤的調(diào)高調(diào)低音量功能,是使用了HID Usage中的Consumer Paged,并使用了該Usage中的Volume Decrement 和Volume Increment用途。實(shí)現(xiàn)方式可以拿一個(gè)實(shí)際的有您需要功能的鍵盤抓包并模擬該設(shè)備的相關(guān)描述符實(shí)現(xiàn)。


好的,謝謝提供思路,不錯(cuò),我去試試。


管理員在嗎?我抓到蘋果的USB鍵盤的報(bào)表描述符了,但看了后不知道代碼怎么發(fā)送帶FN鍵的鍵值???麻煩幫我看看。

十六進(jìn)制是:

05,01,09,06,a1,01,85,01,05,07,19,e0,29,e7,15,00

25,01,75,01,95,08,81,02,95,01,75,08,81,01,95,05

75,01,05,08,19,01,29,05,91,02,95,01,75,03,91,01

95,06,75,08,15,00,26,ff,00,05,07,19,00,29,ff,81

00,05,0c,75,01,95,01,09,b8,15,00,25,01,81,02,05

ff,09,03,75,07,95,01,81,02,c0,05,0c,09,01,a1,01

85,52,15,00,25,01,75,01,95,01,09,cd,81,02,09,b3

81,02,09,b4,81,02,09,b5,81,02,09,b6,81,02,81,01

81,01,81,01,85,09,15,00,25,01,75,08,95,01,06,01

ff,09,0b,b1,02,75,08,95,02,b1,01,c0,06,00,ff,09

06,a1,01,06,00,ff,09,06,15,00,26,ff,00,75,08,95

40,85,3f,81,22,c0


轉(zhuǎn)換出來是:

0x05, 0x01,? ? ? ? // Usage Page (Generic Desktop Ctrls)

0x09, 0x06,? ? ? ? // Usage (Keyboard)

0xA1, 0x01,? ? ? ? // Collection (Application)

0x85, 0x01,? ? ? ? //? ?Report ID (1)

0x05, 0x07,? ? ? ? //? ?Usage Page (Kbrd/Keypad)

0x19, 0xE0,? ? ? ? //? ?Usage Minimum (0xE0)

0x29, 0xE7,? ? ? ? //? ?Usage Maximum (0xE7)

0x15, 0x00,? ? ? ? //? ?Logical Minimum (0)

0x25, 0x01,? ? ? ? //? ?Logical Maximum (1)

0x75, 0x01,? ? ? ? //? ?Report Size (1)

0x95, 0x08,? ? ? ? //? ?Report Count (8)

0x81, 0x02,? ? ? ? //? ?Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x95, 0x01,? ? ? ? //? ?Report Count (1)

0x75, 0x08,? ? ? ? //? ?Report Size (8)

0x81, 0x01,? ? ? ? //? ?Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x95, 0x05,? ? ? ? //? ?Report Count (5)

0x75, 0x01,? ? ? ? //? ?Report Size (1)

0x05, 0x08,? ? ? ? //? ?Usage Page (LEDs)

0x19, 0x01,? ? ? ? //? ?Usage Minimum (Num Lock)

0x29, 0x05,? ? ? ? //? ?Usage Maximum (Kana)

0x91, 0x02,? ? ? ? //? ?Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)

0x95, 0x01,? ? ? ? //? ?Report Count (1)

0x75, 0x03,? ? ? ? //? ?Report Size (3)

0x91, 0x01,? ? ? ? //? ?Output (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)

0x95, 0x06,? ? ? ? //? ?Report Count (6)

0x75, 0x08,? ? ? ? //? ?Report Size (8)

0x15, 0x00,? ? ? ? //? ?Logical Minimum (0)

0x26, 0xFF, 0x00,? //? ?Logical Maximum (255)

0x05, 0x07,? ? ? ? //? ?Usage Page (Kbrd/Keypad)

0x19, 0x00,? ? ? ? //? ?Usage Minimum (0x00)

0x29, 0xFF,? ? ? ? //? ?Usage Maximum (0xFF)

0x81, 0x00,? ? ? ? //? ?Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x05, 0x0C,? ? ? ? //? ?Usage Page (Consumer)

0x75, 0x01,? ? ? ? //? ?Report Size (1)

0x95, 0x01,? ? ? ? //? ?Report Count (1)

0x09, 0xB8,? ? ? ? //? ?Usage (Eject)

0x15, 0x00,? ? ? ? //? ?Logical Minimum (0)

0x25, 0x01,? ? ? ? //? ?Logical Maximum (1)

0x81, 0x02,? ? ? ? //? ?Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x05, 0xFF,? ? ? ? //? ?Usage Page (Reserved 0xFF)

0x09, 0x03,? ? ? ? //? ?Usage (0x03)

0x75, 0x07,? ? ? ? //? ?Report Size (7)

0x95, 0x01,? ? ? ? //? ?Report Count (1)

0x81, 0x02,? ? ? ? //? ?Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

0xC0,? ? ? ? ? ? ? // End Collection

0x05, 0x0C,? ? ? ? // Usage Page (Consumer)

0x09, 0x01,? ? ? ? // Usage (Consumer Control)

0xA1, 0x01,? ? ? ? // Collection (Application)

0x85, 0x52,? ? ? ? //? ?Report ID (82)

0x15, 0x00,? ? ? ? //? ?Logical Minimum (0)

0x25, 0x01,? ? ? ? //? ?Logical Maximum (1)

0x75, 0x01,? ? ? ? //? ?Report Size (1)

0x95, 0x01,? ? ? ? //? ?Report Count (1)

0x09, 0xCD,? ? ? ? //? ?Usage (Play/Pause)

0x81, 0x02,? ? ? ? //? ?Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x09, 0xB3,? ? ? ? //? ?Usage (Fast Forward)

0x81, 0x02,? ? ? ? //? ?Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x09, 0xB4,? ? ? ? //? ?Usage (Rewind)

0x81, 0x02,? ? ? ? //? ?Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x09, 0xB5,? ? ? ? //? ?Usage (Scan Next Track)

0x81, 0x02,? ? ? ? //? ?Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x09, 0xB6,? ? ? ? //? ?Usage (Scan Previous Track)

0x81, 0x02,? ? ? ? //? ?Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x81, 0x01,? ? ? ? //? ?Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x81, 0x01,? ? ? ? //? ?Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x81, 0x01,? ? ? ? //? ?Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)

0x85, 0x09,? ? ? ? //? ?Report ID (9)

0x15, 0x00,? ? ? ? //? ?Logical Minimum (0)

0x25, 0x01,? ? ? ? //? ?Logical Maximum (1)

0x75, 0x08,? ? ? ? //? ?Report Size (8)

0x95, 0x01,? ? ? ? //? ?Report Count (1)

0x06, 0x01, 0xFF,? //? ?Usage Page (Vendor Defined 0xFF01)

0x09, 0x0B,? ? ? ? //? ?Usage (0x0B)

0xB1, 0x02,? ? ? ? //? ?Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)

0x75, 0x08,? ? ? ? //? ?Report Size (8)

0x95, 0x02,? ? ? ? //? ?Report Count (2)

0xB1, 0x01,? ? ? ? //? ?Feature (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)

0xC0,? ? ? ? ? ? ? // End Collection

0x06, 0x00, 0xFF,? // Usage Page (Vendor Defined 0xFF00)

0x09, 0x06,? ? ? ? // Usage (0x06)

0xA1, 0x01,? ? ? ? // Collection (Application)

0x06, 0x00, 0xFF,? //? ?Usage Page (Vendor Defined 0xFF00)

0x09, 0x06,? ? ? ? //? ?Usage (0x06)

0x15, 0x00,? ? ? ? //? ?Logical Minimum (0)

0x26, 0xFF, 0x00,? //? ?Logical Maximum (255)

0x75, 0x08,? ? ? ? //? ?Report Size (8)

0x95, 0x40,? ? ? ? //? ?Report Count (64)

0x85, 0x3F,? ? ? ? //? ?Report ID (63)

0x81, 0x22,? ? ? ? //? ?Input (Data,Var,Abs,No Wrap,Linear,No Preferred State,No Null Position)

0xC0,? ? ? ? ? ? ? // End Collection


// 182 bytes



您好,

建議您看一些有關(guān)HID報(bào)告描述詳細(xì)解釋的相關(guān)資料,再結(jié)合前面2#提到的方式幫助理解

上面貼出的HID報(bào)告描述符中,比如報(bào)告ID為1的最后一個(gè)字節(jié)為EJect和該設(shè)備自定義的功能,報(bào)告ID為82的第一個(gè)字節(jié)每一位分別實(shí)現(xiàn)了播放,快進(jìn),回退等功能。


好的,謝謝,我研究下


FN鍵搞定


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频