]> git.friedersdorff.com Git - max/tmk_keyboard.git/commitdiff
enable TAPPING_TOGGLE=1 to work correctly
authorJeff Gran <jeff.gran@gmail.com>
Thu, 26 Nov 2015 07:42:42 +0000 (00:42 -0700)
committerJeff Gran <jeff.gran@gmail.com>
Thu, 26 Nov 2015 07:52:20 +0000 (00:52 -0700)
if TAPPING_TOGGLE is 1, then tap a single time should toggle the mods on/off each tap.

Previously this was broken, this fixes it. This allows the same key to either hold (momentary mod) or tap (toggle mod, like capslock).

tmk_core/common/action.c

index 1f15bd091861735b1b621510edb1e161035896ea..339b3ee67edf6628f30b33fc64cd63ea834b1a96 100644 (file)
@@ -131,10 +131,17 @@ void process_action(keyrecord_t *record)
                     case MODS_TAP_TOGGLE:
                         if (event.pressed) {
                             if (tap_count <= TAPPING_TOGGLE) {
                     case MODS_TAP_TOGGLE:
                         if (event.pressed) {
                             if (tap_count <= TAPPING_TOGGLE) {
-                                register_mods(mods);
+                                if (mods & get_mods()) {
+                                    dprint("MODS_TAP_TOGGLE: toggle mods off\n");
+                                    unregister_mods(mods);
+                                } else {
+                                    dprint("MODS_TAP_TOGGLE: toggle mods on\n");
+                                    register_mods(mods);
+                                }
                             }
                         } else {
                             if (tap_count < TAPPING_TOGGLE) {
                             }
                         } else {
                             if (tap_count < TAPPING_TOGGLE) {
+                                dprint("MODS_TAP_TOGGLE: release : unregister_mods\n");
                                 unregister_mods(mods);
                             }
                         }
                                 unregister_mods(mods);
                             }
                         }