Hard Light Productions Forums
Modding, Mission Design, and Coding => FS2 Open Coding - The Source Code Project (SCP) => Topic started by: Hellzed on November 26, 2011, 08:53:47 am
-
Hi !
This is my patch for a better french keyboard support under linux (no more xmodmap needed).
The german keyboard support patch ( http://www.hard-light.net/forums/index.php?topic=78515.msg1555263#msg1555263 ) helped a lot !
This is still no real internationalization, as long as the special keys output in game is based on the american original layout (when you press "^", you get a "["), but now all the keys work fine, including communications ant throttle. I cleaned up some old code too, that didn't seem to be useful anymore, A/Q switching, as long as it seems supported already.
I hope i haven't broken anything in english or german keyboard support.
This would need some testing as long as the only keyboard I have is a desktop one, withoup numpad.
You will need to start the game with the new command line option : "-keyboard_layout azerty".
Index: code/io/key.cpp
===================================================================
--- code/io/key.cpp (révision 8049)
+++ code/io/key.cpp (copie de travail)
@@ -107,28 +107,49 @@
* Keyboard layouts
*/
enum KeyboardLayout {
- KEYBOARD_LAYOUT_DEFAULT,//!< American
- KEYBOARD_LAYOUT_QWERTZ //!< German
+ KEYBOARD_LAYOUT_DEFAULT, //!< American
+ KEYBOARD_LAYOUT_QWERTZ, //!< German
+ KEYBOARD_LAYOUT_AZERTY //!< French
};
void FillSDLArray ()
{
KeyboardLayout layout = KEYBOARD_LAYOUT_DEFAULT;
- if ((Cmdline_keyboard_layout) && !strcmp(Cmdline_keyboard_layout, "qwertz")) {
- layout = KEYBOARD_LAYOUT_QWERTZ;
+ if (Cmdline_keyboard_layout) {
+ if (!strcmp(Cmdline_keyboard_layout, "qwertz")) {
+ layout = KEYBOARD_LAYOUT_QWERTZ;
+ }
+
+ if (!strcmp(Cmdline_keyboard_layout, "azerty")) {
+ layout = KEYBOARD_LAYOUT_AZERTY;
+ }
+
}
- SDLtoFS2[SDLK_0] = KEY_0;
- SDLtoFS2[SDLK_1] = KEY_1;
- SDLtoFS2[SDLK_2] = KEY_2;
- SDLtoFS2[SDLK_3] = KEY_3;
- SDLtoFS2[SDLK_4] = KEY_4;
- SDLtoFS2[SDLK_5] = KEY_5;
- SDLtoFS2[SDLK_6] = KEY_6;
- SDLtoFS2[SDLK_7] = KEY_7;
- SDLtoFS2[SDLK_8] = KEY_8;
- SDLtoFS2[SDLK_9] = KEY_9;
+ if(layout == KEYBOARD_LAYOUT_AZERTY) {
+ SDLtoFS2[SDLK_WORLD_64] = KEY_0;
+ SDLtoFS2[SDLK_AMPERSAND] = KEY_1;
+ SDLtoFS2[SDLK_WORLD_73] = KEY_2;
+ SDLtoFS2[SDLK_QUOTEDBL] = KEY_3;
+ SDLtoFS2[SDLK_QUOTE] = KEY_4;
+ SDLtoFS2[SDLK_LEFTPAREN] = KEY_5;
+ SDLtoFS2[SDLK_MINUS] = KEY_6;
+ SDLtoFS2[SDLK_WORLD_72] = KEY_7;
+ SDLtoFS2[SDLK_UNDERSCORE] = KEY_8;
+ SDLtoFS2[SDLK_WORLD_71] = KEY_9;
+ } else {
+ SDLtoFS2[SDLK_0] = KEY_0;
+ SDLtoFS2[SDLK_1] = KEY_1;
+ SDLtoFS2[SDLK_2] = KEY_2;
+ SDLtoFS2[SDLK_3] = KEY_3;
+ SDLtoFS2[SDLK_4] = KEY_4;
+ SDLtoFS2[SDLK_5] = KEY_5;
+ SDLtoFS2[SDLK_6] = KEY_6;
+ SDLtoFS2[SDLK_7] = KEY_7;
+ SDLtoFS2[SDLK_8] = KEY_8;
+ SDLtoFS2[SDLK_9] = KEY_9;
+ }
SDLtoFS2[SDLK_a] = KEY_A;
SDLtoFS2[SDLK_b] = KEY_B;
@@ -190,6 +211,22 @@
SDLtoFS2[SDLK_WORLD_68] = KEY_RAPOSTRO;
}
+ if(layout == KEYBOARD_LAYOUT_AZERTY) {
+ SDLtoFS2[SDLK_RIGHTPAREN] = KEY_MINUS;
+ SDLtoFS2[SDLK_EQUALS] = KEY_EQUAL;
+ SDLtoFS2[SDLK_EXCLAIM] = KEY_DIVIDE;
+ SDLtoFS2[SDLK_ASTERISK] = KEY_SLASH;
+ SDLtoFS2[SDLK_COMMA] = KEY_COMMA;
+ SDLtoFS2[SDLK_COLON] = KEY_PERIOD;
+ SDLtoFS2[SDLK_SEMICOLON] = KEY_SEMICOL;
+
+ SDLtoFS2[SDLK_CARET] = KEY_LBRACKET;
+ SDLtoFS2[SDLK_DOLLAR] = KEY_RBRACKET;
+
+ SDLtoFS2[SDLK_WORLD_18] = KEY_LAPOSTRO;
+ SDLtoFS2[SDLK_WORLD_89] = KEY_RAPOSTRO;
+ }
+
SDLtoFS2[SDLK_ESCAPE] = KEY_ESC;
SDLtoFS2[SDLK_RETURN] = KEY_ENTER;
SDLtoFS2[SDLK_BACKSPACE] = KEY_BACKSP;
@@ -674,38 +711,7 @@
}
#ifndef SCP_UNIX
- if(Lcl_fr){
- switch (code) {
- case KEY_A:
- code = KEY_Q;
- break;
- case KEY_M:
- code = KEY_COMMA;
- break;
-
- case KEY_Q:
- code = KEY_A;
- break;
-
- case KEY_W:
- code = KEY_Z;
- break;
-
- case KEY_Z:
- code = KEY_W;
- break;
-
- case KEY_SEMICOL:
- code = KEY_M;
- break;
-
- case KEY_COMMA:
- code = KEY_SEMICOL;
- break;
- }
- }
-
if ( (code == 0xc5) && !Key_running_NT ) {
key_turn_off_numlock();
}
[attachment deleted by a basterd]
-
Looks good.
-
Any other review ? (before we can get this into trunk ?)
-
Committed to Trunk by The E on r8059. Topic title updated to reflect status.