Index: code/controlconfig/controlsconfigcommon.cpp
===================================================================
--- code/controlconfig/controlsconfigcommon.cpp	(revision 11150)
+++ code/controlconfig/controlsconfigcommon.cpp	(working copy)
@@ -249,12 +249,12 @@
 char *Scan_code_text_french[] = {
 	"",				"\x90""chap",			"1",				"2",				"3",				"4",				"5",				"6",
 	"7",				"8",				"9",				"0",				"-",				"=",				"Fl\x82""che Ret.",			"Tab",
-	"Q",				"W",				"E",				"R",				"T",				"Y",				"U",				"I",
-	"O",				"P",				"[",				"]",				"Entr\x82""e",			"Ctrl Gauche",			"A",				"S",
+	"A",				"Z",				"E",				"R",				"T",				"Y",				"U",				"I",
+	"O",				"P",				"[",				"]",				"Entr\x82""e",			"Ctrl Gauche",			"Q",				"S",
 
-	"D",				"F",				"G",				"H",				"J",				"K",				"L",				";",
-	"'",				"`",				"Maj.",			"\\",				"Z",				"X",				"C",				"V",
-	"B",				"N",				"M",				",",				".",				"/",				"Maj.",			"Pav\x82 *",
+	"D",				"F",				"G",				"H",				"J",				"K",				"L",				"M",
+	"'",				"`",				"Maj.",			"\\",				"W",				"X",				"C",				"V",
+	"B",				"N",				",",				";",				".",				"/",				"Maj.",			"Pav\x82 *",
 	"Alt",				"Espace",			"Verr. Maj.",			"F1",				"F2",				"F3",				"F4",				"F5",
 
 	"F6",				"F7",				"F8",				"F9",				"F10",				"Pause",			"Arret defil",		"Pav\x82 7",
Index: code/io/key.cpp
===================================================================
--- code/io/key.cpp	(revision 11150)
+++ code/io/key.cpp	(working copy)
@@ -149,7 +149,6 @@
 		SDLtoFS2[SDLK_9] = KEY_9;
 	}
 
-	SDLtoFS2[SDLK_a] = KEY_A;
 	SDLtoFS2[SDLK_b] = KEY_B;
 	SDLtoFS2[SDLK_c] = KEY_C;
 	SDLtoFS2[SDLK_d] = KEY_D;
@@ -161,20 +160,37 @@
 	SDLtoFS2[SDLK_j] = KEY_J;
 	SDLtoFS2[SDLK_k] = KEY_K;
 	SDLtoFS2[SDLK_l] = KEY_L;
-	SDLtoFS2[SDLK_m] = KEY_M;
 	SDLtoFS2[SDLK_n] = KEY_N;
 	SDLtoFS2[SDLK_o] = KEY_O;
 	SDLtoFS2[SDLK_p] = KEY_P;
-	SDLtoFS2[SDLK_q] = KEY_Q;
 	SDLtoFS2[SDLK_r] = KEY_R;
 	SDLtoFS2[SDLK_s] = KEY_S;
 	SDLtoFS2[SDLK_t] = KEY_T;
 	SDLtoFS2[SDLK_u] = KEY_U;
 	SDLtoFS2[SDLK_v] = KEY_V;
-	SDLtoFS2[SDLK_w] = KEY_W;
 	SDLtoFS2[SDLK_x] = KEY_X;
-	SDLtoFS2[SDLK_y] = KEY_Y;
-	SDLtoFS2[SDLK_z] = KEY_Z;
+	if(layout == KEYBOARD_LAYOUT_QWERTZ) {
+		SDLtoFS2[SDLK_a] = KEY_A;
+		SDLtoFS2[SDLK_m] = KEY_M;
+		SDLtoFS2[SDLK_q] = KEY_Q;
+		SDLtoFS2[SDLK_w] = KEY_W;
+		SDLtoFS2[SDLK_z] = KEY_Y;
+		SDLtoFS2[SDLK_y] = KEY_Z;
+	} else if(layout == KEYBOARD_LAYOUT_AZERTY) {
+		SDLtoFS2[SDLK_q] = KEY_A;
+		SDLtoFS2[SDLK_COMMA] = KEY_M;
+		SDLtoFS2[SDLK_a] = KEY_Q;
+		SDLtoFS2[SDLK_z] = KEY_W;
+		SDLtoFS2[SDLK_y] = KEY_Y;
+		SDLtoFS2[SDLK_w] = KEY_Z;
+	} else {
+		SDLtoFS2[SDLK_a] = KEY_A;
+		SDLtoFS2[SDLK_m] = KEY_M;
+		SDLtoFS2[SDLK_q] = KEY_Q;
+		SDLtoFS2[SDLK_w] = KEY_W;
+		SDLtoFS2[SDLK_y] = KEY_Y;
+		SDLtoFS2[SDLK_z] = KEY_Z;
+	}
 
 	if(layout == KEYBOARD_LAYOUT_DEFAULT) {
 		SDLtoFS2[SDLK_MINUS] = KEY_MINUS;
@@ -214,9 +230,9 @@
 		SDLtoFS2[SDLK_EQUALS] = KEY_EQUAL;
 		SDLtoFS2[SDLK_EXCLAIM] = KEY_DIVIDE;
 		SDLtoFS2[SDLK_ASTERISK] = KEY_SLASH;
-		SDLtoFS2[SDLK_COMMA] = KEY_COMMA;
+		SDLtoFS2[SDLK_SEMICOLON] = KEY_COMMA;
 		SDLtoFS2[SDLK_COLON] = KEY_PERIOD;
-		SDLtoFS2[SDLK_SEMICOLON] = KEY_SEMICOL;
+		SDLtoFS2[SDLK_m] = KEY_SEMICOL;
 
 		SDLtoFS2[SDLK_CARET] = KEY_LBRACKET;
 		SDLtoFS2[SDLK_DOLLAR] = KEY_RBRACKET;
