diff options
Diffstat (limited to 'source/keyboard.c')
-rw-r--r-- | source/keyboard.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/source/keyboard.c b/source/keyboard.c index 786b32d..c58aaae 100644 --- a/source/keyboard.c +++ b/source/keyboard.c @@ -51,14 +51,24 @@ static SoftKey pad_L_key = NUM_SOFT_KEYS; static SoftKey pad_start_key = NUM_SOFT_KEYS; static SoftKey pad_select_key = NUM_SOFT_KEYS; +#define CLEAR_STATE(SHORTCUT) \ + do \ + { \ + if (SHORTCUT != NUM_SOFT_KEYS && \ + !key_state[SHORTCUT].handled) \ + { \ + key_state[SHORTCUT].new_state = FALSE; \ + } \ + } while(0) + #define CHECK_STATE(KEYS,BIT,CODE,SHORTCUT) \ do \ { \ key_state[CODE].new_state = (KEYS & BIT); \ if (SHORTCUT != NUM_SOFT_KEYS && \ - !key_state[SHORTCUT].handled) \ + !key_state[SHORTCUT].handled && (KEYS & BIT)) \ { \ - key_state[SHORTCUT].new_state = (KEYS & BIT); \ + key_state[SHORTCUT].new_state = TRUE; \ } \ } while(0) |