summaryrefslogtreecommitdiffstats
path: root/quantum/keymap_extras/keymap_canadian_multilingual.h
blob: e30419b5bef7f7664355db14d4d308a686d60665 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#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

// GR2A-ed characters (non-exhaustive list)
// second row
#define CM_OE_LIGATURE  GR2A(KC_E)      // œ
#define CM_OE           CM_OE_LIGATURE

// third row
#define CM_AE_LIGATURE  GR2A(KC_A)      // æ
#define CM_AE           CM_AE_LIGATURE
#define CM_DEAD_ACUTE   GR2A(KC_SCLN)   // dead acute accent
#define CM_DACT         CM_DEAD_ACUTE

#endif