Clean up of old onscreen keyboard code, mostly passed to onscreen_keyboard.c
This commit is contained in:
parent
c65bf29874
commit
d34f015d83
1 changed files with 2 additions and 816 deletions
818
src/tuxpaint.c
818
src/tuxpaint.c
|
|
@ -824,7 +824,7 @@ static SDL_Surface *label;
|
|||
static SDL_Surface *save_canvas;
|
||||
static SDL_Surface *canvas_back;
|
||||
static SDL_Surface *img_starter, *img_starter_bkgd;
|
||||
static SDL_Surface *key_board;
|
||||
|
||||
/* Update a rect. based on two x/y coords (not necessarly in order): */
|
||||
static void update_screen(int x1, int y1, int x2, int y2)
|
||||
{
|
||||
|
|
@ -1109,7 +1109,7 @@ static int starter_personal;
|
|||
static int template_personal;
|
||||
static int starter_modified;
|
||||
|
||||
static Uint8 canvas_color_r, canvas_color_g, canvas_color_b, key_board_color_r, key_board_color_g, key_board_color_b;
|
||||
static Uint8 canvas_color_r, canvas_color_g, canvas_color_b;
|
||||
static Uint8 * touched;
|
||||
|
||||
static int shape_radius;
|
||||
|
|
@ -2077,37 +2077,7 @@ enum
|
|||
SHAPE_TOOL_MODE_DONE
|
||||
};
|
||||
|
||||
void keybd_prepare(void);
|
||||
void keybd_finish(void);
|
||||
void apply_surface (int x, int y, SDL_Surface *source, SDL_Surface *destination, SDL_Rect *clip);
|
||||
void drawkeybd(void );
|
||||
int regionhit(int x, int y, int w, int h);
|
||||
void button(int id, int x, int y);
|
||||
void on_screen_keyboardd(void );
|
||||
SDL_Surface *messager = NULL;
|
||||
#define initial_x (2 * button_w + 80)
|
||||
#define key_width 24
|
||||
#define key_height 24
|
||||
|
||||
TTF_Font *fontyy = NULL;
|
||||
|
||||
SDL_Color textcolory = { 0, 0, 0 ,0};
|
||||
|
||||
const char *keybd_array[] = {"","Esc", " `", " 1"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9"," 0"," -"," =","Back",
|
||||
"Caps"," a"," b"," c"," d"," e"," f"," g"," h"," i"," j"," k"," l"," m"," n"," [", " ]"," \\","Ret",
|
||||
" o"," p"," q"," r"," s"," t"," u"," v"," w"," x"," y"," z"," ,", " ."," /"," ;"," '\'","Alt","Shift"};
|
||||
|
||||
|
||||
struct UIState
|
||||
{
|
||||
int mousex;
|
||||
int mousey;
|
||||
int mousedown;
|
||||
|
||||
int hotitem;
|
||||
int activeitem;
|
||||
}
|
||||
uistate = {0,0,0,0,0};
|
||||
int brushflag,xnew,ynew,eraflag,lineflag, magicflag, keybd_flag, keybd_position, keyglobal, initial_y, gen_key_flag, ide, activeflag, old_x, old_y;
|
||||
int cur_thing, shift_flag, caps_flag, enter_flag;
|
||||
|
||||
|
|
@ -3269,10 +3239,6 @@ static void mainloop(void)
|
|||
event.button.button <= 3)
|
||||
{
|
||||
|
||||
if (keybd_flag == 1)
|
||||
{
|
||||
uistate.mousedown = 1;
|
||||
}
|
||||
|
||||
if (HIT(r_tools))
|
||||
{
|
||||
|
|
@ -5052,11 +5018,6 @@ static void mainloop(void)
|
|||
/* printf("Killing scrolling\n"); */
|
||||
}
|
||||
|
||||
if (keybd_flag == 1)
|
||||
{
|
||||
uistate.mousedown = 0;
|
||||
}
|
||||
|
||||
if (button_down || emulate_button_pressed)
|
||||
{
|
||||
if (cur_tool == TOOL_BRUSH)
|
||||
|
|
@ -5214,21 +5175,7 @@ static void mainloop(void)
|
|||
oldpos_x = event.motion.x;
|
||||
oldpos_y = event.motion.y;
|
||||
|
||||
if (keybd_flag == 1)
|
||||
{
|
||||
// uistate.mousedown = 1;
|
||||
uistate.mousex = event.motion.x;
|
||||
uistate.mousey = event.motion.y;
|
||||
}
|
||||
|
||||
if ((uistate.mousex > initial_x) && (uistate.mousex < initial_x + key_width * 19) && keybd_flag == 1 && ((uistate.mousey > initial_y) && (uistate.mousey < (initial_y + (key_height * 3)))))
|
||||
{
|
||||
keyglobal = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
keyglobal = 0;
|
||||
}
|
||||
/* FIXME: Is doing this every event too intensive? */
|
||||
/* Should I check current cursor first? */
|
||||
|
||||
|
|
@ -5442,10 +5389,6 @@ static void mainloop(void)
|
|||
|
||||
if (button_down || emulate_button_pressed)
|
||||
{
|
||||
if (keybd_flag == 1)
|
||||
{
|
||||
uistate.mousedown = 0;
|
||||
}
|
||||
if (cur_tool == TOOL_BRUSH)
|
||||
{
|
||||
/* Pushing button and moving: Draw with the brush: */
|
||||
|
|
@ -23326,764 +23269,7 @@ int main(int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
// Check whether current mouse position is within a rectangle
|
||||
int regionhit(int x, int y, int w, int h)
|
||||
{
|
||||
if (uistate.mousex < x ||
|
||||
uistate.mousey < y ||
|
||||
uistate.mousex >= x + w ||
|
||||
uistate.mousey >= y + h)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void button(int id, int x, int y)
|
||||
{
|
||||
SDL_Rect dest,desti;
|
||||
SDL_Surface *tmp_imgup;
|
||||
SDL_Event event;
|
||||
dest.x = x;
|
||||
dest.y = y;
|
||||
|
||||
// Check whether the button should be hot
|
||||
if (regionhit(x, y, 24, 24))
|
||||
{
|
||||
uistate.hotitem = id;
|
||||
|
||||
if (uistate.activeitem == 0 && uistate.mousedown)
|
||||
{
|
||||
uistate.activeitem = id;
|
||||
activeflag = 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Render button
|
||||
SDL_BlitSurface(img_btnsm_up, NULL, screen, &dest);
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
desti.x = initial_x;
|
||||
desti.y = initial_y + key_height;
|
||||
SDL_BlitSurface(img_btnsm_down, NULL, screen, &desti);
|
||||
}
|
||||
if (uistate.hotitem == id)
|
||||
{
|
||||
if (uistate.activeitem == id)
|
||||
{
|
||||
// Button is both 'hot' and 'active'
|
||||
if (activeflag == 1)
|
||||
{
|
||||
ide = id;
|
||||
gen_key_flag = 1;
|
||||
activeflag = 0;
|
||||
uistate.activeitem = 0;
|
||||
}
|
||||
SDL_BlitSurface(img_btnsm_down, NULL, screen, &dest);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Button is merely 'hot'
|
||||
SDL_BlitSurface(img_btnsm_down, NULL, screen, &dest);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// button is not hot, but it may be active
|
||||
SDL_BlitSurface(img_btnsm_up, NULL, screen, &dest);
|
||||
}
|
||||
|
||||
if (gen_key_flag == 1)
|
||||
{
|
||||
int i,j;
|
||||
gen_key_flag = 0;
|
||||
enter_flag = 0;
|
||||
SDL_EnableUNICODE(1);
|
||||
// printf("\n entered here %d th time \n", k);
|
||||
// k++;
|
||||
if (ide == 1)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_ESCAPE;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 27;
|
||||
|
||||
}
|
||||
else if (ide == 2)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_BACKQUOTE;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 96;
|
||||
}
|
||||
else if (ide == 3)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_1;
|
||||
if (shift_flag % 2 != 0)
|
||||
event.key.keysym.mod = KMOD_RSHIFT;
|
||||
else
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 49;
|
||||
}
|
||||
else if (ide == 4)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_2;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 50;
|
||||
}
|
||||
else if (ide == 5)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_3;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 51;
|
||||
}
|
||||
else if (ide == 6)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_4;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 52;
|
||||
}
|
||||
else if (ide == 7)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_5;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 53;
|
||||
}
|
||||
else if (ide == 8)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_6;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 54;
|
||||
}
|
||||
else if (ide == 9)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_7;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 55;
|
||||
}
|
||||
else if (ide == 10)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_8;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 56;
|
||||
}
|
||||
else if (ide == 11)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_9;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 57;
|
||||
}
|
||||
else if (ide == 12)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_0;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 48;
|
||||
}
|
||||
else if (ide == 13)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_MINUS;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 45;
|
||||
}
|
||||
else if (ide == 14)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_EQUALS;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 61;
|
||||
}
|
||||
else if (ide == 15)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_BACKSPACE;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 8;
|
||||
}
|
||||
else if (ide == 16)
|
||||
{
|
||||
caps_flag++;
|
||||
enter_flag = 1;
|
||||
}
|
||||
else if (ide == 17)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_a;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 65;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_a;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'a';
|
||||
}
|
||||
}
|
||||
else if (ide == 18)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_b;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 66;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_b;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'b';
|
||||
}
|
||||
}
|
||||
else if (ide == 19)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_c;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 67;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_c;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'c';
|
||||
}
|
||||
}
|
||||
else if (ide == 20)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_d;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 68;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_d;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'d';
|
||||
}
|
||||
}
|
||||
else if (ide == 21)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_e;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 69;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_e;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'e';
|
||||
}
|
||||
}
|
||||
else if (ide == 22)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_f;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 70;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_f;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'f';
|
||||
}
|
||||
}
|
||||
else if (ide == 23)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_g;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 71;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_g;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'g';
|
||||
}
|
||||
}
|
||||
else if (ide == 24)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_h;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 72;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_h;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'h';
|
||||
}
|
||||
}
|
||||
else if (ide == 25)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_i;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 73;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_i;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'i';
|
||||
}
|
||||
}
|
||||
else if (ide == 26)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_j;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 74;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_j;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'j';
|
||||
}
|
||||
}
|
||||
else if (ide == 27)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_k;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 75;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_k;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'k';
|
||||
}
|
||||
}
|
||||
else if (ide == 28)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_l;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 76;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_l;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'l';
|
||||
}
|
||||
}
|
||||
else if (ide == 29)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_m;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 77;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_m;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'m';
|
||||
}
|
||||
}
|
||||
else if (ide == 30)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_n;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 78;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_n;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'n';
|
||||
}
|
||||
}
|
||||
else if (ide == 31)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_LEFTBRACKET;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 91;
|
||||
}
|
||||
else if (ide == 32)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_RIGHTBRACKET;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 93;
|
||||
}
|
||||
else if (ide == 33)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_BACKSLASH;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 92;
|
||||
}
|
||||
else if (ide == 34)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_RETURN;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 13;
|
||||
}
|
||||
else if (ide == 35)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_o;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 79;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_o;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'o';
|
||||
}
|
||||
}
|
||||
else if (ide == 36)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_p;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 80;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_p;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'p';
|
||||
}
|
||||
}
|
||||
else if (ide == 37)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_q;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 81;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_q;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'q';
|
||||
}
|
||||
}
|
||||
else if (ide == 38)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_r;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 82;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_r;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'r';
|
||||
}
|
||||
}
|
||||
else if (ide == 39)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_s;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 83;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_s;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'s';
|
||||
}
|
||||
}
|
||||
else if (ide == 40)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_t;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 84;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_t;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'t';
|
||||
}
|
||||
}
|
||||
else if (ide == 41)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_u;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 85;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_u;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'u';
|
||||
}
|
||||
}
|
||||
else if (ide == 42)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_v;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 86;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_v;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'v';
|
||||
}
|
||||
}
|
||||
else if (ide == 43)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_w;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 87;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_w;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'w';
|
||||
}
|
||||
}
|
||||
else if (ide == 44)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_x;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 88;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_x;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'x';
|
||||
}
|
||||
}
|
||||
else if (ide == 45)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_y;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 89;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_y;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'y';
|
||||
// event.key.keysym.unicode = 0x1008ff79;
|
||||
}
|
||||
}
|
||||
else if (ide == 46)
|
||||
{
|
||||
if (caps_flag % 2 != 0)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_z;
|
||||
event.key.keysym.mod = KMOD_CAPS;
|
||||
event.key.keysym.unicode = 90;
|
||||
}
|
||||
else
|
||||
{
|
||||
event.key.keysym.sym = SDLK_z;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = (Uint16)'z';
|
||||
}
|
||||
}
|
||||
else if (ide == 47)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_COMMA;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 44;
|
||||
}
|
||||
else if (ide == 48)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_PERIOD;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 46;
|
||||
}
|
||||
else if (ide == 49)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_SLASH;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 47;
|
||||
}
|
||||
else if (ide == 50)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_SEMICOLON;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 59;
|
||||
}
|
||||
else if (ide == 51)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_QUOTEDBL;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 34;
|
||||
}
|
||||
else if (ide == 52)
|
||||
{
|
||||
event.key.keysym.sym = SDLK_RALT;
|
||||
event.key.keysym.mod = KMOD_NONE;
|
||||
event.key.keysym.unicode = 307;
|
||||
}
|
||||
else if (ide == 53)
|
||||
{
|
||||
shift_flag++;
|
||||
enter_flag = 1;
|
||||
}
|
||||
|
||||
if (enter_flag == 0)
|
||||
{
|
||||
event.key.type=SDL_KEYDOWN;
|
||||
SDL_PushEvent(&event);
|
||||
event.key.type=SDL_KEYUP;
|
||||
SDL_PushEvent(&event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void keybd_prepare()
|
||||
{
|
||||
/* FIXME we should use the current font to draw the keyboard */
|
||||
char * fontname;
|
||||
fontname = malloc(128);
|
||||
|
||||
sprintf(fontname, "%s/fonts/FreeSansBold.ttf", DATA_PREFIX);
|
||||
fontyy = TTF_OpenFont( fontname, 12 );
|
||||
if (fontyy == NULL)
|
||||
{
|
||||
fprintf(stderr, "\nError: Can't open the font!\n"
|
||||
"The Simple DirectMedia Layer error that occurred was:\n"
|
||||
"%s\n\n", SDL_GetError());
|
||||
exit(1);
|
||||
}
|
||||
uistate.hotitem = 0;
|
||||
free(fontname);
|
||||
}
|
||||
|
||||
void keybd_finish()
|
||||
{
|
||||
if (uistate.mousedown == 0)
|
||||
{
|
||||
uistate.activeitem = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (uistate.activeitem == 0)
|
||||
uistate.activeitem = -1;
|
||||
}
|
||||
TTF_CloseFont (fontyy);
|
||||
}
|
||||
|
||||
void apply_surface (int x, int y, SDL_Surface *source, SDL_Surface *destination, SDL_Rect *clip)
|
||||
{
|
||||
SDL_Rect offset;
|
||||
|
||||
offset.x = x;
|
||||
offset.y = y;
|
||||
|
||||
SDL_BlitSurface( source, clip, destination, &offset );
|
||||
}
|
||||
|
||||
void drawkeybd(void )
|
||||
{
|
||||
|
||||
int i;
|
||||
for (i = 1; i <= 15; i++)
|
||||
{
|
||||
messager = TTF_RenderText_Solid( fontyy, keybd_array[i], textcolory );
|
||||
apply_surface( initial_x + (key_width)*(i-1), initial_y, messager, screen, NULL);
|
||||
SDL_FreeSurface(messager);
|
||||
}
|
||||
|
||||
for (i = 1; i <= 19; i++)
|
||||
{
|
||||
messager = TTF_RenderText_Solid( fontyy, keybd_array[i+15], textcolory );
|
||||
apply_surface( initial_x + (key_width)*(i-1), initial_y + key_height, messager, screen, NULL);
|
||||
SDL_FreeSurface(messager);
|
||||
}
|
||||
|
||||
for (i = 1; i <= 19; i++)
|
||||
{
|
||||
messager = TTF_RenderText_Solid( fontyy, keybd_array[i+34], textcolory );
|
||||
apply_surface( initial_x + (key_width)*(i-1), initial_y + (2 * key_height), messager, screen, NULL);
|
||||
SDL_FreeSurface(messager);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void on_screen_keyboardd(void )
|
||||
{
|
||||
int i;
|
||||
if (key_board != NULL)
|
||||
SDL_FreeSurface(key_board);
|
||||
|
||||
key_board = SDL_CreateRGBSurface(canvas->flags,
|
||||
key_width * 19,
|
||||
key_height * 3,
|
||||
canvas->format->BitsPerPixel,
|
||||
canvas->format->Rmask,
|
||||
canvas->format->Gmask,
|
||||
canvas->format->Bmask, 0);
|
||||
key_board_color_r = 255;
|
||||
key_board_color_g = 255;
|
||||
key_board_color_b = 255;
|
||||
|
||||
SDL_FillRect(key_board, NULL, SDL_MapRGB(key_board->format, 255, 255, 255));
|
||||
if (keybd_position == 0)
|
||||
{
|
||||
initial_y = 400;
|
||||
}
|
||||
else
|
||||
{
|
||||
initial_y = 5;
|
||||
}
|
||||
apply_surface( initial_x, initial_y, key_board, screen, NULL);
|
||||
|
||||
keybd_prepare();
|
||||
|
||||
for (i = 1; i <= 15 ; i++)
|
||||
button (i, initial_x + (key_width)*(i-1), initial_y);
|
||||
|
||||
for (i = 1; i <= 19; i++)
|
||||
button (i+15, initial_x + (key_width)*(i-1), initial_y + key_height);
|
||||
|
||||
for (i = 1; i <= 19; i++)
|
||||
button (i+34, initial_x + (key_width)*(i-1), initial_y + 2*key_height);
|
||||
|
||||
drawkeybd();
|
||||
|
||||
keybd_finish();
|
||||
|
||||
SDL_UpdateRect(screen, 0, 0, 640, 480);
|
||||
|
||||
/* SDL_Delay(10); */ /* FIXME: This should not be necessary! -bjk 2011.04.21 */
|
||||
|
||||
keybd_flag = 1;
|
||||
}
|
||||
|
||||
|
||||
/* Moves a file to the trashcan (or deletes it) */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue