Virtual Keyboard for 320X240 resolution

This commit is contained in:
olimpieri.fabio 2014-11-23 11:03:29 +00:00
parent b987c14078
commit c86f7fbbd8
6 changed files with 41 additions and 20 deletions

View File

@ -203,6 +203,7 @@ dist:uae.dol
cp FreeMono.ttf $@/apps/uae/
cp README.Cloanto-Amiga_Forever $@/apps/uae/docs/
cp images/kb_amiga.png $@/apps/uae/images/
cp images/kb_amiga_small.png $@/apps/uae/images/
cp uaerc.wii $@/uae/uaerc
cp uaerc.smb $@/uae/
cp docs/configuration.txt $@/apps/uae/docs/

BIN
images/kb_amiga_small.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -46,10 +46,8 @@
#include "inputdevice.h"
#include "hotkeys.h"
#include "sdlgfx.h"
#ifdef USE_SDL
#include "guidep/menu.h"
#endif
/* Uncomment for debugging output */
//#define DEBUG
@ -945,9 +943,9 @@ static int graphics_subinit (void)
gui_message ("Unable to set video mode: %s\n", SDL_GetError ());
return 0;
} else {
#ifdef USE_SDL
menu_init(screen); //GEKKO
#endif
/* Just in case we didn't get exactly what we asked for . . . */
fullscreen = ((screen->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN);
is_hwsurface = ((screen->flags & SDL_HWSURFACE) == SDL_HWSURFACE);
@ -1112,6 +1110,9 @@ static void graphics_subshutdown (void)
if (display != screen)
SDL_FreeSurface (screen);
}
menu_deinit(); //GEKKO
display = screen = 0;
mousehack = 0;
@ -1144,9 +1145,6 @@ void graphics_leave (void)
graphics_subshutdown ();
SDL_QuitSubSystem(SDL_INIT_VIDEO);
dumpcustom ();
#ifdef USE_SDL
menu_deinit(); //GEKKO
#endif
}
void graphics_notify_state (int state)

View File

@ -24,6 +24,14 @@
#include "target.h"
#include "gensound.h"
/* Uncomment for debugging output */
//#define DEBUG_VK
#ifdef DEBUG_VK
#define DEBUG_LOG write_log
#else
#define DEBUG_LOG(...) do {} while(0)
#endif
static SDL_Surface *image_kbd, *tmp_surface ;
static int vkb_is_init;
//static int key_code;
@ -68,14 +76,15 @@ static int buttons_margins[KEY_ROWS][KEY_COLS+1] = {
{28,63,95,329,361,396,515,567,593,620},
{14,80,146,212,278,344,411,476,543}};
extern int RATIO;
void VirtualKeyboard_init(SDL_Surface *screen)
{
if (vkb_is_init) return;
VirtualKeyboard.screen = screen;
VirtualKeyboard.x = 3; //Where to print the keyboard
VirtualKeyboard.y = 100;
vkb_is_init = -1;
VirtualKeyboard.x = 2/RATIO; //Where to print the keyboard
VirtualKeyboard.y = 100/RATIO;
char kbd_image[255];
@ -91,7 +100,7 @@ void VirtualKeyboard_init(SDL_Surface *screen)
}
#endif
strcat (kbd_image, KBDIMAGE);
if (RATIO == 1) strcat (kbd_image, KBDIMAGE); else strcat (kbd_image, KBDIMAGE_SMALL);
tmp_surface=IMG_Load(kbd_image);
@ -102,19 +111,23 @@ void VirtualKeyboard_init(SDL_Surface *screen)
memset(VirtualKeyboard.buf, 0, sizeof(VirtualKeyboard.buf));
vkb_is_init = 1;
kbd_is_active=0;
DEBUG_LOG("Virtual keyboard is inited\n");
}
void VirtualKeyboard_fini(void)
{
if (!vkb_is_init) return;
SDL_FreeSurface (image_kbd);
vkb_is_init = -1;
vkb_is_init = 0;
kbd_is_active = 0;
DEBUG_LOG("Virtual keyboard is finished\n");
}
void draw_vk()
{
SDL_Rect dst_rect = {VirtualKeyboard.x, VirtualKeyboard.y, 0, 0};
SDL_BlitSurface(image_kbd, NULL, VirtualKeyboard.screen, &dst_rect);
SDL_BlitSurface(image_kbd, NULL, VirtualKeyboard.screen, &dst_rect);
}
inline void flip_VKB()
@ -181,7 +194,7 @@ struct virtkey *get_key_internal()
x = (xm-border_x);
y = (ym-border_y);
i = get_index(x,y);
i = get_index(x*RATIO,y*RATIO);
if (i==-1) continue;
@ -205,9 +218,7 @@ struct virtkey* virtkbd_get_key()
{
virtkey_t *key;
if (FULL_DISPLAY_X != 640) {msgInfo("Virtual Keyboard only with 640X480 res",4000,NULL);return NULL;}
if (vkb_is_init != 1) return NULL;
if (!vkb_is_init) return NULL;
pause_sound();

View File

@ -26,7 +26,13 @@
#include "options.h"
#include "filesys.h"
/* Uncomment for debugging output */
//#define DEBUG_MENU
#ifdef DEBUG_MENU
#define DEBUG_LOG write_log
#else
#define DEBUG_LOG(...) do {} while(0)
#endif
struct joyinfo {
SDL_Joystick *joy;
@ -1159,10 +1165,13 @@ void menu_init(SDL_Surface *screen)
real_screen = screen;
VirtualKeyboard_init(screen);
is_inited = 1;
DEBUG_LOG("Menu is inited\n");
}
void menu_deinit(void)
{
if (!is_inited) return;
is_inited = 0;
VirtualKeyboard_fini();
@ -1172,6 +1181,7 @@ void menu_deinit(void)
TTF_CloseFont(menu_font10);
TTF_Quit();
DEBUG_LOG("Menu is finished\n");
}

View File

@ -24,6 +24,7 @@
#define USERFILENAME "/uae/uaerc.user"
#define SAVEDFILENAME "/uae/uaerc.saved"
#define KBDIMAGE "/apps/uae/images/kb_amiga.png"
#define KBDIMAGE_SMALL "/apps/uae/images/kb_amiga_small.png"
#define DEFPRTNAME "lpr"
#define DEFSERNAME "/dev/ttyS1"