mouse_m908/documentation/README.md
2020-11-08 17:51:53 +01:00

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