aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Gérard <1322081+GreatWizard@users.noreply.github.com>2020-06-25 07:52:40 +0200
committerGitHub <noreply@github.com>2020-06-24 22:52:40 -0700
commit9b85bd68a45026fb796806342b47ac0176ab6510 (patch)
tree959be61add3234e6974a0a676f237ecbe66622f1
parentce91b36c5dd75a7e09700a2362adeb04021582c4 (diff)
downloadqmk_firmware-9b85bd68a45026fb796806342b47ac0176ab6510.tar.gz
qmk_firmware-9b85bd68a45026fb796806342b47ac0176ab6510.zip
feat: add dvorak-fr as extra keymap (#9512)
-rw-r--r--docs/reference_keymap_extras.md1
-rw-r--r--quantum/keymap_extras/keymap_dvorak_fr.h135
-rw-r--r--quantum/keymap_extras/sendstring_dvorak_fr.h80
3 files changed, 216 insertions, 0 deletions
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md
index 44b056af6..a7026a099 100644
--- a/docs/reference_keymap_extras.md
+++ b/docs/reference_keymap_extras.md
@@ -64,6 +64,7 @@ There are also a few which are not quite language-specific, but useful if you ar
64|-------------------|------------------------| 64|-------------------|------------------------|
65|Colemak |`keymap_colemak.h` | 65|Colemak |`keymap_colemak.h` |
66|Dvorak |`keymap_dvorak.h` | 66|Dvorak |`keymap_dvorak.h` |
67|Dvorak (French) |`keymap_dvorak_fr.h` |
67|Dvorak (Programmer)|`keymap_dvp.h` | 68|Dvorak (Programmer)|`keymap_dvp.h` |
68|Norman |`keymap_norman.h` | 69|Norman |`keymap_norman.h` |
69|Plover* |`keymap_plover.h` | 70|Plover* |`keymap_plover.h` |
diff --git a/quantum/keymap_extras/keymap_dvorak_fr.h b/quantum/keymap_extras/keymap_dvorak_fr.h
new file mode 100644
index 000000000..7bb5893d3
--- /dev/null
+++ b/quantum/keymap_extras/keymap_dvorak_fr.h
@@ -0,0 +1,135 @@
1/* Copyright 2020 Guillaume Gérard
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17/* Dvorak for the French language
18 * Version: 2
19 *
20 * The layout is designed by Francis Leboutte <dvorak-fr@algo.be>
21 *
22 * Source: https://algo.be/ergo/dvorak-fr.html
23 */
24
25#pragma once
26
27#include "keymap.h"
28
29// clang-format off
30
31/*
32 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
33 * │ « │ » │ / │ - │ è │ \ │ ^ │ ( │ ` │ ) │ _ │ [ │ ] │       │
34 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
35 * │     │ : │ ' │ é │ G │ . │ H │ V │ C │ M │ K │ Z │ ¨ │     │
36 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │
37 * │      │ O │ A │ U │ E │ B │ F │ S │ T │ N │ D │ W │ ~ │    │
38 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
39 * │    │ à │ ; │ Q │ , │ I │ Y │ X │ R │ L │ P │ J │          │
40 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
41 * │    │    │    │                        │    │    │    │    │
42 * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
43 */
44// Row 1
45#define DV_LDAQ KC_GRV // «
46#define DV_RDAQ KC_1 // »
47#define DV_SLSH KC_2 // /
48#define DV_MINS KC_3 // -
49#define DV_EGRV KC_4 // è
50#define DV_BSLS KC_5 // (backslash)
51#define DV_CIRC KC_6 // ^ (dead)
52#define DV_LPRN KC_7 // (
53#define DV_GRV KC_8 // ` (dead)
54#define DV_RPRN KC_9 // )
55#define DV_UNDS KC_0 // _
56#define DV_LBRC KC_MINS // [
57#define DV_RBRC KC_EQL // ]
58// Row 2
59#define DV_COLN KC_Q // :
60#define DV_QUOT KC_W // '
61#define DV_EACU KC_E // é
62#define DV_G KC_R // G
63#define DV_DOT KC_T // .
64#define DV_H KC_Y // H
65#define DV_V KC_U // V
66#define DV_C KC_I // C
67#define DV_M KC_O // M
68#define DV_K KC_P // K
69#define DV_Z KC_LBRC // Z
70#define DV_DIAE KC_RBRC // ¨ (dead)
71// Row 3
72#define DV_O KC_A // O
73#define DV_A KC_S // A
74#define DV_U KC_D // U
75#define DV_E KC_F // E
76#define DV_B KC_G // B
77#define DV_F KC_H // F
78#define DV_S KC_J // S
79#define DV_T KC_K // T
80#define DV_N KC_L // N
81#define DV_D KC_SCLN // D
82#define DV_W KC_QUOT // W
83#define DV_TILD KC_NUHS // ~ (dead)
84// Row 4
85#define DV_AGRV KC_NUBS // à
86#define DV_SCLN KC_Z // ;
87#define DV_Q KC_X // Q
88#define DV_COMM KC_C // ,
89#define DV_I KC_V // I
90#define DV_Y KC_B // Y
91#define DV_X KC_N // X
92#define DV_R KC_M // R
93#define DV_L KC_COMM // L
94#define DV_P KC_DOT // P
95#define DV_J KC_SLSH // J
96
97/* Shifted symbols
98 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
99 * │ * │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 0 │ 0 │ + │ % │       │
100 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
101 * │     │ ? │ < │ > │   │ ! │   │   │   │   │   │   │ = │     │
102 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │
103 * │      │   │   │   │   │   │   │   │   │   │   │   │ # │    │
104 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
105 * │    │ ç │ | │   │ @ │   │   │   │   │   │   │   │          │
106 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
107 * │    │    │    │                        │    │    │    │    │
108 * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
109 */
110// Row 1
111#define DV_ASTR S(DV_LDAQ) // *
112#define DV_1 S(DV_RDAQ) // 1
113#define DV_2 S(DV_SLSH) // 2
114#define DV_3 S(DV_MINS) // 3
115#define DV_4 S(DV_EGRV) // 4
116#define DV_5 S(DV_BSLS) // 5
117#define DV_6 S(DV_CIRC) // 6
118#define DV_7 S(DV_LPRN) // 7
119#define DV_8 S(DV_GRV) // 8
120#define DV_9 S(DV_RPRN) // 9
121#define DV_0 S(DV_UNDS) // 0
122#define DV_PLUS S(DV_LBRC) // +
123#define DV_PERC S(DV_RBRC) // %
124// Row 2
125#define DV_QUES S(DV_COLN) // ?
126#define DV_LABK S(DV_QUOT) // <
127#define DV_RABK S(DV_EACU) // >
128#define DV_EXLM S(DV_DOT) // !
129#define DV_EQL S(DV_DIAE) // =
130// Row 3
131#define DV_HASH S(DV_TILD) // #
132// Row 4
133#define DV_CCED S(DV_AGRV) // ç
134#define DV_PIPE S(DV_SCLN) // |
135#define DV_AT S(DV_COMM) // @
diff --git a/quantum/keymap_extras/sendstring_dvorak_fr.h b/quantum/keymap_extras/sendstring_dvorak_fr.h
new file mode 100644
index 000000000..98d0577af
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_dvorak_fr.h
@@ -0,0 +1,80 @@
1/* Copyright 2020 Guillaume Gérard
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17// Sendstring lookup tables for Dvorak French layouts
18
19#pragma once
20
21#include "keymap_dvorak_fr.h"
22
23// clang-format off
24
25const uint8_t ascii_to_shift_lut[16] PROGMEM = {
26 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
27 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
28 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
29 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
30
31 KCLUT_ENTRY(0, 1, 0, 1, 0, 1, 0, 0),
32 KCLUT_ENTRY(0, 0, 1, 1, 0, 0, 0, 0),
33 KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
34 KCLUT_ENTRY(1, 1, 0, 0, 1, 1, 1, 1),
35 KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
36 KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
37 KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
38 KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 0),
39 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
40 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
41 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
42 KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 0, 0),
43};
44
45
46const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
47 // NUL SOH STX ETX EOT ENQ ACK BEL
48 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
49 // BS TAB LF VT FF CR SO SI
50 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
51 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
52 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
53 // CAN EM SUB ESC FS GS RS US
54 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
55
56 // ! " # $ % & '
57 KC_SPC, DV_DOT, XXXXXXX, DV_TILD, XXXXXXX, DV_RBRC, XXXXXXX, DV_QUOT,
58 // ( ) * + , - . /
59 DV_LPRN, DV_RPRN, DV_LDAQ, DV_LBRC, DV_COMM, DV_MINS, DV_DOT, DV_SLSH,
60 // 0 1 2 3 4 5 6 7
61 DV_UNDS, DV_RDAQ, DV_SLSH, DV_MINS, DV_EGRV, DV_BSLS, DV_CIRC, DV_LPRN,
62 // 8 9 : ; < = > ?
63 DV_GRV, DV_RPRN, DV_COLN, DV_SCLN, DV_QUOT, DV_DIAE, DV_EACU, DV_COLN,
64 // @ A B C D E F G
65 DV_COMM, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
66 // H I J K L M N O
67 DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
68 // P Q R S T U V W
69 DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
70 // X Y Z [ \ ] ^ _
71 DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_CIRC, DV_UNDS,
72 // ` a b c d e f g
73 DV_GRV, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G,
74 // h i j k l m n o
75 DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O,
76 // p q r s t u v w
77 DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W,
78 // x y z { | } ~ DEL
79 DV_X, DV_Y, DV_Z, XXXXXXX, DV_SCLN, XXXXXXX, DV_TILD, KC_DEL
80};