]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - tmk_core/common/unimap.c
ibmpc: Change ISR code
[max/tmk_keyboard.git] / tmk_core / common / unimap.c
index c3d6c264b1f473e0db4e3372aeb5a29064e79187..fcdc93bda03074f86ae5199ae5413810a63a3beb 100644 (file)
@@ -25,7 +25,7 @@ keypos_t unimap_translate(keypos_t key)
         unimap_trans[key.row][key.col];
 #endif
     return (keypos_t) {
-        .row = ((unimap_pos & 0x70) >> 4),
+        .row = ((unimap_pos >> 4 ) & 0x07),
         .col = (unimap_pos & 0x0F)
     };
 }
@@ -35,11 +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) return (action_t)ACTION_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)][(uni.col)]);
+    return (action_t)pgm_read_word(&actionmaps[(layer)][(uni.row & 0x07)][(uni.col & 0x0F)]);
 #else
-    return actionmaps[(layer)][(uni.row)][(uni.col)];
+    return actionmaps[(layer)][(uni.row & 0x07)][(uni.col & 0x0F)];
 #endif
 }