Update Swiss French/German keymaps and add sendstring LUTs (#8689)

This commit is contained in:
Ryan 2020-04-19 06:56:49 +10:00 committed by GitHub
parent 66d94dc22a
commit 89eb3a9e42
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 571 additions and 177 deletions

View File

@ -13,97 +13,226 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef KEYMAP_FR_CH
#define KEYMAP_FR_CH #pragma once
#include "keymap.h" #include "keymap.h"
// normal characters // clang-format off
#define FR_CH_Z KC_Y
#define FR_CH_Y KC_Z
#define FR_CH_A KC_A /*
#define FR_CH_B KC_B *
#define FR_CH_C KC_C *  §  1  2  3  4  5  6  7  8  9  0  '  ^        
#define FR_CH_D KC_D *
#define FR_CH_E KC_E *       Q  W  E  R  T  Z  U  I  O  P  è  ¨      
#define FR_CH_F KC_F *     
#define FR_CH_G KC_G *        A  S  D  F  G  H  J  K  L  é  à  $     
#define FR_CH_H KC_H *
#define FR_CH_I KC_I *      <  Y  X  C  V  B  N  M  ,  .  -           
#define FR_CH_J KC_J *
#define FR_CH_K KC_K *                                                     
#define FR_CH_L KC_L *
#define FR_CH_M KC_M */
#define FR_CH_N KC_N // Row 1
#define FR_CH_O KC_O #define CH_SECT KC_GRV // §
#define FR_CH_P KC_P #define CH_1 KC_1 // 1
#define FR_CH_Q KC_Q #define CH_2 KC_2 // 2
#define FR_CH_R KC_R #define CH_3 KC_3 // 3
#define FR_CH_S KC_S #define CH_4 KC_4 // 4
#define FR_CH_T KC_T #define CH_5 KC_5 // 5
#define FR_CH_U KC_U #define CH_6 KC_6 // 6
#define FR_CH_V KC_V #define CH_7 KC_7 // 7
#define FR_CH_W KC_W #define CH_8 KC_8 // 8
#define FR_CH_X KC_X #define CH_9 KC_9 // 9
#define CH_0 KC_0 // 0
#define CH_QUOT KC_MINS // '
#define CH_CIRC KC_EQL // ^ (dead)
// Row 2
#define CH_Q KC_Q // Q
#define CH_W KC_W // W
#define CH_E KC_E // E
#define CH_R KC_R // R
#define CH_T KC_T // T
#define CH_Z KC_Y // Z
#define CH_U KC_U // U
#define CH_I KC_I // I
#define CH_O KC_O // O
#define CH_P KC_P // P
#define CH_EGRV KC_LBRC // è
#define CH_DIAE KC_RBRC // ¨ (dead)
// Row 3
#define CH_A KC_A // A
#define CH_S KC_S // S
#define CH_D KC_D // D
#define CH_F KC_F // F
#define CH_G KC_G // G
#define CH_H KC_H // H
#define CH_J KC_J // J
#define CH_K KC_K // K
#define CH_L KC_L // L
#define CH_EACU KC_SCLN // é
#define CH_AGRV KC_QUOT // à
#define CH_DLR KC_NUHS // $
// Row 4
#define CH_LABK KC_NUBS // <
#define CH_Y KC_Z // Y
#define CH_X KC_X // X
#define CH_C KC_C // C
#define CH_V KC_V // V
#define CH_B KC_B // B
#define CH_N KC_N // N
#define CH_M KC_M // M
#define CH_COMM KC_COMM // ,
#define CH_DOT KC_DOT // .
#define CH_MINS KC_SLSH // -
#define FR_CH_0 KC_0 /* Shifted symbols
#define FR_CH_1 KC_1 *
#define FR_CH_2 KC_2 *  °  +  " │ * │ ç │ % │ & │ / │ ( │ ) │ = │ ? │ ` │       │
#define FR_CH_3 KC_3 *
#define FR_CH_4 KC_4 *                                     ü  !      
#define FR_CH_5 KC_5 *     
#define FR_CH_6 KC_6 *                                   ö  ä  £     
#define FR_CH_7 KC_7 *
#define FR_CH_8 KC_8 *      >                       ;  :  _           
#define FR_CH_9 KC_9 *
*                                                     
*
*/
// Row 1
#define CH_DEG S(CH_SECT) // °
#define CH_PLUS S(CH_1) // +
#define CH_DQUO S(CH_2) // "
#define CH_ASTR S(CH_3) // *
#define CH_CCED S(CH_4) // ç
#define CH_PERC S(CH_5) // %
#define CH_AMPR S(CH_6) // &
#define CH_SLSH S(CH_7) // /
#define CH_LPRN S(CH_8) // (
#define CH_RPRN S(CH_9) // )
#define CH_EQL S(CH_0) // =
#define CH_QUES S(CH_QUOT) // ?
#define CH_GRV S(CH_CIRC) // ` (dead)
// Row 2
#define CH_UDIA S(CH_EGRV) // ü
#define CH_EXLM S(CH_DIAE) // !
// Row 3
#define CH_ODIA S(CH_EACU) // ö
#define CH_ADIA S(CH_AGRV) // ä
#define CH_PND S(CH_DLR) // £
// Row 4
#define CH_RABK S(CH_LABK) // >
#define CH_SCLN S(CH_COMM) // ;
#define CH_COLN S(CH_DOT) // :
#define CH_UNDS S(CH_MINS) // _
#define FR_CH_DOT KC_DOT /* AltGr symbols
#define FR_CH_COMM KC_COMM *
*     ¦  @  #        ¬  |  ¢        ´  ~        
*
*                                    [  ]      
*     
*                                      {  }     
*
*      \                                         
*
*                                                     
*
*/
// Row 1
#define CH_BRKP ALGR(CH_1) // ¦
#define CH_AT ALGR(CH_2) // @
#define CH_HASH ALGR(CH_3) // #
#define CH_NOT ALGR(CH_6) // ¬
#define CH_PIPE ALGR(CH_7) // |
#define CH_CENT ALGR(CH_8) // ¢
#define CH_ACUT ALGR(CH_QUOT) // ´ (dead)
#define CH_TILD ALGR(CH_CIRC) // ~ (dead)
// Row 2
#define CH_EURO ALGR(CH_E) // €
#define CH_LBRC ALGR(CH_EGRV) // [
#define CH_RBRC ALGR(CH_DIAE) // ]
// Row 3
#define CH_LCBR ALGR(CH_AGRV) // {
#define CH_RCBR ALGR(CH_DLR) // }
// Row 4
#define CH_BSLS ALGR(CH_LABK) // (backslash)
#define FR_CH_QUOT KC_MINS // DEPRECATED
#define FR_CH_AE KC_QUOT #define FR_CH_Z CH_Z
#define FR_CH_UE KC_LBRC #define FR_CH_Y CH_Y
#define FR_CH_OE KC_SCLN #define FR_CH_A CH_A
#define FR_CH_B CH_B
#define FR_CH_CIRC KC_EQL // accent circumflex ^ and grave ` and ~ #define FR_CH_C CH_C
#define FR_CH_LESS KC_NUBS // < and > and backslash #define FR_CH_D CH_D
#define FR_CH_MINS KC_SLSH // - and _ #define FR_CH_E CH_E
#define FR_CH_DLR KC_BSLS // $, £ and } #define FR_CH_F CH_F
#define FR_CH_PARA KC_GRV // § and ring ° #define FR_CH_G CH_G
#define FR_CH_DIAE KC_RBRC // accent ¨ #define FR_CH_H CH_H
#define FR_CH_I CH_I
// shifted characters #define FR_CH_J CH_J
#define FR_CH_RING LSFT(KC_GRV) // ° #define FR_CH_K CH_K
#define FR_CH_EXLM LSFT(KC_RBRC) // ! #define FR_CH_L CH_L
#define FR_CH_PLUS LSFT(KC_1) // + #define FR_CH_M CH_M
#define FR_CH_DQOT LSFT(KC_2) // " #define FR_CH_N CH_N
#define FR_CH_ASTR LSFT(KC_3) // * #define FR_CH_O CH_O
#define FR_CH_PERC LSFT(KC_5) // % #define FR_CH_P CH_P
#define FR_CH_AMPR LSFT(KC_6) // & #define FR_CH_Q CH_Q
#define FR_CH_SLSH LSFT(KC_7) // / #define FR_CH_R CH_R
#define FR_CH_LPRN LSFT(KC_8) // ( #define FR_CH_S CH_S
#define FR_CH_RPRN LSFT(KC_9) // ) #define FR_CH_T CH_T
#define FR_CH_EQL LSFT(KC_0) // = #define FR_CH_U CH_U
#define FR_CH_QST LSFT(FR_CH_QUOT) // ? #define FR_CH_V CH_V
#define FR_CH_MORE LSFT(FR_CH_LESS) // > #define FR_CH_W CH_W
#define FR_CH_COLN LSFT(KC_DOT) // : #define FR_CH_X CH_X
#define FR_CH_SCLN LSFT(KC_COMM) // ; #define FR_CH_0 CH_0
#define FR_CH_UNDS LSFT(FR_CH_MINS) // _ #define FR_CH_1 CH_1
#define FR_CH_CCED LSFT(KC_4) // ç #define FR_CH_2 CH_2
#define FR_CH_GRV LSFT(FR_CH_CIRC) // accent grave ` #define FR_CH_3 CH_3
#define FR_CH_4 CH_4
// Alt Gr-ed characters #define FR_CH_5 CH_5
#define FR_CH_LCBR ALGR(KC_QUOT) // { #define FR_CH_6 CH_6
#define FR_CH_LBRC ALGR(KC_LBRC) // [ #define FR_CH_7 CH_7
#define FR_CH_RBRC ALGR(KC_9) // ] #define FR_CH_8 CH_8
#define FR_CH_RCBR ALGR(KC_0) // } #define FR_CH_9 CH_9
#define FR_CH_BSLS ALGR(FR_CH_LESS) // backslash #define FR_CH_DOT CH_DOT
#define FR_CH_AT ALGR(KC_2) // @ #define FR_CH_COMM CH_COMM
#define FR_CH_EURO ALGR(KC_E) // € #define FR_CH_QUOT CH_QUOT
#define FR_CH_TILD ALGR(FR_CH_CIRC) // ~ #define FR_CH_AE CH_AGRV
#define FR_CH_PIPE ALGR(KC_1) // | #define FR_CH_UE CH_EGRV
#define FR_CH_HASH ALGR(KC_3) // # #define FR_CH_OE CH_EACU
#define FR_CH_ACUT ALGR(FR_CH_QUOT) // accent acute ´ #define FR_CH_CIRC CH_CIRC
#define FR_CH_LESS CH_LABK
#endif #define FR_CH_MINS CH_MINS
#define FR_CH_DLR CH_DLR
#define FR_CH_PARA CH_SECT
#define FR_CH_DIAE CH_DIAE
#define FR_CH_RING CH_DEG
#define FR_CH_EXLM CH_EXLM
#define FR_CH_PLUS CH_PLUS
#define FR_CH_DQOT CH_DQUO
#define FR_CH_ASTR CH_ASTR
#define FR_CH_PERC CH_PERC
#define FR_CH_AMPR CH_AMPR
#define FR_CH_SLSH CH_SLSH
#define FR_CH_LPRN CH_LPRN
#define FR_CH_RPRN CH_RPRN
#define FR_CH_EQL CH_EQL
#define FR_CH_QST CH_QUES
#define FR_CH_MORE CH_RABK
#define FR_CH_COLN CH_COLN
#define FR_CH_SCLN CH_SCLN
#define FR_CH_UNDS CH_UNDS
#define FR_CH_CCED CH_CCED
#define FR_CH_GRV CH_GRV
#define FR_CH_LCBR CH_LCBR
#define FR_CH_LBRC CH_LBRC
#define FR_CH_RBRC CH_RBRC
#define FR_CH_RCBR CH_RCBR
#define FR_CH_BSLS CH_BSLS
#define FR_CH_AT CH_AT
#define FR_CH_EURO CH_EURO
#define FR_CH_TILD CH_TILD
#define FR_CH_PIPE CH_PIPE
#define FR_CH_HASH CH_HASH
#define FR_CH_ACUT CH_ACUT

View File

@ -13,105 +13,170 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef KEYMAP_SWISS_GERMAN
#define KEYMAP_SWISS_GERMAN #pragma once
#include "keymap.h" #include "keymap.h"
// normal characters // clang-format off
#define CH_Z KC_Y
#define CH_Y KC_Z
#define CH_A KC_A
#define CH_B KC_B
#define CH_C KC_C
#define CH_D KC_D
#define CH_E KC_E
#define CH_F KC_F
#define CH_G KC_G
#ifdef CH_H #ifdef CH_H
// The ChibiOS ch.h file defines this... // The ChibiOS ch.h file defines this...
# undef CH_H # undef CH_H
#endif #endif
#define CH_H KC_H
#define CH_I KC_I
#define CH_J KC_J
#define CH_K KC_K
#define CH_L KC_L
#define CH_M KC_M
#define CH_N KC_N
#define CH_O KC_O
#define CH_P KC_P
#define CH_Q KC_Q
#define CH_R KC_R
#define CH_S KC_S
#define CH_T KC_T
#define CH_U KC_U
#define CH_V KC_V
#define CH_W KC_W
#define CH_X KC_X
#define CH_0 KC_0 /*
#define CH_1 KC_1 *
#define CH_2 KC_2 *  §  1  2  3  4  5  6  7  8  9  0  '  ^        
#define CH_3 KC_3 *
#define CH_4 KC_4 *       Q  W  E  R  T  Z  U  I  O  P  ü  ¨      
#define CH_5 KC_5 *     
#define CH_6 KC_6 *        A  S  D  F  G  H  J  K  L  ö  ä  $     
#define CH_7 KC_7 *
#define CH_8 KC_8 *      <  Y  X  C  V  B  N  M  ,  .  -           
#define CH_9 KC_9 *
*                                                     
*
*/
// Row 1
#define CH_SECT KC_GRV // §
#define CH_1 KC_1 // 1
#define CH_2 KC_2 // 2
#define CH_3 KC_3 // 3
#define CH_4 KC_4 // 4
#define CH_5 KC_5 // 5
#define CH_6 KC_6 // 6
#define CH_7 KC_7 // 7
#define CH_8 KC_8 // 8
#define CH_9 KC_9 // 9
#define CH_0 KC_0 // 0
#define CH_QUOT KC_MINS // '
#define CH_CIRC KC_EQL // ^ (dead)
// Row 2
#define CH_Q KC_Q // Q
#define CH_W KC_W // W
#define CH_E KC_E // E
#define CH_R KC_R // R
#define CH_T KC_T // T
#define CH_Z KC_Y // Z
#define CH_U KC_U // U
#define CH_I KC_I // I
#define CH_O KC_O // O
#define CH_P KC_P // P
#define CH_UDIA KC_LBRC // ü
#define CH_DIAE KC_RBRC // ¨ (dead)
// Row 3
#define CH_A KC_A // A
#define CH_S KC_S // S
#define CH_D KC_D // D
#define CH_F KC_F // F
#define CH_G KC_G // G
#define CH_H KC_H // H
#define CH_J KC_J // J
#define CH_K KC_K // K
#define CH_L KC_L // L
#define CH_ODIA KC_SCLN // ö
#define CH_ADIA KC_QUOT // ä
#define CH_DLR KC_NUHS // $
// Row 4
#define CH_LABK KC_NUBS // <
#define CH_Y KC_Z // Y
#define CH_X KC_X // X
#define CH_C KC_C // C
#define CH_V KC_V // V
#define CH_B KC_B // B
#define CH_N KC_N // N
#define CH_M KC_M // M
#define CH_COMM KC_COMM // ,
#define CH_DOT KC_DOT // .
#define CH_MINS KC_SLSH // -
#define CH_DOT KC_DOT /* Shifted symbols
#define CH_COMM KC_COMM *
*  °  +  " │ * │ ç │ % │ & │ / │ ( │ ) │ = │ ? │ ` │       │
*
*                                     è  !      
*     
*                                   é  à  £     
*
*      >                       ;  :  _           
*
*                                                     
*
*/
// Row 1
#define CH_DEG S(CH_SECT) // °
#define CH_PLUS S(CH_1) // +
#define CH_DQUO S(CH_2) // "
#define CH_ASTR S(CH_3) // *
#define CH_CCED S(CH_4) // ç
#define CH_PERC S(CH_5) // %
#define CH_AMPR S(CH_6) // &
#define CH_SLSH S(CH_7) // /
#define CH_LPRN S(CH_8) // (
#define CH_RPRN S(CH_9) // )
#define CH_EQL S(CH_0) // =
#define CH_QUES S(CH_QUOT) // ?
#define CH_GRV S(CH_CIRC) // ` (dead)
// Row 2
#define CH_EGRV S(CH_UDIA) // è
#define CH_EXLM S(CH_DIAE) // !
// Row 3
#define CH_EACU S(CH_ODIA) // é
#define CH_AGRV S(CH_ADIA) // à
#define CH_PND S(CH_DLR) // £
// Row 4
#define CH_RABK S(CH_LABK) // >
#define CH_SCLN S(CH_COMM) // ;
#define CH_COLN S(CH_DOT) // :
#define CH_UNDS S(CH_MINS) // _
#define CH_QUOT KC_MINS // ' ? ´ /* AltGr symbols
#define CH_AE KC_QUOT *
#define CH_UE KC_LBRC *     ¦  @  #        ¬  |  ¢        ´  ~        
#define CH_OE KC_SCLN *
*                                    [  ]      
*     
*                                      {  }     
*
*      \                                         
*
*                                                     
*
*/
// Row 1
#define CH_BRKP ALGR(CH_1) // ¦
#define CH_AT ALGR(CH_2) // @
#define CH_HASH ALGR(CH_3) // #
#define CH_NOT ALGR(CH_6) // ¬
#define CH_PIPE ALGR(CH_7) // |
#define CH_CENT ALGR(CH_8) // ¢
#define CH_ACUT ALGR(CH_QUOT) // ´ (dead)
#define CH_TILD ALGR(CH_CIRC) // ~ (dead)
// Row 2
#define CH_EURO ALGR(CH_E) // €
#define CH_LBRC ALGR(CH_UDIA) // [
#define CH_RBRC ALGR(CH_DIAE) // ]
// Row 3
#define CH_LCBR ALGR(CH_ADIA) // {
#define CH_RCBR ALGR(CH_DLR) // }
// Row 4
#define CH_BSLS ALGR(CH_LABK) // (backslash)
#define CH_PARA KC_GRAVE // secction sign § and ° // DEPRECATED
#define CH_CARR KC_EQL // carret ^ ` ~ #define CH_AE CH_ADIA
#define CH_DIER KC_RBRC // dieresis ¨ ! ] #define CH_UE CH_UDIA
#define CH_DLR KC_BSLS // $ £ } #define CH_OE CH_ODIA
#define CH_LESS KC_NUBS // < and > and backslash #define CH_PARA CH_SECT
#define CH_MINS KC_SLSH // - and _ #define CH_CARR CH_CIRC
#define CH_DIER CH_DIAE
// shifted characters #define CH_LESS CH_LABK
#define CH_RING LSFT(CH_PARA) // ° #define CH_RING CH_DEG
#define CH_PLUS LSFT(KC_1) // + #define CH_DQOT CH_DQUO
#define CH_DQOT LSFT(KC_2) // " #define CH_PAST CH_ASTR
#define CH_PAST LSFT(KC_3) // * #define CH_CELA CH_CCED
#define CH_CELA LSFT(KC_4) // ç #define CH_QST CH_QUES
#define CH_PERC LSFT(KC_5) // % #define CH_POND CH_PND
#define CH_AMPR LSFT(KC_6) // & #define CH_MORE CH_RABK
#define CH_SLSH LSFT(KC_7) // / #define CH_BRBR CH_BRKP
#define CH_LPRN LSFT(KC_8) // ( #define CH_NOTL CH_NOT
#define CH_RPRN LSFT(KC_9) // )
#define CH_EQL LSFT(KC_0) // =
#define CH_QST LSFT(CH_QUOT) // ?
#define CH_GRV LSFT(CH_CARR) // `
#define CH_EXLM LSFT(CH_DIER) // !
#define CH_POND LSFT(CH_DLR) // £
#define CH_MORE LSFT(CH_LESS) // >
#define CH_COLN LSFT(KC_DOT) // :
#define CH_SCLN LSFT(KC_COMM) // ;
#define CH_UNDS LSFT(CH_MINS) // _
// Alt Gr-ed characters
#define CH_BRBR ALGR(KC_1) // ¦ brocken bar
#define CH_AT ALGR(KC_2) // @
#define CH_HASH ALGR(KC_3) // #
#define CH_NOTL ALGR(KC_6) // ¬ negative logic
#define CH_PIPE ALGR(KC_7) // |
#define CH_CENT ALGR(KC_8) // ¢ cent
#define CH_ACUT ALGR(CH_QUOT) // ´
#define CH_TILD ALGR(CH_CARR) // ~
#define CH_EURO ALGR(KC_E) // €
#define CH_LBRC ALGR(CH_UE) // [
#define CH_RBRC ALGR(CH_DIER) // ]
#define CH_LCBR ALGR(CH_AE) // {
#define CH_RCBR ALGR(CH_DLR) // }
#define CH_BSLS ALGR(CH_LESS) // backslash
#endif

View File

@ -0,0 +1,100 @@
/* Copyright 2020
*
* 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 Swiss French layouts
#pragma once
#include "keymap_fr_ch.h"
#include "quantum.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, 1, 0, 0, 1, 1, 0),
KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 1),
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
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, 1),
KCLUT_ENTRY(1, 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)
};
const uint8_t ascii_to_altgr_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, 0, 0, 1, 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(1, 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, 1, 1, 1, 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, 1, 1, 1, 1, 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, CH_DIAE, CH_2, CH_3, CH_DLR, CH_5, CH_6, CH_QUOT,
// ( ) * + , - . /
CH_8, CH_9, CH_3, CH_0, CH_COMM, CH_MINS, CH_DOT, CH_7,
// 0 1 2 3 4 5 6 7
CH_0, CH_1, CH_2, CH_3, CH_4, CH_5, CH_6, CH_7,
// 8 9 : ; < = > ?
CH_8, CH_9, CH_DOT, CH_COMM, CH_LABK, CH_0, CH_LABK, CH_QUOT,
// @ A B C D E F G
CH_2, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
// H I J K L M N O
CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
// P Q R S T U V W
CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
// X Y Z [ \ ] ^ _
CH_X, CH_Y, CH_Z, CH_EGRV, CH_LABK, CH_DIAE, CH_CIRC, CH_MINS,
// ` a b c d e f g
CH_CIRC, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
// h i j k l m n o
CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
// p q r s t u v w
CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
// x y z { | } ~ DEL
CH_X, CH_Y, CH_Z, CH_AGRV, CH_7, CH_DLR, CH_CIRC, KC_DEL
};

View File

@ -0,0 +1,100 @@
/* Copyright 2020
*
* 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 Swiss German layouts
#pragma once
#include "keymap_german_ch.h"
#include "quantum.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, 1, 0, 0, 1, 1, 0),
KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 1),
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
KCLUT_ENTRY(0, 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, 1),
KCLUT_ENTRY(1, 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)
};
const uint8_t ascii_to_altgr_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, 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(1, 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, 1, 1, 1, 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, 1, 1, 1, 1, 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, CH_DIAE, CH_2, CH_3, CH_DLR, CH_5, CH_6, CH_QUOT,
// ( ) * + , - . /
CH_8, CH_9, CH_3, CH_1, CH_COMM, CH_MINS, CH_DOT, CH_7,
// 0 1 2 3 4 5 6 7
CH_0, CH_1, CH_2, CH_3, CH_4, CH_5, CH_6, CH_7,
// 8 9 : ; < = > ?
CH_8, CH_9, CH_DOT, CH_COMM, CH_LABK, CH_0, CH_LABK, CH_QUOT,
// @ A B C D E F G
CH_2, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
// H I J K L M N O
CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
// P Q R S T U V W
CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
// X Y Z [ \ ] ^ _
CH_X, CH_Y, CH_Z, CH_UDIA, CH_LABK, CH_DIAE, CH_CIRC, CH_MINS,
// ` a b c d e f g
CH_CIRC, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
// h i j k l m n o
CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
// p q r s t u v w
CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
// x y z { | } ~ DEL
CH_X, CH_Y, CH_Z, CH_ADIA, CH_7, CH_DLR, CH_CIRC, KC_DEL
};