ARM split - Add bootmagic/magic keycodes for setting handedness (#6545)
* Add docs on bootmagic/magic keycodes for setting handedness * Clang format fixes * Maintain backwards compatibility * Maintain backwards compatibility
This commit is contained in:
parent
237147ca23
commit
ad8dbd5ca5
9 changed files with 80 additions and 33 deletions
|
@ -34,6 +34,8 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug
|
||||||
|`X` |Toggle key matrix debugging |
|
|`X` |Toggle key matrix debugging |
|
||||||
|`K` |Toggle keyboard debugging |
|
|`K` |Toggle keyboard debugging |
|
||||||
|`M` |Toggle mouse debugging |
|
|`M` |Toggle mouse debugging |
|
||||||
|
|`L` |Set "Left Hand" for EE_HANDS handedness |
|
||||||
|
|`R` |Set "Right Hand" for EE_HANDS handedness |
|
||||||
|Backspace |Clear the EEPROM |
|
|Backspace |Clear the EEPROM |
|
||||||
|Caps Lock |Toggle treating Caps Lock as Left Control |
|
|Caps Lock |Toggle treating Caps Lock as Left Control |
|
||||||
|Left Control |Toggle swapping Caps Lock and Left Control |
|
|Left Control |Toggle swapping Caps Lock and Left Control |
|
||||||
|
@ -83,6 +85,8 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug
|
||||||
|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and Left GUI |
|
|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and Left GUI |
|
||||||
|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and Right GUI |
|
|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and Right GUI |
|
||||||
|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and Right GUI |
|
|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and Right GUI |
|
||||||
|
|`MAGIC_EE_HANDS_LEFT` | |Set "Left Hand" for EE_HANDS handedness |
|
||||||
|
|`MAGIC_EE_HANDS_RIGHT` | |Set "Right Hand" for EE_HANDS handedness |
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
|
@ -98,6 +102,8 @@ If you would like to change the hotkey assignments for Bootmagic, `#define` thes
|
||||||
|`BOOTMAGIC_KEY_DEBUG_MATRIX` |`KC_X` |Toggle matrix debugging |
|
|`BOOTMAGIC_KEY_DEBUG_MATRIX` |`KC_X` |Toggle matrix debugging |
|
||||||
|`BOOTMAGIC_KEY_DEBUG_KEYBOARD` |`KC_K` |Toggle keyboard debugging |
|
|`BOOTMAGIC_KEY_DEBUG_KEYBOARD` |`KC_K` |Toggle keyboard debugging |
|
||||||
|`BOOTMAGIC_KEY_DEBUG_MOUSE` |`KC_M` |Toggle mouse debugging |
|
|`BOOTMAGIC_KEY_DEBUG_MOUSE` |`KC_M` |Toggle mouse debugging |
|
||||||
|
|`BOOTMAGIC_KEY_EE_HANDS_LEFT` |`KC_L` |Set "Left Hand" for EE_HANDS handedness |
|
||||||
|
|`BOOTMAGIC_KEY_EE_HANDS_RIGHT` |`KC_R` |Set "Right Hand" for EE_HANDS handedness |
|
||||||
|`BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK` |`KC_LCTRL` |Swap Left Control and Caps Lock |
|
|`BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK` |`KC_LCTRL` |Swap Left Control and Caps Lock |
|
||||||
|`BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL` |`KC_CAPSLOCK`|Toggle treating Caps Lock as Left Control |
|
|`BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL` |`KC_CAPSLOCK`|Toggle treating Caps Lock as Left Control |
|
||||||
|`BOOTMAGIC_KEY_SWAP_LALT_LGUI` |`KC_LALT` |Toggle swapping Left Alt and Left GUI (for macOS) |
|
|`BOOTMAGIC_KEY_SWAP_LALT_LGUI` |`KC_LALT` |Toggle swapping Left Alt and Left GUI (for macOS) |
|
||||||
|
|
|
@ -258,7 +258,7 @@ This is a reference only. Each group of keys links to the page documenting their
|
||||||
## [Bootmagic](feature_bootmagic.md)
|
## [Bootmagic](feature_bootmagic.md)
|
||||||
|
|
||||||
|Key |Aliases |Description |
|
|Key |Aliases |Description |
|
||||||
|----------------------------------|---------|------------------------------------|
|
|----------------------------------|---------|-------------------------------------------|
|
||||||
|`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Caps Lock and Left Control |
|
|`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Caps Lock and Left Control |
|
||||||
|`MAGIC_CAPSLOCK_TO_CONTROL` | |Treat Caps Lock as Control |
|
|`MAGIC_CAPSLOCK_TO_CONTROL` | |Treat Caps Lock as Control |
|
||||||
|`MAGIC_SWAP_LCTL_LGUI` | |Swap Left Control and GUI |
|
|`MAGIC_SWAP_LCTL_LGUI` | |Swap Left Control and GUI |
|
||||||
|
@ -278,7 +278,7 @@ This is a reference only. Each group of keys links to the page documenting their
|
||||||
|`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and GUI |
|
|`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and GUI |
|
||||||
|`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and GUI |
|
|`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and GUI |
|
||||||
|`MAGIC_UNNO_GUI` | |Enable the GUI key |
|
|`MAGIC_UNNO_GUI` | |Enable the GUI key |
|
||||||
|`MAGIC_UNSWAP_GRAVE_ESC` | |Unswap <code>`</code> and Escape|
|
|`MAGIC_UNSWAP_GRAVE_ESC` | |Unswap <code>`</code> and Escape |
|
||||||
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace |
|
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace |
|
||||||
|`MAGIC_UNHOST_NKRO` | |Force NKRO off |
|
|`MAGIC_UNHOST_NKRO` | |Force NKRO off |
|
||||||
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
|
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
|
||||||
|
@ -286,6 +286,8 @@ This is a reference only. Each group of keys links to the page documenting their
|
||||||
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides |
|
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides |
|
||||||
|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Ctrl and GUI swap on both sides |
|
|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Ctrl and GUI swap on both sides |
|
||||||
|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off |
|
|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off |
|
||||||
|
|`MAGIC_EE_HANDS_LEFT` | |Set "Left Hand" for EE_HANDS handedness |
|
||||||
|
|`MAGIC_EE_HANDS_RIGHT` | |Set "Right Hand" for EE_HANDS handedness |
|
||||||
|
|
||||||
## [Bluetooth](feature_bluetooth.md)
|
## [Bluetooth](feature_bluetooth.md)
|
||||||
|
|
||||||
|
|
|
@ -544,7 +544,7 @@ bool process_record_quantum(keyrecord_t *record) {
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI:
|
case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI:
|
||||||
case MAGIC_SWAP_LCTL_LGUI ... MAGIC_TOGGLE_CTL_GUI:
|
case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
// MAGIC actions (BOOTMAGIC without the boot)
|
// MAGIC actions (BOOTMAGIC without the boot)
|
||||||
if (!eeconfig_is_enabled()) {
|
if (!eeconfig_is_enabled()) {
|
||||||
|
@ -662,6 +662,12 @@ bool process_record_quantum(keyrecord_t *record) {
|
||||||
case MAGIC_TOGGLE_NKRO:
|
case MAGIC_TOGGLE_NKRO:
|
||||||
keymap_config.nkro = !keymap_config.nkro;
|
keymap_config.nkro = !keymap_config.nkro;
|
||||||
break;
|
break;
|
||||||
|
case MAGIC_EE_HANDS_LEFT:
|
||||||
|
eeconfig_update_handedness(true);
|
||||||
|
break;
|
||||||
|
case MAGIC_EE_HANDS_RIGHT:
|
||||||
|
eeconfig_update_handedness(false);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -502,6 +502,8 @@ enum quantum_keycodes {
|
||||||
MAGIC_SWAP_CTL_GUI,
|
MAGIC_SWAP_CTL_GUI,
|
||||||
MAGIC_UNSWAP_CTL_GUI,
|
MAGIC_UNSWAP_CTL_GUI,
|
||||||
MAGIC_TOGGLE_CTL_GUI,
|
MAGIC_TOGGLE_CTL_GUI,
|
||||||
|
MAGIC_EE_HANDS_LEFT,
|
||||||
|
MAGIC_EE_HANDS_RIGHT,
|
||||||
|
|
||||||
// always leave at the end
|
// always leave at the end
|
||||||
SAFE_RANGE
|
SAFE_RANGE
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
#ifdef EE_HANDS
|
#ifdef EE_HANDS
|
||||||
# include "tmk_core/common/eeprom.h"
|
|
||||||
# include "eeconfig.h"
|
# include "eeconfig.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -23,7 +22,7 @@ __attribute__((weak)) bool is_keyboard_left(void) {
|
||||||
setPinInput(SPLIT_HAND_PIN);
|
setPinInput(SPLIT_HAND_PIN);
|
||||||
return readPin(SPLIT_HAND_PIN);
|
return readPin(SPLIT_HAND_PIN);
|
||||||
#elif defined(EE_HANDS)
|
#elif defined(EE_HANDS)
|
||||||
return eeprom_read_byte(EECONFIG_HANDEDNESS);
|
return eeconfig_read_handedness();
|
||||||
#elif defined(MASTER_RIGHT)
|
#elif defined(MASTER_RIGHT)
|
||||||
return !is_keyboard_master();
|
return !is_keyboard_master();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -122,6 +122,14 @@ void bootmagic(void) {
|
||||||
default_layer = eeconfig_read_default_layer();
|
default_layer = eeconfig_read_default_layer();
|
||||||
default_layer_set((layer_state_t)default_layer);
|
default_layer_set((layer_state_t)default_layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* EE_HANDS handedness */
|
||||||
|
if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_LEFT)) {
|
||||||
|
eeconfig_update_handedness(true);
|
||||||
|
}
|
||||||
|
if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_RIGHT)) {
|
||||||
|
eeconfig_update_handedness(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \brief Scan Keycode
|
/** \brief Scan Keycode
|
||||||
|
|
|
@ -36,6 +36,12 @@
|
||||||
#ifndef BOOTMAGIC_KEY_DEBUG_MOUSE
|
#ifndef BOOTMAGIC_KEY_DEBUG_MOUSE
|
||||||
# define BOOTMAGIC_KEY_DEBUG_MOUSE KC_M
|
# define BOOTMAGIC_KEY_DEBUG_MOUSE KC_M
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef BOOTMAGIC_KEY_EE_HANDS_LEFT
|
||||||
|
# define BOOTMAGIC_KEY_EE_HANDS_LEFT KC_L
|
||||||
|
#endif
|
||||||
|
#ifndef BOOTMAGIC_KEY_EE_HANDS_RIGHT
|
||||||
|
# define BOOTMAGIC_KEY_EE_HANDS_RIGHT KC_R
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* keymap config
|
* keymap config
|
||||||
|
|
|
@ -153,8 +153,8 @@ uint32_t eeconfig_read_kb(void) { return eeprom_read_dword(EECONFIG_KEYBOARD); }
|
||||||
*
|
*
|
||||||
* FIXME: needs doc
|
* FIXME: needs doc
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void eeconfig_update_kb(uint32_t val) { eeprom_update_dword(EECONFIG_KEYBOARD, val); }
|
void eeconfig_update_kb(uint32_t val) { eeprom_update_dword(EECONFIG_KEYBOARD, val); }
|
||||||
|
|
||||||
/** \brief eeconfig read user
|
/** \brief eeconfig read user
|
||||||
*
|
*
|
||||||
* FIXME: needs doc
|
* FIXME: needs doc
|
||||||
|
@ -166,9 +166,24 @@ uint32_t eeconfig_read_user(void) { return eeprom_read_dword(EECONFIG_USER); }
|
||||||
*/
|
*/
|
||||||
void eeconfig_update_user(uint32_t val) { eeprom_update_dword(EECONFIG_USER, val); }
|
void eeconfig_update_user(uint32_t val) { eeprom_update_dword(EECONFIG_USER, val); }
|
||||||
|
|
||||||
|
/** \brief eeconfig read haptic
|
||||||
|
*
|
||||||
|
* FIXME: needs doc
|
||||||
|
*/
|
||||||
uint32_t eeconfig_read_haptic(void) { return eeprom_read_dword(EECONFIG_HAPTIC); }
|
uint32_t eeconfig_read_haptic(void) { return eeprom_read_dword(EECONFIG_HAPTIC); }
|
||||||
/** \brief eeconfig update user
|
/** \brief eeconfig update haptic
|
||||||
*
|
*
|
||||||
* FIXME: needs doc
|
* FIXME: needs doc
|
||||||
*/
|
*/
|
||||||
void eeconfig_update_haptic(uint32_t val) { eeprom_update_dword(EECONFIG_HAPTIC, val); }
|
void eeconfig_update_haptic(uint32_t val) { eeprom_update_dword(EECONFIG_HAPTIC, val); }
|
||||||
|
|
||||||
|
/** \brief eeconfig read split handedness
|
||||||
|
*
|
||||||
|
* FIXME: needs doc
|
||||||
|
*/
|
||||||
|
bool eeconfig_read_handedness(void) { return !!eeprom_read_byte(EECONFIG_HANDEDNESS); }
|
||||||
|
/** \brief eeconfig update split handedness
|
||||||
|
*
|
||||||
|
* FIXME: needs doc
|
||||||
|
*/
|
||||||
|
void eeconfig_update_handedness(bool val) { eeprom_update_byte(EECONFIG_HANDEDNESS, !!val); }
|
||||||
|
|
|
@ -107,4 +107,7 @@ uint32_t eeconfig_read_haptic(void);
|
||||||
void eeconfig_update_haptic(uint32_t val);
|
void eeconfig_update_haptic(uint32_t val);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
bool eeconfig_read_handedness(void);
|
||||||
|
void eeconfig_update_handedness(bool val);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue