Third (final??) attemp at a new Virtual Keyboard (#75)

* Atari Console keys

Added: Help, Start, Select, Option and Reset keys.

* Atari TAB, RETURN and SPACE keys

* Return?

* Start, Option, Help and Emulator Menu buttons

* Help key on Pad

Added Atari Help key to joypad mapping.

* First try to new keyboard

* Shit on VKBD

* Control key handle

* Shift text UPPER when pressed

* Atari 8bit font

* Virtual Keyboard keys with Control

* Minor error

* 1st attemp to new vkbd layout

Virtual Keyoboard recreated. Added atari font, Ctrl and Shift funcionality.
Console buttons on second page.

* % and null character display on VKBD

* Revert "% and null character display on VKBD"

This reverts commit f4eb848f26.

* Displaying % and heart on VKBD - maybe...

* Set max key description lenght to 3

* Always display only 3 characters of key desc.

* Schift & Control status on VKBD

* Second page of VKBD

New second page.
New layout, atari cursor keys and F1-F4 now working.

* Minor mistake :)

* Correct atari F1-F4 handling

* Oooops... minor error

* Better keys handling

* Better Shift & Control indicators

* Much better Shift and Control colors :)

* Disable joystick input if Virtual Keyboard active

Only for testing

* Revert "Disable joystick input if Virtual Keyboard active"

This reverts commit 8b942c29e0.

* One page VKBD layout

Atari keyboard fits in one page!

* Atari del/Bk Sp properly handling

* VKBD opacity

Only for testing

* Keys names opacity

Test only

* Still testing VKBD opacity

* minor error

Still testing opacity

* Added VKbd opacity witch switch.

* Oppps...
This commit is contained in:
Pecusx
2021-05-29 09:37:42 +02:00
committed by GitHub
parent 86c87b543f
commit c39dc2ab03
8 changed files with 559 additions and 426 deletions
+6 -1
View File
@@ -41,6 +41,7 @@ char RPATH[512];
//EMU FLAGS //EMU FLAGS
int NPAGE=-1, KCOL=1, BKGCOLOR=0; int NPAGE=-1, KCOL=1, BKGCOLOR=0;
int SHOWKEY=-1; int SHOWKEY=-1;
int VKBD_OPACITY=-1;
#if defined(ANDROID) || defined(__ANDROID__) #if defined(ANDROID) || defined(__ANDROID__)
int MOUSE_EMULATED=1; int MOUSE_EMULATED=1;
@@ -257,7 +258,11 @@ void retro_virtualkb(void)
SHOWKEY=-SHOWKEY; SHOWKEY=-SHOWKEY;
} }
else if(i==-5) else if(i==-5)
oldi=-1; {
//VKbd opacitu on/off
VKBD_OPACITY=-VKBD_OPACITY;
oldi=-1;
}
else if(i==-6) else if(i==-6)
oldi=-1; oldi=-1;
else if(i==-7) else if(i==-7)
+261 -265
View File
@@ -1,270 +1,266 @@
/****************************************************************/ /**************************************/
/* Apple IIgs emulator */ /* Atari 800 emulator */
/* */ /* */
/* Apple 2GS Original fonts. */ /* Atari 8bit Original fonts. */
/* All the characters are coded in their original set. */ /* */
/* Only the USA keyboard is recognized with ROM 01. */ /**************************************/
/* */
/****************************************************************/
unsigned char font_array[256*8] unsigned char font_array[256*8]
= { = {
0xc7, 0xbb, 0xab, 0xa3, 0xa7, 0xbf, 0xc3, 0xff, 0x00, 0x36, 0x7F, 0x7F, 0x3E, 0x1C, 0x08, 0x00,
0xef, 0xd7, 0xbb, 0xbb, 0x83, 0xbb, 0xbb, 0xff, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x18, 0x18, 0x18,
0x87, 0xbb, 0xbb, 0x87, 0xbb, 0xbb, 0x87, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
0xc7, 0xbb, 0xbf, 0xbf, 0xbf, 0xbb, 0xc7, 0xff, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x00, 0x00, 0x00,
0x87, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x87, 0xff, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x18, 0x18, 0x18,
0x83, 0xbf, 0xbf, 0x87, 0xbf, 0xbf, 0x83, 0xff, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x18, 0x18, 0x18,
0x83, 0xbf, 0xbf, 0x87, 0xbf, 0xbf, 0xbf, 0xff, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0,
0xc3, 0xbf, 0xbf, 0xbf, 0xb3, 0xbb, 0xc3, 0xff, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03,
0xbb, 0xbb, 0xbb, 0x83, 0xbb, 0xbb, 0xbb, 0xff, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF,
0xc7, 0xef, 0xef, 0xef, 0xef, 0xef, 0xc7, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F,
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xbb, 0xc7, 0xff, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF,
0xbb, 0xb7, 0xaf, 0x9f, 0xaf, 0xb7, 0xbb, 0xff, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00,
0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0x83, 0xff, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00,
0xbb, 0x93, 0xab, 0xab, 0xbb, 0xbb, 0xbb, 0xff, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xbb, 0xbb, 0x9b, 0xab, 0xb3, 0xbb, 0xbb, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0xc7, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xc7, 0xff, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0,
0x87, 0xbb, 0xbb, 0x87, 0xbf, 0xbf, 0xbf, 0xff, 0x00, 0x1C, 0x1C, 0x77, 0x77, 0x08, 0x1C, 0x00,
0xc7, 0xbb, 0xbb, 0xbb, 0xab, 0xb7, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x18, 0x18, 0x18,
0x87, 0xbb, 0xbb, 0x87, 0xaf, 0xb7, 0xbb, 0xff, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0xc7, 0xbb, 0xbf, 0xc7, 0xfb, 0xbb, 0xc7, 0xff, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18,
0x83, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xff, 0x00, 0x00, 0x3C, 0x7E, 0x7E, 0x7E, 0x3C, 0x00,
0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xc7, 0xff, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xd7, 0xef, 0xff, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
0xbb, 0xbb, 0xbb, 0xab, 0xab, 0x93, 0xbb, 0xff, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x18, 0x18,
0xbb, 0xbb, 0xd7, 0xef, 0xd7, 0xbb, 0xbb, 0xff, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0xbb, 0xbb, 0xd7, 0xef, 0xef, 0xef, 0xef, 0xff, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
0x83, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x83, 0xff, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x00, 0x00, 0x00,
0x83, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x83, 0xff, 0x78, 0x60, 0x78, 0x60, 0x7E, 0x18, 0x1E, 0x00,
0xff, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xff, 0xff, 0x00, 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x00,
0x83, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0x83, 0xff, 0x00, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00,
0xff, 0xff, 0xef, 0xd7, 0xbb, 0xff, 0xff, 0xff, 0x00, 0x18, 0x30, 0x7E, 0x30, 0x18, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x18, 0x0C, 0x7E, 0x0C, 0x18, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xef, 0xef, 0xef, 0xef, 0xef, 0xff, 0xef, 0xff,
0xd7, 0xd7, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff,
0xd7, 0xd7, 0x83, 0xd7, 0x83, 0xd7, 0xd7, 0xff,
0xef, 0xc3, 0xaf, 0xc7, 0xeb, 0x87, 0xef, 0xff,
0x9f, 0x9b, 0xf7, 0xef, 0xdf, 0xb3, 0xf3, 0xff,
0xdf, 0xaf, 0xaf, 0xdf, 0xab, 0xb7, 0xcb, 0xff,
0xef, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff,
0xef, 0xdf, 0xbf, 0xbf, 0xbf, 0xdf, 0xef, 0xff,
0xef, 0xf7, 0xfb, 0xfb, 0xfb, 0xf7, 0xef, 0xff,
0xef, 0xab, 0xc7, 0xef, 0xc7, 0xab, 0xef, 0xff,
0xff, 0xef, 0xef, 0x83, 0xef, 0xef, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xdf, 0xff,
0xff, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff,
0xff, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0xff, 0xff,
0xc7, 0xbb, 0xb3, 0xab, 0x9b, 0xbb, 0xc7, 0xff,
0xef, 0xcf, 0xef, 0xef, 0xef, 0xef, 0xc7, 0xff,
0xc7, 0xbb, 0xfb, 0xe7, 0xdf, 0xbf, 0x83, 0xff,
0x83, 0xfb, 0xf7, 0xe7, 0xfb, 0xbb, 0xc7, 0xff,
0xf7, 0xe7, 0xd7, 0xb7, 0x83, 0xf7, 0xf7, 0xff,
0x83, 0xbf, 0x87, 0xfb, 0xfb, 0xbb, 0xc7, 0xff,
0xe3, 0xdf, 0xbf, 0x87, 0xbb, 0xbb, 0xc7, 0xff,
0x83, 0xfb, 0xf7, 0xef, 0xdf, 0xdf, 0xdf, 0xff,
0xc7, 0xbb, 0xbb, 0xc7, 0xbb, 0xbb, 0xc7, 0xff,
0xc7, 0xbb, 0xbb, 0xc3, 0xfb, 0xf7, 0x8f, 0xff,
0xff, 0xff, 0xef, 0xff, 0xef, 0xff, 0xff, 0xff,
0xff, 0xff, 0xef, 0xff, 0xef, 0xef, 0xdf, 0xff,
0xf7, 0xef, 0xdf, 0xbf, 0xdf, 0xef, 0xf7, 0xff,
0xff, 0xff, 0x83, 0xff, 0x83, 0xff, 0xff, 0xff,
0xdf, 0xef, 0xf7, 0xfb, 0xf7, 0xef, 0xdf, 0xff,
0xc7, 0xbb, 0xf7, 0xef, 0xef, 0xff, 0xef, 0xff,
0x08, 0x10, 0x6c, 0xfe, 0xfc, 0xfc, 0x7e, 0x6c,
0x08, 0x10, 0x6c, 0x82, 0x84, 0x84, 0x52, 0x6c,
0x00, 0x00, 0x40, 0x60, 0x70, 0x78, 0x6c, 0x42,
0xfe, 0x44, 0x28, 0x10, 0x10, 0x28, 0x54, 0xfe,
0x00, 0x02, 0x04, 0x88, 0x50, 0x20, 0x20, 0x00,
0xfe, 0xfc, 0xfa, 0x36, 0xae, 0xde, 0xde, 0xfe,
0xfc, 0xfc, 0xfc, 0xdc, 0x9c, 0x00, 0x9e, 0xde,
0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0xfe,
0x10, 0x20, 0x40, 0xfe, 0x40, 0x20, 0x10, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54,
0x10, 0x10, 0x10, 0x10, 0x92, 0x54, 0x38, 0x10,
0x10, 0x38, 0x54, 0x92, 0x10, 0x10, 0x10, 0x10,
0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x02, 0x02, 0x22, 0x62, 0xfe, 0x60, 0x20,
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
0xc8, 0x18, 0x38, 0x7e, 0x38, 0x18, 0x08, 0xf6,
0x26, 0x30, 0x38, 0xfc, 0x38, 0x30, 0x20, 0xde,
0x02, 0x12, 0x10, 0xfe, 0x7c, 0x38, 0x12, 0x02,
0x02, 0x12, 0x38, 0x7c, 0xfe, 0x10, 0x12, 0x02,
0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xfe,
0x10, 0x08, 0x04, 0xfe, 0x04, 0x08, 0x10, 0x00,
0x54, 0xaa, 0x54, 0xaa, 0x54, 0xaa, 0x54, 0xaa,
0xaa, 0x54, 0xaa, 0x54, 0xaa, 0x54, 0xaa, 0x54,
0x00, 0x7c, 0x82, 0x80, 0x80, 0x80, 0xfe, 0x00,
0x00, 0x00, 0xfc, 0x02, 0x02, 0x02, 0xfe, 0x00,
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00,
0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
0x28, 0x28, 0xee, 0x00, 0xee, 0x28, 0x28, 0x00,
0xfe, 0x02, 0x02, 0x32, 0x32, 0x02, 0x02, 0xfe,
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
0xdf, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xc7, 0xfb, 0xc3, 0xbb, 0xc3, 0xff,
0xbf, 0xbf, 0x87, 0xbb, 0xbb, 0xbb, 0x87, 0xff,
0xff, 0xff, 0xc3, 0xbf, 0xbf, 0xbf, 0xc3, 0xff,
0xfb, 0xfb, 0xc3, 0xbb, 0xbb, 0xbb, 0xc3, 0xff,
0xff, 0xff, 0xc7, 0xbb, 0x83, 0xbf, 0xc3, 0xff,
0xe7, 0xdb, 0xdf, 0x87, 0xdf, 0xdf, 0xdf, 0xff,
0xff, 0xff, 0xc7, 0xbb, 0xbb, 0xc3, 0xfb, 0xc7,
0xbf, 0xbf, 0x87, 0xbb, 0xbb, 0xbb, 0xbb, 0xff,
0xef, 0xff, 0xcf, 0xef, 0xef, 0xef, 0xc7, 0xff,
0xf7, 0xff, 0xe7, 0xf7, 0xf7, 0xf7, 0xb7, 0xcf,
0xbf, 0xbf, 0xbb, 0xb7, 0x8f, 0xb7, 0xbb, 0xff,
0xcf, 0xef, 0xef, 0xef, 0xef, 0xef, 0xc7, 0xff,
0xff, 0xff, 0x93, 0xab, 0xab, 0xab, 0xbb, 0xff,
0xff, 0xff, 0x87, 0xbb, 0xbb, 0xbb, 0xbb, 0xff,
0xff, 0xff, 0xc7, 0xbb, 0xbb, 0xbb, 0xc7, 0xff,
0xff, 0xff, 0x87, 0xbb, 0xbb, 0x87, 0xbf, 0xbf,
0xff, 0xff, 0xc3, 0xbb, 0xbb, 0xc3, 0xfb, 0xfb,
0xff, 0xff, 0xa3, 0x9f, 0xbf, 0xbf, 0xbf, 0xff,
0xff, 0xff, 0xc3, 0xbf, 0xc7, 0xfb, 0x87, 0xff,
0xdf, 0xdf, 0x87, 0xdf, 0xdf, 0xdb, 0xe7, 0xff,
0xff, 0xff, 0xbb, 0xbb, 0xbb, 0xb3, 0xcb, 0xff,
0xff, 0xff, 0xbb, 0xbb, 0xbb, 0xd7, 0xef, 0xff,
0xff, 0xff, 0xbb, 0xbb, 0xab, 0xab, 0x93, 0xff,
0xff, 0xff, 0xbb, 0xd7, 0xef, 0xd7, 0xbb, 0xff,
0xff, 0xff, 0xbb, 0xbb, 0xbb, 0xc3, 0xfb, 0xc7,
0xff, 0xff, 0x83, 0xf7, 0xef, 0xdf, 0x83, 0xff,
0xe3, 0xcf, 0xcf, 0x9f, 0xcf, 0xcf, 0xe3, 0xff,
0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef,
0x8f, 0xe7, 0xe7, 0xf3, 0xe7, 0xe7, 0x8f, 0xff,
0xcb, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xab, 0xd7, 0xab, 0xd7, 0xab, 0xff, 0xff,
0x38, 0x44, 0x54, 0x5c, 0x58, 0x40, 0x3c, 0x00,
0x10, 0x28, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00,
0x78, 0x44, 0x44, 0x78, 0x44, 0x44, 0x78, 0x00,
0x38, 0x44, 0x40, 0x40, 0x40, 0x44, 0x38, 0x00,
0x78, 0x44, 0x44, 0x44, 0x44, 0x44, 0x78, 0x00,
0x7c, 0x40, 0x40, 0x78, 0x40, 0x40, 0x7c, 0x00,
0x7c, 0x40, 0x40, 0x78, 0x40, 0x40, 0x40, 0x00,
0x3c, 0x40, 0x40, 0x40, 0x4c, 0x44, 0x3c, 0x00,
0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00,
0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00,
0x04, 0x04, 0x04, 0x04, 0x04, 0x44, 0x38, 0x00,
0x44, 0x48, 0x50, 0x60, 0x50, 0x48, 0x44, 0x00,
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c, 0x00,
0x44, 0x6c, 0x54, 0x54, 0x44, 0x44, 0x44, 0x00,
0x44, 0x44, 0x64, 0x54, 0x4c, 0x44, 0x44, 0x00,
0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00,
0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x40, 0x00,
0x38, 0x44, 0x44, 0x44, 0x54, 0x48, 0x34, 0x00,
0x78, 0x44, 0x44, 0x78, 0x50, 0x48, 0x44, 0x00,
0x38, 0x44, 0x40, 0x38, 0x04, 0x44, 0x38, 0x00,
0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00,
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00,
0x44, 0x44, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00,
0x44, 0x44, 0x44, 0x54, 0x54, 0x6c, 0x44, 0x00,
0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44, 0x00,
0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x00,
0x7c, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7c, 0x00,
0x7c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7c, 0x00,
0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00,
0x7c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7c, 0x00,
0x00, 0x00, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x00,
0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
0x28, 0x28, 0x7c, 0x28, 0x7c, 0x28, 0x28, 0x00, 0x00, 0x66, 0xFF, 0x66, 0x66, 0xFF, 0x66, 0x00,
0x10, 0x3c, 0x50, 0x38, 0x14, 0x78, 0x10, 0x00, 0x18, 0x3E, 0x60, 0x3C, 0x06, 0x7C, 0x18, 0x00,
0x60, 0x64, 0x08, 0x10, 0x20, 0x4c, 0x0c, 0x00, 0x00, 0x66, 0x6C, 0x18, 0x30, 0x66, 0x46, 0x00,
0x20, 0x50, 0x50, 0x20, 0x54, 0x48, 0x34, 0x00, 0x1C, 0x36, 0x1C, 0x38, 0x6F, 0x66, 0x3B, 0x00,
0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
0x10, 0x20, 0x40, 0x40, 0x40, 0x20, 0x10, 0x00, 0x00, 0x0E, 0x1C, 0x18, 0x18, 0x1C, 0x0E, 0x00,
0x10, 0x08, 0x04, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00, 0x70, 0x38, 0x18, 0x18, 0x38, 0x70, 0x00,
0x10, 0x54, 0x38, 0x10, 0x38, 0x54, 0x10, 0x00, 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00,
0x00, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30,
0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00,
0x38, 0x44, 0x4c, 0x54, 0x64, 0x44, 0x38, 0x00, 0x00, 0x3C, 0x66, 0x6E, 0x76, 0x66, 0x3C, 0x00,
0x10, 0x30, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00, 0x00, 0x18, 0x38, 0x18, 0x18, 0x18, 0x7E, 0x00,
0x38, 0x44, 0x04, 0x18, 0x20, 0x40, 0x7c, 0x00, 0x00, 0x3C, 0x66, 0x0C, 0x18, 0x30, 0x7E, 0x00,
0x7c, 0x04, 0x08, 0x18, 0x04, 0x44, 0x38, 0x00, 0x00, 0x7E, 0x0C, 0x18, 0x0C, 0x66, 0x3C, 0x00,
0x08, 0x18, 0x28, 0x48, 0x7c, 0x08, 0x08, 0x00, 0x00, 0x0C, 0x1C, 0x3C, 0x6C, 0x7E, 0x0C, 0x00,
0x7c, 0x40, 0x78, 0x04, 0x04, 0x44, 0x38, 0x00, 0x00, 0x7E, 0x60, 0x7C, 0x06, 0x66, 0x3C, 0x00,
0x1c, 0x20, 0x40, 0x78, 0x44, 0x44, 0x38, 0x00, 0x00, 0x3C, 0x60, 0x7C, 0x66, 0x66, 0x3C, 0x00,
0x7c, 0x04, 0x08, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00, 0x7E, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x00,
0x38, 0x44, 0x44, 0x38, 0x44, 0x44, 0x38, 0x00, 0x00, 0x3C, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0x00,
0x38, 0x44, 0x44, 0x3c, 0x04, 0x08, 0x70, 0x00, 0x00, 0x3C, 0x66, 0x3E, 0x06, 0x0C, 0x38, 0x00,
0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00,
0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x20, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x30,
0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08, 0x00, 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00,
0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00,
0x20, 0x10, 0x08, 0x04, 0x08, 0x10, 0x20, 0x00, 0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00,
0x38, 0x44, 0x08, 0x10, 0x10, 0x00, 0x10, 0x00, 0x00, 0x3C, 0x66, 0x0C, 0x18, 0x00, 0x18, 0x00,
0x38, 0x44, 0x54, 0x5c, 0x58, 0x40, 0x3c, 0x00, 0x00, 0x3C, 0x66, 0x6E, 0x6E, 0x60, 0x3E, 0x00,
0x10, 0x28, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00, 0x00, 0x18, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x00,
0x78, 0x44, 0x44, 0x78, 0x44, 0x44, 0x78, 0x00, 0x00, 0x7C, 0x66, 0x7C, 0x66, 0x66, 0x7C, 0x00,
0x38, 0x44, 0x40, 0x40, 0x40, 0x44, 0x38, 0x00, 0x00, 0x3C, 0x66, 0x60, 0x60, 0x66, 0x3C, 0x00,
0x78, 0x44, 0x44, 0x44, 0x44, 0x44, 0x78, 0x00, 0x00, 0x78, 0x6C, 0x66, 0x66, 0x6C, 0x78, 0x00,
0x7c, 0x40, 0x40, 0x78, 0x40, 0x40, 0x7c, 0x00, 0x00, 0x7E, 0x60, 0x7C, 0x60, 0x60, 0x7E, 0x00,
0x7c, 0x40, 0x40, 0x78, 0x40, 0x40, 0x40, 0x00, 0x00, 0x7E, 0x60, 0x7C, 0x60, 0x60, 0x60, 0x00,
0x3c, 0x40, 0x40, 0x40, 0x4c, 0x44, 0x3c, 0x00, 0x00, 0x3E, 0x60, 0x60, 0x6E, 0x66, 0x3E, 0x00,
0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00, 0x00, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00,
0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00,
0x04, 0x04, 0x04, 0x04, 0x04, 0x44, 0x38, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x66, 0x3C, 0x00,
0x44, 0x48, 0x50, 0x60, 0x50, 0x48, 0x44, 0x00, 0x00, 0x66, 0x6C, 0x78, 0x78, 0x6C, 0x66, 0x00,
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7E, 0x00,
0x44, 0x6c, 0x54, 0x54, 0x44, 0x44, 0x44, 0x00, 0x00, 0x63, 0x77, 0x7F, 0x6B, 0x63, 0x63, 0x00,
0x44, 0x44, 0x64, 0x54, 0x4c, 0x44, 0x44, 0x00, 0x00, 0x66, 0x76, 0x7E, 0x7E, 0x6E, 0x66, 0x00,
0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00,
0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x40, 0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x00,
0x38, 0x44, 0x44, 0x44, 0x54, 0x48, 0x34, 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x6C, 0x36, 0x00,
0x78, 0x44, 0x44, 0x78, 0x50, 0x48, 0x44, 0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0x00,
0x38, 0x44, 0x40, 0x38, 0x04, 0x44, 0x38, 0x00, 0x00, 0x3C, 0x60, 0x3C, 0x06, 0x06, 0x3C, 0x00,
0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x00,
0x44, 0x44, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00,
0x44, 0x44, 0x44, 0x54, 0x54, 0x6c, 0x44, 0x00, 0x00, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00,
0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44, 0x00, 0x00, 0x66, 0x66, 0x3C, 0x3C, 0x66, 0x66, 0x00,
0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x00,
0x7c, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7c, 0x00, 0x00, 0x7E, 0x0C, 0x18, 0x30, 0x60, 0x7E, 0x00,
0x7c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7c, 0x00, 0x00, 0x1E, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00,
0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x40, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00,
0x7c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7c, 0x00, 0x00, 0x78, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00,
0x00, 0x00, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00,
0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x7E, 0x3C, 0x18, 0x00,
0x00, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c, 0x00, 0x00, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00,
0x40, 0x40, 0x78, 0x44, 0x44, 0x44, 0x78, 0x00, 0x00, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x00,
0x00, 0x00, 0x3c, 0x40, 0x40, 0x40, 0x3c, 0x00, 0x00, 0x00, 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x00,
0x04, 0x04, 0x3c, 0x44, 0x44, 0x44, 0x3c, 0x00, 0x00, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3E, 0x00,
0x00, 0x00, 0x38, 0x44, 0x7c, 0x40, 0x3c, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00,
0x18, 0x24, 0x20, 0x78, 0x20, 0x20, 0x20, 0x00, 0x00, 0x0E, 0x18, 0x3E, 0x18, 0x18, 0x18, 0x00,
0x00, 0x00, 0x38, 0x44, 0x44, 0x3c, 0x04, 0x38, 0x00, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x7C,
0x40, 0x40, 0x78, 0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x00,
0x10, 0x00, 0x30, 0x10, 0x10, 0x10, 0x38, 0x00, 0x00, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3C, 0x00,
0x08, 0x00, 0x18, 0x08, 0x08, 0x08, 0x48, 0x30, 0x00, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x3C,
0x40, 0x40, 0x44, 0x48, 0x70, 0x48, 0x44, 0x00, 0x00, 0x60, 0x60, 0x6C, 0x78, 0x6C, 0x66, 0x00,
0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00,
0x00, 0x00, 0x6c, 0x54, 0x54, 0x54, 0x44, 0x00, 0x00, 0x00, 0x66, 0x7F, 0x7F, 0x6B, 0x63, 0x00,
0x00, 0x00, 0x78, 0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x00,
0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00,
0x00, 0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60,
0x00, 0x00, 0x3c, 0x44, 0x44, 0x3c, 0x04, 0x04, 0x00, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x06,
0x00, 0x00, 0x5c, 0x60, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7C, 0x66, 0x60, 0x60, 0x60, 0x00,
0x00, 0x00, 0x3c, 0x40, 0x38, 0x04, 0x78, 0x00, 0x00, 0x00, 0x3E, 0x60, 0x3C, 0x06, 0x7C, 0x00,
0x20, 0x20, 0x78, 0x20, 0x20, 0x24, 0x18, 0x00, 0x00, 0x18, 0x7E, 0x18, 0x18, 0x18, 0x0E, 0x00,
0x00, 0x00, 0x44, 0x44, 0x44, 0x4c, 0x34, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00,
0x00, 0x00, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00,
0x00, 0x00, 0x44, 0x44, 0x54, 0x54, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x3E, 0x36, 0x00,
0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x00,
0x00, 0x00, 0x44, 0x44, 0x44, 0x3c, 0x04, 0x38, 0x00, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x0C, 0x78,
0x00, 0x00, 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x7E, 0x0C, 0x18, 0x30, 0x7E, 0x00,
0x1c, 0x30, 0x30, 0x60, 0x30, 0x30, 0x1c, 0x00, 0x00, 0x18, 0x3C, 0x7E, 0x7E, 0x18, 0x3C, 0x00,
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x70, 0x18, 0x18, 0x0c, 0x18, 0x18, 0x70, 0x00, 0x00, 0x7E, 0x78, 0x7C, 0x6E, 0x66, 0x06, 0x00,
0x34, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x38, 0x78, 0x38, 0x18, 0x08, 0x00,
0x00, 0x54, 0x28, 0x54, 0x28, 0x54, 0x00, 0x00, 0x10, 0x18, 0x1C, 0x1E, 0x1C, 0x18, 0x10, 0x00,
0xFF, 0xC9, 0x80, 0x80, 0xC1, 0xE3, 0xF7, 0xFF,
0xE7, 0xE7, 0xE7, 0xE0, 0xE0, 0xE7, 0xE7, 0xE7,
0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
0xE7, 0xE7, 0xE7, 0x07, 0x07, 0xFF, 0xFF, 0xFF,
0xE7, 0xE7, 0xE7, 0x07, 0x07, 0xE7, 0xE7, 0xE7,
0xFF, 0xFF, 0xFF, 0x07, 0x07, 0xE7, 0xE7, 0xE7,
0xFC, 0xF8, 0xF1, 0xE3, 0xC7, 0x8F, 0x1F, 0x3F,
0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC,
0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0,
0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00,
0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F,
0xFF, 0xE3, 0xE3, 0x88, 0x88, 0xF7, 0xE3, 0xFF,
0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE7, 0xE7, 0xE7,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0xE7, 0xE7, 0xE7, 0x00, 0x00, 0xE7, 0xE7, 0xE7,
0xFF, 0xFF, 0xC3, 0x81, 0x81, 0x81, 0xC3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xE7, 0xE7, 0xE7,
0xE7, 0xE7, 0xE7, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
0xE7, 0xE7, 0xE7, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF,
0x87, 0x9F, 0x87, 0x9F, 0x81, 0xE7, 0xE1, 0xFF,
0xFF, 0xE7, 0xC3, 0x81, 0xE7, 0xE7, 0xE7, 0xFF,
0xFF, 0xE7, 0xE7, 0xE7, 0x81, 0xC3, 0xE7, 0xFF,
0xFF, 0xE7, 0xCF, 0x81, 0xCF, 0xE7, 0xFF, 0xFF,
0xFF, 0xE7, 0xF3, 0x81, 0xF3, 0xE7, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, 0xE7, 0xFF,
0xFF, 0x99, 0x99, 0x99, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x99, 0x00, 0x99, 0x99, 0x00, 0x99, 0xFF,
0xE7, 0xC1, 0x9F, 0xC3, 0xF9, 0x83, 0xE7, 0xFF,
0xFF, 0x99, 0x93, 0xE7, 0xCF, 0x99, 0xB9, 0xFF,
0xE3, 0xC9, 0xE3, 0xC7, 0x90, 0x99, 0xC4, 0xFF,
0xFF, 0xE7, 0xE7, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xF1, 0xE3, 0xE7, 0xE7, 0xE3, 0xF1, 0xFF,
0xFF, 0x8F, 0xC7, 0xE7, 0xE7, 0xC7, 0x8F, 0xFF,
0xFF, 0x99, 0xC3, 0x00, 0xC3, 0x99, 0xFF, 0xFF,
0xFF, 0xE7, 0xE7, 0x81, 0xE7, 0xE7, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0xCF,
0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0xFF,
0xFF, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0xBF, 0xFF,
0xFF, 0xC3, 0x99, 0x91, 0x89, 0x99, 0xC3, 0xFF,
0xFF, 0xE7, 0xC7, 0xE7, 0xE7, 0xE7, 0x81, 0xFF,
0xFF, 0xC3, 0x99, 0xF3, 0xE7, 0xCF, 0x81, 0xFF,
0xFF, 0x81, 0xF3, 0xE7, 0xF3, 0x99, 0xC3, 0xFF,
0xFF, 0xF3, 0xE3, 0xC3, 0x93, 0x81, 0xF3, 0xFF,
0xFF, 0x81, 0x9F, 0x83, 0xF9, 0x99, 0xC3, 0xFF,
0xFF, 0xC3, 0x9F, 0x83, 0x99, 0x99, 0xC3, 0xFF,
0xFF, 0x81, 0xF9, 0xF3, 0xE7, 0xCF, 0xCF, 0xFF,
0xFF, 0xC3, 0x99, 0xC3, 0x99, 0x99, 0xC3, 0xFF,
0xFF, 0xC3, 0x99, 0xC1, 0xF9, 0xF3, 0xC7, 0xFF,
0xFF, 0xFF, 0xE7, 0xE7, 0xFF, 0xE7, 0xE7, 0xFF,
0xFF, 0xFF, 0xE7, 0xE7, 0xFF, 0xE7, 0xE7, 0xCF,
0xF9, 0xF3, 0xE7, 0xCF, 0xE7, 0xF3, 0xF9, 0xFF,
0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFF,
0x9F, 0xCF, 0xE7, 0xF3, 0xE7, 0xCF, 0x9F, 0xFF,
0xFF, 0xC3, 0x99, 0xF3, 0xE7, 0xFF, 0xE7, 0xFF,
0xFF, 0xC3, 0x99, 0x91, 0x91, 0x9F, 0xC1, 0xFF,
0xFF, 0xE7, 0xC3, 0x99, 0x99, 0x81, 0x99, 0xFF,
0xFF, 0x83, 0x99, 0x83, 0x99, 0x99, 0x83, 0xFF,
0xFF, 0xC3, 0x99, 0x9F, 0x9F, 0x99, 0xC3, 0xFF,
0xFF, 0x87, 0x93, 0x99, 0x99, 0x93, 0x87, 0xFF,
0xFF, 0x81, 0x9F, 0x83, 0x9F, 0x9F, 0x81, 0xFF,
0xFF, 0x81, 0x9F, 0x83, 0x9F, 0x9F, 0x9F, 0xFF,
0xFF, 0xC1, 0x9F, 0x9F, 0x91, 0x99, 0xC1, 0xFF,
0xFF, 0x99, 0x99, 0x81, 0x99, 0x99, 0x99, 0xFF,
0xFF, 0x81, 0xE7, 0xE7, 0xE7, 0xE7, 0x81, 0xFF,
0xFF, 0xF9, 0xF9, 0xF9, 0xF9, 0x99, 0xC3, 0xFF,
0xFF, 0x99, 0x93, 0x87, 0x87, 0x93, 0x99, 0xFF,
0xFF, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x81, 0xFF,
0xFF, 0x9C, 0x88, 0x80, 0x94, 0x9C, 0x9C, 0xFF,
0xFF, 0x99, 0x89, 0x81, 0x81, 0x91, 0x99, 0xFF,
0xFF, 0xC3, 0x99, 0x99, 0x99, 0x99, 0xC3, 0xFF,
0xFF, 0x83, 0x99, 0x99, 0x83, 0x9F, 0x9F, 0xFF,
0xFF, 0xC3, 0x99, 0x99, 0x99, 0x93, 0xC9, 0xFF,
0xFF, 0x83, 0x99, 0x99, 0x83, 0x93, 0x99, 0xFF,
0xFF, 0xC3, 0x9F, 0xC3, 0xF9, 0xF9, 0xC3, 0xFF,
0xFF, 0x81, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF,
0xFF, 0x99, 0x99, 0x99, 0x99, 0x99, 0x81, 0xFF,
0xFF, 0x99, 0x99, 0x99, 0x99, 0xC3, 0xE7, 0xFF,
0xFF, 0x9C, 0x9C, 0x94, 0x80, 0x88, 0x9C, 0xFF,
0xFF, 0x99, 0x99, 0xC3, 0xC3, 0x99, 0x99, 0xFF,
0xFF, 0x99, 0x99, 0xC3, 0xE7, 0xE7, 0xE7, 0xFF,
0xFF, 0x81, 0xF3, 0xE7, 0xCF, 0x9F, 0x81, 0xFF,
0xFF, 0xE1, 0xE7, 0xE7, 0xE7, 0xE7, 0xE1, 0xFF,
0xFF, 0xBF, 0x9F, 0xCF, 0xE7, 0xF3, 0xF9, 0xFF,
0xFF, 0x87, 0xE7, 0xE7, 0xE7, 0xE7, 0x87, 0xFF,
0xFF, 0xF7, 0xE3, 0xC9, 0x9C, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF,
0xFF, 0xE7, 0xC3, 0x81, 0x81, 0xC3, 0xE7, 0xFF,
0xFF, 0xFF, 0xC3, 0xF9, 0xC1, 0x99, 0xC1, 0xFF,
0xFF, 0x9F, 0x9F, 0x83, 0x99, 0x99, 0x83, 0xFF,
0xFF, 0xFF, 0xC3, 0x9F, 0x9F, 0x9F, 0xC3, 0xFF,
0xFF, 0xF9, 0xF9, 0xC1, 0x99, 0x99, 0xC1, 0xFF,
0xFF, 0xFF, 0xC3, 0x99, 0x81, 0x9F, 0xC3, 0xFF,
0xFF, 0xF1, 0xE7, 0xC1, 0xE7, 0xE7, 0xE7, 0xFF,
0xFF, 0xFF, 0xC1, 0x99, 0x99, 0xC1, 0xF9, 0x83,
0xFF, 0x9F, 0x9F, 0x83, 0x99, 0x99, 0x99, 0xFF,
0xFF, 0xE7, 0xFF, 0xC7, 0xE7, 0xE7, 0xC3, 0xFF,
0xFF, 0xF9, 0xFF, 0xF9, 0xF9, 0xF9, 0xF9, 0xC3,
0xFF, 0x9F, 0x9F, 0x93, 0x87, 0x93, 0x99, 0xFF,
0xFF, 0xC7, 0xE7, 0xE7, 0xE7, 0xE7, 0xC3, 0xFF,
0xFF, 0xFF, 0x99, 0x80, 0x80, 0x94, 0x9C, 0xFF,
0xFF, 0xFF, 0x83, 0x99, 0x99, 0x99, 0x99, 0xFF,
0xFF, 0xFF, 0xC3, 0x99, 0x99, 0x99, 0xC3, 0xFF,
0xFF, 0xFF, 0x83, 0x99, 0x99, 0x83, 0x9F, 0x9F,
0xFF, 0xFF, 0xC1, 0x99, 0x99, 0xC1, 0xF9, 0xF9,
0xFF, 0xFF, 0x83, 0x99, 0x9F, 0x9F, 0x9F, 0xFF,
0xFF, 0xFF, 0xC1, 0x9F, 0xC3, 0xF9, 0x83, 0xFF,
0xFF, 0xE7, 0x81, 0xE7, 0xE7, 0xE7, 0xF1, 0xFF,
0xFF, 0xFF, 0x99, 0x99, 0x99, 0x99, 0xC1, 0xFF,
0xFF, 0xFF, 0x99, 0x99, 0x99, 0xC3, 0xE7, 0xFF,
0xFF, 0xFF, 0x9C, 0x94, 0x80, 0xC1, 0xC9, 0xFF,
0xFF, 0xFF, 0x99, 0xC3, 0xE7, 0xC3, 0x99, 0xFF,
0xFF, 0xFF, 0x99, 0x99, 0x99, 0xC1, 0xF3, 0x87,
0xFF, 0xFF, 0x81, 0xF3, 0xE7, 0xCF, 0x81, 0xFF,
0xFF, 0xE7, 0xC3, 0x81, 0x81, 0xE7, 0xC3, 0xFF,
0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7,
0xFF, 0x81, 0x87, 0x83, 0x91, 0x99, 0xF9, 0xFF,
0xF7, 0xE7, 0xC7, 0x87, 0xC7, 0xE7, 0xF7, 0xFF,
0xEF, 0xE7, 0xE3, 0xE1, 0xE3, 0xE7, 0xEF, 0xFF,
}; };
/* Well, this is finally done ! */
+31 -12
View File
@@ -8,6 +8,24 @@
#include "libretro-core.h" #include "libretro-core.h"
extern int VIRTUAL_WIDTH; extern int VIRTUAL_WIDTH;
extern int VKBD_OPACITY;
unsigned Opacity(unsigned color1, unsigned color2){
unsigned r,g,b;
if (VKBD_OPACITY==1){
r=(R_RGB565(color1)/2)+(R_RGB565(color2)/2);
g=(G_RGB565(color1)/2)+(G_RGB565(color2)/2);
b=(B_RGB565(color1)/2)+(B_RGB565(color2)/2);
return RGB565(r,g,b);
}
else
{
return color2;
}
}
void DrawFBoxBmp(char *buffer,int x,int y,int dx,int dy,unsigned color){ void DrawFBoxBmp(char *buffer,int x,int y,int dx,int dy,unsigned color){
@@ -24,7 +42,7 @@ unsigned short *mbuffer=(unsigned short *)buffer;
for(j=y;j<y+dy;j++){ for(j=y;j<y+dy;j++){
idx=i+j*VIRTUAL_WIDTH; idx=i+j*VIRTUAL_WIDTH;
mbuffer[idx]=color; mbuffer[idx]=Opacity(mbuffer[idx],color);
} }
} }
@@ -43,17 +61,17 @@ unsigned short *mbuffer=(unsigned short *)buffer;
for(i=x;i<x+dx;i++){ for(i=x;i<x+dx;i++){
idx=i+y*VIRTUAL_WIDTH; idx=i+y*VIRTUAL_WIDTH;
mbuffer[idx]=color; mbuffer[idx]=Opacity(mbuffer[idx],color);
idx=i+(y+dy)*VIRTUAL_WIDTH; idx=i+(y+dy)*VIRTUAL_WIDTH;
mbuffer[idx]=color; mbuffer[idx]=Opacity(mbuffer[idx],color);
} }
for(j=y;j<y+dy;j++){ for(j=y;j<y+dy;j++){
idx=x+j*VIRTUAL_WIDTH; idx=x+j*VIRTUAL_WIDTH;
mbuffer[idx]=color; mbuffer[idx]=Opacity(mbuffer[idx],color);
idx=(x+dx)+j*VIRTUAL_WIDTH; idx=(x+dx)+j*VIRTUAL_WIDTH;
mbuffer[idx]=color; mbuffer[idx]=Opacity(mbuffer[idx],color);
} }
} }
@@ -69,7 +87,7 @@ unsigned short *mbuffer=(unsigned short *)buffer;
#endif #endif
idx=x+y*VIRTUAL_WIDTH; idx=x+y*VIRTUAL_WIDTH;
mbuffer[idx]=color; mbuffer[idx]=Opacity(mbuffer[idx],color);
} }
@@ -85,7 +103,7 @@ unsigned short *mbuffer=(unsigned short *)buffer;
for(i=x;i<x+dx;i++){ for(i=x;i<x+dx;i++){
idx=i+y*VIRTUAL_WIDTH; idx=i+y*VIRTUAL_WIDTH;
mbuffer[idx]=color; mbuffer[idx]=Opacity(mbuffer[idx],color);
} }
} }
@@ -100,7 +118,7 @@ unsigned short *mbuffer=(unsigned short *)buffer;
#endif #endif
for(j=y;j<y+dy;j++){ for(j=y;j<y+dy;j++){
idx=x+j*VIRTUAL_WIDTH; idx=x+j*VIRTUAL_WIDTH;
mbuffer[idx]=color; mbuffer[idx]=Opacity(mbuffer[idx],color);
} }
} }
@@ -135,7 +153,7 @@ unsigned short *mbuffer=(unsigned short *)buffer;
} else { } else {
idx=x1+y1*VIRTUAL_WIDTH; idx=x1+y1*VIRTUAL_WIDTH;
mbuffer[idx]=color; mbuffer[idx]=Opacity(mbuffer[idx],color);
return ; return ;
} }
} }
@@ -174,7 +192,7 @@ unsigned short *mbuffer=(unsigned short *)buffer;
idx=x1+y1*VIRTUAL_WIDTH; idx=x1+y1*VIRTUAL_WIDTH;
for (; x < dx; x++, idx +=pixx) { for (; x < dx; x++, idx +=pixx) {
mbuffer[idx]=color; mbuffer[idx]=Opacity(mbuffer[idx],color);
y += dy; y += dy;
if (y >= dx) { if (y >= dx) {
y -= dx; y -= dx;
@@ -297,7 +315,8 @@ unsigned char *mbuffer=(unsigned char *)surf;
#endif #endif
if(string==NULL)return; if(string==NULL)return;
for(strlen = 0; strlen<maxstrlen && string[strlen]; strlen++) {} strlen = sizeof(string);
if (strlen>maxstrlen) strlen = maxstrlen;
int surfw=strlen * 7 * xscale; int surfw=strlen * 7 * xscale;
int surfh=8 * yscale; int surfh=8 * yscale;
@@ -342,7 +361,7 @@ unsigned char *mbuffer=(unsigned char *)surf;
for(yrepeat = y; yrepeat < y+ surfh; yrepeat++) for(yrepeat = y; yrepeat < y+ surfh; yrepeat++)
for(xrepeat = x; xrepeat< x+surfw; xrepeat++,yptr++) for(xrepeat = x; xrepeat< x+surfw; xrepeat++,yptr++)
if(*yptr!=0)mbuffer[xrepeat+yrepeat*VIRTUAL_WIDTH] = *yptr; if(*yptr!=0)mbuffer[xrepeat+yrepeat*VIRTUAL_WIDTH] = Opacity(mbuffer[xrepeat+yrepeat*VIRTUAL_WIDTH],*yptr);
free(linesurf); free(linesurf);
+1 -1
View File
@@ -564,7 +564,7 @@ void retro_init(void)
{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "Fire 1" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "Fire 1" },
{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "Return" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "Return" },
{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Fire 2" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Fire 2" },
{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Y" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Help" },
{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Select" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Select" },
{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" },
{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" }, { 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" },
+10 -1
View File
@@ -42,7 +42,7 @@ extern char Key_Sate2[512];
extern int pauseg; extern int pauseg;
#define NPLGN 12 #define NPLGN 12
#define NLIGN 5 #define NLIGN 6
#define NLETT 5 #define NLETT 5
#define XSIDE (CROP_WIDTH/NPLGN -1) #define XSIDE (CROP_WIDTH/NPLGN -1)
@@ -58,11 +58,20 @@ extern int pauseg;
#ifndef RENDER16B #ifndef RENDER16B
#define RGB565(r, g, b) (((r) << (5+16)) | ((g) << (5+8)) | (b<<5)) #define RGB565(r, g, b) (((r) << (5+16)) | ((g) << (5+8)) | (b<<5))
#define R_RGB565(rgb) (((rgb) >> (5+16)) & 255)
#define G_RGB565(rgb) (((rgb) >> (5+8)) & 255)
#define B_RGB565(rgb) ((rgb>>5) & 255)
#else #else
#if defined(ABGR1555) #if defined(ABGR1555)
#define RGB565(r, g, b) (((b) << (10)) | ((g) << 5) | (r)) #define RGB565(r, g, b) (((b) << (10)) | ((g) << 5) | (r))
#define B_RGB565(rgb) (((rgb) >> (10)) & 31)
#define G_RGB565(rgb) (((rgb) >> 5) & 31)
#define R_RGB565(rgb) (rgb & 31)
#else #else
#define RGB565(r, g, b) (((r) << (5+6)) | ((g) << 6) | (b)) #define RGB565(r, g, b) (((r) << (5+6)) | ((g) << 6) | (b))
#define R_RGB565(rgb) (((rgb) >> (5+6)) & 31)
#define G_RGB565(rgb) (((rgb) >> 6) & 31)
#define B_RGB565(rgb) (rgb & 31)
#endif #endif
#endif #endif
#define uint32 unsigned int #define uint32 unsigned int
+56 -20
View File
@@ -44,6 +44,8 @@ extern char Key_Sate[512];
#include "libretro.h" #include "libretro.h"
#include "retroscreen.h" #include "retroscreen.h"
extern int SHIFTON;
extern int CTRLON;
extern int UI_is_active; extern int UI_is_active;
static int swap_joysticks = FALSE; static int swap_joysticks = FALSE;
@@ -193,13 +195,15 @@ int PLATFORM_Keyboard(void)
} }
/* SHIFT STATE */ /* SHIFT STATE */
if ((Key_Sate[RETROK_LSHIFT]) || (Key_Sate[RETROK_RSHIFT])) //if ((Key_Sate[RETROK_LSHIFT]) || (Key_Sate[RETROK_RSHIFT]))
if (SHIFTON == 1)
INPUT_key_shift = 1; INPUT_key_shift = 1;
else else
INPUT_key_shift = 0; INPUT_key_shift = 0;
/* CONTROL STATE */ /* CONTROL STATE */
if ((Key_Sate[RETROK_LCTRL]) || (Key_Sate[RETROK_RCTRL])) //if ((Key_Sate[RETROK_LCTRL]) || (Key_Sate[RETROK_RCTRL]))
if (CTRLON == 1)
key_control = 1; key_control = 1;
else else
key_control = 0; key_control = 0;
@@ -221,13 +225,6 @@ int PLATFORM_Keyboard(void)
if (Key_Sate[RETROK_F5]) if (Key_Sate[RETROK_F5])
return INPUT_key_shift ? AKEY_COLDSTART : AKEY_WARMSTART; return INPUT_key_shift ? AKEY_COLDSTART : AKEY_WARMSTART;
if (Key_Sate[RETROK_F8]){
UI_alt_function = UI_MENU_MONITOR;
}
if (Key_Sate[RETROK_F9])return AKEY_EXIT;
if (Key_Sate[RETROK_F10])return INPUT_key_shift ? AKEY_SCREENSHOT_INTERLACE : AKEY_SCREENSHOT;
if (Key_Sate[RETROK_F12])return AKEY_TURBO; if (Key_Sate[RETROK_F12])return AKEY_TURBO;
@@ -300,7 +297,7 @@ int PLATFORM_Keyboard(void)
if (Key_Sate[RETROK_HOME]) if (Key_Sate[RETROK_HOME])
return key_control ? AKEY_LESS|shiftctrl : AKEY_CLEAR; return key_control ? AKEY_LESS|shiftctrl : AKEY_CLEAR;
if (Key_Sate[RETROK_PAUSE] || Key_Sate[RETROK_F7] ) if (Key_Sate[RETROK_PAUSE])
{ {
if (BINLOAD_wait_active) { if (BINLOAD_wait_active) {
BINLOAD_pause_loading = TRUE; BINLOAD_pause_loading = TRUE;
@@ -319,8 +316,14 @@ int PLATFORM_Keyboard(void)
if (Key_Sate[RETROK_SPACE]) if (Key_Sate[RETROK_SPACE])
return AKEY_SPACE ^ shiftctrl; return AKEY_SPACE ^ shiftctrl;
if (Key_Sate[RETROK_BACKSPACE]) if (Key_Sate[RETROK_BACKSPACE]){
return AKEY_BACKSPACE|shiftctrl; if (INPUT_key_shift)
return AKEY_DELETE_CHAR;
else if (key_control)
return AKEY_DELETE_LINE;
else
return AKEY_BACKSPACE;
}
if (Key_Sate[RETROK_RETURN]) if (Key_Sate[RETROK_RETURN])
return AKEY_RETURN ^ shiftctrl; return AKEY_RETURN ^ shiftctrl;
@@ -458,6 +461,18 @@ int PLATFORM_Keyboard(void)
if (Key_Sate[RETROK_COMMA])return (AKEY_CTRL | AKEY_COMMA); if (Key_Sate[RETROK_COMMA])return (AKEY_CTRL | AKEY_COMMA);
if (Key_Sate[RETROK_PERIOD])return (AKEY_CTRL | AKEY_FULLSTOP); if (Key_Sate[RETROK_PERIOD])return (AKEY_CTRL | AKEY_FULLSTOP);
if (Key_Sate[RETROK_SEMICOLON])return (AKEY_CTRL | AKEY_SEMICOLON); if (Key_Sate[RETROK_SEMICOLON])return (AKEY_CTRL | AKEY_SEMICOLON);
if (Key_Sate[RETROK_F7])return (AKEY_CTRL | AKEY_F1);
if (Key_Sate[RETROK_F8])return (AKEY_CTRL | AKEY_F2);
if (Key_Sate[RETROK_F9])return (AKEY_CTRL | AKEY_F3);
if (Key_Sate[RETROK_F10])return (AKEY_CTRL | AKEY_F4);
// cursor keys
if (Key_Sate[RETROK_PLUS])return AKEY_LEFT;
if (Key_Sate[RETROK_ASTERISK])return AKEY_RIGHT;
if (Key_Sate[RETROK_EQUALS])return AKEY_DOWN;
if (Key_Sate[RETROK_UNDERSCORE])return AKEY_UP;
} }
@@ -492,26 +507,35 @@ int PLATFORM_Keyboard(void)
if (Key_Sate[RETROK_z])return AKEY_Z; if (Key_Sate[RETROK_z])return AKEY_Z;
if (Key_Sate[RETROK_1])return AKEY_EXCLAMATION; if (Key_Sate[RETROK_1])return AKEY_EXCLAMATION;
if (Key_Sate[RETROK_2])return AKEY_AT; if (Key_Sate[RETROK_2])return AKEY_DBLQUOTE;
if (Key_Sate[RETROK_3])return AKEY_HASH; if (Key_Sate[RETROK_3])return AKEY_HASH;
if (Key_Sate[RETROK_4])return AKEY_DOLLAR; if (Key_Sate[RETROK_4])return AKEY_DOLLAR;
if (Key_Sate[RETROK_5])return AKEY_PERCENT; if (Key_Sate[RETROK_5])return AKEY_PERCENT;
if (Key_Sate[RETROK_6])return AKEY_CARET; if (Key_Sate[RETROK_6])return AKEY_AMPERSAND;
if (Key_Sate[RETROK_7])return AKEY_AMPERSAND; if (Key_Sate[RETROK_7])return AKEY_QUOTE;
if (Key_Sate[RETROK_8])return AKEY_ASTERISK; if (Key_Sate[RETROK_8])return AKEY_AT;
if (Key_Sate[RETROK_9])return AKEY_PARENLEFT; if (Key_Sate[RETROK_9])return AKEY_PARENLEFT;
if (Key_Sate[RETROK_0])return AKEY_PARENRIGHT; if (Key_Sate[RETROK_0])return AKEY_PARENRIGHT;
if (Key_Sate[RETROK_BACKSLASH])return AKEY_BAR; if (Key_Sate[RETROK_BACKSLASH])return AKEY_BAR;
if (Key_Sate[RETROK_COMMA])return AKEY_LESS; if (Key_Sate[RETROK_COMMA])return AKEY_BRACKETLEFT;
if (Key_Sate[RETROK_PERIOD])return AKEY_GREATER; if (Key_Sate[RETROK_PERIOD])return AKEY_BRACKETRIGHT;
if (Key_Sate[RETROK_MINUS])return AKEY_UNDERSCORE; if (Key_Sate[RETROK_UNDERSCORE])return AKEY_MINUS;
if (Key_Sate[RETROK_EQUALS])return AKEY_PLUS; if (Key_Sate[RETROK_PLUS])return AKEY_BACKSLASH;
if (Key_Sate[RETROK_EQUALS])return AKEY_BAR;
if (Key_Sate[RETROK_LEFTBRACKET])return AKEY_BRACKETLEFT; // no curly braces on Atari if (Key_Sate[RETROK_LEFTBRACKET])return AKEY_BRACKETLEFT; // no curly braces on Atari
if (Key_Sate[RETROK_RIGHTBRACKET])return AKEY_BRACKETRIGHT; // no curly braces on Atari if (Key_Sate[RETROK_RIGHTBRACKET])return AKEY_BRACKETRIGHT; // no curly braces on Atari
if (Key_Sate[RETROK_SEMICOLON])return AKEY_COLON; if (Key_Sate[RETROK_SEMICOLON])return AKEY_COLON;
if (Key_Sate[RETROK_QUOTE])return AKEY_DBLQUOTE; if (Key_Sate[RETROK_QUOTE])return AKEY_DBLQUOTE;
if (Key_Sate[RETROK_SLASH])return AKEY_QUESTION; if (Key_Sate[RETROK_SLASH])return AKEY_QUESTION;
if (Key_Sate[RETROK_ASTERISK])return AKEY_CIRCUMFLEX;
if (Key_Sate[RETROK_LESS])return AKEY_LESS;
if (Key_Sate[RETROK_GREATER])return AKEY_GREATER;
if (Key_Sate[RETROK_F7])return (AKEY_SHFT | AKEY_F1);
if (Key_Sate[RETROK_F8])return (AKEY_SHFT | AKEY_F2);
if (Key_Sate[RETROK_F9])return (AKEY_SHFT | AKEY_F3);
if (Key_Sate[RETROK_F10])return (AKEY_SHFT | AKEY_F4);
} else { } else {
if (Key_Sate[RETROK_a])return AKEY_a; if (Key_Sate[RETROK_a])return AKEY_a;
@@ -556,12 +580,22 @@ int PLATFORM_Keyboard(void)
if (Key_Sate[RETROK_COMMA])return AKEY_COMMA; if (Key_Sate[RETROK_COMMA])return AKEY_COMMA;
if (Key_Sate[RETROK_PERIOD])return AKEY_FULLSTOP; if (Key_Sate[RETROK_PERIOD])return AKEY_FULLSTOP;
if (Key_Sate[RETROK_MINUS])return AKEY_MINUS; if (Key_Sate[RETROK_MINUS])return AKEY_MINUS;
if (Key_Sate[RETROK_PLUS])return AKEY_PLUS;
if (Key_Sate[RETROK_EQUALS])return AKEY_EQUAL; if (Key_Sate[RETROK_EQUALS])return AKEY_EQUAL;
if (Key_Sate[RETROK_LEFTBRACKET])return AKEY_BRACKETLEFT; if (Key_Sate[RETROK_LEFTBRACKET])return AKEY_BRACKETLEFT;
if (Key_Sate[RETROK_RIGHTBRACKET])return AKEY_BRACKETRIGHT; if (Key_Sate[RETROK_RIGHTBRACKET])return AKEY_BRACKETRIGHT;
if (Key_Sate[RETROK_SEMICOLON])return AKEY_SEMICOLON; if (Key_Sate[RETROK_SEMICOLON])return AKEY_SEMICOLON;
if (Key_Sate[RETROK_QUOTE])return AKEY_QUOTE; if (Key_Sate[RETROK_QUOTE])return AKEY_QUOTE;
if (Key_Sate[RETROK_SLASH])return AKEY_SLASH; if (Key_Sate[RETROK_SLASH])return AKEY_SLASH;
if (Key_Sate[RETROK_ASTERISK])return AKEY_ASTERISK;
if (Key_Sate[RETROK_LESS])return AKEY_LESS;
if (Key_Sate[RETROK_GREATER])return AKEY_GREATER;
if (Key_Sate[RETROK_UNDERSCORE])return AKEY_UNDERSCORE;
if (Key_Sate[RETROK_F7])return AKEY_F1;
if (Key_Sate[RETROK_F8])return AKEY_F2;
if (Key_Sate[RETROK_F9])return AKEY_F3;
if (Key_Sate[RETROK_F10])return AKEY_F4;
} }
@@ -581,6 +615,8 @@ int PLATFORM_Keyboard(void)
return AKEY_ESCAPE; return AKEY_ESCAPE;
if (mbt[RETRO_DEVICE_ID_JOYPAD_B]) if (mbt[RETRO_DEVICE_ID_JOYPAD_B])
return AKEY_RETURN; return AKEY_RETURN;
if (mbt[RETRO_DEVICE_ID_JOYPAD_Y])
return AKEY_HELP;
} }
if (UI_is_active){ if (UI_is_active){
+47 -6
View File
@@ -10,6 +10,7 @@ extern int NPAGE;
extern int KCOL; extern int KCOL;
extern int BKGCOLOR; extern int BKGCOLOR;
extern int SHIFTON; extern int SHIFTON;
extern int CTRLON;
void virtual_kdb(char *buffer,int vx,int vy) void virtual_kdb(char *buffer,int vx,int vy)
{ {
@@ -23,7 +24,7 @@ unsigned *pix=(unsigned*)buffer;
unsigned short *pix=(unsigned short *)buffer; unsigned short *pix=(unsigned short *)buffer;
#endif #endif
page = (NPAGE == -1) ? 0 : 5*NPLGN; page = (NPAGE == -1) ? 0 : NLIGN*NPLGN;
coul = RGB565(28, 28, 31); coul = RGB565(28, 28, 31);
BKGCOLOR = (KCOL>0?0xFF808080:0); BKGCOLOR = (KCOL>0?0xFF808080:0);
@@ -33,15 +34,55 @@ unsigned short *pix=(unsigned short *)buffer;
for(y=0;y<NLIGN;y++) for(y=0;y<NLIGN;y++)
{ {
DrawBoxBmp((char*)pix,XBASE3+x*XSIDE,YBASE3+y*YSIDE, XSIDE,YSIDE, RGB565(7, 2, 1)); DrawBoxBmp((char*)pix,XBASE3+x*XSIDE,YBASE3+y*YSIDE, XSIDE,YSIDE, RGB565(7, 2, 1));
Draw_text((char*)pix,XBASE0-2+x*XSIDE ,YBASE0+YSIDE*y,coul, BKGCOLOR ,1, 1,20, if (SHIFTON==1)
SHIFTON==-1?MVk[(y*NPLGN)+x+page].norml:MVk[(y*NPLGN)+x+page].shift); {
Draw_text((char*)pix,XBASE0-2+x*XSIDE ,YBASE0+YSIDE*y,coul, BKGCOLOR ,1, 1,3,MVk[(y*NPLGN)+x+page].shift);
}
else if (CTRLON==1)
{
Draw_text((char*)pix,XBASE0-2+x*XSIDE ,YBASE0+YSIDE*y,coul, BKGCOLOR ,1, 1,3,MVk[(y*NPLGN)+x+page].ctrl);
}
else
{
Draw_text((char*)pix,XBASE0-2+x*XSIDE ,YBASE0+YSIDE*y,coul, BKGCOLOR ,1, 1,3,MVk[(y*NPLGN)+x+page].norml);
}
} }
} }
// draw Shift and Control keys status
// Shift - position 0,4
if (SHIFTON==1)
{
Draw_text((char*)pix,XBASE0-2+0*XSIDE ,YBASE0+YSIDE*4,RGB565(2,2,31), BKGCOLOR ,1, 1,3,MVk[(4*NPLGN)+0+page].shift);
}
// Control - position 0,3
if (CTRLON==1)
{
Draw_text((char*)pix,XBASE0-2+0*XSIDE ,YBASE0+YSIDE*3,RGB565(2,2,31), BKGCOLOR ,1, 1,3,MVk[(3*NPLGN)+0+page].ctrl);
}
DrawBoxBmp((char*)pix,XBASE3+vx*XSIDE,YBASE3+vy*YSIDE, XSIDE,YSIDE, RGB565(31, 2, 1)); DrawBoxBmp((char*)pix,XBASE3+vx*XSIDE,YBASE3+vy*YSIDE, XSIDE,YSIDE, RGB565(31, 2, 1));
Draw_text((char*)pix,XBASE0-2+vx*XSIDE ,YBASE0+YSIDE*vy,RGB565(2,31,1), BKGCOLOR ,1, 1,20, if (SHIFTON==1)
SHIFTON==-1?MVk[(vy*NPLGN)+vx+page].norml:MVk[(vy*NPLGN)+vx+page].shift); {
Draw_text((char*)pix,XBASE0-2+vx*XSIDE ,YBASE0+YSIDE*vy,RGB565(2,31,1), BKGCOLOR ,1, 1,3,MVk[(vy*NPLGN)+vx+page].shift);
}
else if (CTRLON==1)
{
Draw_text((char*)pix,XBASE0-2+vx*XSIDE ,YBASE0+YSIDE*vy,RGB565(2,31,1), BKGCOLOR ,1, 1,3,MVk[(vy*NPLGN)+vx+page].ctrl);
}
else
{
Draw_text((char*)pix,XBASE0-2+vx*XSIDE ,YBASE0+YSIDE*vy,RGB565(2,31,1), BKGCOLOR ,1, 1,3,MVk[(vy*NPLGN)+vx+page].norml);
}
if (vx==0 && vy==4 && SHIFTON==1) // diferent Shift color if Shift is ON - position 0,4
{
Draw_text((char*)pix,XBASE0-2+vx*XSIDE ,YBASE0+YSIDE*vy,RGB565(2,31,21), BKGCOLOR ,1, 1,3,MVk[(vy*NPLGN)+vx+page].shift);
}
if (vx==0 && vy==3 && CTRLON==1) // diferent Conrol color if Control is ON - position 0,3
{
Draw_text((char*)pix,XBASE0-2+vx*XSIDE ,YBASE0+YSIDE*vy,RGB565(2,31,21), BKGCOLOR ,1, 1,3,MVk[(vy*NPLGN)+vx+page].ctrl);
}
} }
int check_vkey2(int x,int y) int check_vkey2(int x,int y)
+147 -120
View File
@@ -4,142 +4,169 @@
typedef struct { typedef struct {
char norml[NLETT]; char norml[NLETT];
char shift[NLETT]; char shift[NLETT];
char ctrl[NLETT];
int val; int val;
} Mvk; } Mvk;
// I left 2 pages of Virtual Keyboard allowed to work, but everything now fits on one.
Mvk MVk[NPLGN*NLIGN*2]={ Mvk MVk[NPLGN*NLIGN*2]={
{ "ESC" ,"ESC" ,RETROK_ESCAPE },//0 { "HLP", "HLP", "HLP", RETROK_F6}, // page 1, line 1
{ " 1" ," !" , RETROK_1 },//0 { "STA", "STA", "STA", RETROK_F4},
{ " 2" ," \"" ,RETROK_2 }, { "SEL", "SEL", "SEL", RETROK_F3},
{ " 3" ," #" ,RETROK_3 }, { "OPT", "OPT", "OPT", RETROK_F2},
{ " 4" ," $" ,RETROK_4 }, { "RES", "RES", "RES", RETROK_F5},
{ " 5" ," %" ,RETROK_5 }, { " F1", " F1", " F1", RETROK_F7},
{ " 6" ," &" ,RETROK_6 }, { " F2", " F2", " F2", RETROK_F8},
{ " 7" ," \'" ,RETROK_7 }, { " F3", " F3", " F3", RETROK_F9},
{ " 8" ," (" ,RETROK_8 }, { " F4", " F4", " F4", RETROK_F10},
{ " 9" ," )" ,RETROK_9 }, { "Clr", "Clr", "Clr", RETROK_HOME},
{ " 0" ," _" ,RETROK_0 }, { "Ins", "Ins", "Ins", RETROK_INSERT},
{ " ^" ,"Pnd" ,0x30 }, { "Bsp", "Del", "Del", RETROK_BACKSPACE},
{ " q" ," Q" ,RETROK_q}, //10+2 { "Esc", "Esc", "Esc", RETROK_ESCAPE}, // page 1, line 2
{ " w" ," W" ,RETROK_w}, { " 1 ", " ! ", " \xb1 " , RETROK_1},
{ " e" ," E" ,RETROK_e}, { " 2 ", " \" ", " \xb2 ", RETROK_2},
{ " r" ," R" ,RETROK_r}, { " 3 ", " # ", " \xb3 ", RETROK_3},
{ " t" ," T" ,RETROK_t}, { " 4 ", " $ ", " \xb4 ", RETROK_4},
{ " y" ," Y" ,RETROK_y}, { " 5 ", " %% ", " \xb5 ", RETROK_5},
{ " u" ," U" ,RETROK_u}, { " 6 ", " & ", " \xb6 ", RETROK_6},
{ " i" ," I" ,RETROK_i}, { " 7 ", " \' ", " \xb7 ", RETROK_7},
{ " o" ," O" ,RETROK_o}, { " 8 ", " @ ", " \xb8 ", RETROK_8},
{ " p" ," P" ,RETROK_p}, { " 9 ", " ( ", " \xb9 ", RETROK_9},
{ " @" ," |" ,RETROK_QUOTEDBL}, { " 0 ", " ) ", " \xb0 ", RETROK_0},
{ " [" ," [" ,RETROK_LEFTBRACKET}, { "Brk", "Brk", "Brk", RETROK_PAUSE},
{ " a" ," A" ,RETROK_a}, //20+4 { "Tab", "Tab", "Tab", RETROK_TAB}, // page 1, line 3
{ " s" ," S" ,RETROK_s}, { " q ", " Q ", "Q \x11", RETROK_q},
{ " d" ," D" ,RETROK_d}, { " w ", " W ", "W \x17", RETROK_w},
{ " f" ," F" ,RETROK_f}, { " e ", " E ", "E \x05", RETROK_e},
{ " g" ," G" ,RETROK_g}, { " r ", " R ", "R \x12", RETROK_r},
{ " h" ," H" ,RETROK_h}, { " t ", " T ", "T \x14", RETROK_t},
{ " j" ," J" ,RETROK_j}, { " y ", " Y ", "Y \x19", RETROK_y},
{ " k" ," K" ,RETROK_k}, { " u ", " U ", "U \x15", RETROK_u},
{ " l" ," L" ,RETROK_l}, { " i ", " I ", "I \x09", RETROK_i},
{ " :" ," *" ,RETROK_COLON}, { " o ", " O ", "O \x0f", RETROK_o},
{ " ;" ," +" ,RETROK_SEMICOLON}, { " p ", " P ", "P \x10", RETROK_p},
{ " ]" ," ]" ,RETROK_RIGHTBRACKET}, { "Ret", "Ret", "Ret", RETROK_RETURN},
{ " z" ," Z" ,RETROK_z},//30+6 { "Ctl", "Ctl", "Ctl", RETROK_LCTRL}, // page 1, line 4
{ " x" ," X" ,RETROK_x}, { " a ", " A ", "A \x01", RETROK_a},
{ " c" ," C" ,RETROK_c}, { " s ", " S ", "S \x13", RETROK_s},
{ " v" ," V" ,RETROK_v}, { " d ", " D ", "D \x04", RETROK_d},
{ " b" ," B" ,RETROK_b}, { " f ", " F ", "F \x06", RETROK_f},
{ " n" ," N" ,RETROK_n}, { " g ", " G ", "G \x07", RETROK_g},
{ " m"," M" ,RETROK_m}, { " h ", " H ", "H \x08", RETROK_h},
{ " ,"," <" ,RETROK_COMMA}, { " j ", " J ", "J \x0a", RETROK_j},
{ " ."," >" ,RETROK_PERIOD}, { " k ", " K ", "K \x0b", RETROK_k},
{ " /" ," ?" ,RETROK_SLASH}, { " l ", " L ", "L \x0c", RETROK_l},
{ " \\"," \\" ,RETROK_BACKSLASH}, { " ; ", " : ", "; \x7b", RETROK_SEMICOLON},
{ "SHFT" ,"SHFT" ,0x25}, { "Cap", "Cap", "Cap", RETROK_CAPSLOCK},
{ "PG2","PG2" ,-2}, //40+8 { "Shf", "Shf", "Shf", RETROK_LSHIFT}, // page 1, line 5
{ "TAB","TAB" ,0x54}, { " z ", " Z ", "Z \x1a", RETROK_z},
{ "CPSL" ,"CPSL" ,0x86}, { " x ", " X ", "X \x18", RETROK_x},
{ "RET" ,"RET" ,0x22}, { " c ", " C ", "C \x03", RETROK_c},
{ "DEL" ,"DEL" ,0x97}, { " v ", " V ", "V \x16", RETROK_v},
{ "CTRL" ,"CTRL" ,0x27}, { " b ", " B ", "B \x02", RETROK_b},
{ "CLR" ,"CLR" , 0x20}, { " n ", " N ", "N \x0e", RETROK_n},
{ "Spc" ,"Spc",0x57}, { " m ", " M ", "M \x0d", RETROK_m},
{ "= " ,"= " ,RETROK_EQUALS}, { " , ", " [ ", ", \x00", RETROK_COMMA},
{ " *" ," *", RETROK_ASTERISK}, { " . ", " ] ", ". \x60", RETROK_PERIOD},
{ "# " ,"# " ,RETROK_HASH}, { " \x9c ", " \x9c ", " \x9c ", RETROK_UP},
{ "Ent" ,"Ent",0x06}, { "Inv", "Inv", "Inv", RETROK_LSUPER},
{ "OPC", "OPC", "OPC", -5}, // page 1, line 6
{ "Spc", "Spc", "Spc", RETROK_SPACE},
{ " + ", " \\ ", " \x1e ", RETROK_PLUS},
{ " _ ", " - ", " \x1c ", RETROK_UNDERSCORE},
{ " = ", " | ", " \x1d ", RETROK_EQUALS},
{ " * ", " ^ ", " \x1f ", RETROK_ASTERISK},
{ " / ", " ? ", " / ", RETROK_SLASH},
{ " < ", " < ", " < ", RETROK_LESS},
{ " > ", " > ", " > ", RETROK_GREATER},
{ " \x9e ", " \x9e ", " \x9e ", RETROK_LEFT},
{ " \x9d ", " \x9d ", " \x9d ", RETROK_DOWN},
{ " \x9f ", " \x9f ", " \x9f ", RETROK_RIGHT},
{ "ESC" ,"ESC" ,RETROK_ESCAPE },//50+1° { "Esc", "Esc", "Esc", RETROK_ESCAPE}, // page 2, line 1
{ " 1" ," !" , RETROK_1 },//0 { "HLP", "HLP", "HLP", RETROK_F6},
{ " 2" ," \"" ,RETROK_2 }, { "STA", "STA", "STA", RETROK_F4},
{ " 3" ," #" ,RETROK_3 }, { "SEL", "SEL", "SEL", RETROK_F3},
{ " 4" ," $" ,RETROK_4 }, { "OPT", "OPT", "OPT", RETROK_F2},
{ " 5" ," %" ,RETROK_5 }, { "RES", "RES", "RES", RETROK_F5},
{ " 6" ," &" ,RETROK_6 }, { " F1", " F1", " F1", RETROK_F7},
{ " 7" ," \'" ,RETROK_7 }, { " F2", " F2", " F2", RETROK_F8},
{ " 8" ," (" ,RETROK_8 }, { " F3", " F3", " F3", RETROK_F9},
{ " 9" ," )" ,RETROK_9 }, { " F4", " F4", " F4", RETROK_F10},
{ " 0" ," _" ,RETROK_0 }, { "GUI", "GUI", "GUI", RETROK_F1},
{ " ^" ,"Pnd" ,0x30 }, { "Brk", "Brk", "Brk", RETROK_PAUSE},
{ " F7" ," F7" ,RETROK_F7}, //60+12 { "Esc", "Esc", "Esc", RETROK_ESCAPE}, // page 2, line 2
{ " F8" ," F8" ,RETROK_F8}, { "HLP", "HLP", "HLP", RETROK_F6},
{ " F9" ," F9" ,RETROK_F9}, { "STA", "STA", "STA", RETROK_F4},
{ " F0" ," F0" ,RETROK_F10}, { "SEL", "SEL", "SEL", RETROK_F3},
{ " t" ," T" ,0x63}, { "OPT", "OPT", "OPT", RETROK_F2},
{ " /\\" ," /\\" ,0x00}, { "RES", "RES", "RES", RETROK_F5},
{ " u" ," U" ,0x52}, { " F1", " F1", " F1", RETROK_F7},
{ " i" ," I" ,0x43}, { " F2", " F2", " F2", RETROK_F8},
{ " o" ," O" ,0x42}, { " F3", " F3", " F3", RETROK_F9},
{ " p" ," P" ,0x33}, { " F4", " F4", " F4", RETROK_F10},
{ " @" ," |" ,0x32}, { "GUI", "GUI", "GUI", RETROK_F1},
{ " [" ," [" ,0x21}, { "Brk", "Brk", "Brk", RETROK_PAUSE},
{ " F4" ," F4" ,RETROK_F4}, //70+14 { "Tab", "Tab", "Tab", RETROK_TAB}, // page 2, line 3
{ " F5" ," F5" ,RETROK_F5}, { " q ", " Q ", "Q \x11", RETROK_q},
{ " F6" ," F6" ,RETROK_F6}, { " w ", " W ", "W \x17", RETROK_w},
{ " ." ," ." ,0x07}, { " e ", " E ", "E \x05", RETROK_e},
{ " <-" ," <-" ,0x10}, { " r ", " R ", "R \x12", RETROK_r},
{ "COPY" ,"COPY" ,0x11}, { " \x9c ", " \x9c ", " \x9c ", RETROK_UP},
{ " ->" ," ->" ,0x01}, { " y ", " Y ", "Y \x19", RETROK_y},
{ " r" ," R" ,RETROK_r}, { " u ", " U ", "U \x15", RETROK_u},
{ " p" ," P" ,RETROK_p}, { " i ", " I ", "I \x09", RETROK_i},
{ "= " ,"= " ,RETROK_EQUALS}, { " o ", " O ", "O \x0f", RETROK_o},
{ " *" ," *", RETROK_ASTERISK}, { " p ", " P ", "P \x10", RETROK_p},
{ "# " ,"# " ,RETROK_HASH}, { "Ret", "Ret", "Ret", RETROK_RETURN},
{ " F1" ," F1" ,RETROK_F1},//80+16 { "Ctl", "Ctl", "Ctl", RETROK_LCTRL}, // page 2, line 4
{ " F2" ," F2" ,RETROK_F2}, { " a ", " A ", "A \x01", RETROK_a},
{ " F3" ," F3" ,RETROK_F3}, { " s ", " S ", "S \x13", RETROK_s},
{ "Ent" ,"Ent" ,0x06}, { " d ", " D ", "D \x04", RETROK_d},
{ " b" ," B" ,0x66}, { " \x9e ", " \x9e ", " \x9e ", RETROK_LEFT},
{ " \\/" ," \\/" ,0x02}, { "Ret", "Ret", "Ret", RETROK_RETURN},
{ " m"," M" ,0x46}, { " \x9f ", " \x9f ", " \x9f ", RETROK_RIGHT},
{ " ,"," <" ,0x47}, { " j ", " J ", "J \x0a", RETROK_j},
{ " ."," >" ,0x37}, { " k ", " K ", "K \x0b", RETROK_k},
{ "TAPE" ,"TAPE" ,-8}, { " l ", " L ", "L \x0c", RETROK_l},
{ "EXIT","EXIT" ,-6}, { " ; ", " : ", "; \x7b", RETROK_SEMICOLON},
{ "SNA" ,"SNA" ,-7}, { "Cap", "Cap", "Cap", RETROK_CAPSLOCK},
{ "Shf", "Shf", "Shf", RETROK_LSHIFT}, // page 2, line 5
{ " z ", " Z ", "Z \x1a", RETROK_z},
{ " x ", " X ", "X \x18", RETROK_x},
{ " c ", " C ", "C \x03", RETROK_c},
{ " v ", " V ", "V \x16", RETROK_v},
{ " \x9d ", " \x9d ", " \x9d ", RETROK_DOWN},
{ " n ", " N ", "N \x0e", RETROK_n},
{ " m ", " M ", "M \x0d", RETROK_m},
{ " , ", " [ ", ", \x00", RETROK_COMMA},
{ " . ", " ] ", ". \x60", RETROK_PERIOD},
{ " / ", " ? ", " / ", RETROK_SLASH},
{ "Inv", "Inv", "Inv", RETROK_LSUPER},
{ "PG1","PG1" ,-2},//90+18 { "PG1", "PG1", "PG1", -2}, // page 2, line 6
{ "DSK","DSK" ,-5}, { "Spc", "Spc", "Spc", RETROK_SPACE},
{ "GUI","GUI" ,-13}, { "Del", "Del", "Del", RETROK_DELETE},
{ "COL" ,"COL",-3}, { "Clr", "Clr", "Clr", RETROK_HOME},
{ "CTRL" ,"CTRL" ,0x27}, { "Ins", "Ins", "Ins", RETROK_INSERT},
{ "SPC" ,"SPC" ,0x57}, { " + ", " \\ ", " \x1e ", RETROK_PLUS},
{ "SHFT" ,"SHFT" ,0x25}, { " _ ", " - ", " \x1c ", RETROK_UNDERSCORE},
{ "ESC","ESC",0x82}, { " = ", " | ", " \x1d ", RETROK_EQUALS},
{ "CLR" ,"CLR",0x20}, { " * ", " ^ ", " \x1f ", RETROK_ASTERISK},
{ "DEL" ,"DEL",0x97}, { " < ", " < ", " < ", RETROK_LESS},
{ "Ent" ,"Ent",0x22}, { " > ", " > ", " > ", RETROK_GREATER},
{ "KBD" ,"KBD",-4}, { "PG1", "PG1", "PG1", -2},
} ; } ;