62 lines
1.8 KiB
Markdown
62 lines
1.8 KiB
Markdown
# Documentation
|
|
|
|
## Source documentation
|
|
Doxygen is used in places for source code documentation. To build the documentation install doxygen and run
|
|
```
|
|
doxygen Doxyfile
|
|
```
|
|
A directory named doxygen will be created, containing html and latex files.
|
|
|
|
## USB Protocol description
|
|
This directory contains captured usb data (when sending the default settings). For further details look at the write functions in the source code.
|
|
|
|
default_m908.txt and default-annotated_m908.pdf contain the extracted usb data when sending the default settings. This was obtained by exporting packet dissections as plain text from wireshark (select only bytes) and running ``grep "00[4-9]0"`` on the exported files.
|
|
|
|
|
|
### Button mapping
|
|
The function of each button is described by 4 bytes. In case of the fire button all 4 bytes are used, in all other cases the last byte is 0x00. Look at ``set_key_mapping()`` (include/setters.cpp) and include/data.cpp for the full meaning of these bytes.
|
|
|
|
A few are listed below:
|
|
- Keyboard key:
|
|
0. = 0x90 if without modifiers, = 0x8f if with modifiers
|
|
1. modifier value (sum of individual modifer values)
|
|
2. keycode
|
|
3. = 0x00
|
|
- Media keys:
|
|
0. = 0x8e
|
|
1. = 0x01
|
|
2. keycode
|
|
3. = 0x00
|
|
- Fire button:
|
|
0. = 0x99
|
|
1. keycode
|
|
2. repeats
|
|
3. delay
|
|
- Macro:
|
|
0. = 0x91
|
|
1. macro number (0x0-0xe)
|
|
2. number of repeats
|
|
3. 0x00
|
|
- Macro (repeat until button is pressed again):
|
|
0. = 0x91
|
|
1. macro number (0x0-0xe) + 0x3f
|
|
2. 0xff
|
|
3. 0xff
|
|
- Macro (repeat while button is pressed):
|
|
0. = 0x91
|
|
1. macro number (0x0-0xe) + 0x7f
|
|
2. 0xff
|
|
3. 0xff
|
|
- Snipe (Changes DPI while pressed)
|
|
0. = 0x9a
|
|
1. 1
|
|
2. DPI 200-1100 (100 increment): 4 6 9 b d f 12 14 16 18
|
|
3. = 2.
|
|
- No function (none)
|
|
all bytes = 0x00
|
|
|
|
### Reading settings from the mouse
|
|
The settings are read in 3 parts:
|
|
1. led settings
|
|
2. macros
|
|
3. button mappping
|