]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - layer.c
added copyright and license notice.
[max/tmk_keyboard.git] / layer.c
diff --git a/layer.c b/layer.c
old mode 100644 (file)
new mode 100755 (executable)
index 0c59c91..8c16485
--- a/layer.c
+++ b/layer.c
@@ -1,3 +1,20 @@
+/*
+Copyright 2011 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+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 <http://www.gnu.org/licenses/>.
+*/
+
 #include "keymap.h"
 #include "host.h"
 #include "debug.h"
@@ -76,7 +93,7 @@ uint8_t layer_get_keycode(uint8_t row, uint8_t col)
 }
 
 // bit substract b from a
-#define BIT_SUBT(a, b) (a&(a^b))
+#define BIT_SUBST(a, b) (a&(a^b))
 void layer_switching(uint8_t fn_bits)
 {
     // layer switching
@@ -90,7 +107,7 @@ void layer_switching(uint8_t fn_bits)
             // do nothing
         } else {
             if (timer_elapsed(last_timer) > LAYER_ENTER_DELAY) {
-                uint8_t _layer_to_switch = new_layer(BIT_SUBT(fn_bits, sent_fn));
+                uint8_t _layer_to_switch = new_layer(BIT_SUBST(fn_bits, sent_fn));
                 if (current_layer != _layer_to_switch) { // not switch layer yet
                     debug("Fn case: 1,2,3(LAYER_ENTER_DELAY passed)\n");
                     debug("Switch Layer: "); debug_hex(current_layer);
@@ -100,7 +117,7 @@ void layer_switching(uint8_t fn_bits)
                 }
             } else {
                 if (host_has_anykey()) { // other keys is pressed
-                    uint8_t _fn_to_send = BIT_SUBT(fn_bits, sent_fn);
+                    uint8_t _fn_to_send = BIT_SUBST(fn_bits, sent_fn);
                     if (_fn_to_send) {
                         debug("Fn case: 4(send Fn before other key pressed)\n");
                         // send only Fn key first
@@ -127,27 +144,26 @@ void layer_switching(uint8_t fn_bits)
         debug("last_timer: "); debug_hex16(last_timer); debug("\n");
 
         // pressed Fn
-        if ((fn_changed = BIT_SUBT(fn_bits, last_fn))) {
+        if ((fn_changed = BIT_SUBST(fn_bits, last_fn))) {
         debug("fn_changed: "); debug_bin(fn_changed); debug("\n");
             if (host_has_anykey()) {
                 debug("Fn case: 5(pressed Fn with other key)\n");
                 sent_fn |= fn_changed;
             } else if (fn_changed & sent_fn) { // pressed same Fn in a row
                 if (timer_elapsed(last_timer) > LAYER_ENTER_DELAY) {
-                    debug("Fn case: 6(repate2)\n");
+                    debug("Fn case: 6(not repeat)\n");
                     // time passed: not repeate
                     sent_fn &= ~fn_changed;
                 } else {
-                    debug("Fn case: 6(repate)\n");
+                    debug("Fn case: 6(repeat)\n");
                 }
             }
         }
         // released Fn
-        if ((fn_changed = BIT_SUBT(last_fn, fn_bits))) {
+        if ((fn_changed = BIT_SUBST(last_fn, fn_bits))) {
         debug("fn_changed: "); debug_bin(fn_changed); debug("\n");
             if (timer_elapsed(last_timer) < LAYER_SEND_FN_TERM) {
-                //if (!layer_used && BIT_SUBT(fn_changed, sent_fn)) {  // layer not used && Fn not sent
-                if (BIT_SUBT(fn_changed, sent_fn)) {  // layer not used && Fn not sent
+                if (!layer_used && BIT_SUBST(fn_changed, sent_fn)) {
                     debug("Fn case: 2(send Fn one shot: released Fn during LAYER_SEND_FN_TERM)\n");
                     // send only Fn key first
                     host_swap_keyboard_report();
@@ -160,11 +176,11 @@ void layer_switching(uint8_t fn_bits)
                 }
             }
             debug("Switch Layer(released Fn): "); debug_hex(current_layer);
-            current_layer = new_layer(BIT_SUBT(fn_bits, sent_fn));
-            layer_used = false;
+            current_layer = new_layer(BIT_SUBST(fn_bits, sent_fn));
             debug(" -> "); debug_hex(current_layer); debug("\n");
         }
 
+        layer_used = false;
         last_fn = fn_bits;
         last_mods = keyboard_report->mods;
         last_timer = timer_read();