@ -0,0 +1,135 @@ | |||
/* Copyright 2020 Guillaume Gérard | |||
* | |||
* 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/>. | |||
*/ | |||
/* Dvorak for the French language | |||
* Version: 2 | |||
* | |||
* The layout is designed by Francis Leboutte <dvorak-fr@algo.be> | |||
* | |||
* Source: https://algo.be/ergo/dvorak-fr.html | |||
*/ | |||
#pragma once | |||
#include "keymap.h" | |||
// clang-format off | |||
/* | |||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ | |||
* │ « │ » │ / │ - │ è │ \ │ ^ │ ( │ ` │ ) │ _ │ [ │ ] │ │ | |||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ | |||
* │ │ : │ ' │ é │ G │ . │ H │ V │ C │ M │ K │ Z │ ¨ │ │ | |||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ | |||
* │ │ O │ A │ U │ E │ B │ F │ S │ T │ N │ D │ W │ ~ │ │ | |||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ | |||
* │ │ à │ ; │ Q │ , │ I │ Y │ X │ R │ L │ P │ J │ │ | |||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ | |||
* │ │ │ │ │ │ │ │ │ | |||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ | |||
*/ | |||
// Row 1 | |||
#define DV_LDAQ KC_GRV // « | |||
#define DV_RDAQ KC_1 // » | |||
#define DV_SLSH KC_2 // / | |||
#define DV_MINS KC_3 // - | |||
#define DV_EGRV KC_4 // è | |||
#define DV_BSLS KC_5 // (backslash) | |||
#define DV_CIRC KC_6 // ^ (dead) | |||
#define DV_LPRN KC_7 // ( | |||
#define DV_GRV KC_8 // ` (dead) | |||
#define DV_RPRN KC_9 // ) | |||
#define DV_UNDS KC_0 // _ | |||
#define DV_LBRC KC_MINS // [ | |||
#define DV_RBRC KC_EQL // ] | |||
// Row 2 | |||
#define DV_COLN KC_Q // : | |||
#define DV_QUOT KC_W // ' | |||
#define DV_EACU KC_E // é | |||
#define DV_G KC_R // G | |||
#define DV_DOT KC_T // . | |||
#define DV_H KC_Y // H | |||
#define DV_V KC_U // V | |||
#define DV_C KC_I // C | |||
#define DV_M KC_O // M | |||
#define DV_K KC_P // K | |||
#define DV_Z KC_LBRC // Z | |||
#define DV_DIAE KC_RBRC // ¨ (dead) | |||
// Row 3 | |||
#define DV_O KC_A // O | |||
#define DV_A KC_S // A | |||
#define DV_U KC_D // U | |||
#define DV_E KC_F // E | |||
#define DV_B KC_G // B | |||
#define DV_F KC_H // F | |||
#define DV_S KC_J // S | |||
#define DV_T KC_K // T | |||
#define DV_N KC_L // N | |||
#define DV_D KC_SCLN // D | |||
#define DV_W KC_QUOT // W | |||
#define DV_TILD KC_NUHS // ~ (dead) | |||
// Row 4 | |||
#define DV_AGRV KC_NUBS // à | |||
#define DV_SCLN KC_Z // ; | |||
#define DV_Q KC_X // Q | |||
#define DV_COMM KC_C // , | |||
#define DV_I KC_V // I | |||
#define DV_Y KC_B // Y | |||
#define DV_X KC_N // X | |||
#define DV_R KC_M // R | |||
#define DV_L KC_COMM // L | |||
#define DV_P KC_DOT // P | |||
#define DV_J KC_SLSH // J | |||
/* Shifted symbols | |||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ | |||
* │ * │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 0 │ 0 │ + │ % │ │ | |||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ | |||
* │ │ ? │ < │ > │ │ ! │ │ │ │ │ │ │ = │ │ | |||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ | |||
* │ │ │ │ │ │ │ │ │ │ │ │ │ # │ │ | |||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ | |||
* │ │ ç │ | │ │ @ │ │ │ │ │ │ │ │ │ | |||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ | |||
* │ │ │ │ │ │ │ │ │ | |||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ | |||
*/ | |||
// Row 1 | |||
#define DV_ASTR S(DV_LDAQ) // * | |||
#define DV_1 S(DV_RDAQ) // 1 | |||
#define DV_2 S(DV_SLSH) // 2 | |||
#define DV_3 S(DV_MINS) // 3 | |||
#define DV_4 S(DV_EGRV) // 4 | |||
#define DV_5 S(DV_BSLS) // 5 | |||
#define DV_6 S(DV_CIRC) // 6 | |||
#define DV_7 S(DV_LPRN) // 7 | |||
#define DV_8 S(DV_GRV) // 8 | |||
#define DV_9 S(DV_RPRN) // 9 | |||
#define DV_0 S(DV_UNDS) // 0 | |||
#define DV_PLUS S(DV_LBRC) // + | |||
#define DV_PERC S(DV_RBRC) // % | |||
// Row 2 | |||
#define DV_QUES S(DV_COLN) // ? | |||
#define DV_LABK S(DV_QUOT) // < | |||
#define DV_RABK S(DV_EACU) // > | |||
#define DV_EXLM S(DV_DOT) // ! | |||
#define DV_EQL S(DV_DIAE) // = | |||
// Row 3 | |||
#define DV_HASH S(DV_TILD) // # | |||
// Row 4 | |||
#define DV_CCED S(DV_AGRV) // ç | |||
#define DV_PIPE S(DV_SCLN) // | | |||
#define DV_AT S(DV_COMM) // @ |
@ -0,0 +1,80 @@ | |||
/* Copyright 2020 Guillaume Gérard | |||
* | |||
* 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/>. | |||
*/ | |||
// Sendstring lookup tables for Dvorak French layouts | |||
#pragma once | |||
#include "keymap_dvorak_fr.h" | |||
// clang-format off | |||
const uint8_t ascii_to_shift_lut[16] PROGMEM = { | |||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), | |||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), | |||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), | |||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), | |||
KCLUT_ENTRY(0, 1, 0, 1, 0, 1, 0, 0), | |||
KCLUT_ENTRY(0, 0, 1, 1, 0, 0, 0, 0), | |||
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), | |||
KCLUT_ENTRY(1, 1, 0, 0, 1, 1, 1, 1), | |||
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), | |||
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), | |||
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), | |||
KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 0), | |||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), | |||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), | |||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), | |||
KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 0, 0), | |||
}; | |||
const uint8_t ascii_to_keycode_lut[128] PROGMEM = { | |||
// NUL SOH STX ETX EOT ENQ ACK BEL | |||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | |||
// BS TAB LF VT FF CR SO SI | |||
KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | |||
// DLE DC1 DC2 DC3 DC4 NAK SYN ETB | |||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | |||
// CAN EM SUB ESC FS GS RS US | |||
XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | |||
// ! " # $ % & ' | |||
KC_SPC, DV_DOT, XXXXXXX, DV_TILD, XXXXXXX, DV_RBRC, XXXXXXX, DV_QUOT, | |||
// ( ) * + , - . / | |||
DV_LPRN, DV_RPRN, DV_LDAQ, DV_LBRC, DV_COMM, DV_MINS, DV_DOT, DV_SLSH, | |||
// 0 1 2 3 4 5 6 7 | |||
DV_UNDS, DV_RDAQ, DV_SLSH, DV_MINS, DV_EGRV, DV_BSLS, DV_CIRC, DV_LPRN, | |||
// 8 9 : ; < = > ? | |||
DV_GRV, DV_RPRN, DV_COLN, DV_SCLN, DV_QUOT, DV_DIAE, DV_EACU, DV_COLN, | |||
// @ A B C D E F G | |||
DV_COMM, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G, | |||
// H I J K L M N O | |||
DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O, | |||
// P Q R S T U V W | |||
DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W, | |||
// X Y Z [ \ ] ^ _ | |||
DV_X, DV_Y, DV_Z, DV_LBRC, DV_BSLS, DV_RBRC, DV_CIRC, DV_UNDS, | |||
// ` a b c d e f g | |||
DV_GRV, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F, DV_G, | |||
// h i j k l m n o | |||
DV_H, DV_I, DV_J, DV_K, DV_L, DV_M, DV_N, DV_O, | |||
// p q r s t u v w | |||
DV_P, DV_Q, DV_R, DV_S, DV_T, DV_U, DV_V, DV_W, | |||
// x y z { | } ~ DEL | |||
DV_X, DV_Y, DV_Z, XXXXXXX, DV_SCLN, XXXXXXX, DV_TILD, KC_DEL | |||
}; |