From 5d36118eaa2b7573090f4e1f42b6715f432bc7bb Mon Sep 17 00:00:00 2001
From: youdroid <13148824+youdroid@users.noreply.github.com>
Date: Sun, 15 Apr 2018 18:50:46 +0200
Subject: [PATCH]  Add French Layout for XD75 (#2681)

---
 keyboards/xd75/keymaps/french/README.md       |  20 +++
 keyboards/xd75/keymaps/french/config.h        |  24 +++
 keyboards/xd75/keymaps/french/keymap.c        |  60 +++++++
 keyboards/xd75/keymaps/french/keymap_french.c | 157 ++++++++++++++++++
 keyboards/xd75/keymaps/french/rules.mk        |  20 +++
 5 files changed, 281 insertions(+)
 create mode 100644 keyboards/xd75/keymaps/french/README.md
 create mode 100644 keyboards/xd75/keymaps/french/config.h
 create mode 100644 keyboards/xd75/keymaps/french/keymap.c
 create mode 100644 keyboards/xd75/keymaps/french/keymap_french.c
 create mode 100644 keyboards/xd75/keymaps/french/rules.mk

diff --git a/keyboards/xd75/keymaps/french/README.md b/keyboards/xd75/keymaps/french/README.md
new file mode 100644
index 0000000000..8c5330290e
--- /dev/null
+++ b/keyboards/xd75/keymaps/french/README.md
@@ -0,0 +1,20 @@
+# Clavier AZERTY français
+
+![Disposition Clavier](https://i.imgur.com/tH9TVBc.png)
+
+
+# Configuration du clavier
+
+Ce clavier AZERTY est basé sur le fichier keymap_french.c de correspondance QWERTY - AZERTY.
+
+Ce fichier est composé de trois énumérations (layout français, touches de contrôle, touches multimédias) correspondant aux keycodes sous la forme d'hexa.
+
+Il peut être utilisé pour toute autre configuration de clavier juste en incluant ce fichier dans son propre keymap.c.
+
+La touche de fonction permet elle d'avoir accès aux différentes touches multimédias ainsi qu'au pavé numérique. Mais aussi si le clavier est équipé de led, à différents modes d'éclairage.
+
+# Compilation 
+
+```
+make xd75:french:dfu
+```
diff --git a/keyboards/xd75/keymaps/french/config.h b/keyboards/xd75/keymaps/french/config.h
new file mode 100644
index 0000000000..015377b5f8
--- /dev/null
+++ b/keyboards/xd75/keymaps/french/config.h
@@ -0,0 +1,24 @@
+/* Copyright 2017 Benjamin Kesselring
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/xd75/keymaps/french/keymap.c b/keyboards/xd75/keymaps/french/keymap.c
new file mode 100644
index 0000000000..a5d14674a9
--- /dev/null
+++ b/keyboards/xd75/keymaps/french/keymap.c
@@ -0,0 +1,60 @@
+#include "keymap_french.c"
+#include "xd75.h"
+
+
+// Layer shorthand
+#define _AZ 0
+#define _FN 1
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* AZERTY
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | ESC    | &      | é      | "      | '      | (      | -      | è      | _      | ç      | à      | )      | =      | INSERT | BACKSP |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | TAB    | a      | z      | e      | r      | t      | y      | u      | i      | o      | p      | ^      | $      | ENTER  | PG UP  |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
+ * | CAP LK | q      | s      | d      | f      | g      | h      | j      | k      | l      | m      | ù      | *      | ENTER  | PG DN  |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
+ * | LSHIFT | w      | x      | c      | v      | b      | n      | ,      | ;      | :      | !      | <      | LSHIFT | UP     | DEL    |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | LCTRL  | CMD    | ALT    | FN     | SPACE  | SPACE  | SPACE  | SPACE  | ALGR   | MENU   | HOME   | END    | LEFT   | DOWN   | RIGHT  |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_AZ] = { /* AZERTY */
+  { FR_ESC,  	FR_AMP, 	FR_EACU, 	FR_QUOT, 	FR_APOS,  	FR_LPAR, 	FR_MINS, 	FR_EGRV,  	FR_UNDS,  	FR_CCED,  	FR_AGRV,  	FR_RPAR,  	FR_EQUA,  	FR_INST,  	FR_BSPC },
+  { FR_TAB,  	FR_A,   	FR_Z,    	FR_E,    	FR_R,     	FR_T,    	FR_Y,    	FR_U,     	FR_I,     	FR_O,		FR_P,     	FR_HAT,   	FR_DLR,   	FR_ENTR,  	FR_PGUP },
+  { FR_CAPL, 	FR_Q,   	FR_S,    	FR_D,    	FR_F,     	FR_G,    	FR_H,    	FR_J,     	FR_K,     	FR_L,     	FR_M,     	FR_UGRV,  	FR_AST,   	FR_ENTR,  	FR_PGDN },
+  { FR_LSFT, 	FR_W,    	FR_X,    	FR_C,    	FR_V,     	FR_B,    	FR_N,    	FR_COMM,  	FR_SCLN,  	FR_COLN,  	FR_EXCL,  	FR_LESS,      	FR_RSFT,  	FR_UP,    	FR_DEL  },
+  { FR_LCTR, 	FR_LCMD, 	FR_LALT, 	MO(_FN),	FR_SPAC,  	FR_SPAC, 	FR_SPAC, 	FR_SPAC,  	FR_ALGR,  	FR_MENU,  	FR_HOME,  	FR_END,   	FR_LEFT,  	FR_DOWN,  	FR_RIGT },
+ },
+
+
+/* FUNCTION
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * |        | F1     | F2     | F3     | F4     | F5     | F6     | F7     | F8     | F9     | F10    | F11    | F12    | PRINT  | LED    |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * |        | PREV   | PLAY   | NEXT   |        |        |        |        | NUM LCK| 7      | 8      | 9      | *      |        | LED+   |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * |        | VOL-   | MUTE   | VOL+   |        |        |        |        |        | 4      | 5      | 6      | -      |        | LED-   |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * |        |        |        |        |        |        |        |        |        | 1      | 2      | 3      | +      |        | LEDMAX |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | RESET  |        |        | FN     |        |        |        |        |        |        | 0      | .      | PENT   |        | LEDLVL |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ 
+ [_FN] = { /* FUNCTION */
+  { FR_EMPT,	FR_F1,		FR_F2,		FR_F3,		FR_F4,		FR_F5,		FR_F6,  	FR_F7,		FR_F8,    	FR_F9,		FR_F10, 	FR_F11,  	FR_F12,   	FR_PSCR,	BL_TOGG },
+  { FR_EMPT,	FR_MPRV,	FR_MPLY,	FR_MNXT,	FR_EMPT,	FR_EMPT,	FR_EMPT,	FR_EMPT,	FR_NUML,  	FR_7,     	FR_8,   	FR_9,    	FR_MULT,  	FR_EMPT,	BL_INC	},
+  { FR_EMPT,	FR_MVDN,	FR_MUTE,	FR_MVUP,	FR_EMPT,	FR_EMPT,	FR_EMPT,	FR_EMPT,	FR_EMPT,  	FR_4,     	FR_5,   	FR_6,    	FR_MOIN,  	FR_EMPT,	BL_DEC	},
+  { FR_EMPT,	FR_EMPT,	FR_EMPT,	FR_EMPT,	FR_EMPT,	FR_EMPT,	FR_EMPT,	FR_EMPT,  	FR_EMPT,  	FR_1,     	FR_2,   	FR_3,    	FR_PLUS,  	FR_EMPT,	BL_ON 	},
+  { RESET,	FR_EMPT,	FR_EMPT,	FR_TRANS,	FR_EMPT,	FR_EMPT,	FR_EMPT,	FR_EMPT,  	FR_EMPT,  	FR_EMPT,  	FR_0,   	FR_DOT,  	FR_ENTK,  	FR_EMPT,	BL_STEP	},
+ },
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
diff --git a/keyboards/xd75/keymaps/french/keymap_french.c b/keyboards/xd75/keymaps/french/keymap_french.c
new file mode 100644
index 0000000000..f7d068c33e
--- /dev/null
+++ b/keyboards/xd75/keymaps/french/keymap_french.c
@@ -0,0 +1,157 @@
+enum french_key {
+
+	FR_EMPT			= 0x00,
+	FR_TRANS,
+	FR_Q			= 0x04,
+	FR_B,
+	FR_C,
+	FR_D,
+	FR_E,
+	FR_F,
+	FR_G,
+	FR_H,
+	FR_I,
+	FR_J,
+	FR_K,
+	FR_L,
+	FR_COMM,		/* 0x10 */
+	FR_N,
+	FR_O,
+	FR_P,
+	FR_A,
+	FR_R,
+	FR_S,
+	FR_T,
+	FR_U,
+	FR_V,
+	FR_Z,
+	FR_X,
+	FR_Y,
+	FR_W,
+	FR_AMP,  
+	FR_EACU,
+	FR_QUOT,		/* 0x20 */
+	FR_APOS,
+	FR_LPAR,
+	FR_MINS,
+	FR_EGRV,
+	FR_UNDS,
+	FR_CCED,
+	FR_AGRV,
+	FR_ENTR,
+	FR_ESC,
+	FR_BSPC,
+	FR_TAB,
+	FR_SPAC,
+	FR_RPAR,
+	FR_EQUA,
+	FR_HAT,
+	FR_DLR,			/* 0x30 */
+	FR_AST			=0x32,
+	FR_M,
+	FR_UGRV,
+	FR_SCLN			=0x36,
+	FR_COLN,
+	FR_EXCL,
+	FR_CAPL,
+	FR_F1,
+	FR_F2,
+	FR_F3,
+	FR_F4,
+	FR_F5,
+	FR_F6,
+	FR_F7,			/* 0x40 */
+	FR_F8,
+	FR_F9,
+	FR_F10,
+	FR_F11,
+	FR_F12,
+	FR_PSCR,
+	FR_INST			=0x49,
+	FR_HOME,
+	FR_PGUP,
+    	FR_DEL,
+    	FR_END,
+    	FR_PGDN,
+    	FR_RIGT,
+    	FR_LEFT,		/* 0x50 */
+    	FR_DOWN,
+    	FR_UP,
+	FR_NUML,
+	FR_SLSH,		/* KEYPAD */
+	FR_MULT,
+	FR_MOIN,
+	FR_PLUS,
+	FR_ENTK,
+	FR_1,
+	FR_2,
+	FR_3,
+	FR_4,
+	FR_5,
+	FR_6,
+	FR_7,
+	FR_8,			/* 0x60 */
+	FR_9,
+	FR_0,
+	FR_DOT,
+	FR_LESS,
+	FR_EQ			=0x67 /* END KEYPAD */,
+	FR_F13,
+    	FR_F14,
+    	FR_F15,
+    	FR_F16,
+    	FR_F17,
+    	FR_F18,
+    	FR_F19,
+    	FR_F20,
+    	FR_F21,			/* 0x70 */
+    	FR_F22,
+    	FR_F23,
+    	FR_F24,
+	FR_MENU			=0x76
+};
+
+
+enum french_control_touch{
+
+	/* Modifiers */
+	FR_LCTR			= 0xE0,
+    	FR_LSFT,
+    	FR_LALT,
+    	FR_LCMD,
+    	FR_RCTR,
+    	FR_RSFT,
+    	FR_ALGR,
+    	FR_RCMD
+};
+
+
+enum french_media_key{
+	/* System Control */
+    	FR_SYSTEM_POWER		= 0xA5,
+    	FR_SYSTEM_SLEEP,
+    	FR_SYSTEM_WAKE,
+
+    	/* Media Control */
+    	FR_MUTE,
+    	FR_MVUP,
+    	FR_MVDN,
+    	FR_MNXT,
+    	FR_MPRV,
+    	FR_MSTP,
+    	FR_MPLY,
+    	FR_MEDIA_SELECT,
+    	FR_MEDIA_EJECT,
+    	FR_MAIL,
+    	FR_CALCULATOR,
+    	FR_MY_COMPUTER,
+    	FR_WWW_SEARCH,
+    	FR_WWW_HOME,
+    	FR_WWW_BACK,
+    	FR_WWW_FORWARD,
+    	FR_WWW_STOP,
+    	FR_WWW_REFRESH,
+    	FR_WWW_FAVORITES,
+    	FR_MEDIA_FAST_FORWARD,
+    	FR_MEDIA_REWIND		/* 0xBC */
+};
diff --git a/keyboards/xd75/keymaps/french/rules.mk b/keyboards/xd75/keymaps/french/rules.mk
new file mode 100644
index 0000000000..dfd79792fa
--- /dev/null
+++ b/keyboards/xd75/keymaps/french/rules.mk
@@ -0,0 +1,20 @@
+# Copyright 2013 Jun Wako <wakojun@gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+RGBLIGHT_ENABLE = no
+
+ifndef QUANTUM_DIR
+	include ../../../../Makefile
+endif