diff options
| author | Stephen Wanhella <Stephen.wanhella@gmail.com> | 2019-08-21 17:07:08 -0700 |
|---|---|---|
| committer | Drashna Jaelre <drashna@live.com> | 2019-08-21 17:07:08 -0700 |
| commit | d534c72a544454132b3c6c05af85c821f6a93d65 (patch) | |
| tree | 906a66b899e4de1d7ffe567bbdb2c9082d948140 /quantum/keycode_config.c | |
| parent | 6a79b05cf02d5a6f07b17474344e272b44c77988 (diff) | |
Added keycodes for swapping and unswapping the Control and OS keys (#6110)
* Add MAGIC_SWAP_CONTROL_LGUI and MAGIC_UNSWAP_CONTROL_LGUI keycodes
Key codes to swap and unswap the control and windows/cmd keys
* Fix issues with pull request #6110
Renamed swap/unswap lctl and lgui key codes, added key codes to swap/unswap rctl and rgui, and moved new bool inside keycode_config.h struct to the end
* Move new keycodes to the end of the enum (#6110)
* add cases for swapped control and OS keys to mod_config (#6110)
* Add new keycodes to feature_bootmagic.md (#6110)
* Add R+L swap codes to keep in parity with AG_* codes
* Extend Magic range check to include new magic codes
* Update audio docs
* Combine 2 byte ranges into 1 word for EECONFG
Fix names for Keymap config EEPROM
* Update docs/feature_bootmagic.md
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
* Update docs/feature_bootmagic.md
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
* Update docs/feature_bootmagic.md
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
* Update docs/feature_bootmagic.md
Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
Diffstat (limited to 'quantum/keycode_config.c')
| -rw-r--r-- | quantum/keycode_config.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c index 0dc5105d21..73fe15861d 100644 --- a/quantum/keycode_config.c +++ b/quantum/keycode_config.c | |||
| @@ -31,6 +31,12 @@ uint16_t keycode_config(uint16_t keycode) { | |||
| 31 | if (keymap_config.swap_control_capslock) { | 31 | if (keymap_config.swap_control_capslock) { |
| 32 | return KC_CAPSLOCK; | 32 | return KC_CAPSLOCK; |
| 33 | } | 33 | } |
| 34 | if (keymap_config.swap_lctl_lgui) { | ||
| 35 | if (keymap_config.no_gui) { | ||
| 36 | return KC_NO; | ||
| 37 | } | ||
| 38 | return KC_LGUI; | ||
| 39 | } | ||
| 34 | return KC_LCTL; | 40 | return KC_LCTL; |
| 35 | case KC_LALT: | 41 | case KC_LALT: |
| 36 | if (keymap_config.swap_lalt_lgui) { | 42 | if (keymap_config.swap_lalt_lgui) { |
| @@ -44,10 +50,21 @@ uint16_t keycode_config(uint16_t keycode) { | |||
| 44 | if (keymap_config.swap_lalt_lgui) { | 50 | if (keymap_config.swap_lalt_lgui) { |
| 45 | return KC_LALT; | 51 | return KC_LALT; |
| 46 | } | 52 | } |
| 53 | if (keymap_config.swap_lctl_lgui) { | ||
| 54 | return KC_LCTRL; | ||
| 55 | } | ||
| 47 | if (keymap_config.no_gui) { | 56 | if (keymap_config.no_gui) { |
| 48 | return KC_NO; | 57 | return KC_NO; |
| 49 | } | 58 | } |
| 50 | return KC_LGUI; | 59 | return KC_LGUI; |
| 60 | case KC_RCTL: | ||
| 61 | if (keymap_config.swap_rctl_rgui) { | ||
| 62 | if (keymap_config.no_gui) { | ||
| 63 | return KC_NO; | ||
| 64 | } | ||
| 65 | return KC_RGUI; | ||
| 66 | } | ||
| 67 | return KC_RCTL; | ||
| 51 | case KC_RALT: | 68 | case KC_RALT: |
| 52 | if (keymap_config.swap_ralt_rgui) { | 69 | if (keymap_config.swap_ralt_rgui) { |
| 53 | if (keymap_config.no_gui) { | 70 | if (keymap_config.no_gui) { |
| @@ -60,6 +77,9 @@ uint16_t keycode_config(uint16_t keycode) { | |||
| 60 | if (keymap_config.swap_ralt_rgui) { | 77 | if (keymap_config.swap_ralt_rgui) { |
| 61 | return KC_RALT; | 78 | return KC_RALT; |
| 62 | } | 79 | } |
| 80 | if (keymap_config.swap_rctl_rgui) { | ||
| 81 | return KC_RCTL; | ||
| 82 | } | ||
| 63 | if (keymap_config.no_gui) { | 83 | if (keymap_config.no_gui) { |
| 64 | return KC_NO; | 84 | return KC_NO; |
| 65 | } | 85 | } |
| @@ -108,6 +128,24 @@ uint8_t mod_config(uint8_t mod) { | |||
| 108 | mod |= MOD_RGUI; | 128 | mod |= MOD_RGUI; |
| 109 | } | 129 | } |
| 110 | } | 130 | } |
| 131 | if (keymap_config.swap_lctl_lgui) { | ||
| 132 | if ((mod & MOD_RGUI) == MOD_LGUI) { | ||
| 133 | mod &= ~MOD_LGUI; | ||
| 134 | mod |= MOD_LCTL; | ||
| 135 | } else if ((mod & MOD_RCTL) == MOD_LCTL) { | ||
| 136 | mod &= ~MOD_LCTL; | ||
| 137 | mod |= MOD_LGUI; | ||
| 138 | } | ||
| 139 | } | ||
| 140 | if (keymap_config.swap_rctl_rgui) { | ||
| 141 | if ((mod & MOD_RGUI) == MOD_RGUI) { | ||
| 142 | mod &= ~MOD_RGUI; | ||
| 143 | mod |= MOD_RCTL; | ||
| 144 | } else if ((mod & MOD_RCTL) == MOD_RCTL) { | ||
| 145 | mod &= ~MOD_RCTL; | ||
| 146 | mod |= MOD_RGUI; | ||
| 147 | } | ||
| 148 | } | ||
| 111 | if (keymap_config.no_gui) { | 149 | if (keymap_config.no_gui) { |
| 112 | mod &= ~MOD_LGUI; | 150 | mod &= ~MOD_LGUI; |
| 113 | mod &= ~MOD_RGUI; | 151 | mod &= ~MOD_RGUI; |
