]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
fixed a bug related to mod + Grave with combined ESC/Grave key
authortengg <tengg@users.noreply.github.com>
Wed, 22 Mar 2017 04:03:30 +0000 (00:03 -0400)
committerGitHub <noreply@github.com>
Wed, 22 Mar 2017 04:03:30 +0000 (00:03 -0400)
This only applies to keymaps that has combined esc/grave. Here we call it theKEY.
Think about the motion when we do shift + theKEY (typing ~), or CMD + theKEY (switching window on MAC). Based on the original code, we must do following sequence:  press shift -> press theKEY -> release theKEY -> release shift. However, it is very possible and natural that we do this stroke sequence instead: press shift -> press theKEY -> release shift -> release theKEY.

If we do the 2nd stroke sequence, the code will del_key(ESC) instead of (GRV) when we release theKEY. This caused some inconvenient issues and ghost typing.

By adding a flag, this issue is eliminated and will not affect any other functions.

keyboards/clueboard/keymaps/mac_optimized/keymap.c

index 59f7ff24361183d469a9910a44cfec439bd6c997..bb1a5d3cb52b0bc78f21bc115ce9bb492791e999 100644 (file)
@@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = {
 
 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
   static uint8_t mods_pressed;
+  static bool mods_flag;
 
   switch (id) {
     case 0:
@@ -62,6 +63,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
          */
         if (mods_pressed) {
           add_key(KC_GRV);
+          mod_flag = true;
           send_keyboard_report();
         } else {
           add_key(KC_ESC);
@@ -70,8 +72,9 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
       } else {
         /* The key is being released.
          */
-        if (mods_pressed) {
+        if (mod_flag) {
           del_key(KC_GRV);
+          mod_flag = false;
           send_keyboard_report();
         } else {
           del_key(KC_ESC);