From d534c72a544454132b3c6c05af85c821f6a93d65 Mon Sep 17 00:00:00 2001 From: Stephen Wanhella Date: Wed, 21 Aug 2019 17:07:08 -0700 Subject: 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> --- quantum/keycode_config.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'quantum/keycode_config.c') diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c index 0dc5105d2..73fe15861 100644 --- a/quantum/keycode_config.c +++ b/quantum/keycode_config.c @@ -31,6 +31,12 @@ uint16_t keycode_config(uint16_t keycode) { if (keymap_config.swap_control_capslock) { return KC_CAPSLOCK; } + if (keymap_config.swap_lctl_lgui) { + if (keymap_config.no_gui) { + return KC_NO; + } + return KC_LGUI; + } return KC_LCTL; case KC_LALT: if (keymap_config.swap_lalt_lgui) { @@ -44,10 +50,21 @@ uint16_t keycode_config(uint16_t keycode) { if (keymap_config.swap_lalt_lgui) { return KC_LALT; } + if (keymap_config.swap_lctl_lgui) { + return KC_LCTRL; + } if (keymap_config.no_gui) { return KC_NO; } return KC_LGUI; + case KC_RCTL: + if (keymap_config.swap_rctl_rgui) { + if (keymap_config.no_gui) { + return KC_NO; + } + return KC_RGUI; + } + return KC_RCTL; case KC_RALT: if (keymap_config.swap_ralt_rgui) { if (keymap_config.no_gui) { @@ -60,6 +77,9 @@ uint16_t keycode_config(uint16_t keycode) { if (keymap_config.swap_ralt_rgui) { return KC_RALT; } + if (keymap_config.swap_rctl_rgui) { + return KC_RCTL; + } if (keymap_config.no_gui) { return KC_NO; } @@ -108,6 +128,24 @@ uint8_t mod_config(uint8_t mod) { mod |= MOD_RGUI; } } + if (keymap_config.swap_lctl_lgui) { + if ((mod & MOD_RGUI) == MOD_LGUI) { + mod &= ~MOD_LGUI; + mod |= MOD_LCTL; + } else if ((mod & MOD_RCTL) == MOD_LCTL) { + mod &= ~MOD_LCTL; + mod |= MOD_LGUI; + } + } + if (keymap_config.swap_rctl_rgui) { + if ((mod & MOD_RGUI) == MOD_RGUI) { + mod &= ~MOD_RGUI; + mod |= MOD_RCTL; + } else if ((mod & MOD_RCTL) == MOD_RCTL) { + mod &= ~MOD_RCTL; + mod |= MOD_RGUI; + } + } if (keymap_config.no_gui) { mod &= ~MOD_LGUI; mod &= ~MOD_RGUI; -- cgit v1.2.3 From b5ee6c200c96df0b0e4557defdf3a61f70f5d260 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Thu, 22 Aug 2019 00:22:32 -0700 Subject: Fixup Bootmagic code (#6386) --- quantum/keycode_config.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'quantum/keycode_config.c') diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c index 73fe15861..bfd40d045 100644 --- a/quantum/keycode_config.c +++ b/quantum/keycode_config.c @@ -18,6 +18,11 @@ extern keymap_config_t keymap_config; +/** \brief keycode_config + * + * This function is used to check a specific keycode against the bootmagic config, + * and will return the corrected keycode, when appropriate. + */ uint16_t keycode_config(uint16_t keycode) { switch (keycode) { @@ -109,6 +114,12 @@ uint16_t keycode_config(uint16_t keycode) { } } +/** \brief mod_config + * + * This function checks the mods passed to it against the bootmagic config, + * and will remove or replace mods, based on that. + */ + uint8_t mod_config(uint8_t mod) { if (keymap_config.swap_lalt_lgui) { if ((mod & MOD_RGUI) == MOD_LGUI) { -- cgit v1.2.3 From b624f32f944acdc59dcb130674c09090c5c404cb Mon Sep 17 00:00:00 2001 From: skullY Date: Fri, 30 Aug 2019 11:19:03 -0700 Subject: clang-format changes --- quantum/keycode_config.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'quantum/keycode_config.c') diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c index bfd40d045..f340905ea 100644 --- a/quantum/keycode_config.c +++ b/quantum/keycode_config.c @@ -24,7 +24,6 @@ extern keymap_config_t keymap_config; * and will return the corrected keycode, when appropriate. */ uint16_t keycode_config(uint16_t keycode) { - switch (keycode) { case KC_CAPSLOCK: case KC_LOCKING_CAPS: @@ -56,7 +55,7 @@ uint16_t keycode_config(uint16_t keycode) { return KC_LALT; } if (keymap_config.swap_lctl_lgui) { - return KC_LCTRL; + return KC_LCTRL; } if (keymap_config.no_gui) { return KC_NO; @@ -83,7 +82,7 @@ uint16_t keycode_config(uint16_t keycode) { return KC_RALT; } if (keymap_config.swap_rctl_rgui) { - return KC_RCTL; + return KC_RCTL; } if (keymap_config.no_gui) { return KC_NO; @@ -140,22 +139,22 @@ uint8_t mod_config(uint8_t mod) { } } if (keymap_config.swap_lctl_lgui) { - if ((mod & MOD_RGUI) == MOD_LGUI) { - mod &= ~MOD_LGUI; - mod |= MOD_LCTL; - } else if ((mod & MOD_RCTL) == MOD_LCTL) { - mod &= ~MOD_LCTL; - mod |= MOD_LGUI; - } + if ((mod & MOD_RGUI) == MOD_LGUI) { + mod &= ~MOD_LGUI; + mod |= MOD_LCTL; + } else if ((mod & MOD_RCTL) == MOD_LCTL) { + mod &= ~MOD_LCTL; + mod |= MOD_LGUI; + } } if (keymap_config.swap_rctl_rgui) { - if ((mod & MOD_RGUI) == MOD_RGUI) { - mod &= ~MOD_RGUI; - mod |= MOD_RCTL; - } else if ((mod & MOD_RCTL) == MOD_RCTL) { - mod &= ~MOD_RCTL; - mod |= MOD_RGUI; - } + if ((mod & MOD_RGUI) == MOD_RGUI) { + mod &= ~MOD_RGUI; + mod |= MOD_RCTL; + } else if ((mod & MOD_RCTL) == MOD_RCTL) { + mod &= ~MOD_RCTL; + mod |= MOD_RGUI; + } } if (keymap_config.no_gui) { mod &= ~MOD_LGUI; -- cgit v1.2.3