Witam.
Na początku chciałbym zaznaczyć, iż dotychczas pisałem tylko w BASCOM'ie, a o C mam słabe pojęcie.
Chciałbym zbudować klawiaturę, a w zasadzie potrzeba tylko przycisków multimedialnych (play/pauza/stop) na USB. Znalazłem projekt HIDKeys, który uruchomiłem na procesorze ATMega8515 (mniejsza z tym, bo to kwestia jednej linijki w Makefile). Zaprogramowałem procesor, podłączyłem i układ został wykryty jako klawiatura HID, działa prawidłowo, wysyła kody przycisków standardowej klawiatury, która w raporcie USB jest oznaczona USAGE_PAGE 0x07. żeby było możliwe wysyłanie kodów przycisków klawiatury multimedialnej należy ustawić w raporcie USAGE_PAGE 0x0C i tutaj zaczyna się problem. Znalazłem w kodzie źródłowym część odpowiedzialną za raport USB, ale gdy coś zmienię, klawiatura przestaje działać.
Kody które próbowałem wysyłać, ale żaden program na nie nie reagował to:
176
181
182
183
205
Tutaj źródło tych kodów:
http://www.usb.org/developers/devclass_docs/Hut1_12.pdf
http://download.microsoft.com/download/1/6/1/...512-40e2-4cc9-843a-923143f3456c/translate.pdf
Jak zamienić to HID Page, aby klawiatura działała prawidłowo jako klawiatura multimedialna? Jakie kody wysyłają standardowe klawiatury multimedialne? Jak można zmodyfikować program aby kody były wysyłane jako 16 bitowe (o ile się nie mylę, teraz są wysyłane jako 8 bit)?
Na początku chciałbym zaznaczyć, iż dotychczas pisałem tylko w BASCOM'ie, a o C mam słabe pojęcie.
Chciałbym zbudować klawiaturę, a w zasadzie potrzeba tylko przycisków multimedialnych (play/pauza/stop) na USB. Znalazłem projekt HIDKeys, który uruchomiłem na procesorze ATMega8515 (mniejsza z tym, bo to kwestia jednej linijki w Makefile). Zaprogramowałem procesor, podłączyłem i układ został wykryty jako klawiatura HID, działa prawidłowo, wysyła kody przycisków standardowej klawiatury, która w raporcie USB jest oznaczona USAGE_PAGE 0x07. żeby było możliwe wysyłanie kodów przycisków klawiatury multimedialnej należy ustawić w raporcie USAGE_PAGE 0x0C i tutaj zaczyna się problem. Znalazłem w kodzie źródłowym część odpowiedzialną za raport USB, ale gdy coś zmienię, klawiatura przestaje działać.
Kody które próbowałem wysyłać, ale żaden program na nie nie reagował to:
176
181
182
183
205
Tutaj źródło tych kodów:
http://www.usb.org/developers/devclass_docs/Hut1_12.pdf
http://download.microsoft.com/download/1/6/1/...512-40e2-4cc9-843a-923143f3456c/translate.pdf
Jak zamienić to HID Page, aby klawiatura działała prawidłowo jako klawiatura multimedialna? Jakie kody wysyłają standardowe klawiatury multimedialne? Jak można zmodyfikować program aby kody były wysyłane jako 16 bitowe (o ile się nie mylę, teraz są wysyłane jako 8 bit)?
PROGMEM char usbHidReportDescriptor[35] = { /* USB report descriptor */
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x06, // USAGE (Keyboard)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x07, // USAGE_PAGE (Keyboard) Tutaj chyba trzeba zmienić na 0x0c
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)
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)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x08, // REPORT_SIZE (8)
0x25, 0x65, // LOGICAL_MAXIMUM (101)
0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))
0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application)
0x81, 0x00, // INPUT (Data,Ary,Abs)
0xc0 // END_COLLECTION
};