Normalise Joystick and Programmable Button keycodes (#18832)

master
Ryan 2022-10-25 01:50:33 +11:00 committed by GitHub
parent 64ca14feea
commit 6bbe8b6edd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 365 additions and 196 deletions

View File

@ -119,9 +119,41 @@ By default, the resolution of each axis is 8 bit, giving a range of -127 to +127
Note that the supported AVR MCUs have a 10-bit ADC, and 12-bit for most STM32 MCUs.
### Triggering Joystick Buttons
### Keycodes
Joystick buttons are normal Quantum keycodes, defined as `JS_BUTTON0` to `JS_BUTTON31`, depending on the number of buttons you have configured.
To trigger a joystick button, just add the corresponding keycode to your keymap.
|Key |Aliases|Description|
|-----------------------|-------|-----------|
|`QK_JOYSTICK_BUTTON_0` |`JS_0` |Button 0 |
|`QK_JOYSTICK_BUTTON_1` |`JS_1` |Button 1 |
|`QK_JOYSTICK_BUTTON_2` |`JS_2` |Button 2 |
|`QK_JOYSTICK_BUTTON_3` |`JS_3` |Button 3 |
|`QK_JOYSTICK_BUTTON_4` |`JS_4` |Button 4 |
|`QK_JOYSTICK_BUTTON_5` |`JS_5` |Button 5 |
|`QK_JOYSTICK_BUTTON_6` |`JS_6` |Button 6 |
|`QK_JOYSTICK_BUTTON_7` |`JS_7` |Button 7 |
|`QK_JOYSTICK_BUTTON_8` |`JS_8` |Button 8 |
|`QK_JOYSTICK_BUTTON_9` |`JS_9` |Button 9 |
|`QK_JOYSTICK_BUTTON_10`|`JS_10`|Button 10 |
|`QK_JOYSTICK_BUTTON_11`|`JS_11`|Button 11 |
|`QK_JOYSTICK_BUTTON_12`|`JS_12`|Button 12 |
|`QK_JOYSTICK_BUTTON_13`|`JS_13`|Button 13 |
|`QK_JOYSTICK_BUTTON_14`|`JS_14`|Button 14 |
|`QK_JOYSTICK_BUTTON_15`|`JS_15`|Button 15 |
|`QK_JOYSTICK_BUTTON_16`|`JS_16`|Button 16 |
|`QK_JOYSTICK_BUTTON_17`|`JS_17`|Button 17 |
|`QK_JOYSTICK_BUTTON_18`|`JS_18`|Button 18 |
|`QK_JOYSTICK_BUTTON_19`|`JS_19`|Button 19 |
|`QK_JOYSTICK_BUTTON_20`|`JS_20`|Button 20 |
|`QK_JOYSTICK_BUTTON_21`|`JS_21`|Button 21 |
|`QK_JOYSTICK_BUTTON_22`|`JS_22`|Button 22 |
|`QK_JOYSTICK_BUTTON_23`|`JS_23`|Button 23 |
|`QK_JOYSTICK_BUTTON_24`|`JS_24`|Button 24 |
|`QK_JOYSTICK_BUTTON_25`|`JS_25`|Button 25 |
|`QK_JOYSTICK_BUTTON_26`|`JS_26`|Button 26 |
|`QK_JOYSTICK_BUTTON_27`|`JS_27`|Button 27 |
|`QK_JOYSTICK_BUTTON_28`|`JS_28`|Button 28 |
|`QK_JOYSTICK_BUTTON_29`|`JS_29`|Button 29 |
|`QK_JOYSTICK_BUTTON_30`|`JS_30`|Button 30 |
|`QK_JOYSTICK_BUTTON_31`|`JS_31`|Button 31 |
You can also trigger joystick buttons in code with `register_joystick_button(button)` and `unregister_joystick_button(button)`, where `button` is the 0-based button index (0 = button 1).

View File

@ -16,40 +16,40 @@ PROGRAMMABLE_BUTTON_ENABLE = yes
## Keycodes :id=keycodes
|Key |Aliases|Description |
|------------------------|-------|----------------------|
|`PROGRAMMABLE_BUTTON_1` |`PB_1` |Programmable button 1 |
|`PROGRAMMABLE_BUTTON_2` |`PB_2` |Programmable button 2 |
|`PROGRAMMABLE_BUTTON_3` |`PB_3` |Programmable button 3 |
|`PROGRAMMABLE_BUTTON_4` |`PB_4` |Programmable button 4 |
|`PROGRAMMABLE_BUTTON_5` |`PB_5` |Programmable button 5 |
|`PROGRAMMABLE_BUTTON_6` |`PB_6` |Programmable button 6 |
|`PROGRAMMABLE_BUTTON_7` |`PB_7` |Programmable button 7 |
|`PROGRAMMABLE_BUTTON_8` |`PB_8` |Programmable button 8 |
|`PROGRAMMABLE_BUTTON_9` |`PB_9` |Programmable button 9 |
|`PROGRAMMABLE_BUTTON_10`|`PB_10`|Programmable button 10|
|`PROGRAMMABLE_BUTTON_11`|`PB_11`|Programmable button 11|
|`PROGRAMMABLE_BUTTON_12`|`PB_12`|Programmable button 12|
|`PROGRAMMABLE_BUTTON_13`|`PB_13`|Programmable button 13|
|`PROGRAMMABLE_BUTTON_14`|`PB_14`|Programmable button 14|
|`PROGRAMMABLE_BUTTON_15`|`PB_15`|Programmable button 15|
|`PROGRAMMABLE_BUTTON_16`|`PB_16`|Programmable button 16|
|`PROGRAMMABLE_BUTTON_17`|`PB_17`|Programmable button 17|
|`PROGRAMMABLE_BUTTON_18`|`PB_18`|Programmable button 18|
|`PROGRAMMABLE_BUTTON_19`|`PB_19`|Programmable button 19|
|`PROGRAMMABLE_BUTTON_20`|`PB_20`|Programmable button 20|
|`PROGRAMMABLE_BUTTON_21`|`PB_21`|Programmable button 21|
|`PROGRAMMABLE_BUTTON_22`|`PB_22`|Programmable button 22|
|`PROGRAMMABLE_BUTTON_23`|`PB_23`|Programmable button 23|
|`PROGRAMMABLE_BUTTON_24`|`PB_24`|Programmable button 24|
|`PROGRAMMABLE_BUTTON_25`|`PB_25`|Programmable button 25|
|`PROGRAMMABLE_BUTTON_26`|`PB_26`|Programmable button 26|
|`PROGRAMMABLE_BUTTON_27`|`PB_27`|Programmable button 27|
|`PROGRAMMABLE_BUTTON_28`|`PB_28`|Programmable button 28|
|`PROGRAMMABLE_BUTTON_29`|`PB_29`|Programmable button 29|
|`PROGRAMMABLE_BUTTON_30`|`PB_30`|Programmable button 30|
|`PROGRAMMABLE_BUTTON_31`|`PB_31`|Programmable button 31|
|`PROGRAMMABLE_BUTTON_32`|`PB_32`|Programmable button 32|
|Key |Aliases|Description |
|---------------------------|-------|----------------------|
|`QK_PROGRAMMABLE_BUTTON_1` |`PB_1` |Programmable button 1 |
|`QK_PROGRAMMABLE_BUTTON_2` |`PB_2` |Programmable button 2 |
|`QK_PROGRAMMABLE_BUTTON_3` |`PB_3` |Programmable button 3 |
|`QK_PROGRAMMABLE_BUTTON_4` |`PB_4` |Programmable button 4 |
|`QK_PROGRAMMABLE_BUTTON_5` |`PB_5` |Programmable button 5 |
|`QK_PROGRAMMABLE_BUTTON_6` |`PB_6` |Programmable button 6 |
|`QK_PROGRAMMABLE_BUTTON_7` |`PB_7` |Programmable button 7 |
|`QK_PROGRAMMABLE_BUTTON_8` |`PB_8` |Programmable button 8 |
|`QK_PROGRAMMABLE_BUTTON_9` |`PB_9` |Programmable button 9 |
|`QK_PROGRAMMABLE_BUTTON_10`|`PB_10`|Programmable button 10|
|`QK_PROGRAMMABLE_BUTTON_11`|`PB_11`|Programmable button 11|
|`QK_PROGRAMMABLE_BUTTON_12`|`PB_12`|Programmable button 12|
|`QK_PROGRAMMABLE_BUTTON_13`|`PB_13`|Programmable button 13|
|`QK_PROGRAMMABLE_BUTTON_14`|`PB_14`|Programmable button 14|
|`QK_PROGRAMMABLE_BUTTON_15`|`PB_15`|Programmable button 15|
|`QK_PROGRAMMABLE_BUTTON_16`|`PB_16`|Programmable button 16|
|`QK_PROGRAMMABLE_BUTTON_17`|`PB_17`|Programmable button 17|
|`QK_PROGRAMMABLE_BUTTON_18`|`PB_18`|Programmable button 18|
|`QK_PROGRAMMABLE_BUTTON_19`|`PB_19`|Programmable button 19|
|`QK_PROGRAMMABLE_BUTTON_20`|`PB_20`|Programmable button 20|
|`QK_PROGRAMMABLE_BUTTON_21`|`PB_21`|Programmable button 21|
|`QK_PROGRAMMABLE_BUTTON_22`|`PB_22`|Programmable button 22|
|`QK_PROGRAMMABLE_BUTTON_23`|`PB_23`|Programmable button 23|
|`QK_PROGRAMMABLE_BUTTON_24`|`PB_24`|Programmable button 24|
|`QK_PROGRAMMABLE_BUTTON_25`|`PB_25`|Programmable button 25|
|`QK_PROGRAMMABLE_BUTTON_26`|`PB_26`|Programmable button 26|
|`QK_PROGRAMMABLE_BUTTON_27`|`PB_27`|Programmable button 27|
|`QK_PROGRAMMABLE_BUTTON_28`|`PB_28`|Programmable button 28|
|`QK_PROGRAMMABLE_BUTTON_29`|`PB_29`|Programmable button 29|
|`QK_PROGRAMMABLE_BUTTON_30`|`PB_30`|Programmable button 30|
|`QK_PROGRAMMABLE_BUTTON_31`|`PB_31`|Programmable button 31|
|`QK_PROGRAMMABLE_BUTTON_32`|`PB_32`|Programmable button 32|
## API :id=api

View File

@ -299,6 +299,45 @@ See also: [Grave Escape](feature_grave_esc.md)
|-----------------|---------|------------------------------------------------------------------|
|`QK_GRAVE_ESCAPE`|`QK_GESC`|Escape when pressed, <code>&#96;</code> when Shift or GUI are held|
## Joystick :id=joystick
See also: [Joystick](feature_joystick.md)
|Key |Aliases|Description|
|-----------------------|-------|-----------|
|`QK_JOYSTICK_BUTTON_0` |`JS_0` |Button 0 |
|`QK_JOYSTICK_BUTTON_1` |`JS_1` |Button 1 |
|`QK_JOYSTICK_BUTTON_2` |`JS_2` |Button 2 |
|`QK_JOYSTICK_BUTTON_3` |`JS_3` |Button 3 |
|`QK_JOYSTICK_BUTTON_4` |`JS_4` |Button 4 |
|`QK_JOYSTICK_BUTTON_5` |`JS_5` |Button 5 |
|`QK_JOYSTICK_BUTTON_6` |`JS_6` |Button 6 |
|`QK_JOYSTICK_BUTTON_7` |`JS_7` |Button 7 |
|`QK_JOYSTICK_BUTTON_8` |`JS_8` |Button 8 |
|`QK_JOYSTICK_BUTTON_9` |`JS_9` |Button 9 |
|`QK_JOYSTICK_BUTTON_10`|`JS_10`|Button 10 |
|`QK_JOYSTICK_BUTTON_11`|`JS_11`|Button 11 |
|`QK_JOYSTICK_BUTTON_12`|`JS_12`|Button 12 |
|`QK_JOYSTICK_BUTTON_13`|`JS_13`|Button 13 |
|`QK_JOYSTICK_BUTTON_14`|`JS_14`|Button 14 |
|`QK_JOYSTICK_BUTTON_15`|`JS_15`|Button 15 |
|`QK_JOYSTICK_BUTTON_16`|`JS_16`|Button 16 |
|`QK_JOYSTICK_BUTTON_17`|`JS_17`|Button 17 |
|`QK_JOYSTICK_BUTTON_18`|`JS_18`|Button 18 |
|`QK_JOYSTICK_BUTTON_19`|`JS_19`|Button 19 |
|`QK_JOYSTICK_BUTTON_20`|`JS_20`|Button 20 |
|`QK_JOYSTICK_BUTTON_21`|`JS_21`|Button 21 |
|`QK_JOYSTICK_BUTTON_22`|`JS_22`|Button 22 |
|`QK_JOYSTICK_BUTTON_23`|`JS_23`|Button 23 |
|`QK_JOYSTICK_BUTTON_24`|`JS_24`|Button 24 |
|`QK_JOYSTICK_BUTTON_25`|`JS_25`|Button 25 |
|`QK_JOYSTICK_BUTTON_26`|`JS_26`|Button 26 |
|`QK_JOYSTICK_BUTTON_27`|`JS_27`|Button 27 |
|`QK_JOYSTICK_BUTTON_28`|`JS_28`|Button 28 |
|`QK_JOYSTICK_BUTTON_29`|`JS_29`|Button 29 |
|`QK_JOYSTICK_BUTTON_30`|`JS_30`|Button 30 |
|`QK_JOYSTICK_BUTTON_31`|`JS_31`|Button 31 |
## Key Lock :id=key-lock
See also: [Key Lock](feature_key_lock.md)
@ -708,41 +747,40 @@ See also: [One Shot Keys](one_shot_keys.md)
See also: [Programmable Button](feature_programmable_button.md)
|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 |
|Key |Aliases|Description |
|---------------------------|-------|----------------------|
|`QK_PROGRAMMABLE_BUTTON_1` |`PB_1` |Programmable button 1 |
|`QK_PROGRAMMABLE_BUTTON_2` |`PB_2` |Programmable button 2 |
|`QK_PROGRAMMABLE_BUTTON_3` |`PB_3` |Programmable button 3 |
|`QK_PROGRAMMABLE_BUTTON_4` |`PB_4` |Programmable button 4 |
|`QK_PROGRAMMABLE_BUTTON_5` |`PB_5` |Programmable button 5 |
|`QK_PROGRAMMABLE_BUTTON_6` |`PB_6` |Programmable button 6 |
|`QK_PROGRAMMABLE_BUTTON_7` |`PB_7` |Programmable button 7 |
|`QK_PROGRAMMABLE_BUTTON_8` |`PB_8` |Programmable button 8 |
|`QK_PROGRAMMABLE_BUTTON_9` |`PB_9` |Programmable button 9 |
|`QK_PROGRAMMABLE_BUTTON_10`|`PB_10`|Programmable button 10|
|`QK_PROGRAMMABLE_BUTTON_11`|`PB_11`|Programmable button 11|
|`QK_PROGRAMMABLE_BUTTON_12`|`PB_12`|Programmable button 12|
|`QK_PROGRAMMABLE_BUTTON_13`|`PB_13`|Programmable button 13|
|`QK_PROGRAMMABLE_BUTTON_14`|`PB_14`|Programmable button 14|
|`QK_PROGRAMMABLE_BUTTON_15`|`PB_15`|Programmable button 15|
|`QK_PROGRAMMABLE_BUTTON_16`|`PB_16`|Programmable button 16|
|`QK_PROGRAMMABLE_BUTTON_17`|`PB_17`|Programmable button 17|
|`QK_PROGRAMMABLE_BUTTON_18`|`PB_18`|Programmable button 18|
|`QK_PROGRAMMABLE_BUTTON_19`|`PB_19`|Programmable button 19|
|`QK_PROGRAMMABLE_BUTTON_20`|`PB_20`|Programmable button 20|
|`QK_PROGRAMMABLE_BUTTON_21`|`PB_21`|Programmable button 21|
|`QK_PROGRAMMABLE_BUTTON_22`|`PB_22`|Programmable button 22|
|`QK_PROGRAMMABLE_BUTTON_23`|`PB_23`|Programmable button 23|
|`QK_PROGRAMMABLE_BUTTON_24`|`PB_24`|Programmable button 24|
|`QK_PROGRAMMABLE_BUTTON_25`|`PB_25`|Programmable button 25|
|`QK_PROGRAMMABLE_BUTTON_26`|`PB_26`|Programmable button 26|
|`QK_PROGRAMMABLE_BUTTON_27`|`PB_27`|Programmable button 27|
|`QK_PROGRAMMABLE_BUTTON_28`|`PB_28`|Programmable button 28|
|`QK_PROGRAMMABLE_BUTTON_29`|`PB_29`|Programmable button 29|
|`QK_PROGRAMMABLE_BUTTON_30`|`PB_30`|Programmable button 30|
|`QK_PROGRAMMABLE_BUTTON_31`|`PB_31`|Programmable button 31|
|`QK_PROGRAMMABLE_BUTTON_32`|`PB_32`|Programmable button 32|
## Space Cadet :id=space-cadet

View File

@ -17,15 +17,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H
#ifdef PROGRAMMABLE_BUTTON_ENABLE
#define L1_NUM1 PROGRAMMABLE_BUTTON_1
#define L1_NUM2 PROGRAMMABLE_BUTTON_2
#define L1_NUM3 PROGRAMMABLE_BUTTON_3
#define L1_NUM4 PROGRAMMABLE_BUTTON_4
#define L1_NUM5 PROGRAMMABLE_BUTTON_5
#define L1_NUM6 PROGRAMMABLE_BUTTON_6
#define L1_NUM7 PROGRAMMABLE_BUTTON_7
#define L1_NUM8 PROGRAMMABLE_BUTTON_8
#define L1_NUM9 PROGRAMMABLE_BUTTON_9
#define L1_NUM1 QK_PROGRAMMABLE_BUTTON_1
#define L1_NUM2 QK_PROGRAMMABLE_BUTTON_2
#define L1_NUM3 QK_PROGRAMMABLE_BUTTON_3
#define L1_NUM4 QK_PROGRAMMABLE_BUTTON_4
#define L1_NUM5 QK_PROGRAMMABLE_BUTTON_5
#define L1_NUM6 QK_PROGRAMMABLE_BUTTON_6
#define L1_NUM7 QK_PROGRAMMABLE_BUTTON_7
#define L1_NUM8 QK_PROGRAMMABLE_BUTTON_8
#define L1_NUM9 QK_PROGRAMMABLE_BUTTON_9
#else
#define L1_NUM1 _______
#define L1_NUM2 _______

View File

@ -33,9 +33,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, TG(2), KC_TRNS, KC_TRNS),
[2] = LAYOUT(
KC_TRNS, KC_TRNS, TG(2), JS_BUTTON0, JS_BUTTON1, JS_BUTTON2, JS_BUTTON3, JS_BUTTON4,
KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON5, JS_BUTTON6, JS_BUTTON7, JS_BUTTON8, JS_BUTTON9,
KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON10, JS_BUTTON11, JS_BUTTON12, JS_BUTTON13, JS_BUTTON14,
KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON15, JS_BUTTON16, JS_BUTTON17, JS_BUTTON18, JS_BUTTON19,
KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON20, JS_BUTTON21, JS_BUTTON22, JS_BUTTON23, JS_BUTTON24)
KC_TRNS, KC_TRNS, TG(2), JS_0, JS_1, JS_2, JS_3, JS_4,
KC_TRNS, KC_TRNS, KC_TRNS, JS_5, JS_6, JS_7, JS_8, JS_9,
KC_TRNS, KC_TRNS, KC_TRNS, JS_10, JS_11, JS_12, JS_13, JS_14,
KC_TRNS, KC_TRNS, KC_TRNS, JS_15, JS_16, JS_17, JS_18, JS_19,
KC_TRNS, KC_TRNS, KC_TRNS, JS_20, JS_21, JS_22, JS_23, JS_24)
};

View File

@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[NORMAL_LAYER] = LAYOUT(
C(S(KC_F1)), C(S(KC_F2)), C(S(KC_F3)), C(S(KC_F4)),
C(S(KC_F5)), C(S(KC_F6)), C(S(KC_F7)), C(S(KC_F8)),
JS_BUTTON0, JS_BUTTON1, JS_BUTTON2, JS_BUTTON3
JS_0, JS_1, JS_2, JS_3
)
};

View File

@ -5,7 +5,7 @@
#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_ortho_1x1(JS_BUTTON0)
LAYOUT_ortho_1x1(JS_0)
};
void matrix_scan_user() {

View File

@ -5,9 +5,9 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
JS_BUTTON0,JS_BUTTON1,JS_BUTTON2,JS_BUTTON3,JS_BUTTON4,JS_BUTTON5,JS_BUTTON6,
KC_NO, JS_BUTTON7, KC_NO,
JS_BUTTON0,JS_BUTTON1,JS_BUTTON2,JS_BUTTON3,JS_BUTTON4,JS_BUTTON5,JS_BUTTON6
JS_0,JS_1,JS_2,JS_3,JS_4,JS_5,JS_6,
KC_NO, JS_7, KC_NO,
JS_0,JS_1,JS_2,JS_3,JS_4,JS_5,JS_6
)
};

View File

@ -19,11 +19,11 @@
bool process_joystick(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case JS_BUTTON0 ... JS_BUTTON_MAX:
case QK_JOYSTICK_BUTTON_MIN ... QK_JOYSTICK_BUTTON_MAX:
if (record->event.pressed) {
register_joystick_button(keycode - JS_BUTTON0);
register_joystick_button(keycode - QK_JOYSTICK_BUTTON_MIN);
} else {
unregister_joystick_button(keycode - JS_BUTTON0);
unregister_joystick_button(keycode - QK_JOYSTICK_BUTTON_MIN);
}
return false;
}

View File

@ -19,8 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "programmable_button.h"
bool process_programmable_button(uint16_t keycode, keyrecord_t *record) {
if (keycode >= PROGRAMMABLE_BUTTON_MIN && keycode <= PROGRAMMABLE_BUTTON_MAX) {
uint8_t button = keycode - PROGRAMMABLE_BUTTON_MIN + 1;
if (keycode >= QK_PROGRAMMABLE_BUTTON_MIN && keycode <= QK_PROGRAMMABLE_BUTTON_MAX) {
uint8_t button = keycode - QK_PROGRAMMABLE_BUTTON_MIN + 1;
if (record->event.pressed) {
programmable_button_register(button);
} else {

View File

@ -431,38 +431,38 @@ enum quantum_keycodes {
DYN_MACRO_PLAY2, // 5D08
// Joystick
JS_BUTTON0, // 5D09
JS_BUTTON1, // 5D0A
JS_BUTTON2, // 5D0B
JS_BUTTON3, // 5D0C
JS_BUTTON4, // 5D0D
JS_BUTTON5, // 5D0E
JS_BUTTON6, // 5D0F
JS_BUTTON7, // 5D10
JS_BUTTON8, // 5D11
JS_BUTTON9, // 5D12
JS_BUTTON10, // 5D13
JS_BUTTON11, // 5D14
JS_BUTTON12, // 5D15
JS_BUTTON13, // 5D16
JS_BUTTON14, // 5D17
JS_BUTTON15, // 5D18
JS_BUTTON16, // 5D19
JS_BUTTON17, // 5D1A
JS_BUTTON18, // 5D1B
JS_BUTTON19, // 5D1C
JS_BUTTON20, // 5D1D
JS_BUTTON21, // 5D1E
JS_BUTTON22, // 5D1F
JS_BUTTON23, // 5D20
JS_BUTTON24, // 5D21
JS_BUTTON25, // 5D22
JS_BUTTON26, // 5D23
JS_BUTTON27, // 5D24
JS_BUTTON28, // 5D25
JS_BUTTON29, // 5D26
JS_BUTTON30, // 5D27
JS_BUTTON31, // 5D28
QK_JOYSTICK_BUTTON_0, // 5D09
QK_JOYSTICK_BUTTON_1, // 5D0A
QK_JOYSTICK_BUTTON_2, // 5D0B
QK_JOYSTICK_BUTTON_3, // 5D0C
QK_JOYSTICK_BUTTON_4, // 5D0D
QK_JOYSTICK_BUTTON_5, // 5D0E
QK_JOYSTICK_BUTTON_6, // 5D0F
QK_JOYSTICK_BUTTON_7, // 5D10
QK_JOYSTICK_BUTTON_8, // 5D11
QK_JOYSTICK_BUTTON_9, // 5D12
QK_JOYSTICK_BUTTON_10, // 5D13
QK_JOYSTICK_BUTTON_11, // 5D14
QK_JOYSTICK_BUTTON_12, // 5D15
QK_JOYSTICK_BUTTON_13, // 5D16
QK_JOYSTICK_BUTTON_14, // 5D17
QK_JOYSTICK_BUTTON_15, // 5D18
QK_JOYSTICK_BUTTON_16, // 5D19
QK_JOYSTICK_BUTTON_17, // 5D1A
QK_JOYSTICK_BUTTON_18, // 5D1B
QK_JOYSTICK_BUTTON_19, // 5D1C
QK_JOYSTICK_BUTTON_20, // 5D1D
QK_JOYSTICK_BUTTON_21, // 5D1E
QK_JOYSTICK_BUTTON_22, // 5D1F
QK_JOYSTICK_BUTTON_23, // 5D20
QK_JOYSTICK_BUTTON_24, // 5D21
QK_JOYSTICK_BUTTON_25, // 5D22
QK_JOYSTICK_BUTTON_26, // 5D23
QK_JOYSTICK_BUTTON_27, // 5D24
QK_JOYSTICK_BUTTON_28, // 5D25
QK_JOYSTICK_BUTTON_29, // 5D26
QK_JOYSTICK_BUTTON_30, // 5D27
QK_JOYSTICK_BUTTON_31, // 5D28
// Leader Key
QK_LEADER, // 5D29
@ -526,38 +526,38 @@ enum quantum_keycodes {
DT_DOWN,
// Programmable Button
PROGRAMMABLE_BUTTON_1,
PROGRAMMABLE_BUTTON_2,
PROGRAMMABLE_BUTTON_3,
PROGRAMMABLE_BUTTON_4,
PROGRAMMABLE_BUTTON_5,
PROGRAMMABLE_BUTTON_6,
PROGRAMMABLE_BUTTON_7,
PROGRAMMABLE_BUTTON_8,
PROGRAMMABLE_BUTTON_9,
PROGRAMMABLE_BUTTON_10,
PROGRAMMABLE_BUTTON_11,
PROGRAMMABLE_BUTTON_12,
PROGRAMMABLE_BUTTON_13,
PROGRAMMABLE_BUTTON_14,
PROGRAMMABLE_BUTTON_15,
PROGRAMMABLE_BUTTON_16,
PROGRAMMABLE_BUTTON_17,
PROGRAMMABLE_BUTTON_18,
PROGRAMMABLE_BUTTON_19,
PROGRAMMABLE_BUTTON_20,
PROGRAMMABLE_BUTTON_21,
PROGRAMMABLE_BUTTON_22,
PROGRAMMABLE_BUTTON_23,
PROGRAMMABLE_BUTTON_24,
PROGRAMMABLE_BUTTON_25,
PROGRAMMABLE_BUTTON_26,
PROGRAMMABLE_BUTTON_27,
PROGRAMMABLE_BUTTON_28,
PROGRAMMABLE_BUTTON_29,
PROGRAMMABLE_BUTTON_30,
PROGRAMMABLE_BUTTON_31,
PROGRAMMABLE_BUTTON_32,
QK_PROGRAMMABLE_BUTTON_1,
QK_PROGRAMMABLE_BUTTON_2,
QK_PROGRAMMABLE_BUTTON_3,
QK_PROGRAMMABLE_BUTTON_4,
QK_PROGRAMMABLE_BUTTON_5,
QK_PROGRAMMABLE_BUTTON_6,
QK_PROGRAMMABLE_BUTTON_7,
QK_PROGRAMMABLE_BUTTON_8,
QK_PROGRAMMABLE_BUTTON_9,
QK_PROGRAMMABLE_BUTTON_10,
QK_PROGRAMMABLE_BUTTON_11,
QK_PROGRAMMABLE_BUTTON_12,
QK_PROGRAMMABLE_BUTTON_13,
QK_PROGRAMMABLE_BUTTON_14,
QK_PROGRAMMABLE_BUTTON_15,
QK_PROGRAMMABLE_BUTTON_16,
QK_PROGRAMMABLE_BUTTON_17,
QK_PROGRAMMABLE_BUTTON_18,
QK_PROGRAMMABLE_BUTTON_19,
QK_PROGRAMMABLE_BUTTON_20,
QK_PROGRAMMABLE_BUTTON_21,
QK_PROGRAMMABLE_BUTTON_22,
QK_PROGRAMMABLE_BUTTON_23,
QK_PROGRAMMABLE_BUTTON_24,
QK_PROGRAMMABLE_BUTTON_25,
QK_PROGRAMMABLE_BUTTON_26,
QK_PROGRAMMABLE_BUTTON_27,
QK_PROGRAMMABLE_BUTTON_28,
QK_PROGRAMMABLE_BUTTON_29,
QK_PROGRAMMABLE_BUTTON_30,
QK_PROGRAMMABLE_BUTTON_31,
QK_PROGRAMMABLE_BUTTON_32,
// Dedicated macro keys for Configurator and VIA
MACRO_0,
@ -876,8 +876,40 @@ enum quantum_keycodes {
#define DM_PLY2 DYN_MACRO_PLAY2
// Joystick aliases
#define JS_BUTTON_MIN JS_BUTTON0
#define JS_BUTTON_MAX JS_BUTTON31
#define JS_0 QK_JOYSTICK_BUTTON_0
#define JS_1 QK_JOYSTICK_BUTTON_1
#define JS_2 QK_JOYSTICK_BUTTON_2
#define JS_3 QK_JOYSTICK_BUTTON_3
#define JS_4 QK_JOYSTICK_BUTTON_4
#define JS_5 QK_JOYSTICK_BUTTON_5
#define JS_6 QK_JOYSTICK_BUTTON_6
#define JS_7 QK_JOYSTICK_BUTTON_7
#define JS_8 QK_JOYSTICK_BUTTON_8
#define JS_9 QK_JOYSTICK_BUTTON_9
#define JS_10 QK_JOYSTICK_BUTTON_10
#define JS_11 QK_JOYSTICK_BUTTON_11
#define JS_12 QK_JOYSTICK_BUTTON_12
#define JS_13 QK_JOYSTICK_BUTTON_13
#define JS_14 QK_JOYSTICK_BUTTON_14
#define JS_15 QK_JOYSTICK_BUTTON_15
#define JS_16 QK_JOYSTICK_BUTTON_16
#define JS_17 QK_JOYSTICK_BUTTON_17
#define JS_18 QK_JOYSTICK_BUTTON_18
#define JS_19 QK_JOYSTICK_BUTTON_19
#define JS_20 QK_JOYSTICK_BUTTON_20
#define JS_21 QK_JOYSTICK_BUTTON_21
#define JS_22 QK_JOYSTICK_BUTTON_22
#define JS_23 QK_JOYSTICK_BUTTON_23
#define JS_24 QK_JOYSTICK_BUTTON_24
#define JS_25 QK_JOYSTICK_BUTTON_25
#define JS_26 QK_JOYSTICK_BUTTON_26
#define JS_27 QK_JOYSTICK_BUTTON_27
#define JS_28 QK_JOYSTICK_BUTTON_28
#define JS_29 QK_JOYSTICK_BUTTON_29
#define JS_30 QK_JOYSTICK_BUTTON_30
#define JS_31 QK_JOYSTICK_BUTTON_31
#define QK_JOYSTICK_BUTTON_MIN QK_JOYSTICK_BUTTON_0
#define QK_JOYSTICK_BUTTON_MAX QK_JOYSTICK_BUTTON_31
// One Shot aliases
#define OS_TOGG ONESHOT_TOGGLE
@ -885,40 +917,41 @@ enum quantum_keycodes {
#define OS_OFF ONESHOT_DISABLE
// Programmable Button aliases
#define PB_1 PROGRAMMABLE_BUTTON_1
#define PB_2 PROGRAMMABLE_BUTTON_2
#define PB_3 PROGRAMMABLE_BUTTON_3
#define PB_4 PROGRAMMABLE_BUTTON_4
#define PB_5 PROGRAMMABLE_BUTTON_5
#define PB_6 PROGRAMMABLE_BUTTON_6
#define PB_7 PROGRAMMABLE_BUTTON_7
#define PB_8 PROGRAMMABLE_BUTTON_8
#define PB_9 PROGRAMMABLE_BUTTON_9
#define PB_10 PROGRAMMABLE_BUTTON_10
#define PB_11 PROGRAMMABLE_BUTTON_11
#define PB_12 PROGRAMMABLE_BUTTON_12
#define PB_13 PROGRAMMABLE_BUTTON_13
#define PB_14 PROGRAMMABLE_BUTTON_14
#define PB_15 PROGRAMMABLE_BUTTON_15
#define PB_16 PROGRAMMABLE_BUTTON_16
#define PB_17 PROGRAMMABLE_BUTTON_17
#define PB_18 PROGRAMMABLE_BUTTON_18
#define PB_19 PROGRAMMABLE_BUTTON_19
#define PB_20 PROGRAMMABLE_BUTTON_20
#define PB_21 PROGRAMMABLE_BUTTON_21
#define PB_22 PROGRAMMABLE_BUTTON_22
#define PB_23 PROGRAMMABLE_BUTTON_23
#define PB_24 PROGRAMMABLE_BUTTON_24
#define PB_25 PROGRAMMABLE_BUTTON_25
#define PB_26 PROGRAMMABLE_BUTTON_26
#define PB_27 PROGRAMMABLE_BUTTON_27
#define PB_28 PROGRAMMABLE_BUTTON_28
#define PB_29 PROGRAMMABLE_BUTTON_29
#define PB_30 PROGRAMMABLE_BUTTON_30
#define PB_31 PROGRAMMABLE_BUTTON_31
#define PB_32 PROGRAMMABLE_BUTTON_32
#define PROGRAMMABLE_BUTTON_MIN PROGRAMMABLE_BUTTON_1
#define PROGRAMMABLE_BUTTON_MAX PROGRAMMABLE_BUTTON_32
#define PB_1 QK_PROGRAMMABLE_BUTTON_1
#define PB_2 QK_PROGRAMMABLE_BUTTON_2
#define PB_3 QK_PROGRAMMABLE_BUTTON_3
#define PB_4 QK_PROGRAMMABLE_BUTTON_4
#define PB_5 QK_PROGRAMMABLE_BUTTON_5
#define PB_6 QK_PROGRAMMABLE_BUTTON_6
#define PB_7 QK_PROGRAMMABLE_BUTTON_7
#define PB_8 QK_PROGRAMMABLE_BUTTON_8
#define PB_9 QK_PROGRAMMABLE_BUTTON_9
#define PB_10 QK_PROGRAMMABLE_BUTTON_10
#define PB_11 QK_PROGRAMMABLE_BUTTON_11
#define PB_12 QK_PROGRAMMABLE_BUTTON_12
#define PB_13 QK_PROGRAMMABLE_BUTTON_13
#define PB_14 QK_PROGRAMMABLE_BUTTON_14
#define PB_15 QK_PROGRAMMABLE_BUTTON_15
#define PB_16 QK_PROGRAMMABLE_BUTTON_16
#define PB_17 QK_PROGRAMMABLE_BUTTON_17
#define PB_18 QK_PROGRAMMABLE_BUTTON_18
#define PB_19 QK_PROGRAMMABLE_BUTTON_19
#define PB_20 QK_PROGRAMMABLE_BUTTON_20
#define PB_21 QK_PROGRAMMABLE_BUTTON_21
#define PB_22 QK_PROGRAMMABLE_BUTTON_22
#define PB_23 QK_PROGRAMMABLE_BUTTON_23
#define PB_24 QK_PROGRAMMABLE_BUTTON_24
#define PB_25 QK_PROGRAMMABLE_BUTTON_25
#define PB_26 QK_PROGRAMMABLE_BUTTON_26
#define PB_27 QK_PROGRAMMABLE_BUTTON_27
#define PB_28 QK_PROGRAMMABLE_BUTTON_28
#define PB_29 QK_PROGRAMMABLE_BUTTON_29
#define PB_30 QK_PROGRAMMABLE_BUTTON_30
#define PB_31 QK_PROGRAMMABLE_BUTTON_31
#define PB_32 QK_PROGRAMMABLE_BUTTON_32
#define QK_PROGRAMMABLE_BUTTON_MIN QK_PROGRAMMABLE_BUTTON_1
#define QK_PROGRAMMABLE_BUTTON_MAX QK_PROGRAMMABLE_BUTTON_32
#define CAPSWRD CAPS_WORD
#include "quantum_keycodes_legacy.h"

View File

@ -8,6 +8,72 @@
#define VLK_TOG QK_VELOCIKEY_TOGGLE
#define PROGRAMMABLE_BUTTON_1 QK_PROGRAMMABLE_BUTTON_1
#define PROGRAMMABLE_BUTTON_2 QK_PROGRAMMABLE_BUTTON_2
#define PROGRAMMABLE_BUTTON_3 QK_PROGRAMMABLE_BUTTON_3
#define PROGRAMMABLE_BUTTON_4 QK_PROGRAMMABLE_BUTTON_4
#define PROGRAMMABLE_BUTTON_5 QK_PROGRAMMABLE_BUTTON_5
#define PROGRAMMABLE_BUTTON_6 QK_PROGRAMMABLE_BUTTON_6
#define PROGRAMMABLE_BUTTON_7 QK_PROGRAMMABLE_BUTTON_7
#define PROGRAMMABLE_BUTTON_8 QK_PROGRAMMABLE_BUTTON_8
#define PROGRAMMABLE_BUTTON_9 QK_PROGRAMMABLE_BUTTON_9
#define PROGRAMMABLE_BUTTON_10 QK_PROGRAMMABLE_BUTTON_10
#define PROGRAMMABLE_BUTTON_11 QK_PROGRAMMABLE_BUTTON_11
#define PROGRAMMABLE_BUTTON_12 QK_PROGRAMMABLE_BUTTON_12
#define PROGRAMMABLE_BUTTON_13 QK_PROGRAMMABLE_BUTTON_13
#define PROGRAMMABLE_BUTTON_14 QK_PROGRAMMABLE_BUTTON_14
#define PROGRAMMABLE_BUTTON_15 QK_PROGRAMMABLE_BUTTON_15
#define PROGRAMMABLE_BUTTON_16 QK_PROGRAMMABLE_BUTTON_16
#define PROGRAMMABLE_BUTTON_17 QK_PROGRAMMABLE_BUTTON_17
#define PROGRAMMABLE_BUTTON_18 QK_PROGRAMMABLE_BUTTON_18
#define PROGRAMMABLE_BUTTON_19 QK_PROGRAMMABLE_BUTTON_19
#define PROGRAMMABLE_BUTTON_20 QK_PROGRAMMABLE_BUTTON_20
#define PROGRAMMABLE_BUTTON_21 QK_PROGRAMMABLE_BUTTON_21
#define PROGRAMMABLE_BUTTON_22 QK_PROGRAMMABLE_BUTTON_22
#define PROGRAMMABLE_BUTTON_23 QK_PROGRAMMABLE_BUTTON_23
#define PROGRAMMABLE_BUTTON_24 QK_PROGRAMMABLE_BUTTON_24
#define PROGRAMMABLE_BUTTON_25 QK_PROGRAMMABLE_BUTTON_25
#define PROGRAMMABLE_BUTTON_26 QK_PROGRAMMABLE_BUTTON_26
#define PROGRAMMABLE_BUTTON_27 QK_PROGRAMMABLE_BUTTON_27
#define PROGRAMMABLE_BUTTON_28 QK_PROGRAMMABLE_BUTTON_28
#define PROGRAMMABLE_BUTTON_29 QK_PROGRAMMABLE_BUTTON_29
#define PROGRAMMABLE_BUTTON_30 QK_PROGRAMMABLE_BUTTON_30
#define PROGRAMMABLE_BUTTON_31 QK_PROGRAMMABLE_BUTTON_31
#define PROGRAMMABLE_BUTTON_32 QK_PROGRAMMABLE_BUTTON_32
#define JS_BUTTON0 QK_JOYSTICK_BUTTON_0
#define JS_BUTTON1 QK_JOYSTICK_BUTTON_1
#define JS_BUTTON2 QK_JOYSTICK_BUTTON_2
#define JS_BUTTON3 QK_JOYSTICK_BUTTON_3
#define JS_BUTTON4 QK_JOYSTICK_BUTTON_4
#define JS_BUTTON5 QK_JOYSTICK_BUTTON_5
#define JS_BUTTON6 QK_JOYSTICK_BUTTON_6
#define JS_BUTTON7 QK_JOYSTICK_BUTTON_7
#define JS_BUTTON8 QK_JOYSTICK_BUTTON_8
#define JS_BUTTON9 QK_JOYSTICK_BUTTON_9
#define JS_BUTTON10 QK_JOYSTICK_BUTTON_10
#define JS_BUTTON11 QK_JOYSTICK_BUTTON_11
#define JS_BUTTON12 QK_JOYSTICK_BUTTON_12
#define JS_BUTTON13 QK_JOYSTICK_BUTTON_13
#define JS_BUTTON14 QK_JOYSTICK_BUTTON_14
#define JS_BUTTON15 QK_JOYSTICK_BUTTON_15
#define JS_BUTTON16 QK_JOYSTICK_BUTTON_16
#define JS_BUTTON17 QK_JOYSTICK_BUTTON_17
#define JS_BUTTON18 QK_JOYSTICK_BUTTON_18
#define JS_BUTTON19 QK_JOYSTICK_BUTTON_19
#define JS_BUTTON20 QK_JOYSTICK_BUTTON_20
#define JS_BUTTON21 QK_JOYSTICK_BUTTON_21
#define JS_BUTTON22 QK_JOYSTICK_BUTTON_22
#define JS_BUTTON23 QK_JOYSTICK_BUTTON_23
#define JS_BUTTON24 QK_JOYSTICK_BUTTON_24
#define JS_BUTTON25 QK_JOYSTICK_BUTTON_25
#define JS_BUTTON26 QK_JOYSTICK_BUTTON_26
#define JS_BUTTON27 QK_JOYSTICK_BUTTON_27
#define JS_BUTTON28 QK_JOYSTICK_BUTTON_28
#define JS_BUTTON29 QK_JOYSTICK_BUTTON_29
#define JS_BUTTON30 QK_JOYSTICK_BUTTON_30
#define JS_BUTTON31 QK_JOYSTICK_BUTTON_31
#define TERM_ON _Static_assert(false, "The Terminal feature has been removed from QMK. Please remove use of TERM_ON/TERM_OFF from your keymap.")
#define TERM_OFF _Static_assert(false, "The Terminal feature has been removed from QMK.. Please remove use of TERM_ON/TERM_OFF from your keymap.")
// #define RESET _Static_assert(false, "The RESET keycode has been removed from QMK.. Please remove use from your keymap.")