|
|
|
@ -1,4 +1,4 @@
|
|
|
|
/* $Id: gui_softkeyboard.c,v 1.5 2013/03/24 00:38:50 steffen Exp $ */
|
|
|
|
/* $Id: gui_softkeyboard.c,v 1.6 2013/04/03 21:52:27 steffen Exp $ */
|
|
|
|
/***************************************************************************
|
|
|
|
/***************************************************************************
|
|
|
|
* gui_softkeyboard.c
|
|
|
|
* gui_softkeyboard.c
|
|
|
|
*
|
|
|
|
*
|
|
|
|
@ -157,25 +157,25 @@ void gui_softkeyb_draw () {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int gui_softkeyb_event (GUIEvent event) {
|
|
|
|
int gui_softkeyb_event (GUIEvent *event) {
|
|
|
|
int i, j, x1, y1, x2, y2;
|
|
|
|
int i, j, x1, y1, x2, y2;
|
|
|
|
GUIEvent newevent;
|
|
|
|
GUIEvent newevent;
|
|
|
|
iPoint mp = { event.mousepos.x - softkeyb->offset.x, event.mousepos.y - softkeyb->offset.y };
|
|
|
|
iPoint mp = { event->scr_mpos.x - softkeyb->offset.x, event->scr_mpos.y - softkeyb->offset.y };
|
|
|
|
|
|
|
|
|
|
|
|
if (event.event != EGUI_MOUSEPRESSED && event.event != EGUI_MOUSERELEASED) return 0;
|
|
|
|
if (event->event != EGUI_MOUSEPRESSED && event->event != EGUI_MOUSERELEASED) return 0;
|
|
|
|
|
|
|
|
|
|
|
|
/* check if we pressed one of the keys.. */
|
|
|
|
/* check if we pressed one of the keys.. */
|
|
|
|
for (j = 0; j < 3; j++)
|
|
|
|
for (j = 0; j < 3; j++)
|
|
|
|
for (i = 0; i < GUI_SOFTKEYB_X; i++) {
|
|
|
|
for (i = 0; i < GUI_SOFTKEYB_X; i++) {
|
|
|
|
gui_softkeyb_getpos (j, i, &x1, &y1, &x2, &y2);
|
|
|
|
gui_softkeyb_getpos (j, i, &x1, &y1, &x2, &y2);
|
|
|
|
if (x1 <= mp.x && mp.x <= x2 && y1 <= mp.y && mp.y <= y2) {
|
|
|
|
if (x1 <= mp.x && mp.x <= x2 && y1 <= mp.y && mp.y <= y2) {
|
|
|
|
if (event.event == EGUI_MOUSEPRESSED) {
|
|
|
|
if (event->event == EGUI_MOUSEPRESSED) {
|
|
|
|
softkeyb->last_line = j;
|
|
|
|
softkeyb->last_line = j;
|
|
|
|
softkeyb->last_col = i;
|
|
|
|
softkeyb->last_col = i;
|
|
|
|
newevent.keyval = softkeyb->keys[softkeyb->mode][j][i];
|
|
|
|
newevent.keyval = softkeyb->keys[softkeyb->mode][j][i];
|
|
|
|
newevent.event = EGUI_KEYCHAR;
|
|
|
|
newevent.event = EGUI_KEYCHAR;
|
|
|
|
newevent.mousepos.x = -1;
|
|
|
|
newevent.guiwin_mpos.x = newevent.scr_mpos.x = -1;
|
|
|
|
newevent.mousepos.y = -1;
|
|
|
|
newevent.guiwin_mpos.y = newevent.scr_mpos.y = -1;
|
|
|
|
gui_entry_event (currentwin->focus, &newevent);
|
|
|
|
gui_entry_event (currentwin->focus, &newevent);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
@ -191,7 +191,7 @@ int gui_softkeyb_event (GUIEvent event) {
|
|
|
|
for (i = 0; i < 5; i++) {
|
|
|
|
for (i = 0; i < 5; i++) {
|
|
|
|
gui_softkeyb_getpos (3, i, &x1, &y1, &x2, &y2);
|
|
|
|
gui_softkeyb_getpos (3, i, &x1, &y1, &x2, &y2);
|
|
|
|
if (x1 <= mp.x && mp.x <= x2 && y1 <= mp.y && mp.y <= y2) {
|
|
|
|
if (x1 <= mp.x && mp.x <= x2 && y1 <= mp.y && mp.y <= y2) {
|
|
|
|
if (event.event == EGUI_MOUSEPRESSED) {
|
|
|
|
if (event->event == EGUI_MOUSEPRESSED) {
|
|
|
|
softkeyb->last_line = 3;
|
|
|
|
softkeyb->last_line = 3;
|
|
|
|
softkeyb->last_col = i;
|
|
|
|
softkeyb->last_col = i;
|
|
|
|
switch (i) {
|
|
|
|
switch (i) {
|
|
|
|
@ -204,16 +204,16 @@ int gui_softkeyb_event (GUIEvent event) {
|
|
|
|
case (2):
|
|
|
|
case (2):
|
|
|
|
newevent.keyval = ' ';
|
|
|
|
newevent.keyval = ' ';
|
|
|
|
newevent.event = EGUI_KEYCHAR;
|
|
|
|
newevent.event = EGUI_KEYCHAR;
|
|
|
|
newevent.mousepos.x = -1;
|
|
|
|
newevent.guiwin_mpos.x = newevent.scr_mpos.x = -1;
|
|
|
|
newevent.mousepos.y = -1;
|
|
|
|
newevent.guiwin_mpos.y = newevent.scr_mpos.y = -1;
|
|
|
|
gui_entry_event (currentwin->focus, &newevent);
|
|
|
|
gui_entry_event (currentwin->focus, &newevent);
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case (3):
|
|
|
|
case (3):
|
|
|
|
newevent.keyval = 0x08;
|
|
|
|
newevent.keyval = 0x08;
|
|
|
|
newevent.event = EGUI_KEYCHAR;
|
|
|
|
newevent.event = EGUI_KEYCHAR;
|
|
|
|
newevent.mousepos.x = -1;
|
|
|
|
newevent.guiwin_mpos.x = newevent.scr_mpos.x = -1;
|
|
|
|
newevent.mousepos.y = -1;
|
|
|
|
newevent.guiwin_mpos.y = newevent.scr_mpos.y = -1;
|
|
|
|
gui_entry_event (currentwin->focus, &newevent);
|
|
|
|
gui_entry_event (currentwin->focus, &newevent);
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|