├── Display ├── framework_laptop_12_glass.pdf └── README.md ├── Mainboard ├── 2D │ └── Framework_Laptop_12_MB_Generic.pdf ├── Mainboard_Interfaces_Schematic_Framework_Laptop_12_13th_Gen_Intel_Core.pdf └── README.md ├── README.md └── InputCover ├── README.md └── Touchpad.md /Display/framework_laptop_12_glass.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrameworkComputer/Framework-Laptop-12/HEAD/Display/framework_laptop_12_glass.pdf -------------------------------------------------------------------------------- /Mainboard/2D/Framework_Laptop_12_MB_Generic.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrameworkComputer/Framework-Laptop-12/HEAD/Mainboard/2D/Framework_Laptop_12_MB_Generic.pdf -------------------------------------------------------------------------------- /Mainboard/Mainboard_Interfaces_Schematic_Framework_Laptop_12_13th_Gen_Intel_Core.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FrameworkComputer/Framework-Laptop-12/HEAD/Mainboard/Mainboard_Interfaces_Schematic_Framework_Laptop_12_13th_Gen_Intel_Core.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Framework Laptop 12 2 | Documentation around the Mainboard and other key parts of Framework Laptop 12 3 | (available at https://frame.work/marketplace/mainboards). 4 | 5 | We designed Framework Laptop 12 to enable re-use of key modules like the Mainboard. 6 | The Mainboard is operable as a standalone single board computer outside of the laptop, 7 | with a smaller form factor relative to Framework Laptop 13. 8 | 9 | ## License 10 | 11 | Framework Laptop 12 © 2024 by Framework Computer Inc is licensed under CC BY 4.0. 12 | To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ 13 | 14 | ## Mainboard 15 | 16 | This folder contains interface documentation to enable Mainboard re-use. 17 | 18 | ## Input Cover 19 | 20 | This folder contains interface documentation to enable Input Cover re-use. 21 | 22 | ## Display 23 | 24 | Mechanical design files and pinout of the display. 25 | -------------------------------------------------------------------------------- /InputCover/README.md: -------------------------------------------------------------------------------- 1 | # Input Cover 2 | 3 | ## License 4 | 5 | Framework Laptop 12 © 2025 by Framework Computer Inc is licensed under CC BY 4.0. 6 | To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ 7 | 8 | ## Layout 9 | 10 | The input cover includes the touchpad and keyboard. 11 | There is one main PCB, which we will call the touchpad PCB. 12 | It includes the Pixart PCT2642QC (PLP239 Family) touchpad IC and IT8801 keyboard controler. 13 | 14 | The keyboard matrix connects to the touchpad PCB through an FPC connector. 15 | 16 | ## Touchpad Module Details 17 | 18 | For details about the touchpad module, including silkscreen and firmware, 19 | please refer to [Touchpad.md]. 20 | 21 | ## Pinouts 22 | 23 | ### Touchpad PCB to Mainboard 24 | 25 | Connection is made through an FPC daughterboard that has pads for two sets of 10 pogo pins. 26 | See the pinout for that on the mainboard README.md 27 | 28 | Pinout for FPC connector on the touchpad PCB to the pogo pin daughterboard. 29 | The `5VS_TP` and `KBL_P` pins are duplicated on this FPC connector, but not on the pogo pins. 30 | 31 | | Pin | Signal | Notes | 32 | |-----|------------|--------------| 33 | | 1 | 5VS_TP | | 34 | | 2 | 5VS_TP | | 35 | | 3 | KBL_P | | 36 | | 4 | KBL_P | | 37 | | 5 | 3VS_TP | | 38 | | 6 | TP_I2C_CLK | Touchpad I2C | 39 | | 7 | TP_I2C_SDA | Touchpad I2C | 40 | | 8 | TP_INT# | | 41 | | 9 | BOARD_ID | | 42 | | 10 | KB_I2C_SCL | Keyboard I2C | 43 | | 11 | KB_I2C_SDA | Keyboard I2C | 44 | | 12 | KB_INT | Keyboard I2C | 45 | | 13 | KSI_03_IN | | 46 | | 14 | KSI_03_OUT | | 47 | | 15 | KSI_02_IN | | 48 | | 16 | KSI_02_OUT | | 49 | | 17 | KSI_00_IN | | 50 | | 18 | KSI_00_OUT | | 51 | | 19 | GND | | 52 | | 20 | GND | | 53 | | 21 | GND | | 54 | | 22 | GND | | 55 | 56 | ### Touchpad to Keyboard 57 | 58 | | Pin | Signal | 59 | |-----|------------| 60 | | 1 | KSI_00_IN | 61 | | 2 | KSI1 | 62 | | 3 | KSI2 | 63 | | 4 | KSI_03_IN | 64 | | 5 | KSI4 | 65 | | 6 | KSI5 | 66 | | 7 | KSI6 | 67 | | 8 | KSI7 | 68 | | 9 | KSO0 | 69 | | 10 | KSO1 | 70 | | 11 | KSO_02_IN | 71 | | 12 | KSO3 | 72 | | 13 | KSO4 | 73 | | 14 | KSO5 | 74 | | 15 | KSO6 | 75 | | 16 | KSO7 | 76 | | 17 | KSO8 | 77 | | 18 | KSO9 | 78 | | 19 | KSO10 | 79 | | 20 | KSO11 | 80 | | 21 | KSO12 | 81 | | 22 | KSO13 | 82 | | 23 | KSO14 | 83 | | 24 | KSO15 | 84 | | 25 | KSO16 | 85 | | 26 | KSO17 | 86 | | 27 | CAPS_P | 87 | | 28 | CAPS_N | 88 | 89 | ## Keyboard 90 | 91 | ### Keyboard Matrix 92 | 93 | ANSI layout: 94 | 95 | ``` 96 | | |Col 0|Col 1|Col 2|Col 3|Col 4|Col 5|Col 6|Col 7|Col 8|Col 9|Col10|Col11|Col12|Col13|Col14|Col15|Col16|Col17| 97 | |Row 0| | F11 | F1 | B | F10 | N | | | = | |RAlt | | | | | | FN | | 98 | |Row 1| | ESC | F4 | G | F7 | F12 | H | | ' | F9 | | Bsp | | |LCtrl| | | | 99 | |Row 2| | TAB | F3 | T | F6 | ] | Y | | [ | Del | | F8 | | | | | | | 100 | |Row 3| WIN | ` | F2 | 5 | S | | - | | 6 | | | | | | |RCtrl| | | | 101 | |Row 4| | A | D | F | F5 | K | J | | ; | L | |Enter| | | | | | | 102 | |Row 5| | 1 | , | > | / | C |Space|LShft| X | V | | M | | | | | | | 103 | |Row 6| | Z | 3 | 4 | 2 | 8 | 0 | | 7 | 9 | | Down|Left |LAlt | |CapsL| | | 104 | |Row 7| | U | I | O | P | Q | W |RShft| E | R | | Up |Right| | | | | | 105 | ``` 106 | 107 | Missing on ANSI: 14, 42, 45, 56, 63, 65, 80, 81, 85, 86 108 | -------------------------------------------------------------------------------- /Mainboard/README.md: -------------------------------------------------------------------------------- 1 | # Mainboard 2 | 3 | ## License 4 | 5 | Framework Laptop 12 © 2024 by Framework Computer Inc is licensed under CC BY 4.0. 6 | To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ 7 | 8 | ## Pinouts 9 | 10 | ### Webcam Interface 11 | 12 | This is the interface to the webcam module. 13 | This module has not only the webcam but also an accelerometer and a dual-output Hall Sensor. 14 | 15 | | Pin | Signal | Notes | 16 | |-----|---------- |-------------------------| 17 | | 1 | 3VL_EC | | 18 | | 2 | TABLET_MODE# | Hall sensor tablet mode | 19 | | 3 | LID_SW# | Hall sensor lid closed | 20 | | 4 | ACC_INT | G-Sensor interrupt | 21 | | 5 | GND | | 22 | | 6 | USB_DM | Camera USB | 23 | | 7 | USB_DP | Camera USB | 24 | | 8 | 3VS_CAM | Camera IC Power | 25 | | 9 | CAM_SW | Camera privacy switch | 26 | | 10 | DMIC_CLK | Digital Microphone | 27 | | 11 | DMIC_DATA | Digital Microphone | 28 | | 12 | MIC_SW | Mic privacy switch | 29 | | 13 | ALS_INT# | Reserved | 30 | | 14 | I2C_SCL | Accelerometer I2C | 31 | | 15 | I2C_SDA | Accelerometer I2C | 32 | | 16 | OS_DET_CAM | Reserved, pullup | 33 | | 17 | GND | | 34 | | 18 | NC | | 35 | | 19 | NC | | 36 | | 20 | NC | | 37 | 38 | ## Display Interface 39 | 40 | IPEX 20879-030E connector used to interface to an eDP display. Note that there are signals 41 | defined for the I2C touchscreen. Note that pin 1 is on the left when looking at the receptacle on the Mainboard. 42 | 43 | | Pin | Signal | Notes | 44 | |-----|---------- |-------------------------| 45 | | 1 | PWR | Backlight power | 46 | | 2 | PWR | | 47 | | 3 | PWR | | 48 | | 4 | NC | | 49 | | 5 | GND | | 50 | | 6 | GND | | 51 | | 7 | EDP_AUXN | | 52 | | 8 | EDP_AUXP | | 53 | | 9 | GND | | 54 | | 10 | EDP_TXP0 | | 55 | | 11 | EDP_TXN0 | | 56 | | 12 | GND | | 57 | | 13 | EDP_TXN1 | | 58 | | 14 | EDP_TXP1 | | 59 | | 15 | GND | | 60 | | 16 | EDP_HPD | Hotplug | 61 | | 17 | BLK_PWM_LCD | Backlight PWM | 62 | | 18 | BKOFF# | Backlight enable | 63 | | 19 | 3VS_EDP | | 64 | | 20 | 3VS_EDP | | 65 | | 21 | 3VS_EDP | | 66 | | 22 | 3VS_TS | | 67 | | 23 | 3VS_TS | | 68 | | 24 | TS_EN | | 69 | | 25 | TS_RST | | 70 | | 26 | TS_INT# | | 71 | | 27 | I2C_SDA | Touch I2C | 72 | | 28 | I2C_SCL | Touch I2C | 73 | | 29 | OS_DET_TS | Reserved, pullup | 74 | | 30 | GND | | 75 | 76 | ## Audio Daughterboard Interface 77 | 78 | Pin 1 is top left, counting zigzag left, right, left, right downwards. 79 | 80 | | Pin | Signal | 81 | |-----|-----------| 82 | | 1 | SLEEVE | 83 | | 2 | HPOUT_R | 84 | | 3 | RING | 85 | | 4 | A_GND | 86 | | 5 | GND | 87 | | 6 | HPOUT_L | 88 | | 7 | JACK_PLUG | 89 | | 8 | BOARD_ID | 90 | | 9 | SPK_L- | 91 | | 10 | SPK_R- | 92 | | 11 | SPK_L+ | 93 | | 12 | SPK_R+ | 94 | 95 | ## Power Button Daughterboard Interface 96 | 97 | Pin 1 is top left, counting zigzag left, right, left, right downwards. 98 | 99 | 100 | | Pin | Signal | Notes | 101 | |-----|-------------|---------------------| 102 | | 1 | USB_DP | USB2.0 Reserved | 103 | | 2 | BOARD_ID | | 104 | | 3 | USB_DM | USB2.0 Reserved | 105 | | 4 | GND | | 106 | | 5 | 3V_MCU | 3V Reserved | 107 | | 6 | ON_OFF_BTN# | System Power Button | 108 | | 7 | LED_PWM | Power Button LED | 109 | | 5 | 5V_LED | Power Button LED | 110 | 111 | ## Battery 112 | 113 | Pin 1 is the left-most. 114 | 115 | | Pin | Signal | Notes | 116 | |-----|----------|--------| 117 | | 1 | BAT+ | 13.5V | 118 | | 2 | BAT+ | 13.5V | 119 | | 3 | VRTC | | 120 | | 4 | DAT_SMB | SMBus | 121 | | 5 | CLK_SMB | SMBus | 122 | | 6 | SYS_PRES | | 123 | | 7 | GND | | 124 | | 8 | GND | | 125 | 126 | The battery provides VRTC voltage to serve as RTC batteyr. 127 | 128 | ## Input Cover Interface 129 | 130 | Connection is made through two sets of 10 pogo pins. 131 | Pin count from left to right. 132 | 133 | | Conn | Pin | Signal | Notes | 134 | |------|-----|------------|---------------------| 135 | | JTP1 | 1 | 5VS_TP | | 136 | | JTP1 | 2 | KBL_P | | 137 | | JTP1 | 3 | 3VS_TP | | 138 | | JTP1 | 4 | TP_I2C_CLK | Touchpad I2C | 139 | | JTP1 | 5 | TP_I2C_SDA | Touchpad I2C | 140 | | JTP1 | 6 | TP_INT# | | 141 | | JTP1 | 7 | BOARD_ID | | 142 | | JTP1 | 8 | KB_I2C_SCL | Keyboard I2C | 143 | | JTP1 | 9 | KB_I2C_SDA | Keyboard I2C | 144 | | JTP1 | 10 | KB_INT | Keyboard I2C | 145 | | JTP2 | 1 | KSI_03_IN | Shorted to pin 2 | 146 | | JTP2 | 2 | KSI_03_OUT | Shorted to pin 1 | 147 | | JTP2 | 3 | KSI_02_IN | Shorted to pin 4 | 148 | | JTP2 | 4 | KSI_02_OUT | Shorted to pin 3 | 149 | | JTP2 | 5 | KSI_00_IN | Shorted to pin 6 | 150 | | JTP2 | 6 | KSI_00_OUT | Shorted to pin 5 | 151 | | JTP2 | 7 | GND | | 152 | | JTP2 | 8 | GND | | 153 | | JTP2 | 9 | GND | | 154 | | JTP2 | 10 | GND | | 155 | 156 | Keyboard scan and capslock LED control is going through the I2C keyboard controller. 157 | 158 | ## Fan Interface 159 | 160 | Hefeng AWA02-S04FIA-HF connector for the Fan. Note that there are many other footprint 161 | compatible 4-pin connectors that are likely compatible. This kind of connector is also known 162 | as "JST SH", and has a 1.0 mm pitch. The same connector is used for the Speakers. 163 | 164 | Pin 1 is further away from the speaker assembly. 165 | 166 | | Pin | Signal | 167 | |-----|-----------| 168 | | 1 | 5V | 169 | | 2 | FAN_SPEED | 170 | | 3 | FAN_PWM | 171 | | 4 | GND | 172 | 173 | ## RTC Battery Interface 174 | 175 | NOTE: The mainboard will charge this battery, so a rechargable ML1220 battery must be used. 176 | CR2032 is not okay because it cannot be charged. 177 | 178 | Settings are kept alive by the normal system battery. The only case where an 179 | RTC battery is needed, is when the system is used in standalone mode (without a battery). 180 | 181 | Cvilux CVILU_CI4402M1HRC-NH connector for the RTC Battery. 182 | 183 | | Pin | Signal | Location | 184 | |-----|-----------|----------| 185 | | 1 | +RTCBATT | Left | 186 | | 2 | GND | Right | 187 | -------------------------------------------------------------------------------- /InputCover/Touchpad.md: -------------------------------------------------------------------------------- 1 | # Framework 12 Touchpad 2 | 3 | For the connector's pinout, check the the [README](README.md). 4 | 5 | ## Silkscreen 6 | 7 | | Label | Type | Description | 8 | |-------|-----------|----------------| 9 | | J1 | Connector | FPC Connector | 10 | | TP1 | Testpoint | 5V | 11 | | TP2 | Testpoint | 3.3V | 12 | | TP3 | Testpoint | TP I2C SCL | 13 | | TP4 | Testpoint | TP I2C SDA | 14 | | TP5 | Testpoint | TP I2C INT | 15 | | TP6 | Testpoint | KB I2C SCL | 16 | | TP7 | Testpoint | KB I2C SDA | 17 | | TP8 | Testpoint | KB I2C INT | 18 | | TP10 | Testpoint | GND | 19 | | TP11 | Testpoint | Lid | 20 | | U1 | KB IC | ITE IT8801 | 21 | | U4 | Touch IC | Pixart PCT2342 | 22 | | R13 | Resistor | Board ID | 23 | | R13 | Resistor | I2C SDA Pullup | 24 | | R16 | Resistor | I2C SCL Pullup | 25 | 26 | ## Firmware 27 | 28 | The touchpad presents as an I2C HID device at address 0x2C. 29 | Below the HID Report descriptor and details about some reports are documented. 30 | 31 | ### HID Reports 32 | 33 | Report ID 1 - PTP (Precision Touchpad) 34 | 35 | ```mermaid 36 | --- 37 | title: "PTP Packet" 38 | config: 39 | packet: 40 | bitsPerRow: 8 41 | bitWidth: 70 42 | --- 43 | packet 44 | +8: "Report Length (Low Byte)" 45 | +8: "Report Length (High Byte)" 46 | +8: "Touchpad Report ID (0x01)" 47 | +1: "Confidence" 48 | +1: "Tip Switch" 49 | +3: "Contact Identifier" 50 | +3: "Reserved" 51 | +8: "X1 ABS Position (Low Byte)" 52 | +8: "X1 ABS Position (High Byte)" 53 | +8: "Y1 ABS Position (Low Byte)" 54 | +8: "Y1 ABS Position (High Byte)" 55 | +1: "Confidence" 56 | +1: "Tip Switch" 57 | +3: "Contact Identifier" 58 | +3: "Reserved" 59 | +8: "X2 ABS Position (Low Byte)" 60 | +8: "X2 ABS Position (High Byte)" 61 | +8: "Y2 ABS Position (Low Byte)" 62 | +8: "Y2 ABS Position (High Byte)" 63 | +1: "Confidence" 64 | +1: "Tip Switch" 65 | +3: "Contact Identifier" 66 | +3: "Reserved" 67 | +8: "X3 ABS Position (Low Byte)" 68 | +8: "X3 ABS Position (High Byte)" 69 | +8: "Y3 ABS Position (Low Byte)" 70 | +8: "Y3 ABS Position (High Byte)" 71 | +1: "Confidence" 72 | +1: "Tip Switch" 73 | +3: "Contact Identifier" 74 | +3: "Reserved" 75 | +8: "X4 ABS Position (Low Byte)" 76 | +8: "X4 ABS Position (High Byte)" 77 | +8: "Y4 ABS Position (Low Byte)" 78 | +8: "Y4 ABS Position (High Byte)" 79 | +1: "Confidence" 80 | +1: "Tip Switch" 81 | +3: "Contact Identifier" 82 | +3: "Reserved" 83 | +8: "X5 ABS Position (Low Byte)" 84 | +8: "X5 ABS Position (High Byte)" 85 | +8: "Y5 ABS Position (Low Byte)" 86 | +8: "Y5 ABS Position (High Byte)" 87 | +8: "Scan Time (Low Byte)" 88 | +8: "Scan Time (High Byte)" 89 | +8: "Contact Count" 90 | +1: "Button 1" 91 | +7: "Reserved" 92 | ``` 93 | 94 | Report ID 2 - Mouse Mode 95 | 96 | ```mermaid 97 | --- 98 | title: "Mouse Mode Packet" 99 | config: 100 | packet: 101 | bitsPerRow: 8 102 | bitWidth: 70 103 | --- 104 | packet 105 | +8: "Report Length (Low Byte)" 106 | +8: "Report Length (High Byte)" 107 | +8: "Touchpad Report ID (0x02)" 108 | +1: "Button 1" 109 | +1: "Button 2" 110 | +1: "In Range" 111 | +5: "Reserved" 112 | +8: "Relative-X (Low Byte)" 113 | +8: "Relative-X (High Byte)" 114 | +8: "Relative-Y (Low Byte)" 115 | +8: "Relative-Y (High Byte)" 116 | ``` 117 | 118 | ### HID Report Descriptor 119 | 120 | ``` 121 | # 0x05, 0x0d, // Usage Page (Digitizers) 0 122 | # 0x09, 0x05, // Usage (Touch Pad) 2 123 | # 0xa1, 0x01, // Collection (Application) 4 124 | # 0x85, 0x01, // Report ID (1) 6 125 | # 0x05, 0x0d, // Usage Page (Digitizers) 8 126 | # 0x09, 0x22, // Usage (Finger) 10 127 | # 0xa1, 0x02, // Collection (Logical) 12 128 | # 0x15, 0x00, // Logical Minimum (0) 14 129 | # 0x25, 0x01, // Logical Maximum (1) 16 130 | # 0x09, 0x47, // Usage (Confidence) 18 131 | # 0x09, 0x42, // Usage (Tip Switch) 20 132 | # 0x95, 0x02, // Report Count (2) 22 133 | # 0x75, 0x01, // Report Size (1) 24 134 | # 0x81, 0x02, // Input (Data,Var,Abs) 26 135 | # 0x95, 0x01, // Report Count (1) 28 136 | # 0x75, 0x03, // Report Size (3) 30 137 | # 0x25, 0x07, // Logical Maximum (7) 32 138 | # 0x09, 0x51, // Usage (Contact Id) 34 139 | # 0x81, 0x02, // Input (Data,Var,Abs) 36 140 | # 0x75, 0x01, // Report Size (1) 38 141 | # 0x95, 0x03, // Report Count (3) 40 142 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 42 143 | # 0x05, 0x01, // Usage Page (Generic Desktop) 44 144 | # 0x15, 0x00, // Logical Minimum (0) 46 145 | # 0x26, 0x4a, 0x05, // Logical Maximum (1354) 48 146 | # 0x75, 0x10, // Report Size (16) 51 147 | # 0x55, 0x0e, // Unit Exponent (-2) 53 148 | # 0x65, 0x11, // Unit (SILinear: cm) 55 149 | # 0x09, 0x30, // Usage (X) 57 150 | # 0x35, 0x00, // Physical Minimum (0) 59 151 | # 0x46, 0x56, 0x04, // Physical Maximum (1110) 61 152 | # 0x95, 0x01, // Report Count (1) 64 153 | # 0x81, 0x02, // Input (Data,Var,Abs) 66 154 | # 0x46, 0xb2, 0x02, // Physical Maximum (690) 68 155 | # 0x26, 0x49, 0x03, // Logical Maximum (841) 71 156 | # 0x09, 0x31, // Usage (Y) 74 157 | # 0x81, 0x02, // Input (Data,Var,Abs) 76 158 | # 0xc0, // End Collection 78 159 | # 0x05, 0x0d, // Usage Page (Digitizers) 79 160 | # 0x09, 0x22, // Usage (Finger) 81 161 | # 0xa1, 0x02, // Collection (Logical) 83 162 | # 0x15, 0x00, // Logical Minimum (0) 85 163 | # 0x25, 0x01, // Logical Maximum (1) 87 164 | # 0x09, 0x47, // Usage (Confidence) 89 165 | # 0x09, 0x42, // Usage (Tip Switch) 91 166 | # 0x95, 0x02, // Report Count (2) 93 167 | # 0x75, 0x01, // Report Size (1) 95 168 | # 0x81, 0x02, // Input (Data,Var,Abs) 97 169 | # 0x95, 0x01, // Report Count (1) 99 170 | # 0x75, 0x03, // Report Size (3) 101 171 | # 0x25, 0x07, // Logical Maximum (7) 103 172 | # 0x09, 0x51, // Usage (Contact Id) 105 173 | # 0x81, 0x02, // Input (Data,Var,Abs) 107 174 | # 0x75, 0x01, // Report Size (1) 109 175 | # 0x95, 0x03, // Report Count (3) 111 176 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 113 177 | # 0x05, 0x01, // Usage Page (Generic Desktop) 115 178 | # 0x15, 0x00, // Logical Minimum (0) 117 179 | # 0x26, 0x4a, 0x05, // Logical Maximum (1354) 119 180 | # 0x75, 0x10, // Report Size (16) 122 181 | # 0x55, 0x0e, // Unit Exponent (-2) 124 182 | # 0x65, 0x11, // Unit (SILinear: cm) 126 183 | # 0x09, 0x30, // Usage (X) 128 184 | # 0x35, 0x00, // Physical Minimum (0) 130 185 | # 0x46, 0x56, 0x04, // Physical Maximum (1110) 132 186 | # 0x95, 0x01, // Report Count (1) 135 187 | # 0x81, 0x02, // Input (Data,Var,Abs) 137 188 | # 0x46, 0xb2, 0x02, // Physical Maximum (690) 139 189 | # 0x26, 0x49, 0x03, // Logical Maximum (841) 142 190 | # 0x09, 0x31, // Usage (Y) 145 191 | # 0x81, 0x02, // Input (Data,Var,Abs) 147 192 | # 0xc0, // End Collection 149 193 | # 0x05, 0x0d, // Usage Page (Digitizers) 150 194 | # 0x09, 0x22, // Usage (Finger) 152 195 | # 0xa1, 0x02, // Collection (Logical) 154 196 | # 0x15, 0x00, // Logical Minimum (0) 156 197 | # 0x25, 0x01, // Logical Maximum (1) 158 198 | # 0x09, 0x47, // Usage (Confidence) 160 199 | # 0x09, 0x42, // Usage (Tip Switch) 162 200 | # 0x95, 0x02, // Report Count (2) 164 201 | # 0x75, 0x01, // Report Size (1) 166 202 | # 0x81, 0x02, // Input (Data,Var,Abs) 168 203 | # 0x95, 0x01, // Report Count (1) 170 204 | # 0x75, 0x03, // Report Size (3) 172 205 | # 0x25, 0x07, // Logical Maximum (7) 174 206 | # 0x09, 0x51, // Usage (Contact Id) 176 207 | # 0x81, 0x02, // Input (Data,Var,Abs) 178 208 | # 0x75, 0x01, // Report Size (1) 180 209 | # 0x95, 0x03, // Report Count (3) 182 210 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 184 211 | # 0x05, 0x01, // Usage Page (Generic Desktop) 186 212 | # 0x15, 0x00, // Logical Minimum (0) 188 213 | # 0x26, 0x4a, 0x05, // Logical Maximum (1354) 190 214 | # 0x75, 0x10, // Report Size (16) 193 215 | # 0x55, 0x0e, // Unit Exponent (-2) 195 216 | # 0x65, 0x11, // Unit (SILinear: cm) 197 217 | # 0x09, 0x30, // Usage (X) 199 218 | # 0x35, 0x00, // Physical Minimum (0) 201 219 | # 0x46, 0x56, 0x04, // Physical Maximum (1110) 203 220 | # 0x95, 0x01, // Report Count (1) 206 221 | # 0x81, 0x02, // Input (Data,Var,Abs) 208 222 | # 0x46, 0xb2, 0x02, // Physical Maximum (690) 210 223 | # 0x26, 0x49, 0x03, // Logical Maximum (841) 213 224 | # 0x09, 0x31, // Usage (Y) 216 225 | # 0x81, 0x02, // Input (Data,Var,Abs) 218 226 | # 0xc0, // End Collection 220 227 | # 0x05, 0x0d, // Usage Page (Digitizers) 221 228 | # 0x09, 0x22, // Usage (Finger) 223 229 | # 0xa1, 0x02, // Collection (Logical) 225 230 | # 0x15, 0x00, // Logical Minimum (0) 227 231 | # 0x25, 0x01, // Logical Maximum (1) 229 232 | # 0x09, 0x47, // Usage (Confidence) 231 233 | # 0x09, 0x42, // Usage (Tip Switch) 233 234 | # 0x95, 0x02, // Report Count (2) 235 235 | # 0x75, 0x01, // Report Size (1) 237 236 | # 0x81, 0x02, // Input (Data,Var,Abs) 239 237 | # 0x95, 0x01, // Report Count (1) 241 238 | # 0x75, 0x03, // Report Size (3) 243 239 | # 0x25, 0x07, // Logical Maximum (7) 245 240 | # 0x09, 0x51, // Usage (Contact Id) 247 241 | # 0x81, 0x02, // Input (Data,Var,Abs) 249 242 | # 0x75, 0x01, // Report Size (1) 251 243 | # 0x95, 0x03, // Report Count (3) 253 244 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 255 245 | # 0x05, 0x01, // Usage Page (Generic Desktop) 257 246 | # 0x15, 0x00, // Logical Minimum (0) 259 247 | # 0x26, 0x4a, 0x05, // Logical Maximum (1354) 261 248 | # 0x75, 0x10, // Report Size (16) 264 249 | # 0x55, 0x0e, // Unit Exponent (-2) 266 250 | # 0x65, 0x11, // Unit (SILinear: cm) 268 251 | # 0x09, 0x30, // Usage (X) 270 252 | # 0x35, 0x00, // Physical Minimum (0) 272 253 | # 0x46, 0x56, 0x04, // Physical Maximum (1110) 274 254 | # 0x95, 0x01, // Report Count (1) 277 255 | # 0x81, 0x02, // Input (Data,Var,Abs) 279 256 | # 0x46, 0xb2, 0x02, // Physical Maximum (690) 281 257 | # 0x26, 0x49, 0x03, // Logical Maximum (841) 284 258 | # 0x09, 0x31, // Usage (Y) 287 259 | # 0x81, 0x02, // Input (Data,Var,Abs) 289 260 | # 0xc0, // End Collection 291 261 | # 0x05, 0x0d, // Usage Page (Digitizers) 292 262 | # 0x09, 0x22, // Usage (Finger) 294 263 | # 0xa1, 0x02, // Collection (Logical) 296 264 | # 0x15, 0x00, // Logical Minimum (0) 298 265 | # 0x25, 0x01, // Logical Maximum (1) 300 266 | # 0x09, 0x47, // Usage (Confidence) 302 267 | # 0x09, 0x42, // Usage (Tip Switch) 304 268 | # 0x95, 0x02, // Report Count (2) 306 269 | # 0x75, 0x01, // Report Size (1) 308 270 | # 0x81, 0x02, // Input (Data,Var,Abs) 310 271 | # 0x95, 0x01, // Report Count (1) 312 272 | # 0x75, 0x03, // Report Size (3) 314 273 | # 0x25, 0x07, // Logical Maximum (7) 316 274 | # 0x09, 0x51, // Usage (Contact Id) 318 275 | # 0x81, 0x02, // Input (Data,Var,Abs) 320 276 | # 0x75, 0x01, // Report Size (1) 322 277 | # 0x95, 0x03, // Report Count (3) 324 278 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 326 279 | # 0x05, 0x01, // Usage Page (Generic Desktop) 328 280 | # 0x15, 0x00, // Logical Minimum (0) 330 281 | # 0x26, 0x4a, 0x05, // Logical Maximum (1354) 332 282 | # 0x75, 0x10, // Report Size (16) 335 283 | # 0x55, 0x0e, // Unit Exponent (-2) 337 284 | # 0x65, 0x11, // Unit (SILinear: cm) 339 285 | # 0x09, 0x30, // Usage (X) 341 286 | # 0x35, 0x00, // Physical Minimum (0) 343 287 | # 0x46, 0x56, 0x04, // Physical Maximum (1110) 345 288 | # 0x95, 0x01, // Report Count (1) 348 289 | # 0x81, 0x02, // Input (Data,Var,Abs) 350 290 | # 0x46, 0xb2, 0x02, // Physical Maximum (690) 352 291 | # 0x26, 0x49, 0x03, // Logical Maximum (841) 355 292 | # 0x09, 0x31, // Usage (Y) 358 293 | # 0x81, 0x02, // Input (Data,Var,Abs) 360 294 | # 0xc0, // End Collection 362 295 | # 0x05, 0x0d, // Usage Page (Digitizers) 363 296 | # 0x09, 0x56, // Usage (Scan Time) 365 297 | # 0x55, 0x0c, // Unit Exponent (-4) 367 298 | # 0x66, 0x01, 0x10, // Unit (SILinear: s) 369 299 | # 0x35, 0x00, // Physical Minimum (0) 372 300 | # 0x47, 0xff, 0xff, 0x00, 0x00, // Physical Maximum (65535) 374 301 | # 0x15, 0x00, // Logical Minimum (0) 379 302 | # 0x27, 0xff, 0xff, 0x00, 0x00, // Logical Maximum (65535) 381 303 | # 0x75, 0x10, // Report Size (16) 386 304 | # 0x95, 0x01, // Report Count (1) 388 305 | # 0x81, 0x02, // Input (Data,Var,Abs) 390 306 | # 0x05, 0x0d, // Usage Page (Digitizers) 392 307 | # 0x09, 0x54, // Usage (Contact Count) 394 308 | # 0x15, 0x00, // Logical Minimum (0) 396 309 | # 0x25, 0x05, // Logical Maximum (5) 398 310 | # 0x75, 0x08, // Report Size (8) 400 311 | # 0x95, 0x01, // Report Count (1) 402 312 | # 0x81, 0x02, // Input (Data,Var,Abs) 404 313 | # 0x05, 0x09, // Usage Page (Button) 406 314 | # 0x09, 0x01, // Usage (Vendor Usage 0x01) 408 315 | # 0x15, 0x00, // Logical Minimum (0) 410 316 | # 0x25, 0x01, // Logical Maximum (1) 412 317 | # 0x75, 0x01, // Report Size (1) 414 318 | # 0x95, 0x01, // Report Count (1) 416 319 | # 0x81, 0x02, // Input (Data,Var,Abs) 418 320 | # 0x95, 0x07, // Report Count (7) 420 321 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 422 322 | # 0x06, 0x0d, 0x00, // Usage Page (Digitizers) 424 323 | # 0x09, 0x55, // Usage (Contact Max) 427 324 | # 0x15, 0x00, // Logical Minimum (0) 429 325 | # 0x26, 0x05, 0x00, // Logical Maximum (5) 431 326 | # 0x75, 0x08, // Report Size (8) 434 327 | # 0x96, 0x01, 0x00, // Report Count (1) 436 328 | # 0x85, 0x03, // Report ID (3) 439 329 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 441 330 | # 0x06, 0x0d, 0x00, // Usage Page (Digitizers) 443 331 | # 0x09, 0x59, // Usage (Button Type) 446 332 | # 0x15, 0x00, // Logical Minimum (0) 448 333 | # 0x26, 0x01, 0x00, // Logical Maximum (1) 450 334 | # 0x75, 0x08, // Report Size (8) 453 335 | # 0x96, 0x01, 0x00, // Report Count (1) 455 336 | # 0x85, 0x04, // Report ID (4) 458 337 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 460 338 | # 0x85, 0x09, // Report ID (9) 462 339 | # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 464 340 | # 0x09, 0xc5, // Usage (Vendor Usage 0xc5) 467 341 | # 0x15, 0x00, // Logical Minimum (0) 469 342 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 471 343 | # 0x75, 0x08, // Report Size (8) 474 344 | # 0x96, 0x00, 0x01, // Report Count (256) 476 345 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 479 346 | # 0xc0, // End Collection 481 347 | # 0x05, 0x0d, // Usage Page (Digitizers) 482 348 | # 0x09, 0x0e, // Usage (Device Configuration) 484 349 | # 0xa1, 0x01, // Collection (Application) 486 350 | # 0x05, 0x0d, // Usage Page (Digitizers) 488 351 | # 0x09, 0x22, // Usage (Finger) 490 352 | # 0xa1, 0x02, // Collection (Logical) 492 353 | # 0x09, 0x52, // Usage (Inputmode) 494 354 | # 0x15, 0x00, // Logical Minimum (0) 496 355 | # 0x25, 0x0a, // Logical Maximum (10) 498 356 | # 0x75, 0x08, // Report Size (8) 500 357 | # 0x95, 0x01, // Report Count (1) 502 358 | # 0x85, 0x06, // Report ID (6) 504 359 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 506 360 | # 0xc0, // End Collection 508 361 | # 0x05, 0x0d, // Usage Page (Digitizers) 509 362 | # 0x09, 0x22, // Usage (Finger) 511 363 | # 0xa1, 0x00, // Collection (Physical) 513 364 | # 0x09, 0x57, // Usage (Surface Switch) 515 365 | # 0x09, 0x58, // Usage (Button Switch) 517 366 | # 0x15, 0x00, // Logical Minimum (0) 519 367 | # 0x25, 0x01, // Logical Maximum (1) 521 368 | # 0x75, 0x01, // Report Size (1) 523 369 | # 0x95, 0x02, // Report Count (2) 525 370 | # 0x85, 0x07, // Report ID (7) 527 371 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 529 372 | # 0x95, 0x06, // Report Count (6) 531 373 | # 0xb1, 0x03, // Feature (Cnst,Var,Abs) 533 374 | # 0xc0, // End Collection 535 375 | # 0x05, 0x0d, // Usage Page (Digitizers) 536 376 | # 0x09, 0x60, // Usage (Vendor Usage 0x60) 538 377 | # 0x15, 0x00, // Logical Minimum (0) 540 378 | # 0x25, 0x01, // Logical Maximum (1) 542 379 | # 0x75, 0x01, // Report Size (1) 544 380 | # 0x95, 0x01, // Report Count (1) 546 381 | # 0x85, 0x08, // Report ID (8) 548 382 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 550 383 | # 0x95, 0x07, // Report Count (7) 552 384 | # 0xb1, 0x03, // Feature (Cnst,Var,Abs) 554 385 | # 0xc0, // End Collection 556 386 | # 0x05, 0x01, // Usage Page (Generic Desktop) 557 387 | # 0x09, 0x02, // Usage (Mouse) 559 388 | # 0xa1, 0x01, // Collection (Application) 561 389 | # 0x85, 0x02, // Report ID (2) 563 390 | # 0x05, 0x01, // Usage Page (Generic Desktop) 565 391 | # 0x09, 0x01, // Usage (Pointer) 567 392 | # 0xa1, 0x00, // Collection (Physical) 569 393 | # 0x05, 0x09, // Usage Page (Button) 571 394 | # 0x19, 0x01, // Usage Minimum (1) 573 395 | # 0x29, 0x02, // Usage Maximum (2) 575 396 | # 0x15, 0x00, // Logical Minimum (0) 577 397 | # 0x25, 0x01, // Logical Maximum (1) 579 398 | # 0x75, 0x01, // Report Size (1) 581 399 | # 0x95, 0x02, // Report Count (2) 583 400 | # 0x81, 0x02, // Input (Data,Var,Abs) 585 401 | # 0x75, 0x06, // Report Size (6) 587 402 | # 0x95, 0x01, // Report Count (1) 589 403 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 591 404 | # 0x05, 0x01, // Usage Page (Generic Desktop) 593 405 | # 0x09, 0x30, // Usage (X) 595 406 | # 0x09, 0x31, // Usage (Y) 597 407 | # 0x09, 0x38, // Usage (Wheel) 599 408 | # 0x15, 0x00, // Logical Minimum (0) 601 409 | # 0x25, 0xff, // Logical Maximum (255) 603 410 | # 0x75, 0x08, // Report Size (8) 605 411 | # 0x95, 0x03, // Report Count (3) 607 412 | # 0x81, 0x26, // Input (Data,Var,Rel,NoPref) 609 413 | # 0xc0, // End Collection 611 414 | # 0xc0, // End Collection 612 415 | # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 613 416 | # 0x09, 0x01, // Usage (Vendor Usage 1) 616 417 | # 0xa1, 0x01, // Collection (Application) 618 418 | # 0x85, 0x42, // Report ID (66) 620 419 | # 0x09, 0x06, // Usage (Vendor Usage 0x06) 622 420 | # 0x15, 0x00, // Logical Minimum (0) 624 421 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 626 422 | # 0x75, 0x08, // Report Size (8) 629 423 | # 0x95, 0x03, // Report Count (3) 631 424 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 633 425 | # 0x85, 0x43, // Report ID (67) 635 426 | # 0x09, 0x06, // Usage (Vendor Usage 0x06) 637 427 | # 0x15, 0x00, // Logical Minimum (0) 639 428 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 641 429 | # 0x75, 0x08, // Report Size (8) 644 430 | # 0x95, 0x03, // Report Count (3) 646 431 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 648 432 | # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 650 433 | # 0x09, 0x05, // Usage (Vendor Usage 0x05) 653 434 | # 0x15, 0x00, // Logical Minimum (0) 655 435 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 657 436 | # 0x75, 0x08, // Report Size (8) 660 437 | # 0x96, 0x00, 0x01, // Report Count (256) 662 438 | # 0x85, 0x41, // Report ID (65) 665 439 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 667 440 | # 0xc0, // End Collection 669 441 | ``` 442 | -------------------------------------------------------------------------------- /Display/README.md: -------------------------------------------------------------------------------- 1 | # Display 2 | 3 | ## Mechanical 4 | 5 | A 2D drawing of the Display Module for use in creating screen protectors. 6 | Note that the cutout for the webcam is needed, but the LED can shine through 7 | most types of screen protector materials. 8 | 9 | ## Electrical 10 | 11 | ### Connectors 12 | 13 | Display eDP 14 | 15 | | Pin | Signal | Notes | 16 | |-----|--------------|-------------------------| 17 | | 1 | NC | | 18 | | 2 | GND | | 19 | | 3 | EDP_TXN1 | eDP Lane 1 | 20 | | 4 | EDP_TXP1 | eDP Lane 1 | 21 | | 5 | H_GND | | 22 | | 61 | EDP_TXN0 | eDP Lane 0 | 23 | | 70 | EDP_TXP0 | eDP Lane 0 | 24 | | 7 | H_GND | | 25 | | 9 | EDP_AUXP | eDP Auxiliary Channel | 26 | | 10 | EDP_AUXN | eDP Auxiliary Channel | 27 | | 11 | H_GND | | 28 | | 12 | 3VS_EDP | 3VS | 29 | | 13 | 3VS_EDP | 3VS | 30 | | 14 | NC | | 31 | | 15 | H_GND | | 32 | | 16 | H_GND | | 33 | | 17 | EDP_HPD | Hotplug | 34 | | 18 | BL_GND | | 35 | | 19 | BL_GND | | 36 | | 10 | BL_GND | | 37 | | 21 | BL_GND | | 38 | | 22 | BKOFF# | Backlight enable | 39 | | 23 | BLK_PWM_LCD | Backlight PWM | 40 | | 24 | NC | | 41 | | 25 | NC | | 42 | | 26 | BL_POWER | | 43 | | 27 | BL_POWER | Touch I2C | 44 | | 28 | BL_POWER | Touch I2C | 45 | | 29 | BL_POWER | Reserved, pullup | 46 | | 30 | NC | | 47 | 48 | Touch 49 | 50 | | Pin | Signal | Notes | 51 | |-----|---------- |-------------------------| 52 | | 1 | 3VS_TS | | 53 | | 2 | TS_EN | | 54 | | 3 | TS_RST | | 55 | | 4 | TS_INT# | | 56 | | 5 | I2C_SDA | Touch I2C | 57 | | 6 | I2C_SCL | Touch I2C | 58 | | 7 | OS_DET_TS | Reserved, pullup | 59 | | 8 | GND | | 60 | 61 | ### Silkscreen 62 | 63 | | Label | Type | Description | 64 | |--------|-----------|-------------------| 65 | | OS_DET | Testpoint | Reserved | 66 | | SCL | Testpoint | I2C SCL | 67 | | SDA | Testpoint | I2C SDA | 68 | | INT | Testpoint | I2C Interrupt | 69 | | RST | Testpoint | Touch IC Reset | 70 | | TPEN | Testpoint | Touch Enable | 71 | | VDD33 | Testpoint | 3.3V | 72 | | GND | Testpoint | Ground | 73 | 74 | ## Touch IC Firmware 75 | 76 | The touchscreen IC presents as an I2C HID device at address 0x41. 77 | 78 | ## Firmware Update 79 | 80 | Firmware is updated through I2C HID. 81 | 82 | Ilitek provides a proprietary windows update tool 83 | For Linux/ChromeOS they originally provided a [custom update tool](https://github.com/ITS-Tool/ilitek_ld_tool), 84 | which is now superceded by [fwupd](https://github.com/fwupd/fwupd/tree/main/plugins/ilitek-its) on Linux. 85 | 86 | So far Framework has not shipped a public touchscreen firmware update. 87 | The current and future firmware updates are avilable on [LVFS](https://fwupd.org/lvfs/devices/work.frame.Laptop12.RPL.touchscreen.firmware). 88 | 89 | ## HID Reports 90 | Below the HID Report descriptor and details about some reports are documented. 91 | 92 | In the BIOS settings the touchscreen can be changed between MPP and USI 93 | reporting modes. The HID report descriptor changes to accomodate each protocol. 94 | 95 | ### USI HID Report Descriptor 96 | 97 | ``` 98 | # 0x05, 0x0d, // Usage Page (Digitizers) 0 99 | # 0x09, 0x04, // Usage (Touch Screen) 2 100 | # 0xa1, 0x01, // Collection (Application) 4 101 | # 0x85, 0x04, // Report ID (4) 6 102 | # 0x05, 0x0d, // Usage Page (Digitizers) 8 103 | # 0x09, 0x22, // Usage (Finger) 10 104 | # 0xa1, 0x02, // Collection (Logical) 12 105 | # 0x05, 0x0d, // Usage Page (Digitizers) 14 106 | # 0x95, 0x01, // Report Count (1) 16 107 | # 0x75, 0x06, // Report Size (6) 18 108 | # 0x09, 0x51, // Usage (Contact Id) 20 109 | # 0x15, 0x00, // Logical Minimum (0) 22 110 | # 0x25, 0x3f, // Logical Maximum (63) 24 111 | # 0x81, 0x02, // Input (Data,Var,Abs) 26 112 | # 0x09, 0x42, // Usage (Tip Switch) 28 113 | # 0x25, 0x01, // Logical Maximum (1) 30 114 | # 0x75, 0x01, // Report Size (1) 32 115 | # 0x95, 0x01, // Report Count (1) 34 116 | # 0x81, 0x02, // Input (Data,Var,Abs) 36 117 | # 0x09, 0x47, // Usage (Confidence) 38 118 | # 0x75, 0x01, // Report Size (1) 40 119 | # 0x81, 0x02, // Input (Data,Var,Abs) 42 120 | # 0x05, 0x01, // Usage Page (Generic Desktop) 44 121 | # 0x75, 0x10, // Report Size (16) 46 122 | # 0x55, 0x0e, // Unit Exponent (-2) 48 123 | # 0x65, 0x11, // Unit (SILinear: cm) 50 124 | # 0x09, 0x30, // Usage (X) 52 125 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 54 126 | # 0x35, 0x00, // Physical Minimum (0) 57 127 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 59 128 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 62 129 | # 0x09, 0x31, // Usage (Y) 64 130 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 66 131 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 69 132 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 72 133 | # 0x95, 0x01, // Report Count (1) 74 134 | # 0x75, 0x08, // Report Size (8) 76 135 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 78 136 | # 0x05, 0x0d, // Usage Page (Digitizers) 80 137 | # 0x26, 0xff, 0x7f, // Logical Maximum (32767) 82 138 | # 0x09, 0x48, // Usage (Width) 85 139 | # 0x75, 0x10, // Report Size (16) 87 140 | # 0x95, 0x01, // Report Count (1) 89 141 | # 0x81, 0x02, // Input (Data,Var,Abs) 91 142 | # 0x09, 0x49, // Usage (Height) 93 143 | # 0x81, 0x02, // Input (Data,Var,Abs) 95 144 | # 0xc0, // End Collection 97 145 | # 0x05, 0x0d, // Usage Page (Digitizers) 98 146 | # 0x09, 0x22, // Usage (Finger) 100 147 | # 0xa1, 0x02, // Collection (Logical) 102 148 | # 0x05, 0x0d, // Usage Page (Digitizers) 104 149 | # 0x95, 0x01, // Report Count (1) 106 150 | # 0x75, 0x06, // Report Size (6) 108 151 | # 0x09, 0x51, // Usage (Contact Id) 110 152 | # 0x15, 0x00, // Logical Minimum (0) 112 153 | # 0x25, 0x3f, // Logical Maximum (63) 114 154 | # 0x81, 0x02, // Input (Data,Var,Abs) 116 155 | # 0x09, 0x42, // Usage (Tip Switch) 118 156 | # 0x25, 0x01, // Logical Maximum (1) 120 157 | # 0x75, 0x01, // Report Size (1) 122 158 | # 0x95, 0x01, // Report Count (1) 124 159 | # 0x81, 0x02, // Input (Data,Var,Abs) 126 160 | # 0x09, 0x47, // Usage (Confidence) 128 161 | # 0x75, 0x01, // Report Size (1) 130 162 | # 0x81, 0x02, // Input (Data,Var,Abs) 132 163 | # 0x05, 0x01, // Usage Page (Generic Desktop) 134 164 | # 0x75, 0x10, // Report Size (16) 136 165 | # 0x55, 0x0e, // Unit Exponent (-2) 138 166 | # 0x65, 0x11, // Unit (SILinear: cm) 140 167 | # 0x09, 0x30, // Usage (X) 142 168 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 144 169 | # 0x35, 0x00, // Physical Minimum (0) 147 170 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 149 171 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 152 172 | # 0x09, 0x31, // Usage (Y) 154 173 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 156 174 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 159 175 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 162 176 | # 0x95, 0x01, // Report Count (1) 164 177 | # 0x75, 0x08, // Report Size (8) 166 178 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 168 179 | # 0x05, 0x0d, // Usage Page (Digitizers) 170 180 | # 0x26, 0xff, 0x7f, // Logical Maximum (32767) 172 181 | # 0x09, 0x48, // Usage (Width) 175 182 | # 0x75, 0x10, // Report Size (16) 177 183 | # 0x95, 0x01, // Report Count (1) 179 184 | # 0x81, 0x02, // Input (Data,Var,Abs) 181 185 | # 0x09, 0x49, // Usage (Height) 183 186 | # 0x81, 0x02, // Input (Data,Var,Abs) 185 187 | # 0xc0, // End Collection 187 188 | # 0x05, 0x0d, // Usage Page (Digitizers) 188 189 | # 0x09, 0x22, // Usage (Finger) 190 190 | # 0xa1, 0x02, // Collection (Logical) 192 191 | # 0x05, 0x0d, // Usage Page (Digitizers) 194 192 | # 0x95, 0x01, // Report Count (1) 196 193 | # 0x75, 0x06, // Report Size (6) 198 194 | # 0x09, 0x51, // Usage (Contact Id) 200 195 | # 0x15, 0x00, // Logical Minimum (0) 202 196 | # 0x25, 0x3f, // Logical Maximum (63) 204 197 | # 0x81, 0x02, // Input (Data,Var,Abs) 206 198 | # 0x09, 0x42, // Usage (Tip Switch) 208 199 | # 0x25, 0x01, // Logical Maximum (1) 210 200 | # 0x75, 0x01, // Report Size (1) 212 201 | # 0x95, 0x01, // Report Count (1) 214 202 | # 0x81, 0x02, // Input (Data,Var,Abs) 216 203 | # 0x09, 0x47, // Usage (Confidence) 218 204 | # 0x75, 0x01, // Report Size (1) 220 205 | # 0x81, 0x02, // Input (Data,Var,Abs) 222 206 | # 0x05, 0x01, // Usage Page (Generic Desktop) 224 207 | # 0x75, 0x10, // Report Size (16) 226 208 | # 0x55, 0x0e, // Unit Exponent (-2) 228 209 | # 0x65, 0x11, // Unit (SILinear: cm) 230 210 | # 0x09, 0x30, // Usage (X) 232 211 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 234 212 | # 0x35, 0x00, // Physical Minimum (0) 237 213 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 239 214 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 242 215 | # 0x09, 0x31, // Usage (Y) 244 216 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 246 217 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 249 218 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 252 219 | # 0x95, 0x01, // Report Count (1) 254 220 | # 0x75, 0x08, // Report Size (8) 256 221 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 258 222 | # 0x05, 0x0d, // Usage Page (Digitizers) 260 223 | # 0x26, 0xff, 0x7f, // Logical Maximum (32767) 262 224 | # 0x09, 0x48, // Usage (Width) 265 225 | # 0x75, 0x10, // Report Size (16) 267 226 | # 0x95, 0x01, // Report Count (1) 269 227 | # 0x81, 0x02, // Input (Data,Var,Abs) 271 228 | # 0x09, 0x49, // Usage (Height) 273 229 | # 0x81, 0x02, // Input (Data,Var,Abs) 275 230 | # 0xc0, // End Collection 277 231 | # 0x05, 0x0d, // Usage Page (Digitizers) 278 232 | # 0x09, 0x22, // Usage (Finger) 280 233 | # 0xa1, 0x02, // Collection (Logical) 282 234 | # 0x05, 0x0d, // Usage Page (Digitizers) 284 235 | # 0x95, 0x01, // Report Count (1) 286 236 | # 0x75, 0x06, // Report Size (6) 288 237 | # 0x09, 0x51, // Usage (Contact Id) 290 238 | # 0x15, 0x00, // Logical Minimum (0) 292 239 | # 0x25, 0x3f, // Logical Maximum (63) 294 240 | # 0x81, 0x02, // Input (Data,Var,Abs) 296 241 | # 0x09, 0x42, // Usage (Tip Switch) 298 242 | # 0x25, 0x01, // Logical Maximum (1) 300 243 | # 0x75, 0x01, // Report Size (1) 302 244 | # 0x95, 0x01, // Report Count (1) 304 245 | # 0x81, 0x02, // Input (Data,Var,Abs) 306 246 | # 0x09, 0x47, // Usage (Confidence) 308 247 | # 0x75, 0x01, // Report Size (1) 310 248 | # 0x81, 0x02, // Input (Data,Var,Abs) 312 249 | # 0x05, 0x01, // Usage Page (Generic Desktop) 314 250 | # 0x75, 0x10, // Report Size (16) 316 251 | # 0x55, 0x0e, // Unit Exponent (-2) 318 252 | # 0x65, 0x11, // Unit (SILinear: cm) 320 253 | # 0x09, 0x30, // Usage (X) 322 254 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 324 255 | # 0x35, 0x00, // Physical Minimum (0) 327 256 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 329 257 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 332 258 | # 0x09, 0x31, // Usage (Y) 334 259 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 336 260 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 339 261 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 342 262 | # 0x95, 0x01, // Report Count (1) 344 263 | # 0x75, 0x08, // Report Size (8) 346 264 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 348 265 | # 0x05, 0x0d, // Usage Page (Digitizers) 350 266 | # 0x26, 0xff, 0x7f, // Logical Maximum (32767) 352 267 | # 0x09, 0x48, // Usage (Width) 355 268 | # 0x75, 0x10, // Report Size (16) 357 269 | # 0x95, 0x01, // Report Count (1) 359 270 | # 0x81, 0x02, // Input (Data,Var,Abs) 361 271 | # 0x09, 0x49, // Usage (Height) 363 272 | # 0x81, 0x02, // Input (Data,Var,Abs) 365 273 | # 0xc0, // End Collection 367 274 | # 0x05, 0x0d, // Usage Page (Digitizers) 368 275 | # 0x09, 0x22, // Usage (Finger) 370 276 | # 0xa1, 0x02, // Collection (Logical) 372 277 | # 0x05, 0x0d, // Usage Page (Digitizers) 374 278 | # 0x95, 0x01, // Report Count (1) 376 279 | # 0x75, 0x06, // Report Size (6) 378 280 | # 0x09, 0x51, // Usage (Contact Id) 380 281 | # 0x15, 0x00, // Logical Minimum (0) 382 282 | # 0x25, 0x3f, // Logical Maximum (63) 384 283 | # 0x81, 0x02, // Input (Data,Var,Abs) 386 284 | # 0x09, 0x42, // Usage (Tip Switch) 388 285 | # 0x25, 0x01, // Logical Maximum (1) 390 286 | # 0x75, 0x01, // Report Size (1) 392 287 | # 0x95, 0x01, // Report Count (1) 394 288 | # 0x81, 0x02, // Input (Data,Var,Abs) 396 289 | # 0x09, 0x47, // Usage (Confidence) 398 290 | # 0x75, 0x01, // Report Size (1) 400 291 | # 0x81, 0x02, // Input (Data,Var,Abs) 402 292 | # 0x05, 0x01, // Usage Page (Generic Desktop) 404 293 | # 0x75, 0x10, // Report Size (16) 406 294 | # 0x55, 0x0e, // Unit Exponent (-2) 408 295 | # 0x65, 0x11, // Unit (SILinear: cm) 410 296 | # 0x09, 0x30, // Usage (X) 412 297 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 414 298 | # 0x35, 0x00, // Physical Minimum (0) 417 299 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 419 300 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 422 301 | # 0x09, 0x31, // Usage (Y) 424 302 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 426 303 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 429 304 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 432 305 | # 0x95, 0x01, // Report Count (1) 434 306 | # 0x75, 0x08, // Report Size (8) 436 307 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 438 308 | # 0x05, 0x0d, // Usage Page (Digitizers) 440 309 | # 0x26, 0xff, 0x7f, // Logical Maximum (32767) 442 310 | # 0x09, 0x48, // Usage (Width) 445 311 | # 0x75, 0x10, // Report Size (16) 447 312 | # 0x95, 0x01, // Report Count (1) 449 313 | # 0x81, 0x02, // Input (Data,Var,Abs) 451 314 | # 0x09, 0x49, // Usage (Height) 453 315 | # 0x81, 0x02, // Input (Data,Var,Abs) 455 316 | # 0xc0, // End Collection 457 317 | # 0x55, 0x0c, // Unit Exponent (-4) 458 318 | # 0x66, 0x01, 0x10, // Unit (SILinear: s) 460 319 | # 0x35, 0x00, // Physical Minimum (0) 463 320 | # 0x47, 0xff, 0xff, 0x00, 0x00, // Physical Maximum (65535) 465 321 | # 0x15, 0x00, // Logical Minimum (0) 470 322 | # 0x27, 0xff, 0xff, 0x00, 0x00, // Logical Maximum (65535) 472 323 | # 0x75, 0x10, // Report Size (16) 477 324 | # 0x95, 0x01, // Report Count (1) 479 325 | # 0x05, 0x0d, // Usage Page (Digitizers) 481 326 | # 0x09, 0x56, // Usage (Scan Time) 483 327 | # 0x81, 0x02, // Input (Data,Var,Abs) 485 328 | # 0x95, 0x08, // Report Count (8) 487 329 | # 0x75, 0x08, // Report Size (8) 489 330 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 491 331 | # 0x05, 0x0d, // Usage Page (Digitizers) 493 332 | # 0x09, 0x54, // Usage (Contact Count) 495 333 | # 0x25, 0x7f, // Logical Maximum (127) 497 334 | # 0x95, 0x01, // Report Count (1) 499 335 | # 0x75, 0x08, // Report Size (8) 501 336 | # 0x81, 0x02, // Input (Data,Var,Abs) 503 337 | # 0x95, 0x02, // Report Count (2) 505 338 | # 0x75, 0x08, // Report Size (8) 507 339 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 509 340 | # 0x85, 0x02, // Report ID (2) 511 341 | # 0x09, 0x55, // Usage (Contact Max) 513 342 | # 0x25, 0x0a, // Logical Maximum (10) 515 343 | # 0x75, 0x08, // Report Size (8) 517 344 | # 0x95, 0x01, // Report Count (1) 519 345 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 521 346 | # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 523 347 | # 0x09, 0xc5, // Usage (Vendor Usage 0xc5) 526 348 | # 0x85, 0x06, // Report ID (6) 528 349 | # 0x15, 0x00, // Logical Minimum (0) 530 350 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 532 351 | # 0x75, 0x08, // Report Size (8) 535 352 | # 0x96, 0x00, 0x01, // Report Count (256) 537 353 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 540 354 | # 0xc0, // End Collection 542 355 | # 0x05, 0x0d, // Usage Page (Digitizers) 543 356 | # 0x09, 0x02, // Usage (Pen) 545 357 | # 0xa1, 0x01, // Collection (Application) 547 358 | # 0x85, 0x0d, // Report ID (13) 549 359 | # 0x09, 0x20, // Usage (Stylus) 551 360 | # 0xa1, 0x00, // Collection (Physical) 553 361 | # 0x09, 0x42, // Usage (Tip Switch) 555 362 | # 0x09, 0x44, // Usage (Barrel Switch) 557 363 | # 0x09, 0x45, // Usage (Eraser) 559 364 | # 0x09, 0x3c, // Usage (Invert) 561 365 | # 0x09, 0x32, // Usage (In Range) 563 366 | # 0x09, 0x5a, // Usage (Secondary Barrel Switch) 565 367 | # 0x15, 0x00, // Logical Minimum (0) 567 368 | # 0x25, 0x01, // Logical Maximum (1) 569 369 | # 0x75, 0x01, // Report Size (1) 571 370 | # 0x95, 0x06, // Report Count (6) 573 371 | # 0x81, 0x02, // Input (Data,Var,Abs) 575 372 | # 0x95, 0x02, // Report Count (2) 577 373 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 579 374 | # 0x05, 0x01, // Usage Page (Generic Desktop) 581 375 | # 0x09, 0x30, // Usage (X) 583 376 | # 0x75, 0x10, // Report Size (16) 585 377 | # 0x95, 0x01, // Report Count (1) 587 378 | # 0xa4, // Push 589 379 | # 0x55, 0x0e, // Unit Exponent (-2) 590 380 | # 0x65, 0x11, // Unit (SILinear: cm) 592 381 | # 0x35, 0x00, // Physical Minimum (0) 594 382 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 596 383 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 599 384 | # 0x81, 0x02, // Input (Data,Var,Abs) 602 385 | # 0x09, 0x31, // Usage (Y) 604 386 | # 0x35, 0x00, // Physical Minimum (0) 606 387 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 608 388 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 611 389 | # 0x81, 0x02, // Input (Data,Var,Abs) 614 390 | # 0xb4, // Pop 616 391 | # 0x05, 0x0d, // Usage Page (Digitizers) 617 392 | # 0x09, 0x30, // Usage (Tip Pressure) 619 393 | # 0x26, 0xff, 0x0f, // Logical Maximum (4095) 621 394 | # 0x75, 0x10, // Report Size (16) 624 395 | # 0x95, 0x01, // Report Count (1) 626 396 | # 0x81, 0x02, // Input (Data,Var,Abs) 628 397 | # 0x09, 0x3d, // Usage (X Tilt) 630 398 | # 0x55, 0x0e, // Unit Exponent (-2) 632 399 | # 0x65, 0x14, // Unit (EnglishRotation: deg) 634 400 | # 0x36, 0xd8, 0xdc, // Physical Minimum (-9000) 636 401 | # 0x46, 0x28, 0x23, // Physical Maximum (9000) 639 402 | # 0x16, 0xd8, 0xdc, // Logical Minimum (-9000) 642 403 | # 0x26, 0x28, 0x23, // Logical Maximum (9000) 645 404 | # 0x81, 0x02, // Input (Data,Var,Abs) 648 405 | # 0x09, 0x3e, // Usage (Y Tilt) 650 406 | # 0x81, 0x02, // Input (Data,Var,Abs) 652 407 | # 0x09, 0x3b, // Usage (Battery Strength) 654 408 | # 0x75, 0x08, // Report Size (8) 656 409 | # 0x95, 0x01, // Report Count (1) 658 410 | # 0x15, 0x00, // Logical Minimum (0) 660 411 | # 0x25, 0x64, // Logical Maximum (100) 662 412 | # 0x81, 0x02, // Input (Data,Var,Abs) 664 413 | # 0x09, 0x31, // Usage (Barrel Pressure) 666 414 | # 0x75, 0x10, // Report Size (16) 668 415 | # 0x95, 0x01, // Report Count (1) 670 416 | # 0x26, 0xff, 0x0f, // Logical Maximum (4095) 672 417 | # 0x81, 0x02, // Input (Data,Var,Abs) 675 418 | # 0x09, 0x38, // Usage (Transducer Index) 677 419 | # 0x95, 0x01, // Report Count (1) 679 420 | # 0x75, 0x08, // Report Size (8) 681 421 | # 0x15, 0x00, // Logical Minimum (0) 683 422 | # 0x25, 0x02, // Logical Maximum (2) 685 423 | # 0x81, 0x02, // Input (Data,Var,Abs) 687 424 | # 0x05, 0x0d, // Usage Page (Digitizers) 689 425 | # 0x09, 0x5c, // Usage (Preferred Inking Color) 691 426 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 693 427 | # 0x75, 0x08, // Report Size (8) 696 428 | # 0x81, 0x02, // Input (Data,Var,Abs) 698 429 | # 0x09, 0x5c, // Usage (Preferred Inking Color) 700 430 | # 0x27, 0xff, 0xff, 0xff, 0x00, // Logical Maximum (16777215) 702 431 | # 0x75, 0x18, // Report Size (24) 707 432 | # 0x81, 0x02, // Input (Data,Var,Abs) 709 433 | # 0x09, 0x5e, // Usage (Preferred Line Width) 711 434 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 713 435 | # 0x75, 0x08, // Report Size (8) 716 436 | # 0x95, 0x01, // Report Count (1) 718 437 | # 0x81, 0x02, // Input (Data,Var,Abs) 720 438 | # 0x09, 0x70, // Usage (Preferred Line Style) 722 439 | # 0xa1, 0x02, // Collection (Logical) 724 440 | # 0x15, 0x01, // Logical Minimum (1) 726 441 | # 0x25, 0x06, // Logical Maximum (6) 728 442 | # 0x09, 0x72, // Usage (Ink) 730 443 | # 0x09, 0x73, // Usage (Pencil) 732 444 | # 0x09, 0x74, // Usage (Highlighter) 734 445 | # 0x09, 0x75, // Usage (Chisel Marker) 736 446 | # 0x09, 0x76, // Usage (Brush) 738 447 | # 0x09, 0x77, // Usage (No preference) 740 448 | # 0x81, 0x20, // Input (Data,Arr,Abs,NoPref) 742 449 | # 0xc0, // End Collection 744 450 | # 0x09, 0x5b, // Usage (Transducer Serial Number) 745 451 | # 0x25, 0xff, // Logical Maximum (255) 747 452 | # 0x75, 0x40, // Report Size (64) 749 453 | # 0x81, 0x02, // Input (Data,Var,Abs) 751 454 | # 0x09, 0x6e, // Usage (Vendor Usage 0x6e) 753 455 | # 0x17, 0x00, 0x00, 0x00, 0x80, // Logical Minimum (-2147483648) 755 456 | # 0x27, 0xff, 0xff, 0xff, 0x7f, // Logical Maximum (2147483647) 760 457 | # 0x95, 0x01, // Report Count (1) 765 458 | # 0x75, 0x20, // Report Size (32) 767 459 | # 0x81, 0x02, // Input (Data,Var,Abs) 769 460 | # 0x55, 0x0c, // Unit Exponent (-4) 771 461 | # 0x66, 0x01, 0x10, // Unit (SILinear: s) 773 462 | # 0x35, 0x00, // Physical Minimum (0) 776 463 | # 0x47, 0xff, 0xff, 0x00, 0x00, // Physical Maximum (65535) 778 464 | # 0x15, 0x00, // Logical Minimum (0) 783 465 | # 0x27, 0xff, 0xff, 0x00, 0x00, // Logical Maximum (65535) 785 466 | # 0x75, 0x10, // Report Size (16) 790 467 | # 0x95, 0x01, // Report Count (1) 792 468 | # 0x05, 0x0d, // Usage Page (Digitizers) 794 469 | # 0x09, 0x56, // Usage (Scan Time) 796 470 | # 0x81, 0x02, // Input (Data,Var,Abs) 798 471 | # 0x05, 0x0d, // Usage Page (Digitizers) 800 472 | # 0x85, 0x20, // Report ID (32) 802 473 | # 0x09, 0x38, // Usage (Transducer Index) 804 474 | # 0x75, 0x08, // Report Size (8) 806 475 | # 0x95, 0x01, // Report Count (1) 808 476 | # 0x15, 0x00, // Logical Minimum (0) 810 477 | # 0x25, 0x02, // Logical Maximum (2) 812 478 | # 0x81, 0x02, // Input (Data,Var,Abs) 814 479 | # 0x15, 0x01, // Logical Minimum (1) 816 480 | # 0x25, 0x04, // Logical Maximum (4) 818 481 | # 0x09, 0x81, // Usage (Digitizer Error) 820 482 | # 0xa1, 0x02, // Collection (Logical) 822 483 | # 0x09, 0x82, // Usage (Err Normal Status) 824 484 | # 0x09, 0x83, // Usage (Err Transducers Exceeded) 826 485 | # 0x09, 0x84, // Usage (Err Full Trans Features Unavail) 828 486 | # 0x09, 0x85, // Usage (Err Charge Low) 830 487 | # 0x81, 0x20, // Input (Data,Arr,Abs,NoPref) 832 488 | # 0xc0, // End Collection 834 489 | # 0x09, 0x5c, // Usage (Preferred Inking Color) 835 490 | # 0x85, 0x21, // Report ID (33) 837 491 | # 0xa1, 0x02, // Collection (Logical) 839 492 | # 0x15, 0x00, // Logical Minimum (0) 841 493 | # 0x25, 0x02, // Logical Maximum (2) 843 494 | # 0x75, 0x08, // Report Size (8) 845 495 | # 0x95, 0x01, // Report Count (1) 847 496 | # 0x09, 0x38, // Usage (Transducer Index) 849 497 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 851 498 | # 0x09, 0x5c, // Usage (Preferred Inking Color) 853 499 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 855 500 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 858 501 | # 0x09, 0x5d, // Usage (Preferred Color is Locked) 860 502 | # 0x75, 0x01, // Report Size (1) 862 503 | # 0x95, 0x01, // Report Count (1) 864 504 | # 0x25, 0x01, // Logical Maximum (1) 866 505 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 868 506 | # 0x95, 0x07, // Report Count (7) 870 507 | # 0xb1, 0x03, // Feature (Cnst,Var,Abs) 872 508 | # 0xc0, // End Collection 874 509 | # 0x09, 0x5c, // Usage (Preferred Inking Color) 875 510 | # 0x85, 0x22, // Report ID (34) 877 511 | # 0xa1, 0x02, // Collection (Logical) 879 512 | # 0x15, 0x00, // Logical Minimum (0) 881 513 | # 0x25, 0x02, // Logical Maximum (2) 883 514 | # 0x75, 0x08, // Report Size (8) 885 515 | # 0x95, 0x01, // Report Count (1) 887 516 | # 0x09, 0x38, // Usage (Transducer Index) 889 517 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 891 518 | # 0x75, 0x18, // Report Size (24) 893 519 | # 0x09, 0x5c, // Usage (Preferred Inking Color) 895 520 | # 0x27, 0xff, 0xff, 0xff, 0x00, // Logical Maximum (16777215) 897 521 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 902 522 | # 0x09, 0x6f, // Usage (Vendor Usage 0x6f) 904 523 | # 0x75, 0x01, // Report Size (1) 906 524 | # 0x95, 0x01, // Report Count (1) 908 525 | # 0x25, 0x01, // Logical Maximum (1) 910 526 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 912 527 | # 0x09, 0x5d, // Usage (Preferred Color is Locked) 914 528 | # 0x75, 0x01, // Report Size (1) 916 529 | # 0x95, 0x01, // Report Count (1) 918 530 | # 0x25, 0x01, // Logical Maximum (1) 920 531 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 922 532 | # 0x95, 0x06, // Report Count (6) 924 533 | # 0xb1, 0x03, // Feature (Cnst,Var,Abs) 926 534 | # 0xc0, // End Collection 928 535 | # 0x09, 0x5e, // Usage (Preferred Line Width) 929 536 | # 0x85, 0x23, // Report ID (35) 931 537 | # 0xa1, 0x02, // Collection (Logical) 933 538 | # 0x09, 0x38, // Usage (Transducer Index) 935 539 | # 0x15, 0x00, // Logical Minimum (0) 937 540 | # 0x25, 0x02, // Logical Maximum (2) 939 541 | # 0x75, 0x08, // Report Size (8) 941 542 | # 0x95, 0x01, // Report Count (1) 943 543 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 945 544 | # 0x09, 0x5e, // Usage (Preferred Line Width) 947 545 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 949 546 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 952 547 | # 0x09, 0x5f, // Usage (Preferred Line Width is Locked) 954 548 | # 0x75, 0x01, // Report Size (1) 956 549 | # 0x25, 0x01, // Logical Maximum (1) 958 550 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 960 551 | # 0x75, 0x07, // Report Size (7) 962 552 | # 0xb1, 0x03, // Feature (Cnst,Var,Abs) 964 553 | # 0xc0, // End Collection 966 554 | # 0x09, 0x70, // Usage (Preferred Line Style) 967 555 | # 0x85, 0x24, // Report ID (36) 969 556 | # 0xa1, 0x02, // Collection (Logical) 971 557 | # 0x75, 0x08, // Report Size (8) 973 558 | # 0x95, 0x01, // Report Count (1) 975 559 | # 0x15, 0x00, // Logical Minimum (0) 977 560 | # 0x25, 0x02, // Logical Maximum (2) 979 561 | # 0x09, 0x38, // Usage (Transducer Index) 981 562 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 983 563 | # 0x09, 0x70, // Usage (Preferred Line Style) 985 564 | # 0xa1, 0x02, // Collection (Logical) 987 565 | # 0x25, 0x06, // Logical Maximum (6) 989 566 | # 0x09, 0x72, // Usage (Ink) 991 567 | # 0x09, 0x73, // Usage (Pencil) 993 568 | # 0x09, 0x74, // Usage (Highlighter) 995 569 | # 0x09, 0x75, // Usage (Chisel Marker) 997 570 | # 0x09, 0x76, // Usage (Brush) 999 571 | # 0x09, 0x77, // Usage (No preference) 1001 572 | # 0xb1, 0x20, // Feature (Data,Arr,Abs,NoPref) 1003 573 | # 0xc0, // End Collection 1005 574 | # 0x09, 0x71, // Usage (Preferred Line Style is Locked) 1006 575 | # 0x75, 0x01, // Report Size (1) 1008 576 | # 0x25, 0x01, // Logical Maximum (1) 1010 577 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1012 578 | # 0x75, 0x07, // Report Size (7) 1014 579 | # 0xb1, 0x03, // Feature (Cnst,Var,Abs) 1016 580 | # 0xc0, // End Collection 1018 581 | # 0x09, 0x80, // Usage (Digitizer Diagnostic) 1019 582 | # 0x85, 0x25, // Report ID (37) 1021 583 | # 0x15, 0x00, // Logical Minimum (0) 1023 584 | # 0x25, 0xff, // Logical Maximum (255) 1025 585 | # 0x75, 0x40, // Report Size (64) 1027 586 | # 0x95, 0x01, // Report Count (1) 1029 587 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1031 588 | # 0x09, 0x44, // Usage (Barrel Switch) 1033 589 | # 0x85, 0x26, // Report ID (38) 1035 590 | # 0xa1, 0x02, // Collection (Logical) 1037 591 | # 0x09, 0x38, // Usage (Transducer Index) 1039 592 | # 0x75, 0x08, // Report Size (8) 1041 593 | # 0x95, 0x01, // Report Count (1) 1043 594 | # 0x15, 0x00, // Logical Minimum (0) 1045 595 | # 0x25, 0x02, // Logical Maximum (2) 1047 596 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1049 597 | # 0x15, 0x01, // Logical Minimum (1) 1051 598 | # 0x25, 0x03, // Logical Maximum (3) 1053 599 | # 0x09, 0x44, // Usage (Barrel Switch) 1055 600 | # 0xa1, 0x02, // Collection (Logical) 1057 601 | # 0x09, 0xa4, // Usage (Switch Unimplemented) 1059 602 | # 0x09, 0x44, // Usage (Barrel Switch) 1061 603 | # 0x09, 0x5a, // Usage (Secondary Barrel Switch) 1063 604 | # 0x09, 0x45, // Usage (Eraser) 1065 605 | # 0x09, 0xa3, // Usage (Switch Disabled) 1067 606 | # 0xb1, 0x20, // Feature (Data,Arr,Abs,NoPref) 1069 607 | # 0xc0, // End Collection 1071 608 | # 0x09, 0x5a, // Usage (Secondary Barrel Switch) 1072 609 | # 0xa1, 0x02, // Collection (Logical) 1074 610 | # 0x09, 0xa4, // Usage (Switch Unimplemented) 1076 611 | # 0x09, 0x44, // Usage (Barrel Switch) 1078 612 | # 0x09, 0x5a, // Usage (Secondary Barrel Switch) 1080 613 | # 0x09, 0x45, // Usage (Eraser) 1082 614 | # 0x09, 0xa3, // Usage (Switch Disabled) 1084 615 | # 0xb1, 0x20, // Feature (Data,Arr,Abs,NoPref) 1086 616 | # 0xc0, // End Collection 1088 617 | # 0x09, 0x45, // Usage (Eraser) 1089 618 | # 0xa1, 0x02, // Collection (Logical) 1091 619 | # 0x09, 0xa4, // Usage (Switch Unimplemented) 1093 620 | # 0x09, 0x44, // Usage (Barrel Switch) 1095 621 | # 0x09, 0x5a, // Usage (Secondary Barrel Switch) 1097 622 | # 0x09, 0x45, // Usage (Eraser) 1099 623 | # 0x09, 0xa3, // Usage (Switch Disabled) 1101 624 | # 0xb1, 0x20, // Feature (Data,Arr,Abs,NoPref) 1103 625 | # 0xc0, // End Collection 1105 626 | # 0xc0, // End Collection 1106 627 | # 0x05, 0x0d, // Usage Page (Digitizers) 1107 628 | # 0x85, 0x27, // Report ID (39) 1109 629 | # 0x75, 0x08, // Report Size (8) 1111 630 | # 0x95, 0x01, // Report Count (1) 1113 631 | # 0x09, 0x90, // Usage (Transducer Software Info.) 1115 632 | # 0xa1, 0x02, // Collection (Logical) 1117 633 | # 0x09, 0x38, // Usage (Transducer Index) 1119 634 | # 0x15, 0x00, // Logical Minimum (0) 1121 635 | # 0x25, 0x02, // Logical Maximum (2) 1123 636 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1125 637 | # 0x09, 0x5b, // Usage (Transducer Serial Number) 1127 638 | # 0x17, 0x00, 0x00, 0x00, 0x80, // Logical Minimum (-2147483648) 1129 639 | # 0x27, 0xff, 0xff, 0xff, 0x7f, // Logical Maximum (2147483647) 1134 640 | # 0x75, 0x40, // Report Size (64) 1139 641 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1141 642 | # 0x09, 0x6e, // Usage (Vendor Usage 0x6e) 1143 643 | # 0x75, 0x20, // Report Size (32) 1145 644 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1147 645 | # 0x09, 0x91, // Usage (Transducer Vendor ID) 1149 646 | # 0x75, 0x10, // Report Size (16) 1151 647 | # 0x26, 0xff, 0x0f, // Logical Maximum (4095) 1153 648 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1156 649 | # 0x09, 0x92, // Usage (Transducer Product ID) 1158 650 | # 0x75, 0x40, // Report Size (64) 1160 651 | # 0x25, 0xff, // Logical Maximum (255) 1162 652 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1164 653 | # 0x05, 0x06, // Usage Page (Generic Device Controls) 1166 654 | # 0x09, 0x2a, // Usage (Software Version) 1168 655 | # 0x75, 0x08, // Report Size (8) 1170 656 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 1172 657 | # 0xa1, 0x02, // Collection (Logical) 1175 658 | # 0x09, 0x2d, // Usage (Major) 1177 659 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1179 660 | # 0x09, 0x2e, // Usage (Minor) 1181 661 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1183 662 | # 0xc0, // End Collection 1185 663 | # 0xc0, // End Collection 1186 664 | # 0x05, 0x06, // Usage Page (Generic Device Controls) 1187 665 | # 0x85, 0x28, // Report ID (40) 1189 666 | # 0x09, 0x2b, // Usage (Protocol Version) 1191 667 | # 0xa1, 0x02, // Collection (Logical) 1193 668 | # 0x05, 0x0d, // Usage Page (Digitizers) 1195 669 | # 0x15, 0x00, // Logical Minimum (0) 1197 670 | # 0x25, 0x02, // Logical Maximum (2) 1199 671 | # 0x09, 0x38, // Usage (Transducer Index) 1201 672 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1203 673 | # 0x05, 0x06, // Usage Page (Generic Device Controls) 1205 674 | # 0x09, 0x2b, // Usage (Protocol Version) 1207 675 | # 0xa1, 0x02, // Collection (Logical) 1209 676 | # 0x09, 0x2d, // Usage (Major) 1211 677 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 1213 678 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1216 679 | # 0x09, 0x2e, // Usage (Minor) 1218 680 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1220 681 | # 0xc0, // End Collection 1222 682 | # 0xc0, // End Collection 1223 683 | # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 1224 684 | # 0x85, 0x29, // Report ID (41) 1227 685 | # 0x09, 0x01, // Usage (Vendor Usage 1) 1229 686 | # 0xa1, 0x02, // Collection (Logical) 1231 687 | # 0x05, 0x0d, // Usage Page (Digitizers) 1233 688 | # 0x09, 0x38, // Usage (Transducer Index) 1235 689 | # 0x75, 0x08, // Report Size (8) 1237 690 | # 0x95, 0x01, // Report Count (1) 1239 691 | # 0x15, 0x00, // Logical Minimum (0) 1241 692 | # 0x25, 0x02, // Logical Maximum (2) 1243 693 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1245 694 | # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 1247 695 | # 0x09, 0x01, // Usage (Vendor Usage 1) 1250 696 | # 0x75, 0x10, // Report Size (16) 1252 697 | # 0x27, 0xff, 0xff, 0x00, 0x00, // Logical Maximum (65535) 1254 698 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1259 699 | # 0xc0, // End Collection 1261 700 | # 0x05, 0x0d, // Usage Page (Digitizers) 1262 701 | # 0x85, 0x2a, // Report ID (42) 1264 702 | # 0x09, 0x38, // Usage (Transducer Index) 1266 703 | # 0x75, 0x08, // Report Size (8) 1268 704 | # 0x95, 0x01, // Report Count (1) 1270 705 | # 0x15, 0x00, // Logical Minimum (0) 1272 706 | # 0x25, 0x02, // Logical Maximum (2) 1274 707 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1276 708 | # 0xc0, // End Collection 1278 709 | # 0xc0, // End Collection 1279 710 | # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 1280 711 | # 0x09, 0x01, // Usage (Vendor Usage 1) 1283 712 | # 0xa1, 0x01, // Collection (Application) 1285 713 | # 0x09, 0x01, // Usage (Vendor Usage 1) 1287 714 | # 0x85, 0x03, // Report ID (3) 1289 715 | # 0x15, 0x00, // Logical Minimum (0) 1291 716 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 1293 717 | # 0x75, 0x08, // Report Size (8) 1296 718 | # 0x95, 0x3f, // Report Count (63) 1298 719 | # 0x81, 0x02, // Input (Data,Var,Abs) 1300 720 | # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 1302 721 | # 0x09, 0x01, // Usage (Vendor Usage 1) 1305 722 | # 0x15, 0x00, // Logical Minimum (0) 1307 723 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 1309 724 | # 0x75, 0x08, // Report Size (8) 1312 725 | # 0x95, 0x3f, // Report Count (63) 1314 726 | # 0x91, 0x02, // Output (Data,Var,Abs) 1316 727 | # 0x85, 0x0c, // Report ID (12) 1318 728 | # 0x09, 0x01, // Usage (Vendor Usage 1) 1320 729 | # 0x81, 0x02, // Input (Data,Var,Abs) 1322 730 | # 0x85, 0x07, // Report ID (7) 1324 731 | # 0x96, 0x06, 0x01, // Report Count (262) 1326 732 | # 0x09, 0x01, // Usage (Vendor Usage 1) 1329 733 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1331 734 | # 0x85, 0x08, // Report ID (8) 1333 735 | # 0x96, 0x06, 0x04, // Report Count (1030) 1335 736 | # 0x09, 0x01, // Usage (Vendor Usage 1) 1338 737 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1340 738 | # 0x85, 0x09, // Report ID (9) 1342 739 | # 0x96, 0x06, 0x08, // Report Count (2054) 1344 740 | # 0x09, 0x01, // Usage (Vendor Usage 1) 1347 741 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 1349 742 | # 0xc0, // End Collection 1351 743 | # 0x05, 0x01, // Usage Page (Generic Desktop) 1352 744 | # 0x09, 0x02, // Usage (Mouse) 1354 745 | # 0xa1, 0x01, // Collection (Application) 1356 746 | # 0x85, 0x05, // Report ID (5) 1358 747 | # 0x09, 0x01, // Usage (Pointer) 1360 748 | # 0xa1, 0x00, // Collection (Physical) 1362 749 | # 0x05, 0x09, // Usage Page (Button) 1364 750 | # 0x19, 0x01, // Usage Minimum (1) 1366 751 | # 0x29, 0x05, // Usage Maximum (5) 1368 752 | # 0x15, 0x00, // Logical Minimum (0) 1370 753 | # 0x25, 0x01, // Logical Maximum (1) 1372 754 | # 0x95, 0x05, // Report Count (5) 1374 755 | # 0x75, 0x01, // Report Size (1) 1376 756 | # 0x81, 0x02, // Input (Data,Var,Abs) 1378 757 | # 0x95, 0x01, // Report Count (1) 1380 758 | # 0x75, 0x03, // Report Size (3) 1382 759 | # 0x81, 0x01, // Input (Cnst,Arr,Abs) 1384 760 | # 0x05, 0x01, // Usage Page (Generic Desktop) 1386 761 | # 0x75, 0x10, // Report Size (16) 1388 762 | # 0x95, 0x01, // Report Count (1) 1390 763 | # 0x55, 0x0e, // Unit Exponent (-2) 1392 764 | # 0x65, 0x11, // Unit (SILinear: cm) 1394 765 | # 0x09, 0x30, // Usage (X) 1396 766 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 1398 767 | # 0x35, 0x00, // Physical Minimum (0) 1401 768 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 1403 769 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 1406 770 | # 0x09, 0x31, // Usage (Y) 1408 771 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 1410 772 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 1413 773 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 1416 774 | # 0xc0, // End Collection 1418 775 | # 0xc0, // End Collection 1419 776 | ``` 777 | 778 | ### MPP HID Report Descriptor 779 | 780 | ``` 781 | # 0x05, 0x0d, // Usage Page (Digitizers) 0 782 | # 0x09, 0x04, // Usage (Touch Screen) 2 783 | # 0xa1, 0x01, // Collection (Application) 4 784 | # 0x85, 0x04, // Report ID (4) 6 785 | # 0x05, 0x0d, // Usage Page (Digitizers) 8 786 | # 0x09, 0x22, // Usage (Finger) 10 787 | # 0xa1, 0x02, // Collection (Logical) 12 788 | # 0x05, 0x0d, // Usage Page (Digitizers) 14 789 | # 0x95, 0x01, // Report Count (1) 16 790 | # 0x75, 0x06, // Report Size (6) 18 791 | # 0x09, 0x51, // Usage (Contact Id) 20 792 | # 0x15, 0x00, // Logical Minimum (0) 22 793 | # 0x25, 0x3f, // Logical Maximum (63) 24 794 | # 0x81, 0x02, // Input (Data,Var,Abs) 26 795 | # 0x09, 0x42, // Usage (Tip Switch) 28 796 | # 0x25, 0x01, // Logical Maximum (1) 30 797 | # 0x75, 0x01, // Report Size (1) 32 798 | # 0x95, 0x01, // Report Count (1) 34 799 | # 0x81, 0x02, // Input (Data,Var,Abs) 36 800 | # 0x09, 0x47, // Usage (Confidence) 38 801 | # 0x75, 0x01, // Report Size (1) 40 802 | # 0x81, 0x02, // Input (Data,Var,Abs) 42 803 | # 0x05, 0x01, // Usage Page (Generic Desktop) 44 804 | # 0x75, 0x10, // Report Size (16) 46 805 | # 0x55, 0x0e, // Unit Exponent (-2) 48 806 | # 0x65, 0x11, // Unit (SILinear: cm) 50 807 | # 0x09, 0x30, // Usage (X) 52 808 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 54 809 | # 0x35, 0x00, // Physical Minimum (0) 57 810 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 59 811 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 62 812 | # 0x09, 0x31, // Usage (Y) 64 813 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 66 814 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 69 815 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 72 816 | # 0x95, 0x01, // Report Count (1) 74 817 | # 0x75, 0x08, // Report Size (8) 76 818 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 78 819 | # 0x05, 0x0d, // Usage Page (Digitizers) 80 820 | # 0x26, 0xff, 0x7f, // Logical Maximum (32767) 82 821 | # 0x09, 0x48, // Usage (Width) 85 822 | # 0x75, 0x10, // Report Size (16) 87 823 | # 0x95, 0x01, // Report Count (1) 89 824 | # 0x81, 0x02, // Input (Data,Var,Abs) 91 825 | # 0x09, 0x49, // Usage (Height) 93 826 | # 0x81, 0x02, // Input (Data,Var,Abs) 95 827 | # 0xc0, // End Collection 97 828 | # 0x05, 0x0d, // Usage Page (Digitizers) 98 829 | # 0x09, 0x22, // Usage (Finger) 100 830 | # 0xa1, 0x02, // Collection (Logical) 102 831 | # 0x05, 0x0d, // Usage Page (Digitizers) 104 832 | # 0x95, 0x01, // Report Count (1) 106 833 | # 0x75, 0x06, // Report Size (6) 108 834 | # 0x09, 0x51, // Usage (Contact Id) 110 835 | # 0x15, 0x00, // Logical Minimum (0) 112 836 | # 0x25, 0x3f, // Logical Maximum (63) 114 837 | # 0x81, 0x02, // Input (Data,Var,Abs) 116 838 | # 0x09, 0x42, // Usage (Tip Switch) 118 839 | # 0x25, 0x01, // Logical Maximum (1) 120 840 | # 0x75, 0x01, // Report Size (1) 122 841 | # 0x95, 0x01, // Report Count (1) 124 842 | # 0x81, 0x02, // Input (Data,Var,Abs) 126 843 | # 0x09, 0x47, // Usage (Confidence) 128 844 | # 0x75, 0x01, // Report Size (1) 130 845 | # 0x81, 0x02, // Input (Data,Var,Abs) 132 846 | # 0x05, 0x01, // Usage Page (Generic Desktop) 134 847 | # 0x75, 0x10, // Report Size (16) 136 848 | # 0x55, 0x0e, // Unit Exponent (-2) 138 849 | # 0x65, 0x11, // Unit (SILinear: cm) 140 850 | # 0x09, 0x30, // Usage (X) 142 851 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 144 852 | # 0x35, 0x00, // Physical Minimum (0) 147 853 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 149 854 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 152 855 | # 0x09, 0x31, // Usage (Y) 154 856 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 156 857 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 159 858 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 162 859 | # 0x95, 0x01, // Report Count (1) 164 860 | # 0x75, 0x08, // Report Size (8) 166 861 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 168 862 | # 0x05, 0x0d, // Usage Page (Digitizers) 170 863 | # 0x26, 0xff, 0x7f, // Logical Maximum (32767) 172 864 | # 0x09, 0x48, // Usage (Width) 175 865 | # 0x75, 0x10, // Report Size (16) 177 866 | # 0x95, 0x01, // Report Count (1) 179 867 | # 0x81, 0x02, // Input (Data,Var,Abs) 181 868 | # 0x09, 0x49, // Usage (Height) 183 869 | # 0x81, 0x02, // Input (Data,Var,Abs) 185 870 | # 0xc0, // End Collection 187 871 | # 0x05, 0x0d, // Usage Page (Digitizers) 188 872 | # 0x09, 0x22, // Usage (Finger) 190 873 | # 0xa1, 0x02, // Collection (Logical) 192 874 | # 0x05, 0x0d, // Usage Page (Digitizers) 194 875 | # 0x95, 0x01, // Report Count (1) 196 876 | # 0x75, 0x06, // Report Size (6) 198 877 | # 0x09, 0x51, // Usage (Contact Id) 200 878 | # 0x15, 0x00, // Logical Minimum (0) 202 879 | # 0x25, 0x3f, // Logical Maximum (63) 204 880 | # 0x81, 0x02, // Input (Data,Var,Abs) 206 881 | # 0x09, 0x42, // Usage (Tip Switch) 208 882 | # 0x25, 0x01, // Logical Maximum (1) 210 883 | # 0x75, 0x01, // Report Size (1) 212 884 | # 0x95, 0x01, // Report Count (1) 214 885 | # 0x81, 0x02, // Input (Data,Var,Abs) 216 886 | # 0x09, 0x47, // Usage (Confidence) 218 887 | # 0x75, 0x01, // Report Size (1) 220 888 | # 0x81, 0x02, // Input (Data,Var,Abs) 222 889 | # 0x05, 0x01, // Usage Page (Generic Desktop) 224 890 | # 0x75, 0x10, // Report Size (16) 226 891 | # 0x55, 0x0e, // Unit Exponent (-2) 228 892 | # 0x65, 0x11, // Unit (SILinear: cm) 230 893 | # 0x09, 0x30, // Usage (X) 232 894 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 234 895 | # 0x35, 0x00, // Physical Minimum (0) 237 896 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 239 897 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 242 898 | # 0x09, 0x31, // Usage (Y) 244 899 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 246 900 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 249 901 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 252 902 | # 0x95, 0x01, // Report Count (1) 254 903 | # 0x75, 0x08, // Report Size (8) 256 904 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 258 905 | # 0x05, 0x0d, // Usage Page (Digitizers) 260 906 | # 0x26, 0xff, 0x7f, // Logical Maximum (32767) 262 907 | # 0x09, 0x48, // Usage (Width) 265 908 | # 0x75, 0x10, // Report Size (16) 267 909 | # 0x95, 0x01, // Report Count (1) 269 910 | # 0x81, 0x02, // Input (Data,Var,Abs) 271 911 | # 0x09, 0x49, // Usage (Height) 273 912 | # 0x81, 0x02, // Input (Data,Var,Abs) 275 913 | # 0xc0, // End Collection 277 914 | # 0x05, 0x0d, // Usage Page (Digitizers) 278 915 | # 0x09, 0x22, // Usage (Finger) 280 916 | # 0xa1, 0x02, // Collection (Logical) 282 917 | # 0x05, 0x0d, // Usage Page (Digitizers) 284 918 | # 0x95, 0x01, // Report Count (1) 286 919 | # 0x75, 0x06, // Report Size (6) 288 920 | # 0x09, 0x51, // Usage (Contact Id) 290 921 | # 0x15, 0x00, // Logical Minimum (0) 292 922 | # 0x25, 0x3f, // Logical Maximum (63) 294 923 | # 0x81, 0x02, // Input (Data,Var,Abs) 296 924 | # 0x09, 0x42, // Usage (Tip Switch) 298 925 | # 0x25, 0x01, // Logical Maximum (1) 300 926 | # 0x75, 0x01, // Report Size (1) 302 927 | # 0x95, 0x01, // Report Count (1) 304 928 | # 0x81, 0x02, // Input (Data,Var,Abs) 306 929 | # 0x09, 0x47, // Usage (Confidence) 308 930 | # 0x75, 0x01, // Report Size (1) 310 931 | # 0x81, 0x02, // Input (Data,Var,Abs) 312 932 | # 0x05, 0x01, // Usage Page (Generic Desktop) 314 933 | # 0x75, 0x10, // Report Size (16) 316 934 | # 0x55, 0x0e, // Unit Exponent (-2) 318 935 | # 0x65, 0x11, // Unit (SILinear: cm) 320 936 | # 0x09, 0x30, // Usage (X) 322 937 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 324 938 | # 0x35, 0x00, // Physical Minimum (0) 327 939 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 329 940 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 332 941 | # 0x09, 0x31, // Usage (Y) 334 942 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 336 943 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 339 944 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 342 945 | # 0x95, 0x01, // Report Count (1) 344 946 | # 0x75, 0x08, // Report Size (8) 346 947 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 348 948 | # 0x05, 0x0d, // Usage Page (Digitizers) 350 949 | # 0x26, 0xff, 0x7f, // Logical Maximum (32767) 352 950 | # 0x09, 0x48, // Usage (Width) 355 951 | # 0x75, 0x10, // Report Size (16) 357 952 | # 0x95, 0x01, // Report Count (1) 359 953 | # 0x81, 0x02, // Input (Data,Var,Abs) 361 954 | # 0x09, 0x49, // Usage (Height) 363 955 | # 0x81, 0x02, // Input (Data,Var,Abs) 365 956 | # 0xc0, // End Collection 367 957 | # 0x05, 0x0d, // Usage Page (Digitizers) 368 958 | # 0x09, 0x22, // Usage (Finger) 370 959 | # 0xa1, 0x02, // Collection (Logical) 372 960 | # 0x05, 0x0d, // Usage Page (Digitizers) 374 961 | # 0x95, 0x01, // Report Count (1) 376 962 | # 0x75, 0x06, // Report Size (6) 378 963 | # 0x09, 0x51, // Usage (Contact Id) 380 964 | # 0x15, 0x00, // Logical Minimum (0) 382 965 | # 0x25, 0x3f, // Logical Maximum (63) 384 966 | # 0x81, 0x02, // Input (Data,Var,Abs) 386 967 | # 0x09, 0x42, // Usage (Tip Switch) 388 968 | # 0x25, 0x01, // Logical Maximum (1) 390 969 | # 0x75, 0x01, // Report Size (1) 392 970 | # 0x95, 0x01, // Report Count (1) 394 971 | # 0x81, 0x02, // Input (Data,Var,Abs) 396 972 | # 0x09, 0x47, // Usage (Confidence) 398 973 | # 0x75, 0x01, // Report Size (1) 400 974 | # 0x81, 0x02, // Input (Data,Var,Abs) 402 975 | # 0x05, 0x01, // Usage Page (Generic Desktop) 404 976 | # 0x75, 0x10, // Report Size (16) 406 977 | # 0x55, 0x0e, // Unit Exponent (-2) 408 978 | # 0x65, 0x11, // Unit (SILinear: cm) 410 979 | # 0x09, 0x30, // Usage (X) 412 980 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 414 981 | # 0x35, 0x00, // Physical Minimum (0) 417 982 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 419 983 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 422 984 | # 0x09, 0x31, // Usage (Y) 424 985 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 426 986 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 429 987 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 432 988 | # 0x95, 0x01, // Report Count (1) 434 989 | # 0x75, 0x08, // Report Size (8) 436 990 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 438 991 | # 0x05, 0x0d, // Usage Page (Digitizers) 440 992 | # 0x26, 0xff, 0x7f, // Logical Maximum (32767) 442 993 | # 0x09, 0x48, // Usage (Width) 445 994 | # 0x75, 0x10, // Report Size (16) 447 995 | # 0x95, 0x01, // Report Count (1) 449 996 | # 0x81, 0x02, // Input (Data,Var,Abs) 451 997 | # 0x09, 0x49, // Usage (Height) 453 998 | # 0x81, 0x02, // Input (Data,Var,Abs) 455 999 | # 0xc0, // End Collection 457 1000 | # 0x55, 0x0c, // Unit Exponent (-4) 458 1001 | # 0x66, 0x01, 0x10, // Unit (SILinear: s) 460 1002 | # 0x35, 0x00, // Physical Minimum (0) 463 1003 | # 0x47, 0xff, 0xff, 0x00, 0x00, // Physical Maximum (65535) 465 1004 | # 0x15, 0x00, // Logical Minimum (0) 470 1005 | # 0x27, 0xff, 0xff, 0x00, 0x00, // Logical Maximum (65535) 472 1006 | # 0x75, 0x10, // Report Size (16) 477 1007 | # 0x95, 0x01, // Report Count (1) 479 1008 | # 0x05, 0x0d, // Usage Page (Digitizers) 481 1009 | # 0x09, 0x56, // Usage (Scan Time) 483 1010 | # 0x81, 0x02, // Input (Data,Var,Abs) 485 1011 | # 0x95, 0x08, // Report Count (8) 487 1012 | # 0x75, 0x08, // Report Size (8) 489 1013 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 491 1014 | # 0x05, 0x0d, // Usage Page (Digitizers) 493 1015 | # 0x09, 0x54, // Usage (Contact Count) 495 1016 | # 0x25, 0x7f, // Logical Maximum (127) 497 1017 | # 0x95, 0x01, // Report Count (1) 499 1018 | # 0x75, 0x08, // Report Size (8) 501 1019 | # 0x81, 0x02, // Input (Data,Var,Abs) 503 1020 | # 0x95, 0x02, // Report Count (2) 505 1021 | # 0x75, 0x08, // Report Size (8) 507 1022 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 509 1023 | # 0x85, 0x02, // Report ID (2) 511 1024 | # 0x09, 0x55, // Usage (Contact Max) 513 1025 | # 0x25, 0x0a, // Logical Maximum (10) 515 1026 | # 0x75, 0x08, // Report Size (8) 517 1027 | # 0x95, 0x01, // Report Count (1) 519 1028 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 521 1029 | # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 523 1030 | # 0x09, 0xc5, // Usage (Vendor Usage 0xc5) 526 1031 | # 0x85, 0x06, // Report ID (6) 528 1032 | # 0x15, 0x00, // Logical Minimum (0) 530 1033 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 532 1034 | # 0x75, 0x08, // Report Size (8) 535 1035 | # 0x96, 0x00, 0x01, // Report Count (256) 537 1036 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 540 1037 | # 0xc0, // End Collection 542 1038 | # 0x05, 0x0d, // Usage Page (Digitizers) 543 1039 | # 0x09, 0x02, // Usage (Pen) 545 1040 | # 0xa1, 0x01, // Collection (Application) 547 1041 | # 0x85, 0x0d, // Report ID (13) 549 1042 | # 0x09, 0x20, // Usage (Stylus) 551 1043 | # 0xa1, 0x00, // Collection (Physical) 553 1044 | # 0x09, 0x42, // Usage (Tip Switch) 555 1045 | # 0x09, 0x44, // Usage (Barrel Switch) 557 1046 | # 0x09, 0x45, // Usage (Eraser) 559 1047 | # 0x09, 0x3c, // Usage (Invert) 561 1048 | # 0x09, 0x32, // Usage (In Range) 563 1049 | # 0x09, 0x5a, // Usage (Secondary Barrel Switch) 565 1050 | # 0x15, 0x00, // Logical Minimum (0) 567 1051 | # 0x25, 0x01, // Logical Maximum (1) 569 1052 | # 0x75, 0x01, // Report Size (1) 571 1053 | # 0x95, 0x06, // Report Count (6) 573 1054 | # 0x81, 0x02, // Input (Data,Var,Abs) 575 1055 | # 0x95, 0x02, // Report Count (2) 577 1056 | # 0x81, 0x03, // Input (Cnst,Var,Abs) 579 1057 | # 0x05, 0x01, // Usage Page (Generic Desktop) 581 1058 | # 0x09, 0x30, // Usage (X) 583 1059 | # 0x75, 0x10, // Report Size (16) 585 1060 | # 0x95, 0x01, // Report Count (1) 587 1061 | # 0xa4, // Push 589 1062 | # 0x55, 0x0e, // Unit Exponent (-2) 590 1063 | # 0x65, 0x11, // Unit (SILinear: cm) 592 1064 | # 0x35, 0x00, // Physical Minimum (0) 594 1065 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 596 1066 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 599 1067 | # 0x81, 0x02, // Input (Data,Var,Abs) 602 1068 | # 0x09, 0x31, // Usage (Y) 604 1069 | # 0x35, 0x00, // Physical Minimum (0) 606 1070 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 608 1071 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 611 1072 | # 0x81, 0x02, // Input (Data,Var,Abs) 614 1073 | # 0xb4, // Pop 616 1074 | # 0x05, 0x0d, // Usage Page (Digitizers) 617 1075 | # 0x09, 0x30, // Usage (Tip Pressure) 619 1076 | # 0x26, 0xff, 0x0f, // Logical Maximum (4095) 621 1077 | # 0x75, 0x10, // Report Size (16) 624 1078 | # 0x95, 0x01, // Report Count (1) 626 1079 | # 0x81, 0x02, // Input (Data,Var,Abs) 628 1080 | # 0x09, 0x3d, // Usage (X Tilt) 630 1081 | # 0x55, 0x0e, // Unit Exponent (-2) 632 1082 | # 0x65, 0x14, // Unit (EnglishRotation: deg) 634 1083 | # 0x36, 0xd8, 0xdc, // Physical Minimum (-9000) 636 1084 | # 0x46, 0x28, 0x23, // Physical Maximum (9000) 639 1085 | # 0x16, 0xd8, 0xdc, // Logical Minimum (-9000) 642 1086 | # 0x26, 0x28, 0x23, // Logical Maximum (9000) 645 1087 | # 0x81, 0x02, // Input (Data,Var,Abs) 648 1088 | # 0x09, 0x3e, // Usage (Y Tilt) 650 1089 | # 0x81, 0x02, // Input (Data,Var,Abs) 652 1090 | # 0x09, 0x3b, // Usage (Battery Strength) 654 1091 | # 0x75, 0x08, // Report Size (8) 656 1092 | # 0x95, 0x01, // Report Count (1) 658 1093 | # 0x15, 0x00, // Logical Minimum (0) 660 1094 | # 0x25, 0x64, // Logical Maximum (100) 662 1095 | # 0x81, 0x02, // Input (Data,Var,Abs) 664 1096 | # 0x55, 0x0c, // Unit Exponent (-4) 666 1097 | # 0x66, 0x01, 0x10, // Unit (SILinear: s) 668 1098 | # 0x35, 0x00, // Physical Minimum (0) 671 1099 | # 0x47, 0xff, 0xff, 0x00, 0x00, // Physical Maximum (65535) 673 1100 | # 0x15, 0x00, // Logical Minimum (0) 678 1101 | # 0x27, 0xff, 0xff, 0x00, 0x00, // Logical Maximum (65535) 680 1102 | # 0x75, 0x10, // Report Size (16) 685 1103 | # 0x95, 0x01, // Report Count (1) 687 1104 | # 0x05, 0x0d, // Usage Page (Digitizers) 689 1105 | # 0x09, 0x56, // Usage (Scan Time) 691 1106 | # 0x81, 0x02, // Input (Data,Var,Abs) 693 1107 | # 0xc0, // End Collection 695 1108 | # 0xc0, // End Collection 696 1109 | # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 697 1110 | # 0x09, 0x01, // Usage (Vendor Usage 1) 700 1111 | # 0xa1, 0x01, // Collection (Application) 702 1112 | # 0x09, 0x01, // Usage (Vendor Usage 1) 704 1113 | # 0x85, 0x03, // Report ID (3) 706 1114 | # 0x15, 0x00, // Logical Minimum (0) 708 1115 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 710 1116 | # 0x75, 0x08, // Report Size (8) 713 1117 | # 0x95, 0x3f, // Report Count (63) 715 1118 | # 0x81, 0x02, // Input (Data,Var,Abs) 717 1119 | # 0x06, 0x00, 0xff, // Usage Page (Vendor Defined Page 1) 719 1120 | # 0x09, 0x01, // Usage (Vendor Usage 1) 722 1121 | # 0x15, 0x00, // Logical Minimum (0) 724 1122 | # 0x26, 0xff, 0x00, // Logical Maximum (255) 726 1123 | # 0x75, 0x08, // Report Size (8) 729 1124 | # 0x95, 0x3f, // Report Count (63) 731 1125 | # 0x91, 0x02, // Output (Data,Var,Abs) 733 1126 | # 0x85, 0x0c, // Report ID (12) 735 1127 | # 0x09, 0x01, // Usage (Vendor Usage 1) 737 1128 | # 0x81, 0x02, // Input (Data,Var,Abs) 739 1129 | # 0x85, 0x07, // Report ID (7) 741 1130 | # 0x96, 0x06, 0x01, // Report Count (262) 743 1131 | # 0x09, 0x01, // Usage (Vendor Usage 1) 746 1132 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 748 1133 | # 0x85, 0x08, // Report ID (8) 750 1134 | # 0x96, 0x06, 0x04, // Report Count (1030) 752 1135 | # 0x09, 0x01, // Usage (Vendor Usage 1) 755 1136 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 757 1137 | # 0x85, 0x09, // Report ID (9) 759 1138 | # 0x96, 0x06, 0x08, // Report Count (2054) 761 1139 | # 0x09, 0x01, // Usage (Vendor Usage 1) 764 1140 | # 0xb1, 0x02, // Feature (Data,Var,Abs) 766 1141 | # 0xc0, // End Collection 768 1142 | # 0x05, 0x01, // Usage Page (Generic Desktop) 769 1143 | # 0x09, 0x02, // Usage (Mouse) 771 1144 | # 0xa1, 0x01, // Collection (Application) 773 1145 | # 0x85, 0x05, // Report ID (5) 775 1146 | # 0x09, 0x01, // Usage (Pointer) 777 1147 | # 0xa1, 0x00, // Collection (Physical) 779 1148 | # 0x05, 0x09, // Usage Page (Button) 781 1149 | # 0x19, 0x01, // Usage Minimum (1) 783 1150 | # 0x29, 0x05, // Usage Maximum (5) 785 1151 | # 0x15, 0x00, // Logical Minimum (0) 787 1152 | # 0x25, 0x01, // Logical Maximum (1) 789 1153 | # 0x95, 0x05, // Report Count (5) 791 1154 | # 0x75, 0x01, // Report Size (1) 793 1155 | # 0x81, 0x02, // Input (Data,Var,Abs) 795 1156 | # 0x95, 0x01, // Report Count (1) 797 1157 | # 0x75, 0x03, // Report Size (3) 799 1158 | # 0x81, 0x01, // Input (Cnst,Arr,Abs) 801 1159 | # 0x05, 0x01, // Usage Page (Generic Desktop) 803 1160 | # 0x75, 0x10, // Report Size (16) 805 1161 | # 0x95, 0x01, // Report Count (1) 807 1162 | # 0x55, 0x0e, // Unit Exponent (-2) 809 1163 | # 0x65, 0x11, // Unit (SILinear: cm) 811 1164 | # 0x09, 0x30, // Usage (X) 813 1165 | # 0x26, 0x00, 0x40, // Logical Maximum (16384) 815 1166 | # 0x35, 0x00, // Physical Minimum (0) 818 1167 | # 0x46, 0x43, 0x0a, // Physical Maximum (2627) 820 1168 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 823 1169 | # 0x09, 0x31, // Usage (Y) 825 1170 | # 0x26, 0x80, 0x25, // Logical Maximum (9600) 827 1171 | # 0x46, 0x6a, 0x06, // Physical Maximum (1642) 830 1172 | # 0x81, 0x42, // Input (Data,Var,Abs,Null) 833 1173 | # 0xc0, // End Collection 835 1174 | # 0xc0, // End Collection 836 1175 | ``` 1176 | --------------------------------------------------------------------------------