Changeset cfbbe1d3 in mainline for uspace/drv/usbhid/kbd/kbddev.c
- Timestamp:
- 2011-04-21T20:24:14Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c7c0984a
- Parents:
- e50cd7f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/usbhid/kbd/kbddev.c
re50cd7f rcfbbe1d3 299 299 return; 300 300 } 301 302 unsigned i = 0; 303 301 304 302 /* Reset the LED data. */ 305 303 memset(kbd_dev->led_data, 0, kbd_dev->led_output_size * sizeof(int32_t)); 306 307 if ((kbd_dev->mods & KM_NUM_LOCK) && (i < kbd_dev->led_output_size)) { 308 kbd_dev->led_data[i++] = USB_HID_LED_NUM_LOCK; 309 } 310 311 if ((kbd_dev->mods & KM_CAPS_LOCK) && (i < kbd_dev->led_output_size)) { 312 kbd_dev->led_data[i++] = USB_HID_LED_CAPS_LOCK; 313 } 314 315 if ((kbd_dev->mods & KM_SCROLL_LOCK) 316 && (i < kbd_dev->led_output_size)) { 317 kbd_dev->led_data[i++] = USB_HID_LED_SCROLL_LOCK; 318 } 319 320 // TODO: COMPOSE and KANA 321 322 usb_log_debug("Creating output report: %s\n", usb_debug_str_buffer ((uint8_t *)kbd_dev->led_data, kbd_dev->led_output_size * 4, 0)); 323 324 usb_hid_report_output_set_data(hid_dev->parser, kbd_dev->led_path, 325 USB_HID_PATH_COMPARE_END , kbd_dev->led_data, 326 kbd_dev->led_output_size); 304 usb_log_debug("Creating output report:\n"); 305 306 usb_hid_report_field_t *field = usb_hid_report_get_sibling (hid_dev->parser, NULL, 307 kbd_dev->led_path, 308 USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY | USB_HID_PATH_COMPARE_END, 309 USB_HID_REPORT_TYPE_OUTPUT); 310 while(field != NULL) { 311 312 if((field->usage == USB_HID_LED_NUM_LOCK) && (kbd_dev->mods & KM_NUM_LOCK)){ 313 field->value = 1; 314 } 315 316 if((field->usage == USB_HID_LED_CAPS_LOCK) && (kbd_dev->mods & KM_CAPS_LOCK)){ 317 field->value = 1; 318 } 319 320 if((field->usage == USB_HID_LED_SCROLL_LOCK) && (kbd_dev->mods & KM_SCROLL_LOCK)){ 321 field->value = 1; 322 } 323 324 field = usb_hid_report_get_sibling (hid_dev->parser, field, 325 kbd_dev->led_path, 326 USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY | USB_HID_PATH_COMPARE_END, 327 USB_HID_REPORT_TYPE_OUTPUT); 328 } 329 327 330 int rc = usb_hid_report_output_translate(hid_dev->parser, 0, 328 331 kbd_dev->output_buffer, kbd_dev->output_size); … … 648 651 usb_hid_report_path_append_item(path, USB_HIDUT_PAGE_KEYBOARD, 0); 649 652 //usb_hid_report_path_set_report_id(path, 0); 650 651 int rc = usb_hid_parse_report(hid_dev->parser, buffer, actual_size); 653 654 uint8_t report_id; 655 int rc = usb_hid_parse_report(hid_dev->parser, buffer, actual_size, &report_id); 656 usb_hid_report_path_set_report_id (path, report_id); 652 657 usb_hid_report_field_t *field = usb_hid_report_get_sibling(hid_dev->parser, 653 658 NULL, path, USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY, 654 659 USB_HID_REPORT_TYPE_INPUT); 655 660 661 unsigned i=0; 662 usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data; 663 664 memset(kbd_dev->keys, 0, kbd_dev->key_count); 656 665 while(field != NULL) { 657 usb_log_debug("FIELD (%X) - VALUE(%X) USAGE(%X)\n", field, field->value, field->usage); 666 if((i < kbd_dev->key_count) && (field->value != 0)){ 667 kbd_dev->keys[i++] = (uint8_t)field->usage; 668 } 658 669 field = usb_hid_report_get_sibling(hid_dev->parser, field, path, 659 670 USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY, 660 671 USB_HID_REPORT_TYPE_INPUT); 661 672 } 662 673 usb_kbd_process_keycodes(kbd_dev->keys, kbd_dev->key_count, report_id, hid_dev); 663 674 664 675 usb_hid_report_path_free(path);
Note:
See TracChangeset
for help on using the changeset viewer.