75 lines
2.9 KiB
Markdown
75 lines
2.9 KiB
Markdown
|
## Programmable Button
|
|||
|
|
|||
|
Programmable button is a feature that can be used to send keys that have no
|
|||
|
predefined meaning.
|
|||
|
This means they can be processed on the host side by custom software without
|
|||
|
colliding without the operating system trying to interpret these keys.
|
|||
|
|
|||
|
The keycodes are emitted according to the HID usage
|
|||
|
"Telephony Device Page" (0x0B), "Programmable button usage" (0x07).
|
|||
|
On Linux (> 5.14) they are handled automatically and translated to `KEY_MACRO#`
|
|||
|
keycodes.
|
|||
|
(Up to `KEY_MACRO30`)
|
|||
|
|
|||
|
### Enabling Programmable Button support
|
|||
|
|
|||
|
To enable Programmable Button, add the following line to your keymap’s `rules.mk`:
|
|||
|
|
|||
|
```c
|
|||
|
PROGRAMMABLE_BUTTON_ENABLE = yes
|
|||
|
```
|
|||
|
|
|||
|
### Mapping
|
|||
|
|
|||
|
In your keymap you can use the following keycodes to map key presses to Programmable Buttons:
|
|||
|
|
|||
|
|Key |Description |
|
|||
|
|------------------------|----------------------|
|
|||
|
|`PROGRAMMABLE_BUTTON_1` |Programmable button 1 |
|
|||
|
|`PROGRAMMABLE_BUTTON_2` |Programmable button 2 |
|
|||
|
|`PROGRAMMABLE_BUTTON_3` |Programmable button 3 |
|
|||
|
|`PROGRAMMABLE_BUTTON_4` |Programmable button 4 |
|
|||
|
|`PROGRAMMABLE_BUTTON_5` |Programmable button 5 |
|
|||
|
|`PROGRAMMABLE_BUTTON_6` |Programmable button 6 |
|
|||
|
|`PROGRAMMABLE_BUTTON_7` |Programmable button 7 |
|
|||
|
|`PROGRAMMABLE_BUTTON_8` |Programmable button 8 |
|
|||
|
|`PROGRAMMABLE_BUTTON_9` |Programmable button 9 |
|
|||
|
|`PROGRAMMABLE_BUTTON_10`|Programmable button 10|
|
|||
|
|`PROGRAMMABLE_BUTTON_11`|Programmable button 11|
|
|||
|
|`PROGRAMMABLE_BUTTON_12`|Programmable button 12|
|
|||
|
|`PROGRAMMABLE_BUTTON_13`|Programmable button 13|
|
|||
|
|`PROGRAMMABLE_BUTTON_14`|Programmable button 14|
|
|||
|
|`PROGRAMMABLE_BUTTON_15`|Programmable button 15|
|
|||
|
|`PROGRAMMABLE_BUTTON_16`|Programmable button 16|
|
|||
|
|`PROGRAMMABLE_BUTTON_17`|Programmable button 17|
|
|||
|
|`PROGRAMMABLE_BUTTON_18`|Programmable button 18|
|
|||
|
|`PROGRAMMABLE_BUTTON_19`|Programmable button 19|
|
|||
|
|`PROGRAMMABLE_BUTTON_20`|Programmable button 20|
|
|||
|
|`PROGRAMMABLE_BUTTON_21`|Programmable button 21|
|
|||
|
|`PROGRAMMABLE_BUTTON_22`|Programmable button 22|
|
|||
|
|`PROGRAMMABLE_BUTTON_23`|Programmable button 23|
|
|||
|
|`PROGRAMMABLE_BUTTON_24`|Programmable button 24|
|
|||
|
|`PROGRAMMABLE_BUTTON_25`|Programmable button 25|
|
|||
|
|`PROGRAMMABLE_BUTTON_26`|Programmable button 26|
|
|||
|
|`PROGRAMMABLE_BUTTON_27`|Programmable button 27|
|
|||
|
|`PROGRAMMABLE_BUTTON_28`|Programmable button 28|
|
|||
|
|`PROGRAMMABLE_BUTTON_29`|Programmable button 29|
|
|||
|
|`PROGRAMMABLE_BUTTON_30`|Programmable button 30|
|
|||
|
|`PROGRAMMABLE_BUTTON_31`|Programmable button 31|
|
|||
|
|`PROGRAMMABLE_BUTTON_32`|Programmable button 32|
|
|||
|
|`PB_1` to `PB_32` |Aliases for keymaps |
|
|||
|
|
|||
|
### API
|
|||
|
|
|||
|
You can also use a dedicated API defined in `programmable_button.h` to interact with this feature:
|
|||
|
|
|||
|
```
|
|||
|
void programmable_button_clear(void);
|
|||
|
void programmable_button_send(void);
|
|||
|
void programmable_button_on(uint8_t code);
|
|||
|
void programmable_button_off(uint8_t code);
|
|||
|
bool programmable_button_is_on(uint8_t code);
|
|||
|
uint32_t programmable_button_get_report(void);
|
|||
|
void programmable_button_set_report(uint32_t report);
|
|||
|
```
|