core: Fix unimap translation range

This commit is contained in:
tmk 2020-02-03 12:36:26 +09:00
parent 3b21f85e9b
commit 01477b7ef2

View file

@ -25,8 +25,8 @@ keypos_t unimap_translate(keypos_t key)
unimap_trans[key.row][key.col]; unimap_trans[key.row][key.col];
#endif #endif
return (keypos_t) { return (keypos_t) {
.row = ((unimap_pos & 0xf0) >> 4), .row = ((unimap_pos >> 4 ) & 0x07),
.col = (unimap_pos & 0x0f) .col = (unimap_pos & 0x0F)
}; };
} }
@ -35,13 +35,13 @@ __attribute__ ((weak))
action_t action_for_key(uint8_t layer, keypos_t key) action_t action_for_key(uint8_t layer, keypos_t key)
{ {
keypos_t uni = unimap_translate(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; return (action_t)ACTION_NO;
} }
#if defined(__AVR__) #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 #else
return actionmaps[(layer)][(uni.row & 0x7)][(uni.col)]; return actionmaps[(layer)][(uni.row & 0x07)][(uni.col & 0x0F)];
#endif #endif
} }