mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-23 06:48:16 +00:00
unix: refactor T1 touch events to behave similarly to T2 touch events
This commit is contained in:
parent
ff387ba716
commit
0ab0f9e418
@ -300,8 +300,8 @@ int ui_user_input(int zones)
|
|||||||
{
|
{
|
||||||
for (;;) {
|
for (;;) {
|
||||||
uint32_t evt = touch_click();
|
uint32_t evt = touch_click();
|
||||||
uint16_t x = touch_get_x(evt);
|
uint16_t x = touch_unpack_x(evt);
|
||||||
uint16_t y = touch_get_y(evt);
|
uint16_t y = touch_unpack_y(evt);
|
||||||
// clicked on Cancel button
|
// clicked on Cancel button
|
||||||
if ((zones & INPUT_CANCEL) && x >= 9 && x < 9 + 108 && y > 184 && y < 184 + 50) {
|
if ((zones & INPUT_CANCEL) && x >= 9 && x < 9 + 108 && y > 184 && y < 184 + 50) {
|
||||||
return INPUT_CANCEL;
|
return INPUT_CANCEL;
|
||||||
|
@ -56,8 +56,6 @@ STATIC const mp_rom_map_elem_t mp_module_trezorio_globals_table[] = {
|
|||||||
{ MP_ROM_QSTR(MP_QSTR_TOUCH_START), MP_OBJ_NEW_SMALL_INT((TOUCH_START >> 24) & 0xFFU) },
|
{ MP_ROM_QSTR(MP_QSTR_TOUCH_START), MP_OBJ_NEW_SMALL_INT((TOUCH_START >> 24) & 0xFFU) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_TOUCH_MOVE), MP_OBJ_NEW_SMALL_INT((TOUCH_MOVE >> 24) & 0xFFU) },
|
{ MP_ROM_QSTR(MP_QSTR_TOUCH_MOVE), MP_OBJ_NEW_SMALL_INT((TOUCH_MOVE >> 24) & 0xFFU) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_TOUCH_END), MP_OBJ_NEW_SMALL_INT((TOUCH_END >> 24) & 0xFFU) },
|
{ MP_ROM_QSTR(MP_QSTR_TOUCH_END), MP_OBJ_NEW_SMALL_INT((TOUCH_END >> 24) & 0xFFU) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_TOUCH_CONFIRM), MP_OBJ_NEW_SMALL_INT((TOUCH_CONFIRM >> 24) & 0xFFU) },
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_TOUCH_CANCEL), MP_OBJ_NEW_SMALL_INT((TOUCH_CANCEL >> 24) & 0xFFU) },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
STATIC MP_DEFINE_CONST_DICT(mp_module_trezorio_globals, mp_module_trezorio_globals_table);
|
STATIC MP_DEFINE_CONST_DICT(mp_module_trezorio_globals, mp_module_trezorio_globals_table);
|
||||||
|
@ -46,7 +46,7 @@ static SDL_Renderer *RENDERER;
|
|||||||
static SDL_Surface *BUFFER;
|
static SDL_Surface *BUFFER;
|
||||||
static SDL_Texture *TEXTURE, *BACKGROUND;
|
static SDL_Texture *TEXTURE, *BACKGROUND;
|
||||||
|
|
||||||
int sdl_display_res_x = DISPLAY_RESX, sdl_display_res_y = DISPLAY_RESX;
|
int sdl_display_res_x = DISPLAY_RESX, sdl_display_res_y = DISPLAY_RESY;
|
||||||
int sdl_touch_offset_x, sdl_touch_offset_y;
|
int sdl_touch_offset_x, sdl_touch_offset_y;
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
|
@ -212,8 +212,8 @@ static void test_touch(const char *args)
|
|||||||
|
|
||||||
uint32_t evt = 0;
|
uint32_t evt = 0;
|
||||||
if (touch_click_timeout(&evt, timeout * 1000)) {
|
if (touch_click_timeout(&evt, timeout * 1000)) {
|
||||||
uint16_t x = touch_get_x(evt);
|
uint16_t x = touch_unpack_x(evt);
|
||||||
uint16_t y = touch_get_y(evt);
|
uint16_t y = touch_unpack_y(evt);
|
||||||
vcp_printf("OK %d %d", x, y);
|
vcp_printf("OK %d %d", x, y);
|
||||||
} else {
|
} else {
|
||||||
vcp_printf("ERROR TIMEOUT");
|
vcp_printf("ERROR TIMEOUT");
|
||||||
|
@ -25,8 +25,6 @@
|
|||||||
#define TOUCH_START (1U << 24)
|
#define TOUCH_START (1U << 24)
|
||||||
#define TOUCH_MOVE (1U << 25)
|
#define TOUCH_MOVE (1U << 25)
|
||||||
#define TOUCH_END (1U << 26)
|
#define TOUCH_END (1U << 26)
|
||||||
#define TOUCH_CONFIRM (1U << 27)
|
|
||||||
#define TOUCH_CANCEL (1U << 28)
|
|
||||||
|
|
||||||
void touch_init(void);
|
void touch_init(void);
|
||||||
void touch_power_on(void);
|
void touch_power_on(void);
|
||||||
@ -34,8 +32,8 @@ void touch_power_off(void);
|
|||||||
uint32_t touch_read(void);
|
uint32_t touch_read(void);
|
||||||
uint32_t touch_click(void);
|
uint32_t touch_click(void);
|
||||||
uint32_t touch_is_detected(void);
|
uint32_t touch_is_detected(void);
|
||||||
inline uint16_t touch_get_x(uint32_t evt) { return (evt >> 12) & 0xFFF; }
|
inline uint16_t touch_unpack_x(uint32_t evt) { return (evt >> 12) & 0xFFF; }
|
||||||
inline uint16_t touch_get_y(uint32_t evt) { return (evt >> 0) & 0xFFF; }
|
inline uint16_t touch_unpack_y(uint32_t evt) { return (evt >> 0) & 0xFFF; }
|
||||||
inline uint32_t touch_pack_xy(uint16_t x, uint16_t y) { return ((x & 0xFFF) << 12) | (y & 0xFFF); }
|
inline uint32_t touch_pack_xy(uint16_t x, uint16_t y) { return ((x & 0xFFF) << 12) | (y & 0xFFF); }
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -67,8 +67,24 @@ uint32_t touch_read(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#if TREZOR_MODEL == 1
|
||||||
|
case SDL_KEYDOWN:
|
||||||
|
if (event.key.repeat) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch (event.key.keysym.sym) {
|
||||||
|
case SDLK_LEFT:
|
||||||
|
return TOUCH_START | touch_pack_xy(0, sdl_display_res_y - 1);
|
||||||
|
case SDLK_RIGHT:
|
||||||
|
return TOUCH_START | touch_pack_xy(sdl_display_res_x - 1, sdl_display_res_y - 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
case SDL_KEYUP:
|
case SDL_KEYUP:
|
||||||
|
if (event.key.repeat) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
switch (event.key.keysym.sym) {
|
switch (event.key.keysym.sym) {
|
||||||
case SDLK_ESCAPE:
|
case SDLK_ESCAPE:
|
||||||
__shutdown();
|
__shutdown();
|
||||||
@ -77,10 +93,10 @@ uint32_t touch_read(void)
|
|||||||
display_save("emu");
|
display_save("emu");
|
||||||
break;
|
break;
|
||||||
#if TREZOR_MODEL == 1
|
#if TREZOR_MODEL == 1
|
||||||
case SDLK_RIGHT:
|
|
||||||
return TOUCH_CONFIRM;
|
|
||||||
case SDLK_LEFT:
|
case SDLK_LEFT:
|
||||||
return TOUCH_CANCEL;
|
return TOUCH_END | touch_pack_xy(0, sdl_display_res_y - 1);
|
||||||
|
case SDLK_RIGHT:
|
||||||
|
return TOUCH_END | touch_pack_xy(sdl_display_res_x - 1, sdl_display_res_y - 1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user