From 1e862331e736fdc604eca841226a76a1e2e12bf8 Mon Sep 17 00:00:00 2001 From: rsn8887 Date: Sat, 12 Jan 2019 16:55:57 -0600 Subject: [PATCH] add French keyboard layout --- CMakeLists.txt | 2 +- README.MD | 11 ++- psp2data/data/vkbdFRLarge.bmp | Bin 0 -> 66046 bytes psp2data/data/vkbdFRLargeHires.bmp | Bin 0 -> 132038 bytes psp2data/data/vkbdFRLargeShift.bmp | Bin 0 -> 67070 bytes psp2data/data/vkbdFRLargeShiftHires.bmp | Bin 0 -> 132038 bytes src/gp2x/menu/menu_display.cpp | 13 ++- src/vkbd/vkbd.cpp | 113 ++++++++++++++++++++++ switchdata/data/vkbdFRLarge.bmp | Bin 0 -> 66046 bytes switchdata/data/vkbdFRLargeHires.bmp | Bin 0 -> 132038 bytes switchdata/data/vkbdFRLargeShift.bmp | Bin 0 -> 67070 bytes switchdata/data/vkbdFRLargeShiftHires.bmp | Bin 0 -> 132038 bytes 12 files changed, 131 insertions(+), 8 deletions(-) create mode 100644 psp2data/data/vkbdFRLarge.bmp create mode 100644 psp2data/data/vkbdFRLargeHires.bmp create mode 100644 psp2data/data/vkbdFRLargeShift.bmp create mode 100644 psp2data/data/vkbdFRLargeShiftHires.bmp create mode 100644 switchdata/data/vkbdFRLarge.bmp create mode 100644 switchdata/data/vkbdFRLargeHires.bmp create mode 100644 switchdata/data/vkbdFRLargeShift.bmp create mode 100644 switchdata/data/vkbdFRLargeShiftHires.bmp diff --git a/CMakeLists.txt b/CMakeLists.txt index d75a1a0..f498afe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.0) set(CMAKE_VERBOSE_MAKEFILE OFF) set(VERSION_MAJOR 1) -set(VERSION_MINOR 87) +set(VERSION_MINOR 88) if(BUILD_PSP2) if (NOT DEFINED CMAKE_TOOLCHAIN_FILE) diff --git a/README.MD b/README.MD index 56dc7a4..348237d 100644 --- a/README.MD +++ b/README.MD @@ -4,10 +4,9 @@ On the Switch, since v1.84, please use nsp injection to start uae4all2, otherwis Changes in this version ====== -1.87 +1.88 -- improve savestate thumbnail quality -- rename joystick port option to clarify what it means +- add French on-screen keyboard (thanks @CrashMidnick) Description ===== @@ -23,6 +22,8 @@ Thanks to ScHlAuChi for extensive testing, ideas, and for contributing the new l Thanks to wronghands for the new, better-looking menu font, and many ideas. +Thanks to CrashMidnick for the French virtual keyboard + Thanks to the original authors Chui, john4p, TomB, notaz, Bernd Schneider, Toni Wilen, Pickle, smoku, AnotherGuest, Anonymous engineer, finkel, Lubomyr, pelya and many more. Thanks to my supporters on Patreon: Andyways, CountDuckula, Greg Gibson, Jesse Harlin, Özgür Karter, Matthew Machnee, and RadicalR. @@ -295,6 +296,10 @@ Compiling CHANGELOG ===== +1.88 + +- add French on-screen keyboard (thanks @CrashMidnick) + 1.87 - improve savestate thumbnail quality diff --git a/psp2data/data/vkbdFRLarge.bmp b/psp2data/data/vkbdFRLarge.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f894ad9875e3052a4cec80abf9005c5bd17abe5f GIT binary patch literal 66046 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 I-oC^C2hKTY?*IS* literal 0 HcmV?d00001 diff --git a/psp2data/data/vkbdFRLargeHires.bmp b/psp2data/data/vkbdFRLargeHires.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b7ae913de2fd72470783f1b40f9dbe22fb79e776 GIT binary patch literal 132038 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 Wb3F;11Wp1cfs?>@OW^1C@c#jERn8y) literal 0 HcmV?d00001 diff --git a/psp2data/data/vkbdFRLargeShift.bmp b/psp2data/data/vkbdFRLargeShift.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0b16d9c96f6409c9b07e4a62727374b56d0a49d6 GIT binary patch literal 67070 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 literal 0 HcmV?d00001 diff --git a/src/gp2x/menu/menu_display.cpp b/src/gp2x/menu/menu_display.cpp index dc342e1..b51ff71 100755 --- a/src/gp2x/menu/menu_display.cpp +++ b/src/gp2x/menu/menu_display.cpp @@ -344,9 +344,14 @@ static void draw_displayMenu(int c) write_text(tabstop3,menuLine,"UK"); if ((mainMenu_vkbdLanguage==2)&&((menuDisplay!=MENUDISPLAY_VKBDLANGUAGE)||(bb))) - write_text_inv(tabstop5,menuLine,"GERMAN"); + write_text_inv(tabstop5,menuLine,"German"); else - write_text(tabstop5,menuLine,"GERMAN"); + write_text(tabstop5,menuLine,"German"); + + if ((mainMenu_vkbdLanguage==3)&&((menuDisplay!=MENUDISPLAY_VKBDLANGUAGE)||(bb))) + write_text_inv(tabstop5+8,menuLine,"French"); + else + write_text(tabstop5+8,menuLine,"French"); #endif // MENUDISPLAY_BACKGROUND @@ -775,8 +780,8 @@ static int key_displayMenu(int *c) } else if (right) { - if (mainMenu_vkbdLanguage >= 2) - mainMenu_vkbdLanguage = 2; + if (mainMenu_vkbdLanguage >= 3) + mainMenu_vkbdLanguage = 3; else mainMenu_vkbdLanguage +=1; } diff --git a/src/vkbd/vkbd.cpp b/src/vkbd/vkbd.cpp index 51852a0..2565a96 100755 --- a/src/vkbd/vkbd.cpp +++ b/src/vkbd/vkbd.cpp @@ -394,6 +394,112 @@ static t_vkbd_rect vkbd_rect_GER[]= {{196, 37, 14, 11 }, 48,81,65,49, AK_NUMBERSIGN}, // 94 * }; +//FRENCH KEYBOARD +static t_vkbd_rect vkbd_rect_FR[]= +{ + {{ 1, 1, 29, 11 },85,17,16, 1, AK_ESC}, // 0, row 1 start + {{ 31, 1, 14, 11 },86,18, 0, 2, AK_F1}, // 1 + {{ 46, 1, 14, 11 },87,19, 1, 3, AK_F2}, // 2 + {{ 61, 1, 14, 11 },87,20, 2, 4, AK_F3}, // 3 + {{ 76, 1, 14, 11 },87,21, 3, 5, AK_F4}, // 4 + {{ 91, 1, 14, 11 },87,22, 4, 6, AK_F5}, // 5 + {{106, 1, 14, 11 },87,23, 5, 7, AK_F6}, // 6 + {{121, 1, 14, 11 },87,24, 6, 8, AK_F7}, // 7 + {{136, 1, 14, 11 },87,25, 7, 9, AK_F8}, // 8 + {{151, 1, 14, 11 },87,26, 8,10, AK_F9}, // 9 + {{166, 1, 14, 11 },87,27, 9,11, AK_F10}, // 10 + {{181, 1, 29, 11 },88,28,10,12, AK_DEL}, // 11 + {{211, 1, 29, 11 },90,30,11,13, AK_HELP}, // 12 + {{241, 1, 14, 11 },92,32,12,14, AK_NPLPAREN}, // 13 + {{256, 1, 14, 11 },69,33,13,15, AK_NPRPAREN}, // 14 + {{271, 1, 14, 11 },69,34,14,16, AK_NPDIV}, // 15 + {{286, 1, 14, 11 },69,35,15,0, AK_NPMUL}, // 16 + + {{ 1, 13, 29, 11 }, 0,36,35,18, AK_BACKQUOTE}, // 17, row 2 start + {{ 31, 13, 14, 11 }, 1,37,17,19, AK_1}, // 18 + {{ 46, 13, 14, 11 }, 2,38,18,20, AK_2}, // 19 + {{ 61, 13, 14, 11 }, 3,39,19,21, AK_3}, // 20 + {{ 76, 13, 14, 11 }, 4,40,20,22, AK_4}, // 21 + {{ 91, 13, 14, 11 }, 5,41,21,23, AK_5}, // 22 + {{106, 13, 14, 11 }, 6,42,22,24, AK_6}, // 23 + {{121, 13, 14, 11 }, 7,43,23,25, AK_7}, // 24 + {{136, 13, 14, 11 }, 8,44,24,26, AK_8}, // 25 + {{151, 13, 14, 11 }, 9,45,25,27, AK_9}, // 26 + {{166, 13, 14, 11 },10,46,26,28, AK_0}, // 27 + {{181, 13, 14, 11 },11,47,27,29, AK_MINUS}, // 28 + {{196, 13, 14, 11 },11,48,28,30, AK_EQUAL}, // 29 + {{211, 13, 14, 11 },12,49,29,31, AK_BACKSLASH}, // 30 + {{226, 13, 14, 11 },12,49,30,32, AK_BS}, // 31 + {{241, 13, 14, 11 },13,50,31,33, AK_NP7}, // 32 + {{256, 13, 14, 11 },14,51,32,34, AK_NP8}, // 33 + {{271, 13, 14, 11 },15,52,33,35, AK_NP9}, // 34 + {{286, 13, 14, 11 },16,53,34,17, AK_NPSUB}, // 35 + + {{ 1, 25, 29, 11 }, 17,54,53,37, AK_TAB}, // 36, row 3 start + {{ 31, 25, 14, 11 }, 18,55,36,38, AK_Q}, // 37 + {{ 46, 25, 14, 11 }, 19,56,37,39, AK_W}, // 38 + {{ 61, 25, 14, 11 }, 20,57,38,40, AK_E}, // 39 + {{ 76, 25, 14, 11 }, 21,58,39,41, AK_R}, // 40 + {{ 91, 25, 14, 11 }, 22,59,40,42, AK_T}, // 41 + {{106, 25, 14, 11 }, 23,60,41,43, AK_Y}, // 42 + {{121, 25, 14, 11 }, 24,61,42,44, AK_U}, // 43 + {{136, 25, 14, 11 }, 25,62,43,45, AK_I}, // 44 + {{151, 25, 14, 11 }, 26,63,44,46, AK_O}, // 45 + {{166, 25, 14, 11 }, 27,64,45,47, AK_P}, // 46 + {{181, 25, 14, 11 }, 28,65,46,48, AK_LBRACKET}, // 47 + {{196, 25, 14, 11 }, 29,94,47,49, AK_RBRACKET}, // 48 * + {{211, 25, 29, 23 }, 30,81,48,50, AK_RET}, // 49 + {{241, 25, 14, 11 }, 32,66,49,51, AK_NP4}, // 50 + {{256, 25, 14, 11 }, 33,67,50,52, AK_NP5}, // 51 + {{271, 25, 14, 11 }, 34,68,51,53, AK_NP6}, // 52 + {{286, 25, 14, 11 }, 35,69,52,36, AK_NPADD}, // 53 + + {{ 1, 37, 29, 11 }, 36,70,69,55, AK_CTRL}, // 54, row 4 start + {{ 31, 37, 14, 11 }, 37,93,54,56, AK_A}, // 55 * + {{ 46, 37, 14, 11 }, 38,71,55,57, AK_S}, // 56 + {{ 61, 37, 14, 11 }, 39,72,56,58, AK_D}, // 57 + {{ 76, 37, 14, 11 }, 40,73,57,59, AK_F}, // 58 + {{ 91, 37, 14, 11 }, 41,74,58,60, AK_G}, // 59 + {{106, 37, 14, 11 }, 42,75,59,61, AK_H}, // 60 + {{121, 37, 14, 11 }, 43,76,60,62, AK_J}, // 61 + {{136, 37, 14, 11 }, 44,77,61,63, AK_K}, // 62 + {{151, 37, 14, 11 }, 45,78,62,64, AK_L}, // 63 + {{166, 37, 14, 11 }, 46,79,63,65, AK_SEMICOLON}, // 64 + {{181, 37, 14, 11 }, 47,80,64,94, AK_QUOTE}, // 65 * + {{241, 37, 14, 11 }, 50,83,49,67, AK_NP1}, // 66 + {{256, 37, 14, 11 }, 51,83,66,68, AK_NP2}, // 67 + {{271, 37, 14, 11 }, 52,84,67,69, AK_NP3}, // 68 + {{286, 37, 14, 34 }, 53,16,68,54, AK_ENT}, // 69 + + {{ 1, 49, 29, 11 }, 54,85,84,93, AK_LSH}, // 70, row 5 start * + {{ 46, 49, 14, 11 }, 56,87,93,72, AK_Z}, // 71 * + {{ 61, 49, 14, 11 }, 57,87,71,73, AK_X}, // 72 + {{ 76, 49, 14, 11 }, 58,87,72,74, AK_C}, // 73 + {{ 91, 49, 14, 11 }, 59,87,73,75, AK_V}, // 74 + {{106, 49, 14, 11 }, 60,87,74,76, AK_B}, // 75 + {{121, 49, 14, 11 }, 61,87,75,77, AK_N}, // 76 + {{136, 49, 14, 11 }, 62,87,76,78, AK_M}, // 77 + {{151, 49, 14, 11 }, 63,87,77,79, AK_COMMA}, // 78 + {{166, 49, 14, 11 }, 64,87,78,80, AK_PERIOD}, // 79 + {{181, 49, 14, 11 }, 65,88,79,81, AK_SLASH}, // 80 + {{196, 49, 27, 11 }, 49,89,80,82, AK_RSH}, // 81 + {{226, 49, 14, 11 }, 49,91,81,83, AK_UP}, // 82 + {{241, 49, 29, 11 }, 66,92,82,84, AK_NP0}, // 83 + {{271, 49, 14, 11 }, 67,69,83,69, AK_NPDEL}, // 84 + + {{ 1, 61, 29, 11 }, 70,0,69,86, AK_LALT}, // 85, row 6 start + {{ 31, 61, 14, 11 }, 93,1,85,87, AK_LAMI}, // 86 * + {{ 46, 61,134, 11 }, 71,2,86,88, AK_SPC}, // 87 + {{181, 61, 14, 11 }, 80,11,87,89, AK_RAMI}, // 88 + {{196, 61, 14, 11 }, 81,11,88,90, AK_RALT}, // 89 + {{211, 61, 14, 11 }, 81,12,89,91, AK_LF}, // 90 + {{226, 61, 14, 11 }, 82,12,90,92, AK_DN}, // 91 + {{241, 61, 14, 11 }, 83,13,91,69, AK_RT}, // 92 + //French extra keys + {{31, 49, 14, 11 }, 55,86,70,71, AK_LTGT}, // 93 * + {{196, 37, 14, 11 }, 48,81,65,49, AK_NUMBERSIGN}, // 94 * +}; + void vkbd_init_button2(void) { vkbd_button2=(SDLKey)0; @@ -433,6 +539,13 @@ int vkbd_init(void) snprintf(vkbdShiftHiresFileName, 256, "vkbdGERLargeShiftHires.bmp"); vkbd_rect=vkbd_rect_GER; break; + case 3: + snprintf(vkbdFileName, 256, "vkbdFRLarge.bmp"); + snprintf(vkbdHiresFileName, 256, "vkbdFRLargeHires.bmp"); + snprintf(vkbdShiftFileName, 256, "vkbdFRLargeShift.bmp"); + snprintf(vkbdShiftHiresFileName, 256, "vkbdFRLargeShiftHires.bmp"); + vkbd_rect=vkbd_rect_FR; + break; default: snprintf(vkbdFileName, 256, "vkbdUSLarge.bmp"); snprintf(vkbdHiresFileName, 256, "vkbdUSLargeHires.bmp"); diff --git a/switchdata/data/vkbdFRLarge.bmp b/switchdata/data/vkbdFRLarge.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f894ad9875e3052a4cec80abf9005c5bd17abe5f GIT binary patch literal 66046 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 I-oC^C2hKTY?*IS* literal 0 HcmV?d00001 diff --git a/switchdata/data/vkbdFRLargeHires.bmp b/switchdata/data/vkbdFRLargeHires.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b7ae913de2fd72470783f1b40f9dbe22fb79e776 GIT binary patch literal 132038 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 Wb3F;11Wp1cfs?>@OW^1C@c#jERn8y) literal 0 HcmV?d00001 diff --git a/switchdata/data/vkbdFRLargeShift.bmp b/switchdata/data/vkbdFRLargeShift.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0b16d9c96f6409c9b07e4a62727374b56d0a49d6 GIT binary patch literal 67070 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 literal 0 HcmV?d00001