1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Дескриптор кнопки hidgame

Тема в разделе "WASM.NT.KERNEL", создана пользователем Llirik, 26 июн 2019.

  1. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    422
    Подскажите, пожалуйста, какой дескриптор образуется в этом коде:
    Код (Text):
    1.   /*
    2.   * Now the buttons
    3.   */
    4.   for( Idx = 0x0; Idx < DeviceExtension->nButtons; Idx++ )
    5.   {
    6.   /* Report size is 1 bit for button */
    7.   NEXT_BYTE(pucReport,  HIDP_GLOBAL_REPORT_SIZE);
    8.   NEXT_BYTE(pucReport,  0x1);
    9.  
    10.   NEXT_BYTE(pucReport,  HIDP_LOCAL_USAGE_4);
    11.   NEXT_BYTE(pucReport,  (UCHAR)(Idx + 1) );
    12.   NEXT_BYTE(pucReport,  0x0);
    13.   NEXT_BYTE(pucReport,  HID_USAGE_PAGE_BUTTON);
    14.   NEXT_BYTE(pucReport,  0x0);
    15.  
    16.   /* Data field */
    17.   NEXT_BYTE(pucReport,  HIDP_MAIN_INPUT_1);
    18.   NEXT_BYTE(pucReport,  ITEM_BUTTON);
    19.  
    20.   /* 7 bits of constant data */
    21.   NEXT_BYTE(pucReport,  HIDP_GLOBAL_REPORT_SIZE);
    22.   NEXT_BYTE(pucReport,  0x7);
    23.   NEXT_BYTE(pucReport,  HIDP_MAIN_INPUT_1);
    24.   NEXT_BYTE(pucReport,  ITEM_PADDING);
    25.  
    26.   HGM_DBGPRINT( FILE_HIDJOY | HGM_GEN_REPORT, \
    27.   ("HGM_GenerateReport:Button %u on",Idx ) ) ;
    28.   }
    29.  
    30.   if( Idx < MAX_BUTTONS )
    31.   {
    32.   /* Constant report for 8 * unused buttons bits */
    33.   NEXT_BYTE(pucReport,  HIDP_GLOBAL_REPORT_SIZE);
    34.   NEXT_BYTE(pucReport,  (UCHAR)((MAX_BUTTONS-Idx)*8) );
    35.  
    36.   /* Constant Field */
    37.   NEXT_BYTE(pucReport,  HIDP_MAIN_INPUT_1);
    38.   NEXT_BYTE(pucReport,  ITEM_PADDING);
    Обычные дескрипторы, вроде этого:
    Код (Text):
    1.   HID_USAGE_PAGE(BUTTONS),
    2.    HID_USAGE_MINIMUM(1, 1),
    3.    HID_USAGE_MAXIMUM(1, 3),
    4.    HID_LOGICAL_MINIMUM(1, 0),
    5.    HID_LOGICAL_MAXIMUM(1, 1),
    6.    HID_REPORT_COUNT(3),
    7.    HID_REPORT_SIZE(1),
    8.    HID_INPUT(DATA, VARIABLE, ABSOLUTE),
    9.    HID_REPORT_COUNT(1),
    10.    HID_REPORT_SIZE(5),
    11.    HID_INPUT(CONSTANT),
    почему-то вызывают сбой в других драйверах винды
     
    Последнее редактирование: 27 июн 2019