@@ -859,6 +859,108 @@ const __u8 uclogic_rdesc_v2_frame_dial_arr[] = {
859859const size_t uclogic_rdesc_v2_frame_dial_size =
860860 sizeof (uclogic_rdesc_v2_frame_dial_arr );
861861
862+ /* Fixed report descriptor template for UGEE v2 pen reports */
863+ const __u8 uclogic_rdesc_ugee_v2_pen_template_arr [] = {
864+ 0x05 , 0x0d , /* Usage Page (Digitizers), */
865+ 0x09 , 0x01 , /* Usage (Digitizer), */
866+ 0xa1 , 0x01 , /* Collection (Application), */
867+ 0x85 , 0x02 , /* Report ID (2), */
868+ 0x09 , 0x20 , /* Usage (Stylus), */
869+ 0xa1 , 0x00 , /* Collection (Physical), */
870+ 0x09 , 0x42 , /* Usage (Tip Switch), */
871+ 0x09 , 0x44 , /* Usage (Barrel Switch), */
872+ 0x09 , 0x46 , /* Usage (Tablet Pick), */
873+ 0x75 , 0x01 , /* Report Size (1), */
874+ 0x95 , 0x03 , /* Report Count (3), */
875+ 0x14 , /* Logical Minimum (0), */
876+ 0x25 , 0x01 , /* Logical Maximum (1), */
877+ 0x81 , 0x02 , /* Input (Variable), */
878+ 0x95 , 0x02 , /* Report Count (2), */
879+ 0x81 , 0x03 , /* Input (Constant, Variable), */
880+ 0x09 , 0x32 , /* Usage (In Range), */
881+ 0x95 , 0x01 , /* Report Count (1), */
882+ 0x81 , 0x02 , /* Input (Variable), */
883+ 0x95 , 0x02 , /* Report Count (2), */
884+ 0x81 , 0x03 , /* Input (Constant, Variable), */
885+ 0x75 , 0x10 , /* Report Size (16), */
886+ 0x95 , 0x01 , /* Report Count (1), */
887+ 0x35 , 0x00 , /* Physical Minimum (0), */
888+ 0xa4 , /* Push, */
889+ 0x05 , 0x01 , /* Usage Page (Desktop), */
890+ 0x09 , 0x30 , /* Usage (X), */
891+ 0x65 , 0x13 , /* Unit (Inch), */
892+ 0x55 , 0x0d , /* Unit Exponent (-3), */
893+ 0x27 , UCLOGIC_RDESC_PEN_PH (X_LM ),
894+ /* Logical Maximum (PLACEHOLDER), */
895+ 0x47 , UCLOGIC_RDESC_PEN_PH (X_PM ),
896+ /* Physical Maximum (PLACEHOLDER), */
897+ 0x81 , 0x02 , /* Input (Variable), */
898+ 0x09 , 0x31 , /* Usage (Y), */
899+ 0x27 , UCLOGIC_RDESC_PEN_PH (Y_LM ),
900+ /* Logical Maximum (PLACEHOLDER), */
901+ 0x47 , UCLOGIC_RDESC_PEN_PH (Y_PM ),
902+ /* Physical Maximum (PLACEHOLDER), */
903+ 0x81 , 0x02 , /* Input (Variable), */
904+ 0xb4 , /* Pop, */
905+ 0x09 , 0x30 , /* Usage (Tip Pressure), */
906+ 0x45 , 0x00 , /* Physical Maximum (0), */
907+ 0x27 , UCLOGIC_RDESC_PEN_PH (PRESSURE_LM ),
908+ /* Logical Maximum (PLACEHOLDER), */
909+ 0x75 , 0x0D , /* Report Size (13), */
910+ 0x95 , 0x01 , /* Report Count (1), */
911+ 0x81 , 0x02 , /* Input (Variable), */
912+ 0x75 , 0x01 , /* Report Size (1), */
913+ 0x95 , 0x03 , /* Report Count (3), */
914+ 0x81 , 0x01 , /* Input (Constant), */
915+ 0x09 , 0x3d , /* Usage (X Tilt), */
916+ 0x35 , 0xC3 , /* Physical Minimum (-61), */
917+ 0x45 , 0x3C , /* Physical Maximum (60), */
918+ 0x15 , 0xC3 , /* Logical Minimum (-61), */
919+ 0x25 , 0x3C , /* Logical Maximum (60), */
920+ 0x75 , 0x08 , /* Report Size (8), */
921+ 0x95 , 0x01 , /* Report Count (1), */
922+ 0x81 , 0x02 , /* Input (Variable), */
923+ 0x09 , 0x3e , /* Usage (Y Tilt), */
924+ 0x35 , 0xC3 , /* Physical Minimum (-61), */
925+ 0x45 , 0x3C , /* Physical Maximum (60), */
926+ 0x15 , 0xC3 , /* Logical Minimum (-61), */
927+ 0x25 , 0x3C , /* Logical Maximum (60), */
928+ 0x81 , 0x02 , /* Input (Variable), */
929+ 0xc0 , /* End Collection, */
930+ 0xc0 , /* End Collection */
931+ };
932+ const size_t uclogic_rdesc_ugee_v2_pen_template_size =
933+ sizeof (uclogic_rdesc_ugee_v2_pen_template_arr );
934+
935+ /* Fixed report descriptor template for UGEE v2 frame reports (buttons only) */
936+ const __u8 uclogic_rdesc_ugee_v2_frame_btn_template_arr [] = {
937+ 0x05 , 0x01 , /* Usage Page (Desktop), */
938+ 0x09 , 0x07 , /* Usage (Keypad), */
939+ 0xA1 , 0x01 , /* Collection (Application), */
940+ 0x85 , UCLOGIC_RDESC_V1_FRAME_ID ,
941+ /* Report ID, */
942+ 0x05 , 0x0D , /* Usage Page (Digitizer), */
943+ 0x09 , 0x39 , /* Usage (Tablet Function Keys), */
944+ 0xA0 , /* Collection (Physical), */
945+ 0x75 , 0x01 , /* Report Size (1), */
946+ 0x95 , 0x08 , /* Report Count (8), */
947+ 0x81 , 0x01 , /* Input (Constant), */
948+ 0x05 , 0x09 , /* Usage Page (Button), */
949+ 0x19 , 0x01 , /* Usage Minimum (01h), */
950+ UCLOGIC_RDESC_FRAME_PH_BTN ,
951+ /* Usage Maximum (PLACEHOLDER), */
952+ 0x95 , 0x0A , /* Report Count (10), */
953+ 0x14 , /* Logical Minimum (0), */
954+ 0x25 , 0x01 , /* Logical Maximum (1), */
955+ 0x81 , 0x02 , /* Input (Variable), */
956+ 0x95 , 0x46 , /* Report Count (70), */
957+ 0x81 , 0x01 , /* Input (Constant), */
958+ 0xC0 , /* End Collection, */
959+ 0xC0 /* End Collection */
960+ };
961+ const size_t uclogic_rdesc_ugee_v2_frame_btn_template_size =
962+ sizeof (uclogic_rdesc_ugee_v2_frame_btn_template_arr );
963+
862964/* Fixed report descriptor for Ugee EX07 frame */
863965const __u8 uclogic_rdesc_ugee_ex07_frame_arr [] = {
864966 0x05 , 0x01 , /* Usage Page (Desktop), */
0 commit comments