mirror of
https://github.com/firewalkwithm3/Sensor-Watch.git
synced 2024-11-22 19:20:30 +08:00
Simulator: Add keyboard arrows as buttons shortcuts
This commit is contained in:
parent
bd9d792230
commit
b82d728937
|
@ -22,6 +22,8 @@
|
|||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "watch_extint.h"
|
||||
#include "watch_main_loop.h"
|
||||
|
||||
|
@ -47,25 +49,45 @@ static EM_BOOL watch_invoke_interrupt_callback(const uint8_t button_id, watch_in
|
|||
static EM_BOOL watch_invoke_key_callback(int eventType, const EmscriptenKeyboardEvent *keyEvent, void *userData) {
|
||||
if (debug_console_focused || keyEvent->repeat) return EM_FALSE;
|
||||
|
||||
const char *key = keyEvent->key;
|
||||
if (key[1] != 0) return EM_FALSE;
|
||||
|
||||
uint8_t button_id;
|
||||
switch (key[0]) {
|
||||
case 'A':
|
||||
case 'a':
|
||||
button_id = BTN_ID_ALARM;
|
||||
break;
|
||||
case 'L':
|
||||
case 'l':
|
||||
button_id = BTN_ID_LIGHT;
|
||||
break;
|
||||
case 'M':
|
||||
case 'm':
|
||||
button_id = BTN_ID_MODE;
|
||||
break;
|
||||
default:
|
||||
return EM_FALSE;
|
||||
const char *key = keyEvent->key;
|
||||
if (key[1] == 0) {
|
||||
// event is from a plain letter key
|
||||
switch (key[0]) {
|
||||
case 'A':
|
||||
case 'a':
|
||||
button_id = BTN_ID_ALARM;
|
||||
break;
|
||||
case 'L':
|
||||
case 'l':
|
||||
button_id = BTN_ID_LIGHT;
|
||||
break;
|
||||
case 'M':
|
||||
case 'm':
|
||||
button_id = BTN_ID_MODE;
|
||||
break;
|
||||
default:
|
||||
return EM_FALSE;
|
||||
}
|
||||
} else if (strncmp(key, "Arrow", 5) == 0) {
|
||||
// event is from one of the arrow keys
|
||||
switch(key[5]) {
|
||||
case 'U': // ArrowUp
|
||||
button_id = BTN_ID_LIGHT;
|
||||
break;
|
||||
case 'D': // ArrowDown
|
||||
case 'L': // ArrowLeft
|
||||
button_id = BTN_ID_MODE;
|
||||
break;
|
||||
case 'R': // ArrowRight
|
||||
button_id = BTN_ID_ALARM;
|
||||
break;
|
||||
default:
|
||||
return EM_FALSE;
|
||||
}
|
||||
} else {
|
||||
// another kind of key
|
||||
return EM_FALSE;
|
||||
}
|
||||
|
||||
watch_interrupt_trigger trigger = eventType == EMSCRIPTEN_EVENT_KEYDOWN ? INTERRUPT_TRIGGER_RISING : INTERRUPT_TRIGGER_FALLING;
|
||||
|
|
Loading…
Reference in a new issue