diff options
Diffstat (limited to 'firmware/target/hosted/android/app/button-application.c')
-rw-r--r-- | firmware/target/hosted/android/app/button-application.c | 46 |
1 files changed, 33 insertions, 13 deletions
diff --git a/firmware/target/hosted/android/app/button-application.c b/firmware/target/hosted/android/app/button-application.c index a7d75ef172..1586183f6f 100644 --- a/firmware/target/hosted/android/app/button-application.c +++ b/firmware/target/hosted/android/app/button-application.c | |||
@@ -23,26 +23,24 @@ | |||
23 | #include "button.h" | 23 | #include "button.h" |
24 | #include "android_keyevents.h" | 24 | #include "android_keyevents.h" |
25 | 25 | ||
26 | static bool ignore_back_button = false; | ||
27 | void android_ignore_back_button(bool yes) | ||
28 | { | ||
29 | ignore_back_button = yes; | ||
30 | } | ||
31 | |||
26 | int key_to_button(int keyboard_key) | 32 | int key_to_button(int keyboard_key) |
27 | { | 33 | { |
28 | switch (keyboard_key) | 34 | switch (keyboard_key) |
29 | { | 35 | { |
30 | default: | ||
31 | return BUTTON_NONE; | ||
32 | case KEYCODE_BACK: | 36 | case KEYCODE_BACK: |
33 | return BUTTON_BACK; | 37 | return ignore_back_button ? BUTTON_NONE : BUTTON_BACK; |
34 | case KEYCODE_DPAD_UP: | ||
35 | return BUTTON_DPAD_UP; | ||
36 | case KEYCODE_DPAD_DOWN: | ||
37 | return BUTTON_DPAD_DOWN; | ||
38 | case KEYCODE_DPAD_LEFT: | ||
39 | return BUTTON_DPAD_LEFT; | ||
40 | case KEYCODE_DPAD_RIGHT: | ||
41 | return BUTTON_DPAD_RIGHT; | ||
42 | case KEYCODE_DPAD_CENTER: | ||
43 | return BUTTON_DPAD_CENTER; | ||
44 | case KEYCODE_MENU: | 38 | case KEYCODE_MENU: |
45 | return BUTTON_MENU; | 39 | return BUTTON_MENU; |
40 | case KEYCODE_DPAD_CENTER: | ||
41 | return BUTTON_DPAD_CENTER; | ||
42 | default: | ||
43 | return BUTTON_NONE; | ||
46 | } | 44 | } |
47 | } | 45 | } |
48 | 46 | ||
@@ -66,3 +64,25 @@ unsigned multimedia_to_button(int keyboard_key) | |||
66 | return 0; | 64 | return 0; |
67 | } | 65 | } |
68 | } | 66 | } |
67 | |||
68 | unsigned dpad_to_button(int keyboard_key) | ||
69 | { | ||
70 | switch (keyboard_key) | ||
71 | { | ||
72 | /* These buttons only post a single release event. | ||
73 | * doing otherwise will cause action.c to lock up waiting for | ||
74 | * a release (because android sends press/unpress to us too quickly | ||
75 | */ | ||
76 | case KEYCODE_DPAD_UP: | ||
77 | return BUTTON_DPAD_UP|BUTTON_REL; | ||
78 | case KEYCODE_DPAD_DOWN: | ||
79 | return BUTTON_DPAD_DOWN|BUTTON_REL; | ||
80 | case KEYCODE_DPAD_LEFT: | ||
81 | return BUTTON_DPAD_LEFT|BUTTON_REL; | ||
82 | case KEYCODE_DPAD_RIGHT: | ||
83 | return BUTTON_DPAD_RIGHT|BUTTON_REL; | ||
84 | default: | ||
85 | return BUTTON_NONE; | ||
86 | } | ||
87 | } | ||
88 | |||