~ »»» echo "hid-recorder output for all hidraw nodes after loading the BPF"
hid-recorder output for all hidraw nodes after loading the BPF
~ »»» sudo tree /sys/fs/bpf/hid
[sudo] password for deevad:  
/sys/fs/bpf/hid
├── 0003_28BD_0947_000D
│   └── 0010-XPPen__Deco01V3_bpf
│       └── xppen_deco01v3
└── 0003_28BD_0947_000E
   └── 0010-XPPen__Deco01V3_bpf
       └── xppen_deco01v3

5 directories, 2 files
~ »»» cd scripts/
~/scripts »»» cd ~/sources/
~/sources »»» sudo ./hid-recorder
# Available devices:
# /dev/hidraw0:     Samson Technologies Samson Meteor Mic
# /dev/hidraw1:     UGTABLET Deco 01 V3
# /dev/hidraw2:     UGTABLET Deco 01 V3
# /dev/hidraw3:     UGTABLET Deco 01 V3
# /dev/hidraw4:     Elgato Cam Link 4K
# /dev/hidraw5:     Dell KB216 Wired Keyboard
# /dev/hidraw6:     Logitech USB Receiver
# /dev/hidraw7:     Logitech USB Receiver
# /dev/hidraw8:     Dell KB216 Wired Keyboard
# /dev/hidraw9:     HID 04d9:1203
# /dev/hidraw10:    HID 04d9:1203
# /dev/hidraw11:    Logitech B330/M330/M3
# Select the device event number [0-9]: 1
# UGTABLET Deco 01 V3
# Report descriptor length: 68 bytes
#   0x05, 0x01,                    // Usage Page (Generic Desktop)              0
#   0x09, 0x07,                    // Usage (Keypad)                            2
#   0xa1, 0x01,                    // Collection (Application)                  4
# ┅ 0x85, 0x06,                    //   Report ID (6)                           6
#   0x95, 0x01,                    //   Report Count (1)                        8
#   0x75, 0x08,                    //   Report Size (8)                         10
#   0x05, 0x0d,                    //   Usage Page (Digitizers)                 12
#   0x09, 0x39,                    //   Usage (Tablet Function Keys)            14
#   0xa1, 0x00,                    //   Collection (Physical)                   16
#   0x05, 0x09,                    //     Usage Page (Button)                   18
#   0x19, 0x01,                    //     UsageMinimum (1)                      20
#   0x29, 0x08,                    //     UsageMaximum (8)                      22
#   0x15, 0x00,                    //     Logical Minimum (0)                   24
#   0x25, 0x01,                    //     Logical Maximum (1)                   26
#   0x95, 0x08,                    //     Report Count (8)                      28
#   0x75, 0x01,                    //     Report Size (1)                       30
# ┇ 0x81, 0x02,                    //     Input (Data,Var,Abs)                  32
#   0x05, 0x0d,                    //     Usage Page (Digitizers)               34
#   0x09, 0x44,                    //     Usage (Barrel Switch)                 36
#   0x95, 0x01,                    //     Report Count (1)                      38
#   0x75, 0x01,                    //     Report Size (1)                       40
# ┇ 0x81, 0x02,                    //     Input (Data,Var,Abs)                  42
#   0x95, 0x07,                    //     Report Count (7)                      44
# ┇ 0x81, 0x01,                    //     Input (Cnst,Arr,Abs)                  46
#   0x05, 0x01,                    //     Usage Page (Generic Desktop)          48
#   0x09, 0x30,                    //     Usage (X)                             50
#   0x09, 0x31,                    //     Usage (Y)                             52
#   0x95, 0x02,                    //     Report Count (2)                      54
#   0x75, 0x08,                    //     Report Size (8)                       56
# ┇ 0x81, 0x02,                    //     Input (Data,Var,Abs)                  58
#   0x95, 0x03,                    //     Report Count (3)                      60
#   0x75, 0x08,                    //     Report Size (8)                       62
# ┇ 0x81, 0x01,                    //     Input (Cnst,Arr,Abs)                  64
#   0xc0,                          //   End Collection                          66
#   0xc0,                          // End Collection                            67
R: 68 05 01 09 07 a1 01 85 06 95 01 75 08 05 0d 09 39 a1 00 05 09 19 01 29 08 15 00 25 01 95 08 75 01 81 02 05 0d 09 44 95 01 75 01 81 02 95 07 81 01 05 01 09 30 09 31 95 02 75 08 81 02 95 03 75 08 81 01 c0 c0
N: UGTABLET Deco 01 V3
I: 3 28bd 947
# Report descriptor:
# ------- Input Report -------  
# Report ID: 6
#  | Report size: 64 bits
# Bit:    8       Usage: 0009/0001: Button / Button 1                           Logical Range:     0..=1      
# Bit:    9       Usage: 0009/0002: Button / Button 2                           Logical Range:     0..=1      
# Bit:   10       Usage: 0009/0003: Button / Button 3                           Logical Range:     0..=1      
# Bit:   11       Usage: 0009/0004: Button / Button 4                           Logical Range:     0..=1      
# Bit:   12       Usage: 0009/0005: Button / Button 5                           Logical Range:     0..=1      
# Bit:   13       Usage: 0009/0006: Button / Button 6                           Logical Range:     0..=1      
# Bit:   14       Usage: 0009/0007: Button / Button 7                           Logical Range:     0..=1      
# Bit:   15       Usage: 0009/0008: Button / Button 8                           Logical Range:     0..=1      
# Bit:   16       Usage: 000d/0044: Digitizers / Barrel Switch                  Logical Range:     0..=1      
# Bits:  17..=23  ######### Padding                                              
# Bits:  24..=31  Usage: 0001/0030: Generic Desktop / X                         Logical Range:     0..=1      
# Bits:  32..=39  Usage: 0001/0031: Generic Desktop / Y                         Logical Range:     0..=1      
# Bits:  40..=63  ######### Padding                                              
##############################################################################
# Recorded events below in format:
# E: <seconds>.<microseconds> <length-in-bytes> [bytes ...]
#  
^C
~/sources »»» sudo ./hid-recorder
# Available devices:
# /dev/hidraw0:     Samson Technologies Samson Meteor Mic
# /dev/hidraw1:     UGTABLET Deco 01 V3
# /dev/hidraw2:     UGTABLET Deco 01 V3
# /dev/hidraw3:     UGTABLET Deco 01 V3
# /dev/hidraw4:     Elgato Cam Link 4K
# /dev/hidraw5:     Dell KB216 Wired Keyboard
# /dev/hidraw6:     Logitech USB Receiver
# /dev/hidraw7:     Logitech USB Receiver
# /dev/hidraw8:     Dell KB216 Wired Keyboard
# /dev/hidraw9:     HID 04d9:1203
# /dev/hidraw10:    HID 04d9:1203
# /dev/hidraw11:    Logitech B330/M330/M3
# Select the device event number [0-9]: 2
# UGTABLET Deco 01 V3
# Report descriptor length: 109 bytes
#   0x05, 0x0d,                    // Usage Page (Digitizers)                   0
#   0x09, 0x02,                    // Usage (Pen)                               2
#   0xa1, 0x01,                    // Collection (Application)                  4
# ┅ 0x85, 0x07,                    //   Report ID (7)                           6
#   0x09, 0x20,                    //   Usage (Stylus)                          8
#   0xa1, 0x01,                    //   Collection (Application)                10
#   0x09, 0x42,                    //     Usage (Tip Switch)                    12
#   0x09, 0x44,                    //     Usage (Barrel Switch)                 14
#   0x09, 0x45,                    //     Usage (Eraser)                        16
#   0x09, 0x3c,                    //     Usage (Invert)                        18
#   0x15, 0x00,                    //     Logical Minimum (0)                   20
#   0x25, 0x01,                    //     Logical Maximum (1)                   22
#   0x75, 0x01,                    //     Report Size (1)                       24
#   0x95, 0x04,                    //     Report Count (4)                      26
# ┇ 0x81, 0x02,                    //     Input (Data,Var,Abs)                  28
#   0x95, 0x01,                    //     Report Count (1)                      30
# ┇ 0x81, 0x03,                    //     Input (Cnst,Var,Abs)                  32
#   0x09, 0x32,                    //     Usage (In Range)                      34
#   0x95, 0x01,                    //     Report Count (1)                      36
# ┇ 0x81, 0x02,                    //     Input (Data,Var,Abs)                  38
#   0x95, 0x02,                    //     Report Count (2)                      40
# ┇ 0x81, 0x03,                    //     Input (Cnst,Var,Abs)                  42
#   0x75, 0x10,                    //     Report Size (16)                      44
#   0x95, 0x01,                    //     Report Count (1)                      46
#   0x35, 0x00,                    //     Physical Minimum (0)                  48
#   0xa4,                          //     Push                                  50
#   0x05, 0x01,                    //     Usage Page (Generic Desktop)          51
#   0x09, 0x30,                    //     Usage (X)                             53
#   0x65, 0x13,                    //     Unit (EnglishLinear: in)              55
#   0x55, 0x0d,                    //     Unit Exponent (-3)                    57
#   0x46, 0x10, 0x27,              //     Physical Maximum (10000)              59
#   0x26, 0xff, 0x7f,              //     Logical Maximum (32767)               62
# ┇ 0x81, 0x02,                    //     Input (Data,Var,Abs)                  65
#   0x09, 0x31,                    //     Usage (Y)                             67
#   0x46, 0x6a, 0x18,              //     Physical Maximum (6250)               69
#   0x26, 0xff, 0x7f,              //     Logical Maximum (32767)               72
# ┇ 0x81, 0x02,                    //     Input (Data,Var,Abs)                  75
#   0xb4,                          //     Pop                                   77
#   0x09, 0x30,                    //     Usage (X)                             78
#   0x45, 0x00,                    //     Physical Maximum (0)                  80
#   0x26, 0xff, 0x3f,              //     Logical Maximum (16383)               82
# ┇ 0x81, 0x42,                    //     Input (Data,Var,Abs,Null)             85
#   0x09, 0x3d,                    //     Usage (Start)                         87
#   0x15, 0xc4,                    //     Logical Minimum (-60)                 89
#   0x25, 0x3c,                    //     Logical Maximum (60)                  91
#   0x75, 0x08,                    //     Report Size (8)                       93
#   0x95, 0x01,                    //     Report Count (1)                      95
# ┇ 0x81, 0x02,                    //     Input (Data,Var,Abs)                  97
#   0x09, 0x3e,                    //     Usage (Select)                        99
#   0x15, 0xc4,                    //     Logical Minimum (-60)                 101
#   0x25, 0x3c,                    //     Logical Maximum (60)                  103
# ┇ 0x81, 0x02,                    //     Input (Data,Var,Abs)                  105
#   0xc0,                          //   End Collection                          107
#   0xc0,                          // End Collection                            108
R: 109 05 0d 09 02 a1 01 85 07 09 20 a1 01 09 42 09 44 09 45 09 3c 15 00 25 01 75 01 95 04 81 02 95 01 81 03 09 32 95 01 81 02 95 02 81 03 75 10 95 01 35 00 a4 05 01 09 30 65 13 55 0d 46 10 27 26 ff 7f 81 02 09 31 46 6a 18 26 ff 7f 81 02 b4
09 30 45 00 26 ff 3f 81 42 09 3d 15 c4 25 3c 75 08 95 01 81 02 09 3e 15 c4 25 3c 81 02 c0 c0
N: UGTABLET Deco 01 V3
I: 3 28bd 947
# Report descriptor:
# ------- Input Report -------  
# Report ID: 7
#  | Report size: 80 bits
# Bit:    8       Usage: 000d/0042: Digitizers / Tip Switch                     Logical Range:     0..=1      
# Bit:    9       Usage: 000d/0044: Digitizers / Barrel Switch                  Logical Range:     0..=1      
# Bit:   10       Usage: 000d/0045: Digitizers / Eraser                         Logical Range:     0..=1      
# Bit:   11       Usage: 000d/003c: Digitizers / Invert                         Logical Range:     0..=1      
# Bit:   12       ######### Padding                                              
# Bit:   13       Usage: 000d/0032: Digitizers / In Range                       Logical Range:     0..=1      
# Bits:  14..=15  ######### Padding                                              
# Bits:  16..=31  Usage: 0001/0030: Generic Desktop / X                         Logical Range:     0..=32767 Physical Range:     0..=10000 Unit: EnglishLinear: in  
# Bits:  32..=47  Usage: 0001/0031: Generic Desktop / Y                         Logical Range:     0..=32767 Physical Range:     0..=6250  Unit: EnglishLinear: in  
# Bits:  48..=63  Usage: 000d/0030: Digitizers / Tip Pressure                   Logical Range:     0..=16383 Physical Range:     0..=0      
# Bits:  64..=71  Usage: 000d/003d: Digitizers / X Tilt                         Logical Range:   -60..=60    Physical Range:     0..=0      
# Bits:  72..=79  Usage: 000d/003e: Digitizers / Y Tilt                         Logical Range:   -60..=60    Physical Range:     0..=0      
##############################################################################
# Recorded events below in format:
# E: <seconds>.<microseconds> <length-in-bytes> [bytes ...]
#  
^C
~/sources »»» sudo ./hid-recorder
# Available devices:
# /dev/hidraw0:     Samson Technologies Samson Meteor Mic
# /dev/hidraw1:     UGTABLET Deco 01 V3
# /dev/hidraw2:     UGTABLET Deco 01 V3
# /dev/hidraw3:     UGTABLET Deco 01 V3
# /dev/hidraw4:     Elgato Cam Link 4K
# /dev/hidraw5:     Dell KB216 Wired Keyboard
# /dev/hidraw6:     Logitech USB Receiver
# /dev/hidraw7:     Logitech USB Receiver
# /dev/hidraw8:     Dell KB216 Wired Keyboard
# /dev/hidraw9:     HID 04d9:1203
# /dev/hidraw10:    HID 04d9:1203
# /dev/hidraw11:    Logitech B330/M330/M3
# Select the device event number [0-9]: 3
# UGTABLET Deco 01 V3
# Report descriptor length: 36 bytes
#   0x06, 0x0a, 0xff,              // Usage Page (Vendor Defined Page FF0A)     0
#   0x09, 0x01,                    // Usage (Vendor Usage 0x01)                 3
#   0xa1, 0x01,                    // Collection (Application)                  5
# ┅ 0x85, 0x02,                    //   Report ID (2)                           7
#   0x09, 0x02,                    //   Usage (Vendor Usage 0x02)               9
#   0x75, 0x08,                    //   Report Size (8)                         11
#   0x95, 0x0b,                    //   Report Count (11)                       13
#   0x15, 0x00,                    //   Logical Minimum (0)                     15
#   0x26, 0xff, 0x00,              //   Logical Maximum (255)                   17
# ┇ 0x81, 0x02,                    //   Input (Data,Var,Abs)                    20
#   0x09, 0x03,                    //   Usage (Vendor Usage 0x03)               22
#   0x75, 0x08,                    //   Report Size (8)                         24
#   0x95, 0x09,                    //   Report Count (9)                        26
#   0x15, 0x00,                    //   Logical Minimum (0)                     28
#   0x26, 0xff, 0x00,              //   Logical Maximum (255)                   30
# ┊ 0x91, 0x02,                    //   Output (Data,Var,Abs)                   33
#   0xc0,                          // End Collection                            35
R: 36 06 0a ff 09 01 a1 01 85 02 09 02 75 08 95 0b 15 00 26 ff 00 81 02 09 03 75 08 95 09 15 00 26 ff 00 91 02 c0
N: UGTABLET Deco 01 V3
I: 3 28bd 947
# Report descriptor:
# ------- Input Report -------  
# Report ID: 2
#  | Report size: 96 bits
# Bits:   8..=15  Usage: ff0a/0002: Vendor Defined Usage ff0a / 0002            Logical Range:     0..=255    
# Bits:  16..=23  Usage: ff0a/0002: Vendor Defined Usage ff0a / 0002            Logical Range:     0..=255    
# Bits:  24..=31  Usage: ff0a/0002: Vendor Defined Usage ff0a / 0002            Logical Range:     0..=255    
#                 Total of 11 vendor usages, use --full to see all               
# ------- Output Report -------  
# Report ID: 2
#  | Report size: 80 bits
# Bits:   8..=15  Usage: ff0a/0003: Vendor Defined Usage ff0a / 0003            Logical Range:     0..=255    
# Bits:  16..=23  Usage: ff0a/0003: Vendor Defined Usage ff0a / 0003            Logical Range:     0..=255    
# Bits:  24..=31  Usage: ff0a/0003: Vendor Defined Usage ff0a / 0003            Logical Range:     0..=255    
#                 Total of 9 vendor usages, use --full to see all                
##############################################################################
# Recorded events below in format:
# E: <seconds>.<microseconds> <length-in-bytes> [bytes ...]
#  
^C
~/sources »»»