summary refs log tree commit diff
path: root/quantum
diff options
context:
space:
mode:
authorDidier Loiseau <didierloiseau+git@gmail.com>2016-02-17 21:45:38 +0100
committerDidier Loiseau <didierloiseau+git@gmail.com>2016-04-02 18:16:30 +0200
commita7cef2ca0a2322448d02008337013936b1d550ec (patch)
treebcf02dd1296a30b98125ca64a504d8f0a360a006 /quantum
parentb8ddbd21810951f64a081e4c3096bbc6aedc9aeb (diff)
Initial BÉPO over CSA with Shift layer
Initial implementation of the BÉPO layout
for use with the Canadian Multilingual Standard layout
(a.k.a. CSA / ACNOR layout) on the OS-side.
- support all bépo characters from the default and shifted layers
Diffstat (limited to 'quantum')
-rw-r--r--quantum/keymap_extras/keymap_canadian_multilingual.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/quantum/keymap_extras/keymap_canadian_multilingual.h b/quantum/keymap_extras/keymap_canadian_multilingual.h
new file mode 100644
index 0000000000..ae60ffe37e
--- /dev/null
+++ b/quantum/keymap_extras/keymap_canadian_multilingual.h
@@ -0,0 +1,105 @@
+#ifndef KEYMAP_CANADIAN_MULTILINGUAG_H
+#define KEYMAP_CANADIAN_MULTILINGUAG_H
+
+#include "keymap_common.h"
+
+// Alt gr
+#ifndef ALTGR
+#define ALTGR(kc)   RALT(kc)
+#endif
+#ifndef ALGR
+#define ALGR(kc)    ALTGR(kc)
+#endif
+
+#define CM_ALTGR    KC_RALT
+#define CM_ALGR     CM_ALTGR
+
+#ifndef GR2A
+#define GR2A(kc)    RCTL(kc)
+#endif
+
+// Normal characters
+// First row
+#define CM_SLASH    KC_GRV      // /
+#define CM_SLSH     CM_SLASH
+
+// Second row
+#define CM_DEAD_CIRCUMFLEX  KC_LBRACKET         // dead ^
+#define CM_DCRC             CM_DEAD_CIRCUMFLEX
+#define CM_C_CEDILLA        KC_RBRACKET         // Ç
+#define CM_CCED             CM_C_CEDILLA
+
+// Third row
+#define CM_E_GRAVE  KC_QUOT     // è
+#define CM_EGRV     CM_E_GRAVE
+#define CM_A_GRAVE  KC_BSLASH   // à
+#define CM_AGRV     CM_A_GRAVE
+
+// Fourth row
+#define CM_U_GRAVE  KC_NONUS_BSLASH     // ù
+#define CM_UGRV     CM_U_GRAVE
+#define CM_E_ACUTE  KC_SLSH             // é
+#define CM_ECUT     CM_E_ACUTE
+
+// Shifted characters
+// First row
+#define CM_BACKSLASH    LSFT(CM_SLASH)  /* \ */
+#define CM_BSLS         CM_BACKSLASH
+#define CM_QUESTION     LSFT(KC_6)      // ?
+#define CM_QEST         CM_QUESTION
+
+// Second row
+#define CM_DEAD_TREMA   LSFT(CM_DEAD_CIRCUMFLEX)    // dead trema/umlaut/diaresis for ä ë ï ö ü
+#define CM_DTRM         CM_DEAD_TREMA
+
+// Third row
+// all same as US-QWERTY, or capitalised character of the non-shifted key
+
+// Fourth row
+#define CM_APOSTROPHE   LSFT(KC_COMMA)  // '
+#define CM_APOS         CM_APOSTROPHE
+#define CM_DOUBLE_QUOTE LSFT(KC_DOT)    // "
+#define CM_DQOT         CM_DOUBLE_QUOTE
+
+// Alt Gr-ed characters
+// First row
+#define CM_PIPE                 ALTGR(CM_SLASH)         // |
+#define CM_CURRENCY             ALTGR(KC_4)             // ¤
+#define CM_CURR                 CM_CURRENCY
+#define CM_LEFT_CURLY_BRACE     ALTGR(KC_7)             // {
+#define CM_LCBR                 CM_LEFT_CURLY_BRACE
+#define CM_RIGHT_CURLY_BRACE    ALTGR(KC_8)             // }
+#define CM_RCBR                 CM_RIGHT_CURLY_BRACE
+#define CM_LBRACKET             ALTGR(KC_9)             // [
+#define CM_LBRC                 CM_LBRACKET
+#define CM_RBRACKET             ALTGR(KC_0)             // ]
+#define CM_RBRC                 CM_RBRACKET
+#define CM_NEGATION             ALTGR(KC_EQUAL)         // ¬
+#define CM_NEGT                 CM_NEGATION
+
+// Second row
+// euro symbol not available on Linux? (X.org)
+#define CM_EURO         ALTGR(KC_E)                 // €
+#define CM_DEAD_GRAVE   ALTGR(CM_DEAD_CIRCUMFLEX)
+#define CM_DGRV         CM_DEAD_GRAVE               // dead `
+#define CM_TILDE        ALTGR(CM_C_CEDILLA)         // ~
+#define CM_TILD         CM_TILDE
+
+// Third row
+#define CM_DEGREE   ALTGR(KC_SCOLON)    // °
+#define CM_DEGR     CM_DEGREE
+
+// Fourth row
+#define CM_LEFT_GUILLEMET   ALTGR(KC_Z)         // «
+#define CM_LGIL             CM_LEFT_GUILLEMET
+#define CM_RIGHT_GUILLEMET  ALTGR(KC_X)         // »
+#define CM_RGIL             CM_RIGHT_GUILLEMET
+#define CM_LESS             ALTGR(KC_COMMA)     // <
+#define CM_GREATER          ALTGR(KC_DOT)       // >
+#define CM_GRTR             CM_GREATER
+
+// Space bar
+#define CM_NON_BREAKING_SPACE   ALTGR(KC_SPACE)
+#define CM_NBSP                 CM_NON_BREAKING_SPACE
+
+#endif