X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=common%2Fkeymap.c;h=4c0b61b8c118cb17d719e82f2149ee158720bc79;hb=fa545c87f74833856761572ef631d20accc1d026;hp=ace3f49b69c01303a9a601b7f097086c4ec9b214;hpb=48433a5e9988647a737234c11dd9db4080fd4a4e;p=tmk_firmware.git diff --git a/common/keymap.c b/common/keymap.c index ace3f49..4c0b61b 100644 --- a/common/keymap.c +++ b/common/keymap.c @@ -14,11 +14,10 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include #include "keymap.h" #include "report.h" #include "keycode.h" -#include "layer_switch.h" +#include "action_layer.h" #include "action.h" #include "action_macro.h" #include "debug.h" @@ -28,12 +27,77 @@ static action_t keycode_to_action(uint8_t keycode); /* converts key to action */ -action_t action_for_key(uint8_t layer, key_t key) +action_t action_for_key(uint8_t layer, keypos_t key) { uint8_t keycode = keymap_key_to_keycode(layer, key); switch (keycode) { case KC_FN0 ... KC_FN31: return keymap_fn_to_action(keycode); +#ifdef BOOTMAGIC_ENABLE + case KC_CAPSLOCK: + case KC_LOCKING_CAPS: + if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) { + return keycode_to_action(KC_LCTL); + } + return keycode_to_action(keycode); + case KC_LCTL: + if (keymap_config.swap_control_capslock) { + return keycode_to_action(KC_CAPSLOCK); + } + return keycode_to_action(KC_LCTL); + case KC_LALT: + if (keymap_config.swap_lalt_lgui) { + if (keymap_config.no_gui) { + return keycode_to_action(ACTION_NO); + } + return keycode_to_action(KC_LGUI); + } + return keycode_to_action(KC_LALT); + case KC_LGUI: + if (keymap_config.swap_lalt_lgui) { + return keycode_to_action(KC_LALT); + } + if (keymap_config.no_gui) { + return keycode_to_action(ACTION_NO); + } + return keycode_to_action(KC_LGUI); + case KC_RALT: + if (keymap_config.swap_ralt_rgui) { + if (keymap_config.no_gui) { + return keycode_to_action(ACTION_NO); + } + return keycode_to_action(KC_RGUI); + } + return keycode_to_action(KC_RALT); + case KC_RGUI: + if (keymap_config.swap_ralt_rgui) { + return keycode_to_action(KC_RALT); + } + if (keymap_config.no_gui) { + return keycode_to_action(ACTION_NO); + } + return keycode_to_action(KC_RGUI); + case KC_GRAVE: + if (keymap_config.swap_grave_esc) { + return keycode_to_action(KC_ESC); + } + return keycode_to_action(KC_GRAVE); + case KC_ESC: + if (keymap_config.swap_grave_esc) { + return keycode_to_action(KC_GRAVE); + } + return keycode_to_action(KC_ESC); + case KC_BSLASH: + if (keymap_config.swap_backslash_backspace) { + return keycode_to_action(KC_BSPACE); + } + return keycode_to_action(KC_BSLASH); + case KC_BSPACE: + if (keymap_config.swap_backslash_backspace) { + return keycode_to_action(KC_BSLASH); + } + return keycode_to_action(KC_BSPACE); +#endif default: return keycode_to_action(keycode); } @@ -42,7 +106,7 @@ action_t action_for_key(uint8_t layer, key_t key) /* Macro */ __attribute__ ((weak)) -const prog_macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { return MACRO_NONE; } @@ -91,7 +155,7 @@ static action_t keycode_to_action(uint8_t keycode) * Consider using new keymap API instead. */ __attribute__ ((weak)) -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return keymap_get_keycode(layer, key.row, key.col); } @@ -108,9 +172,9 @@ action_t keymap_fn_to_action(uint8_t keycode) uint8_t layer = keymap_fn_layer(FN_INDEX(keycode)); uint8_t key = keymap_fn_keycode(FN_INDEX(keycode)); if (key) { - action.code = ACTION_KEYMAP_TAP_KEY(layer, key); + action.code = ACTION_LAYER_TAP_KEY(layer, key); } else { - action.code = ACTION_KEYMAP_MOMENTARY(layer); + action.code = ACTION_LAYER_MOMENTARY(layer); } } return action;