]> git.friedersdorff.com Git - max/tmk_keyboard.git/commitdiff
core: Fix unimap translation range
authortmk <hasu@tmk-kbd.com>
Mon, 3 Feb 2020 03:36:26 +0000 (12:36 +0900)
committertmk <hasu@tmk-kbd.com>
Mon, 3 Feb 2020 03:47:01 +0000 (12:47 +0900)
tmk_core/common/unimap.c

index 84109b5a1fee855b09b26999035a06bb633a1d6e..fcdc93bda03074f86ae5199ae5413810a63a3beb 100644 (file)
@@ -25,8 +25,8 @@ keypos_t unimap_translate(keypos_t key)
         unimap_trans[key.row][key.col];
 #endif
     return (keypos_t) {
-        .row = ((unimap_pos & 0xf0) >> 4),
-        .col = (unimap_pos & 0x0f)
+        .row = ((unimap_pos >> 4 ) & 0x07),
+        .col = (unimap_pos & 0x0F)
     };
 }
 
@@ -35,13 +35,13 @@ __attribute__ ((weak))
 action_t action_for_key(uint8_t layer, keypos_t key)
 {
     keypos_t uni = unimap_translate(key);
-    if ((uni.row << 4 | uni.col) == UNIMAP_NO) {
+    if ((uni.row << 4 | uni.col) > 0x7F) {
         return (action_t)ACTION_NO;
     }
 #if defined(__AVR__)
-    return (action_t)pgm_read_word(&actionmaps[(layer)][(uni.row & 0x7)][(uni.col)]);
+    return (action_t)pgm_read_word(&actionmaps[(layer)][(uni.row & 0x07)][(uni.col & 0x0F)]);
 #else
-    return actionmaps[(layer)][(uni.row & 0x7)][(uni.col)];
+    return actionmaps[(layer)][(uni.row & 0x07)][(uni.col & 0x0F)];
 #endif
 }