Merge branch 'master' into hid_joystick
This commit is contained in:
commit
a80ea8b7cc
284 changed files with 9404 additions and 2408 deletions
163
quantum/keymap_extras/keymap_croatian.h
Normal file
163
quantum/keymap_extras/keymap_croatian.h
Normal file
|
@ -0,0 +1,163 @@
|
|||
/* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ¸ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Š │ Đ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Č │ Ć │ Ž │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define HR_CEDL KC_GRV // ¸ (dead)
|
||||
#define HR_1 KC_1 // 1
|
||||
#define HR_2 KC_2 // 2
|
||||
#define HR_3 KC_3 // 3
|
||||
#define HR_4 KC_4 // 4
|
||||
#define HR_5 KC_5 // 5
|
||||
#define HR_6 KC_6 // 6
|
||||
#define HR_7 KC_7 // 7
|
||||
#define HR_8 KC_8 // 8
|
||||
#define HR_9 KC_9 // 9
|
||||
#define HR_0 KC_0 // 0
|
||||
#define HR_QUOT KC_MINS // '
|
||||
#define HR_PLUS KC_EQL // +
|
||||
// Row 2
|
||||
#define HR_Q KC_Q // Q
|
||||
#define HR_W KC_W // W
|
||||
#define HR_E KC_E // E
|
||||
#define HR_R KC_R // R
|
||||
#define HR_T KC_T // T
|
||||
#define HR_Z KC_Y // Z
|
||||
#define HR_U KC_U // U
|
||||
#define HR_I KC_I // I
|
||||
#define HR_O KC_O // O
|
||||
#define HR_P KC_P // P
|
||||
#define HR_SCAR KC_LBRC // Š
|
||||
#define HR_DSTR KC_RBRC // Đ
|
||||
// Row 3
|
||||
#define HR_A KC_A // A
|
||||
#define HR_S KC_S // S
|
||||
#define HR_D KC_D // D
|
||||
#define HR_F KC_F // F
|
||||
#define HR_G KC_G // G
|
||||
#define HR_H KC_H // H
|
||||
#define HR_J KC_J // J
|
||||
#define HR_K KC_K // K
|
||||
#define HR_L KC_L // L
|
||||
#define HR_CCAR KC_SCLN // Č
|
||||
#define HR_CACU KC_QUOT // Ć
|
||||
#define HR_ZCAR KC_NUHS // Ž
|
||||
// Row 4
|
||||
#define HR_LABK KC_NUBS // <
|
||||
#define HR_Y KC_Z // Y
|
||||
#define HR_X KC_X // X
|
||||
#define HR_C KC_C // C
|
||||
#define HR_V KC_V // V
|
||||
#define HR_B KC_B // B
|
||||
#define HR_N KC_N // N
|
||||
#define HR_M KC_M // M
|
||||
#define HR_COMM KC_COMM // ,
|
||||
#define HR_DOT KC_DOT // .
|
||||
#define HR_MINS KC_SLSH // -
|
||||
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ¨ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define HR_DIAE S(HR_CEDL) // ¨ (dead)
|
||||
#define HR_EXLM S(HR_1) // !
|
||||
#define HR_DQUO S(HR_2) // "
|
||||
#define HR_HASH S(HR_3) // #
|
||||
#define HR_DLR S(HR_4) // $
|
||||
#define HR_PERC S(HR_5) // %
|
||||
#define HR_AMPR S(HR_6) // &
|
||||
#define HR_SLSH S(HR_7) // /
|
||||
#define HR_LPRN S(HR_8) // (
|
||||
#define HR_RPRN S(HR_9) // )
|
||||
#define HR_EQL S(HR_0) // =
|
||||
#define HR_QUES S(HR_QUOT) // ?
|
||||
#define HR_ASTR S(HR_PLUS) // *
|
||||
// Row 4
|
||||
#define HR_RABK S(HR_LABK) // >
|
||||
#define HR_SCLN S(HR_COMM) // ;
|
||||
#define HR_COLN S(HR_DOT) // :
|
||||
#define HR_UNDS S(HR_MINS) // _
|
||||
|
||||
/* AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ │ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ \ │ | │ € │ │ │ │ │ │ │ │ ÷ │ × │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ [ │ ] │ │ │ ł │ Ł │ │ ß │ ¤ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ │ │ @ │ { │ } │ § │ │ │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define HR_TILD ALGR(HR_1) // ~
|
||||
#define HR_CARN ALGR(HR_2) // ˇ (dead)
|
||||
#define HR_CIRC ALGR(HR_3) // ^ (dead)
|
||||
#define HR_BREV ALGR(HR_4) // ˘ (dead)
|
||||
#define HR_RNGA ALGR(HR_5) // ° (dead)
|
||||
#define HR_OGON ALGR(HR_6) // ˛ (dead)
|
||||
#define HR_GRV ALGR(HR_7) // `
|
||||
#define HR_DOTA ALGR(HR_8) // ˙ (dead)
|
||||
#define HR_ACUT ALGR(HR_9) // ´ (dead)
|
||||
#define HR_DACU ALGR(HR_0) // ˝ (dead)
|
||||
// Row 2
|
||||
#define HR_BSLS ALGR(HR_Q) // (backslash)
|
||||
#define HR_PIPE ALGR(HR_W) // |
|
||||
#define HR_EURO ALGR(HR_E) // €
|
||||
#define HR_DIV ALGR(HR_SCAR) // ÷
|
||||
#define HR_MUL ALGR(HR_DSTR) // ×
|
||||
// Row 3
|
||||
#define HR_LBRC ALGR(HR_F) // [
|
||||
#define HR_RBRC ALGR(HR_G) // ]
|
||||
#define HR_LLST ALGR(HR_K) // ł
|
||||
#define HR_CLST ALGR(HR_L) // Ł
|
||||
#define HR_SS ALGR(HR_CACU) // ß
|
||||
#define HR_CURR ALGR(HR_ZCAR) // ¤
|
||||
// Row 4
|
||||
#define HR_AT ALGR(HR_V) // @
|
||||
#define HR_LCBR ALGR(HR_B) // {
|
||||
#define HR_RCBR ALGR(HR_N) // }
|
||||
#define HR_SECT ALGR(HR_M) // §
|
173
quantum/keymap_extras/keymap_czech.h
Normal file
173
quantum/keymap_extras/keymap_czech.h
Normal file
|
@ -0,0 +1,173 @@
|
|||
/* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ; │ + │ ě │ š │ č │ ř │ ž │ ý │ á │ í │ é │ = │ ´ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ú │ ) │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ů │ § │ ¨ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ \ │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define CZ_SCLN KC_GRV // ;
|
||||
#define CZ_PLUS KC_1 // +
|
||||
#define CZ_ECAR KC_2 // ě
|
||||
#define CZ_SCAR KC_3 // š
|
||||
#define CZ_CCAR KC_4 // č
|
||||
#define CZ_RCAR KC_5 // ř
|
||||
#define CZ_ZCAR KC_6 // ž
|
||||
#define CZ_YACU KC_7 // ý
|
||||
#define CZ_AACU KC_8 // á
|
||||
#define CZ_IACU KC_9 // í
|
||||
#define CZ_EACU KC_0 // é
|
||||
#define CZ_EQL KC_MINS // =
|
||||
#define CZ_ACUT KC_EQL // ´ (dead)
|
||||
// Row 2
|
||||
#define CZ_Q KC_Q // Q
|
||||
#define CZ_W KC_W // W
|
||||
#define CZ_E KC_E // E
|
||||
#define CZ_R KC_R // R
|
||||
#define CZ_T KC_T // T
|
||||
#define CZ_Z KC_Y // Z
|
||||
#define CZ_U KC_U // U
|
||||
#define CZ_I KC_I // I
|
||||
#define CZ_O KC_O // O
|
||||
#define CZ_P KC_P // P
|
||||
#define CZ_UACU KC_LBRC // ú
|
||||
#define CZ_RPRN KC_RBRC // )
|
||||
// Row 3
|
||||
#define CZ_A KC_A // A
|
||||
#define CZ_S KC_S // S
|
||||
#define CZ_D KC_D // D
|
||||
#define CZ_F KC_F // F
|
||||
#define CZ_G KC_G // G
|
||||
#define CZ_H KC_H // H
|
||||
#define CZ_J KC_J // J
|
||||
#define CZ_K KC_K // K
|
||||
#define CZ_L KC_L // L
|
||||
#define CZ_URNG KC_SCLN // ů
|
||||
#define CZ_SECT KC_QUOT // §
|
||||
#define CZ_DIAE KC_NUHS // ¨ (dead)
|
||||
// Row 4
|
||||
#define CZ_BSLS KC_NUBS // (backslash)
|
||||
#define CZ_Y KC_Z // Y
|
||||
#define CZ_X KC_X // X
|
||||
#define CZ_C KC_C // C
|
||||
#define CZ_V KC_V // V
|
||||
#define CZ_B KC_B // B
|
||||
#define CZ_N KC_N // N
|
||||
#define CZ_M KC_M // M
|
||||
#define CZ_COMM KC_COMM // ,
|
||||
#define CZ_DOT KC_DOT // .
|
||||
#define CZ_MINS KC_SLSH // -
|
||||
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ° │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ / │ ( │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ " │ ! │ ' │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ | │ │ │ │ │ │ │ │ ; │ : │ _ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define CZ_RNGA S(CZ_SCLN) // ° (dead)
|
||||
#define CZ_1 S(CZ_PLUS) // 1
|
||||
#define CZ_2 S(CZ_ECAR) // 2
|
||||
#define CZ_3 S(CZ_SCAR) // 3
|
||||
#define CZ_4 S(CZ_CCAR) // 4
|
||||
#define CZ_5 S(CZ_RCAR) // 5
|
||||
#define CZ_6 S(CZ_ZCAR) // 6
|
||||
#define CZ_7 S(CZ_YACU) // 7
|
||||
#define CZ_8 S(CZ_AACU) // 8
|
||||
#define CZ_9 S(CZ_IACU) // 9
|
||||
#define CZ_0 S(CZ_EACU) // 0
|
||||
#define CZ_PERC S(CZ_PLUS) // %
|
||||
#define CZ_CARN S(CZ_ACUT) // ˇ (dead)
|
||||
// Row 2
|
||||
#define CZ_SLSH S(CZ_UACU) // /
|
||||
#define CZ_LPRN S(CZ_RPRN) // (
|
||||
// Row 3
|
||||
#define CZ_DQUO S(CZ_URNG) // "
|
||||
#define CZ_EXLM S(CZ_SECT) // !
|
||||
#define CZ_QUOT S(CZ_DIAE) // '
|
||||
// Row 4
|
||||
#define CZ_PIPE S(CZ_BSLS) // |
|
||||
#define CZ_SCLN S(CZ_COMM) // ;
|
||||
#define CZ_COLN S(CZ_DOT) // :
|
||||
#define CZ_UNDS S(CZ_MINS) // _
|
||||
|
||||
/* AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ │ ~ │ │ ^ │ ˘ │ │ ˛ │ ` │ ˙ │ │ ˝ │ │ ¸ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ € │ │ │ │ │ │ │ │ ÷ │ × │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ đ │ Đ │ [ │ ] │ │ │ ł │ Ł │ $ │ ß │ ¤ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ # │ & │ @ │ { │ } │ │ < │ > │ * │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define CZ_TILD ALGR(CZ_PLUS) // ~
|
||||
#define CZ_CIRC ALGR(CZ_SCAR) // ^ (dead)
|
||||
#define CZ_BREV ALGR(CZ_CCAR) // ˘ (dead)
|
||||
#define CZ_OGON ALGR(CZ_ZCAR) // ˛ (dead)
|
||||
#define CZ_GRV ALGR(CZ_YACU) // ` (dead)
|
||||
#define CZ_DOTA ALGR(CZ_AACU) // ˙ (dead)
|
||||
#define CZ_DACU ALGR(CZ_EACU) // ˝ (dead)
|
||||
#define CZ_CEDL ALGR(CZ_ACUT) // ¸ (dead)
|
||||
// Row 2
|
||||
#define CZ_EURO ALGR(CZ_E) // €
|
||||
#define CZ_DIV ALGR(CZ_UACU) // ÷
|
||||
#define CZ_MUL ALGR(CZ_RPRN) // ×
|
||||
// Row 3
|
||||
#define CZ_LDST ALGR(CZ_S) // đ
|
||||
#define CZ_CDST ALGR(CZ_D) // Đ
|
||||
#define CZ_LBRC ALGR(CZ_F) // [
|
||||
#define CZ_RBRC ALGR(CZ_G) // ]
|
||||
#define CZ_LLST ALGR(CZ_K) // ł
|
||||
#define CZ_CLST ALGR(CZ_L) // Ł
|
||||
#define CZ_DLR ALGR(CZ_URNG) // $
|
||||
#define CZ_SS ALGR(CZ_SECT) // ß
|
||||
#define CZ_CURR ALGR(CZ_DIAE) // ¤
|
||||
// Row 4
|
||||
#define CZ_HASH ALGR(CZ_X) // #
|
||||
#define CZ_AMPR ALGR(CZ_C) // &
|
||||
#define CZ_AT ALGR(CZ_V) // @
|
||||
#define CZ_LCBR ALGR(CZ_B) // {
|
||||
#define CZ_RCBR ALGR(CZ_N) // }
|
||||
#define CZ_LABK ALGR(CZ_COMM) // <
|
||||
#define CZ_RABK ALGR(CZ_DOT) // >
|
||||
#define CZ_ASTR ALGR(CZ_MINS) // *
|
155
quantum/keymap_extras/keymap_estonian.h
Normal file
155
quantum/keymap_extras/keymap_estonian.h
Normal file
|
@ -0,0 +1,155 @@
|
|||
/* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ˇ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ü │ Õ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define EE_CARN KC_GRV // ˇ (dead)
|
||||
#define EE_1 KC_1 // 1
|
||||
#define EE_2 KC_2 // 2
|
||||
#define EE_3 KC_3 // 3
|
||||
#define EE_4 KC_4 // 4
|
||||
#define EE_5 KC_5 // 5
|
||||
#define EE_6 KC_6 // 6
|
||||
#define EE_7 KC_7 // 7
|
||||
#define EE_8 KC_8 // 8
|
||||
#define EE_9 KC_9 // 9
|
||||
#define EE_0 KC_0 // 0
|
||||
#define EE_PLUS KC_MINS // +
|
||||
#define EE_ACUT KC_EQL // ´ (dead)
|
||||
// Row 2
|
||||
#define EE_Q KC_Q // Q
|
||||
#define EE_W KC_W // W
|
||||
#define EE_E KC_E // E
|
||||
#define EE_R KC_R // R
|
||||
#define EE_T KC_T // T
|
||||
#define EE_Y KC_Y // Y
|
||||
#define EE_U KC_U // U
|
||||
#define EE_I KC_I // I
|
||||
#define EE_O KC_O // O
|
||||
#define EE_P KC_P // P
|
||||
#define EE_UDIA KC_LBRC // Ü
|
||||
#define EE_OTIL KC_RBRC // Õ
|
||||
// Row 3
|
||||
#define EE_A KC_A // A
|
||||
#define EE_S KC_S // S
|
||||
#define EE_D KC_D // D
|
||||
#define EE_F KC_F // F
|
||||
#define EE_G KC_G // G
|
||||
#define EE_H KC_H // H
|
||||
#define EE_J KC_J // J
|
||||
#define EE_K KC_K // K
|
||||
#define EE_L KC_L // L
|
||||
#define EE_ODIA KC_SCLN // Ö
|
||||
#define EE_ADIA KC_QUOT // Ä
|
||||
#define EE_QUOT KC_NUHS // '
|
||||
// Row 4
|
||||
#define EE_LABK KC_NUBS // <
|
||||
#define EE_Z KC_Z // Z
|
||||
#define EE_X KC_X // X
|
||||
#define EE_C KC_C // C
|
||||
#define EE_V KC_V // V
|
||||
#define EE_B KC_B // B
|
||||
#define EE_N KC_N // N
|
||||
#define EE_M KC_M // M
|
||||
#define EE_COMM KC_COMM // ,
|
||||
#define EE_DOT KC_DOT // .
|
||||
#define EE_MINS KC_SLSH // -
|
||||
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ~ │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define EE_TILD S(EE_CARN) // ~ (dead)
|
||||
#define EE_EXLM S(EE_1) // !
|
||||
#define EE_DQUO S(EE_2) // "
|
||||
#define EE_HASH S(EE_3) // #
|
||||
#define EE_CURR S(EE_4) // ¤
|
||||
#define EE_PERC S(EE_5) // %
|
||||
#define EE_AMPR S(EE_6) // &
|
||||
#define EE_SLSH S(EE_7) // /
|
||||
#define EE_LPRN S(EE_8) // (
|
||||
#define EE_RPRN S(EE_9) // )
|
||||
#define EE_EQL S(EE_0) // =
|
||||
#define EE_QUES S(EE_PLUS) // ?
|
||||
#define EE_GRV S(EE_ACUT) // ` (dead)
|
||||
// Row 3
|
||||
#define EE_ASTR S(EE_QUOT) // *
|
||||
// Row 4
|
||||
#define EE_RABK S(EE_LABK) // >
|
||||
#define EE_SCLN S(EE_COMM) // ;
|
||||
#define EE_COLN S(EE_DOT) // :
|
||||
#define EE_UNDS S(EE_MINS) // _
|
||||
|
||||
/* AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ │ │ @ │ £ │ $ │ € │ │ { │ [ │ ] │ } │ \ │ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ § │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ š │ │ │ │ │ │ │ │ │ ^ │ ½ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ | │ ž │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define EE_AT ALGR(EE_2) // @
|
||||
#define EE_PND ALGR(EE_3) // £
|
||||
#define EE_DLR ALGR(EE_4) // $
|
||||
#define EE_EURO ALGR(EE_5) // €
|
||||
#define EE_LCBR ALGR(EE_7) // {
|
||||
#define EE_LBRC ALGR(EE_8) // [
|
||||
#define EE_RBRC ALGR(EE_9) // ]
|
||||
#define EE_RCBR ALGR(EE_0) // }
|
||||
#define EE_BSLS ALGR(EE_PLUS) // (backslash)
|
||||
// Row 2
|
||||
#define EE_SECT ALGR(EE_OTIL) // §
|
||||
// Row 3
|
||||
#define EE_SCAR ALGR(EE_S) // š
|
||||
#define EE_CIRC ALGR(EE_ADIA) // ^ (dead)
|
||||
#define EE_HALF ALGR(EE_QUOT) // ½
|
||||
// Row 4
|
||||
#define EE_PIPE ALGR(EE_LABK) // |
|
||||
#define EE_ZCAR ALGR(EE_Z) // ž
|
152
quantum/keymap_extras/keymap_irish.h
Normal file
152
quantum/keymap_extras/keymap_irish.h
Normal file
|
@ -0,0 +1,152 @@
|
|||
/* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap.h"
|
||||
|
||||
// clang-format off
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define IE_GRV KC_GRV // `
|
||||
#define IE_1 KC_1 // 1
|
||||
#define IE_2 KC_2 // 2
|
||||
#define IE_3 KC_3 // 3
|
||||
#define IE_4 KC_4 // 4
|
||||
#define IE_5 KC_5 // 5
|
||||
#define IE_6 KC_6 // 6
|
||||
#define IE_7 KC_7 // 7
|
||||
#define IE_8 KC_8 // 8
|
||||
#define IE_9 KC_9 // 9
|
||||
#define IE_0 KC_0 // 0
|
||||
#define IE_MINS KC_MINS // -
|
||||
#define IE_EQL KC_EQL // =
|
||||
// Row 2
|
||||
#define IE_Q KC_Q // Q
|
||||
#define IE_W KC_W // W
|
||||
#define IE_E KC_E // E
|
||||
#define IE_R KC_R // R
|
||||
#define IE_T KC_T // T
|
||||
#define IE_Y KC_Y // Y
|
||||
#define IE_U KC_U // U
|
||||
#define IE_I KC_I // I
|
||||
#define IE_O KC_O // O
|
||||
#define IE_P KC_P // P
|
||||
#define IE_LBRC KC_LBRC // [
|
||||
#define IE_RBRC KC_RBRC // ]
|
||||
// Row 3
|
||||
#define IE_A KC_A // A
|
||||
#define IE_S KC_S // S
|
||||
#define IE_D KC_D // D
|
||||
#define IE_F KC_F // F
|
||||
#define IE_G KC_G // G
|
||||
#define IE_H KC_H // H
|
||||
#define IE_J KC_J // J
|
||||
#define IE_K KC_K // K
|
||||
#define IE_L KC_L // L
|
||||
#define IE_SCLN KC_SCLN // ;
|
||||
#define IE_QUOT KC_QUOT // '
|
||||
#define IE_HASH KC_NUHS // #
|
||||
// Row 4
|
||||
#define IE_BSLS KC_NUBS // (backslash)
|
||||
#define IE_Z KC_Z // Z
|
||||
#define IE_X KC_X // X
|
||||
#define IE_C KC_C // C
|
||||
#define IE_V KC_V // V
|
||||
#define IE_B KC_B // B
|
||||
#define IE_N KC_N // N
|
||||
#define IE_M KC_M // M
|
||||
#define IE_COMM KC_COMM // ,
|
||||
#define IE_DOT KC_DOT // .
|
||||
#define IE_SLSH KC_SLSH // /
|
||||
|
||||
/* Shifted symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ¬ │ ! │ " │ £ │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ : │ @ │ ~ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ | │ │ │ │ │ │ │ │ < │ > │ ? │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define IE_NOT S(IE_GRV) // ¬
|
||||
#define IE_EXLM S(IE_1) // !
|
||||
#define IE_DQUO S(IE_2) // "
|
||||
#define IE_PND S(IE_3) // £
|
||||
#define IE_DLR S(IE_4) // $
|
||||
#define IE_PERC S(IE_5) // %
|
||||
#define IE_CIRC S(IE_6) // ^
|
||||
#define IE_AMPR S(IE_7) // &
|
||||
#define IE_ASTR S(IE_8) // *
|
||||
#define IE_LPRN S(IE_9) // (
|
||||
#define IE_RPRN S(IE_0) // )
|
||||
#define IE_UNDS S(IE_MINS) // _
|
||||
#define IE_PLUS S(IE_EQL) // +
|
||||
// Row 2
|
||||
#define IE_LCBR S(IE_LBRC) // {
|
||||
#define IE_RCBR S(IE_RBRC) // }
|
||||
// Row 3
|
||||
#define IE_COLN S(IE_SCLN) // :
|
||||
#define IE_AT S(IE_QUOT) // @
|
||||
#define IE_TILD S(IE_HASH) // ~
|
||||
// Row 4
|
||||
#define IE_PIPE S(IE_BSLS) // |
|
||||
#define IE_LABK S(IE_COMM) // <
|
||||
#define IE_RABK S(IE_DOT) // >
|
||||
#define IE_QUES S(IE_SLSH) // ?
|
||||
|
||||
/* AltGr symbols
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ¦ │ │ │ │ € │ │ │ │ │ │ │ │ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ │ │ │ É │ │ │ │ Ú │ Í │ Ó │ │ │ │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
|
||||
* │ │ Á │ │ │ │ │ │ │ │ │ │ ´ │ │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
// Row 1
|
||||
#define IE_BRKP ALGR(IE_GRV) // ¦
|
||||
#define IE_EURO ALGR(IE_4) // €
|
||||
// Row 2
|
||||
#define IE_EACU ALGR(IE_E) // É
|
||||
#define IE_UACU ALGR(IE_U) // Ú
|
||||
#define IE_IACU ALGR(IE_I) // Í
|
||||
#define IE_OACU ALGR(IE_O) // Ó
|
||||
// Row 3
|
||||
#define IE_AACU ALGR(IE_A) // Á
|
||||
#define IE_ACUT ALGR(IE_QUOT) // ´ (dead)
|
|
@ -166,7 +166,7 @@
|
|||
|
||||
// DEPRECATED
|
||||
#define IT_BKSL IT_BSLS
|
||||
#define IT_QUOT IT_APOS
|
||||
#define IT_APOS IT_QUOT
|
||||
#define IT_IACC IT_IGRV
|
||||
#define IT_EACC IT_EGRV
|
||||
#define IT_OACC IT_OGRV
|
||||
|
|
100
quantum/keymap_extras/sendstring_croatian.h
Normal file
100
quantum/keymap_extras/sendstring_croatian.h
Normal 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 Croatian layouts
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap_croatian.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, 1, 1, 1, 1, 0),
|
||||
KCLUT_ENTRY(1, 1, 1, 0, 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(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)
|
||||
};
|
||||
|
||||
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, 1, 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, 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, HR_1, HR_2, HR_3, HR_4, HR_5, HR_6, HR_QUOT,
|
||||
// ( ) * + , - . /
|
||||
HR_8, HR_9, HR_PLUS, HR_PLUS, HR_COMM, HR_MINS, HR_DOT, HR_7,
|
||||
// 0 1 2 3 4 5 6 7
|
||||
HR_0, HR_1, HR_2, HR_3, HR_4, HR_5, HR_6, HR_7,
|
||||
// 8 9 : ; < = > ?
|
||||
HR_8, HR_9, HR_DOT, HR_COMM, HR_LABK, HR_0, HR_LABK, HR_QUOT,
|
||||
// @ A B C D E F G
|
||||
HR_V, HR_A, HR_B, HR_C, HR_D, HR_E, HR_F, HR_G,
|
||||
// H I J K L M N O
|
||||
HR_H, HR_I, HR_J, HR_K, HR_L, HR_M, HR_N, HR_O,
|
||||
// P Q R S T U V W
|
||||
HR_P, HR_Q, HR_R, HR_S, HR_T, HR_U, HR_V, HR_W,
|
||||
// X Y Z [ \ ] ^ _
|
||||
HR_X, HR_Y, HR_Z, HR_F, HR_Q, HR_G, HR_3, HR_MINS,
|
||||
// ` a b c d e f g
|
||||
HR_7, HR_A, HR_B, HR_C, HR_D, HR_E, HR_F, HR_G,
|
||||
// h i j k l m n o
|
||||
HR_H, HR_I, HR_J, HR_K, HR_L, HR_M, HR_N, HR_O,
|
||||
// p q r s t u v w
|
||||
HR_P, HR_Q, HR_R, HR_S, HR_T, HR_U, HR_V, HR_W,
|
||||
// x y z { | } ~ DEL
|
||||
HR_X, HR_Y, HR_Z, HR_B, HR_W, HR_N, HR_1, KC_DEL
|
||||
};
|
100
quantum/keymap_extras/sendstring_czech.h
Normal file
100
quantum/keymap_extras/sendstring_czech.h
Normal 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 Czech layouts
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap_czech.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, 0, 1),
|
||||
KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 1),
|
||||
KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
|
||||
KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 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(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)
|
||||
};
|
||||
|
||||
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, 1, 0, 1, 0),
|
||||
KCLUT_ENTRY(0, 0, 1, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
|
||||
KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 1, 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, 1, 1, 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, 0, 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, CZ_SECT, CZ_URNG, CZ_X, CZ_URNG, CZ_EQL, CZ_C, CZ_DIAE,
|
||||
// ( ) * + , - . /
|
||||
CZ_LPRN, CZ_LPRN, CZ_MINS, CZ_PLUS, CZ_COMM, CZ_MINS, CZ_DOT, CZ_UACU,
|
||||
// 0 1 2 3 4 5 6 7
|
||||
CZ_EACU, CZ_PLUS, CZ_ECAR, CZ_SCAR, CZ_CCAR, CZ_RCAR, CZ_ZCAR, CZ_YACU,
|
||||
// 8 9 : ; < = > ?
|
||||
CZ_AACU, CZ_IACU, CZ_DOT, CZ_SCLN, CZ_COMM, CZ_EQL, CZ_DOT, CZ_COMM,
|
||||
// @ A B C D E F G
|
||||
CZ_V, CZ_A, CZ_B, CZ_C, CZ_D, CZ_E, CZ_F, CZ_G,
|
||||
// H I J K L M N O
|
||||
CZ_H, CZ_I, CZ_J, CZ_K, CZ_L, CZ_M, CZ_N, CZ_O,
|
||||
// P Q R S T U V W
|
||||
CZ_P, CZ_Q, CZ_R, CZ_S, CZ_T, CZ_U, CZ_V, CZ_W,
|
||||
// X Y Z [ \ ] ^ _
|
||||
CZ_X, CZ_Y, CZ_Z, CZ_F, CZ_BSLS, CZ_G, CZ_SCAR, CZ_MINS,
|
||||
// ` a b c d e f g
|
||||
CZ_YACU, CZ_A, CZ_B, CZ_C, CZ_D, CZ_E, CZ_F, CZ_G,
|
||||
// h i j k l m n o
|
||||
CZ_H, CZ_I, CZ_J, CZ_K, CZ_L, CZ_M, CZ_N, CZ_O,
|
||||
// p q r s t u v w
|
||||
CZ_P, CZ_Q, CZ_R, CZ_S, CZ_T, CZ_U, CZ_V, CZ_W,
|
||||
// x y z { | } ~ DEL
|
||||
CZ_X, CZ_Y, CZ_Z, CZ_B, CZ_BSLS, CZ_N, CZ_PLUS, KC_DEL
|
||||
};
|
100
quantum/keymap_extras/sendstring_estonian.h
Normal file
100
quantum/keymap_extras/sendstring_estonian.h
Normal 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 Estonian layouts
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keymap_estonian.h"
|
||||
#include "quantum"
|
||||
|
||||
// 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, 1, 0, 1, 1, 0),
|
||||
KCLUT_ENTRY(1, 1, 1, 0, 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, 1, 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, 1, 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, EE_1, EE_2, EE_3, EE_4, EE_5, EE_6, EE_QUOT,
|
||||
// ( ) * + , - . /
|
||||
EE_8, EE_9, EE_QUOT, EE_PLUS, EE_COMM, EE_MINS, EE_DOT, EE_7,
|
||||
// 0 1 2 3 4 5 6 7
|
||||
EE_0, EE_1, EE_2, EE_3, EE_4, EE_5, EE_6, EE_7,
|
||||
// 8 9 : ; < = > ?
|
||||
EE_8, EE_9, EE_DOT, EE_COMM, EE_LABK, EE_0, EE_LABK, EE_PLUS,
|
||||
// @ A B C D E F G
|
||||
EE_2, EE_A, EE_B, EE_C, EE_D, EE_E, EE_F, EE_G,
|
||||
// H I J K L M N O
|
||||
EE_H, EE_I, EE_J, EE_K, EE_L, EE_M, EE_N, EE_O,
|
||||
// P Q R S T U V W
|
||||
EE_P, EE_Q, EE_R, EE_S, EE_T, EE_U, EE_V, EE_W,
|
||||
// X Y Z [ \ ] ^ _
|
||||
EE_X, EE_Y, EE_Z, EE_8, EE_PLUS, EE_9, EE_ADIA, EE_MINS,
|
||||
// ` a b c d e f g
|
||||
EE_ACUT, EE_A, EE_B, EE_C, EE_D, EE_E, EE_F, EE_G,
|
||||
// h i j k l m n o
|
||||
EE_H, EE_I, EE_J, EE_K, EE_L, EE_M, EE_N, EE_O,
|
||||
// p q r s t u v w
|
||||
EE_P, EE_Q, EE_R, EE_S, EE_T, EE_U, EE_V, EE_W,
|
||||
// x y z { | } ~ DEL
|
||||
EE_X, EE_Y, EE_Z, EE_7, EE_LABK, EE_0, EE_CARN, KC_DEL
|
||||
};
|
|
@ -17,9 +17,12 @@
|
|||
#include "print.h"
|
||||
#include "process_combo.h"
|
||||
|
||||
__attribute__((weak)) combo_t key_combos[COMBO_COUNT] = {
|
||||
|
||||
};
|
||||
#ifndef COMBO_VARIABLE_LEN
|
||||
__attribute__((weak)) combo_t key_combos[COMBO_COUNT] = {};
|
||||
#else
|
||||
extern combo_t key_combos[];
|
||||
extern int COMBO_LEN;
|
||||
#endif
|
||||
|
||||
__attribute__((weak)) void process_combo_event(uint8_t combo_index, bool pressed) {}
|
||||
|
||||
|
@ -141,8 +144,11 @@ bool process_combo(uint16_t keycode, keyrecord_t *record) {
|
|||
if (!is_combo_enabled()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifndef COMBO_VARIABLE_LEN
|
||||
for (current_combo_index = 0; current_combo_index < COMBO_COUNT; ++current_combo_index) {
|
||||
#else
|
||||
for (current_combo_index = 0; current_combo_index < COMBO_LEN; ++current_combo_index) {
|
||||
#endif
|
||||
combo_t *combo = &key_combos[current_combo_index];
|
||||
is_combo_key |= process_single_combo(combo, keycode, record);
|
||||
no_combo_keys_pressed = no_combo_keys_pressed && NO_COMBO_KEYS_ARE_DOWN;
|
||||
|
|
|
@ -120,6 +120,10 @@ __attribute__((weak)) bool process_record_kb(uint16_t keycode, keyrecord_t *reco
|
|||
|
||||
__attribute__((weak)) bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }
|
||||
|
||||
__attribute__((weak)) void post_process_record_kb(uint16_t keycode, keyrecord_t *record) { post_process_record_user(keycode, record); }
|
||||
|
||||
__attribute__((weak)) void post_process_record_user(uint16_t keycode, keyrecord_t *record) {}
|
||||
|
||||
void reset_keyboard(void) {
|
||||
clear_keyboard();
|
||||
#if defined(MIDI_ENABLE) && defined(MIDI_BASIC)
|
||||
|
@ -172,9 +176,15 @@ uint16_t get_event_keycode(keyevent_t event) {
|
|||
return keymap_key_to_keycode(layer_switch_get_layer(event.key), event.key);
|
||||
}
|
||||
|
||||
/* Main keycode processing function. Hands off handling to other functions,
|
||||
* then processes internal Quantum keycodes, then processes ACTIONs.
|
||||
*/
|
||||
/* Get keycode, and then call keyboard function */
|
||||
void post_process_record_quantum(keyrecord_t *record) {
|
||||
uint16_t keycode = get_record_keycode(record);
|
||||
post_process_record_kb(keycode, record);
|
||||
}
|
||||
|
||||
/* Core keycode function, hands off handling to other functions,
|
||||
then processes internal quantum keycodes, and then processes
|
||||
ACTIONs. */
|
||||
bool process_record_quantum(keyrecord_t *record) {
|
||||
uint16_t keycode = get_record_keycode(record);
|
||||
|
||||
|
@ -192,6 +202,12 @@ bool process_record_quantum(keyrecord_t *record) {
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef WPM_ENABLE
|
||||
if (record->event.pressed) {
|
||||
update_wpm(keycode);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef TAP_DANCE_ENABLE
|
||||
preprocess_tap_dance(keycode, record);
|
||||
#endif
|
||||
|
@ -648,6 +664,10 @@ void matrix_scan_quantum() {
|
|||
encoder_read();
|
||||
#endif
|
||||
|
||||
#ifdef WPM_ENABLE
|
||||
decay_wpm();
|
||||
#endif
|
||||
|
||||
#ifdef HAPTIC_ENABLE
|
||||
haptic_task();
|
||||
#endif
|
||||
|
|
|
@ -182,6 +182,10 @@ extern layer_state_t layer_state;
|
|||
# include "via.h"
|
||||
#endif
|
||||
|
||||
#ifdef WPM_ENABLE
|
||||
# include "wpm.h"
|
||||
#endif
|
||||
|
||||
// Function substitutions to ease GPIO manipulation
|
||||
#if defined(__AVR__)
|
||||
typedef uint8_t pin_t;
|
||||
|
@ -257,6 +261,8 @@ uint16_t get_event_keycode(keyevent_t event);
|
|||
bool process_action_kb(keyrecord_t *record);
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record);
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record);
|
||||
void post_process_record_kb(uint16_t keycode, keyrecord_t *record);
|
||||
void post_process_record_user(uint16_t keycode, keyrecord_t *record);
|
||||
|
||||
#ifndef BOOTMAGIC_LITE_COLUMN
|
||||
# define BOOTMAGIC_LITE_COLUMN 0
|
||||
|
|
|
@ -111,7 +111,6 @@ const point_t k_rgb_matrix_center = RGB_MATRIX_CENTER;
|
|||
# define RGB_MATRIX_STARTUP_SPD UINT8_MAX / 2
|
||||
#endif
|
||||
|
||||
|
||||
bool g_suspend_state = false;
|
||||
|
||||
rgb_config_t rgb_matrix_config;
|
||||
|
|
|
@ -35,6 +35,9 @@ typedef struct _I2C_slave_buffer_t {
|
|||
# ifdef ENCODER_ENABLE
|
||||
uint8_t encoder_state[NUMBER_OF_ENCODERS];
|
||||
# endif
|
||||
# ifdef WPM_ENABLE
|
||||
uint8_t current_wpm;
|
||||
# endif
|
||||
} I2C_slave_buffer_t;
|
||||
|
||||
static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg;
|
||||
|
@ -43,6 +46,7 @@ static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_re
|
|||
# define I2C_RGB_START offsetof(I2C_slave_buffer_t, rgblight_sync)
|
||||
# define I2C_KEYMAP_START offsetof(I2C_slave_buffer_t, smatrix)
|
||||
# define I2C_ENCODER_START offsetof(I2C_slave_buffer_t, encoder_state)
|
||||
# define I2C_WPM_START offsetof(I2C_slave_buffer_t, current_wpm)
|
||||
|
||||
# define TIMEOUT 100
|
||||
|
||||
|
@ -79,6 +83,14 @@ bool transport_master(matrix_row_t matrix[]) {
|
|||
encoder_update_raw(i2c_buffer->encoder_state);
|
||||
# endif
|
||||
|
||||
# ifdef WPM_ENABLE
|
||||
uint8_t current_wpm = get_current_wpm();
|
||||
if (current_wpm != i2c_buffer->current_wpm) {
|
||||
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WPM_START, (void *)¤t_wpm, sizeof(current_wpm), TIMEOUT) >= 0) {
|
||||
i2c_buffer->current_wpm = current_wpm;
|
||||
}
|
||||
}
|
||||
# endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -102,6 +114,10 @@ void transport_slave(matrix_row_t matrix[]) {
|
|||
# ifdef ENCODER_ENABLE
|
||||
encoder_state_raw(i2c_buffer->encoder_state);
|
||||
# endif
|
||||
|
||||
# ifdef WPM_ENABLE
|
||||
set_current_wpm(i2c_buffer->current_wpm);
|
||||
# endif
|
||||
}
|
||||
|
||||
void transport_master_init(void) { i2c_init(); }
|
||||
|
@ -126,6 +142,9 @@ typedef struct _Serial_m2s_buffer_t {
|
|||
# ifdef BACKLIGHT_ENABLE
|
||||
uint8_t backlight_level;
|
||||
# endif
|
||||
# ifdef WPM_ENABLE
|
||||
uint8_t current_wpm;
|
||||
# endif
|
||||
} Serial_m2s_buffer_t;
|
||||
|
||||
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
|
||||
|
@ -228,6 +247,10 @@ bool transport_master(matrix_row_t matrix[]) {
|
|||
encoder_update_raw((uint8_t *)serial_s2m_buffer.encoder_state);
|
||||
# endif
|
||||
|
||||
# ifdef WPM_ENABLE
|
||||
// Write wpm to slave
|
||||
serial_m2s_buffer.current_wpm = get_current_wpm();
|
||||
# endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -244,6 +267,10 @@ void transport_slave(matrix_row_t matrix[]) {
|
|||
# ifdef ENCODER_ENABLE
|
||||
encoder_state_raw((uint8_t *)serial_s2m_buffer.encoder_state);
|
||||
# endif
|
||||
|
||||
# ifdef WPM_ENABLE
|
||||
set_current_wpm(serial_m2s_buffer.current_wpm);
|
||||
# endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -197,7 +197,7 @@ section at the end of this file).
|
|||
|
||||
/* -------------------------- Device Description --------------------------- */
|
||||
|
||||
#define USB_CFG_VENDOR_ID (VENDOR_ID & 0xFF), ((VENDOR_ID >> 8) & 0xFF)
|
||||
#define USB_CFG_VENDOR_ID
|
||||
/* USB vendor ID for the device, low byte first. If you have registered your
|
||||
* own Vendor ID, define it here. Otherwise you may use one of obdev's free
|
||||
* shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
|
||||
|
@ -206,7 +206,7 @@ section at the end of this file).
|
|||
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
|
||||
* the implications!
|
||||
*/
|
||||
#define USB_CFG_DEVICE_ID (PRODUCT_ID & 0xFF), ((PRODUCT_ID >> 8) & 0xFF)
|
||||
#define USB_CFG_DEVICE_ID
|
||||
/* This is the ID of the product, low byte first. It is interpreted in the
|
||||
* scope of the vendor ID. If you have registered your own VID with usb.org
|
||||
* or if you have licensed a PID from somebody else, define it here. Otherwise
|
||||
|
@ -217,34 +217,6 @@ section at the end of this file).
|
|||
* with libusb: 0x16c0/0x5dc. Use this VID/PID pair ONLY if you understand
|
||||
* the implications!
|
||||
*/
|
||||
#define USB_CFG_DEVICE_VERSION (DEVICE_VER & 0xFF), ((DEVICE_VER >> 8) & 0xFF)
|
||||
/* Version number of the device: Minor number first, then major number.
|
||||
*/
|
||||
#define USB_CFG_VENDOR_NAME 'w', 'i', 'n', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'k', 'r'
|
||||
#define USB_CFG_VENDOR_NAME_LEN 13
|
||||
/* These two values define the vendor name returned by the USB device. The name
|
||||
* must be given as a list of characters under single quotes. The characters
|
||||
* are interpreted as Unicode (UTF-16) entities.
|
||||
* If you don't want a vendor name string, undefine these macros.
|
||||
* ALWAYS define a vendor name containing your Internet domain name if you use
|
||||
* obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for
|
||||
* details.
|
||||
*/
|
||||
#define USB_CFG_DEVICE_NAME 'p', 's', '2', 'a', 'v', 'r', 'G', 'B'
|
||||
#define USB_CFG_DEVICE_NAME_LEN 8
|
||||
/* Same as above for the device name. If you don't want a device name, undefine
|
||||
* the macros. See the file USB-IDs-for-free.txt before you assign a name if
|
||||
* you use a shared VID/PID.
|
||||
*/
|
||||
/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */
|
||||
/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */
|
||||
/* Same as above for the serial number. If you don't want a serial number,
|
||||
* undefine the macros.
|
||||
* It may be useful to provide the serial number through other means than at
|
||||
* compile time. See the section about descriptor properties below for how
|
||||
* to fine tune control over USB descriptors such as the string descriptor
|
||||
* for the serial number.
|
||||
*/
|
||||
#define USB_CFG_DEVICE_CLASS 0
|
||||
#define USB_CFG_DEVICE_SUBCLASS 0
|
||||
/* See USB specification if you want to conform to an existing device class.
|
||||
|
@ -323,18 +295,15 @@ section at the end of this file).
|
|||
* };
|
||||
*/
|
||||
|
||||
#define USB_CFG_DESCR_PROPS_DEVICE 0
|
||||
#define USB_CFG_DESCR_PROPS_DEVICE USB_PROP_IS_DYNAMIC
|
||||
#define USB_CFG_DESCR_PROPS_CONFIGURATION USB_PROP_IS_DYNAMIC
|
||||
//#define USB_CFG_DESCR_PROPS_CONFIGURATION 0
|
||||
#define USB_CFG_DESCR_PROPS_STRINGS 0
|
||||
#define USB_CFG_DESCR_PROPS_STRING_0 0
|
||||
#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0
|
||||
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0
|
||||
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0
|
||||
#define USB_CFG_DESCR_PROPS_STRINGS USB_PROP_IS_DYNAMIC
|
||||
#define USB_CFG_DESCR_PROPS_STRING_0 USB_PROP_IS_DYNAMIC
|
||||
#define USB_CFG_DESCR_PROPS_STRING_VENDOR USB_PROP_IS_DYNAMIC
|
||||
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT USB_PROP_IS_DYNAMIC
|
||||
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER USB_PROP_IS_DYNAMIC
|
||||
#define USB_CFG_DESCR_PROPS_HID USB_PROP_IS_DYNAMIC
|
||||
//#define USB_CFG_DESCR_PROPS_HID 0
|
||||
#define USB_CFG_DESCR_PROPS_HID_REPORT USB_PROP_IS_DYNAMIC
|
||||
//#define USB_CFG_DESCR_PROPS_HID_REPORT 0
|
||||
#define USB_CFG_DESCR_PROPS_UNKNOWN 0
|
||||
|
||||
#define usbMsgPtr_t unsigned short
|
||||
|
|
64
quantum/wpm.c
Normal file
64
quantum/wpm.c
Normal file
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* Copyright 2020 Richard Sutherland (rich@brickbots.com)
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#include "wpm.h"
|
||||
|
||||
// WPM Stuff
|
||||
static uint8_t current_wpm = 0;
|
||||
static uint8_t latest_wpm = 0;
|
||||
static uint16_t wpm_timer = 0;
|
||||
|
||||
// This smoothing is 40 keystrokes
|
||||
static const float wpm_smoothing = 0.0487;
|
||||
|
||||
void set_current_wpm(uint8_t new_wpm) { current_wpm = new_wpm; }
|
||||
|
||||
uint8_t get_current_wpm(void) { return current_wpm; }
|
||||
|
||||
bool wpm_keycode(uint16_t keycode) { return wpm_keycode_kb(keycode); }
|
||||
|
||||
__attribute__((weak)) bool wpm_keycode_kb(uint16_t keycode) { return wpm_keycode_user(keycode); }
|
||||
|
||||
__attribute__((weak)) bool wpm_keycode_user(uint16_t keycode) {
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
|
||||
keycode = keycode & 0xFF;
|
||||
} else if (keycode > 0xFF) {
|
||||
keycode = 0;
|
||||
}
|
||||
if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void update_wpm(uint16_t keycode) {
|
||||
if (wpm_keycode(keycode)) {
|
||||
if (wpm_timer > 0) {
|
||||
latest_wpm = 60000 / timer_elapsed(wpm_timer) / 5;
|
||||
current_wpm = (latest_wpm - current_wpm) * wpm_smoothing + current_wpm;
|
||||
}
|
||||
wpm_timer = timer_read();
|
||||
}
|
||||
}
|
||||
|
||||
void decay_wpm(void) {
|
||||
if (timer_elapsed(wpm_timer) > 1000) {
|
||||
current_wpm = (0 - current_wpm) * wpm_smoothing + current_wpm;
|
||||
wpm_timer = timer_read();
|
||||
}
|
||||
}
|
30
quantum/wpm.h
Normal file
30
quantum/wpm.h
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright 2020 Richard Sutherland (rich@brickbots.com)
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
bool wpm_keycode(uint16_t keycode);
|
||||
bool wpm_keycode_kb(uint16_t keycode);
|
||||
bool wpm_keycode_user(uint16_t keycode);
|
||||
|
||||
void set_current_wpm(uint8_t);
|
||||
uint8_t get_current_wpm(void);
|
||||
void update_wpm(uint16_t);
|
||||
|
||||
void decay_wpm(void);
|
Loading…
Add table
Add a link
Reference in a new issue