aboutsummaryrefslogtreecommitdiffstats
path: root/quantum/keymap_extras
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/keymap_extras')
-rw-r--r--quantum/keymap_extras/keymap_bepo.h6
-rw-r--r--quantum/keymap_extras/keymap_colemak.h2
-rw-r--r--quantum/keymap_extras/keymap_dvorak.h17
-rw-r--r--quantum/keymap_extras/keymap_fr_ch.h4
-rw-r--r--quantum/keymap_extras/keymap_french.h6
-rw-r--r--quantum/keymap_extras/keymap_french_osx.h2
-rw-r--r--quantum/keymap_extras/keymap_german.h4
-rw-r--r--quantum/keymap_extras/keymap_german_ch.h102
-rw-r--r--quantum/keymap_extras/keymap_german_osx.h161
-rw-r--r--quantum/keymap_extras/keymap_neo2.h4
-rw-r--r--quantum/keymap_extras/keymap_nordic.h6
-rw-r--r--quantum/keymap_extras/keymap_norwegian.h (renamed from quantum/keymap_extras/keymap_norwegian.c)2
-rw-r--r--quantum/keymap_extras/keymap_plover.h32
-rw-r--r--quantum/keymap_extras/keymap_russian.h77
-rw-r--r--quantum/keymap_extras/keymap_spanish.h8
-rw-r--r--quantum/keymap_extras/keymap_uk.h6
-rw-r--r--quantum/keymap_extras/keymap_unicode_cyrillic.h163
17 files changed, 490 insertions, 112 deletions
diff --git a/quantum/keymap_extras/keymap_bepo.h b/quantum/keymap_extras/keymap_bepo.h
index 1ab2d63dd..e5ef39552 100644
--- a/quantum/keymap_extras/keymap_bepo.h
+++ b/quantum/keymap_extras/keymap_bepo.h
@@ -2,7 +2,7 @@
#ifndef KEYMAP_BEPO_H
#define KEYMAP_BEPO_H
-#include "keymap_common.h"
+#include "keymap.h"
// Alt gr
#ifndef ALTGR
@@ -118,7 +118,7 @@
// Fourth row
#define BP_COLON LSFT(BP_DOT) // :
#define BP_COLN BP_COLON
-#define BP_QUESTION LSFT(BP_QUOTE) // ?
+#define BP_QUESTION LSFT(BP_APOS) // ?
#define BP_QEST BP_QUESTION
// Space bar
@@ -183,7 +183,7 @@
// Third row
#define BP_AE_LIGATURE ALTGR(BP_A) // æ
#define BP_AE BP_AE_LIGATURE
-#define BP_U_GRAVE AGR(BP_U) // ù
+#define BP_U_GRAVE ALTGR(BP_U) // ù
#define BP_UGRV BP_U_GRAVE
#define BP_DEAD_TREMA ALTGR(BP_I) // dead ¨ (trema/umlaut/diaresis)
#define BP_DTRM BP_DEAD_TREMA
diff --git a/quantum/keymap_extras/keymap_colemak.h b/quantum/keymap_extras/keymap_colemak.h
index 8a418c615..b8d615748 100644
--- a/quantum/keymap_extras/keymap_colemak.h
+++ b/quantum/keymap_extras/keymap_colemak.h
@@ -1,7 +1,7 @@
#ifndef KEYMAP_COLEMAK_H
#define KEYMAP_COLEMAK_H
-#include "keymap_common.h"
+#include "keymap.h"
// For software implementation of colemak
#define CM_Q KC_Q
#define CM_W KC_W
diff --git a/quantum/keymap_extras/keymap_dvorak.h b/quantum/keymap_extras/keymap_dvorak.h
index 93e355bf9..17f205977 100644
--- a/quantum/keymap_extras/keymap_dvorak.h
+++ b/quantum/keymap_extras/keymap_dvorak.h
@@ -1,7 +1,7 @@
#ifndef KEYMAP_DVORAK_H
#define KEYMAP_DVORAK_H
-#include "keymap_common.h"
+#include "keymap.h"
// Normal characters
#define DV_GRV KC_GRV
@@ -18,18 +18,19 @@
#define DV_LBRC KC_MINS
#define DV_RBRC KC_EQL
-#define DV_QUOT KC_Q
+#define DV_QUOT KC_Q
#define DV_COMM KC_W
#define DV_DOT KC_E
#define DV_P KC_R
#define DV_Y KC_T
#define DV_F KC_Y
#define DV_G KC_U
-#define DV_C KC_I
+#define DV_C KC_I
#define DV_R KC_O
#define DV_L KC_P
#define DV_SLSH KC_LBRC
#define DV_EQL KC_RBRC
+#define DV_BSLS KC_BSLS
#define DV_A KC_A
#define DV_O KC_S
@@ -68,7 +69,13 @@
#define DV_RPRN LSFT(DV_0)
#define DV_LCBR LSFT(DV_LBRC)
#define DV_RCBR LSFT(DV_RBRC)
-#define DV_UNDS LSFT(DV_MINS)
-#define DV_PLUS LSFT(DV_EQL)
+
+#define DV_QUES LSFT(DV_SLSH)
+#define DV_PLUS LSFT(DV_EQL)
+#define DV_PIPE LSFT(DV_BSLS)
+
+#define DV_UNDS LSFT(DV_MINS)
+
+#define DV_COLN LSFT(DV_SCLN)
#endif
diff --git a/quantum/keymap_extras/keymap_fr_ch.h b/quantum/keymap_extras/keymap_fr_ch.h
index d3884c19a..87d4bb24c 100644
--- a/quantum/keymap_extras/keymap_fr_ch.h
+++ b/quantum/keymap_extras/keymap_fr_ch.h
@@ -1,10 +1,10 @@
#ifndef KEYMAP_FR_CH
#define KEYMAP_FR_CH
-#include "keymap_common.h"
+#include "keymap.h"
// Alt gr
-#define ALGR(kc) kc | 0x1400
+#define ALGR(kc) RALT(kc)
#define FR_CH_ALGR KC_RALT
// normal characters
diff --git a/quantum/keymap_extras/keymap_french.h b/quantum/keymap_extras/keymap_french.h
index e03a121a2..834c69650 100644
--- a/quantum/keymap_extras/keymap_french.h
+++ b/quantum/keymap_extras/keymap_french.h
@@ -1,10 +1,10 @@
#ifndef KEYMAP_FRENCH_H
#define KEYMAP_FRENCH_H
-#include "keymap_common.h"
+#include "keymap.h"
// Alt gr
-#define ALGR(kc) kc | 0x1400
+#define ALGR(kc) RALT(kc)
#define NO_ALGR KC_RALT
// Normal characters
@@ -80,4 +80,4 @@
#define FR_EURO ALGR(KC_E)
#define FR_BULT ALGR(FR_DLR)
-#endif \ No newline at end of file
+#endif
diff --git a/quantum/keymap_extras/keymap_french_osx.h b/quantum/keymap_extras/keymap_french_osx.h
index eb31bfb4d..004d73ee2 100644
--- a/quantum/keymap_extras/keymap_french_osx.h
+++ b/quantum/keymap_extras/keymap_french_osx.h
@@ -1,7 +1,7 @@
#ifndef KEYMAP_FRENCH_OSX_H
#define KEYMAP_FRENCH_OSX_H
-#include "keymap_common.h"
+#include "keymap.h"
// Normal characters
#define FR_AT KC_GRV
diff --git a/quantum/keymap_extras/keymap_german.h b/quantum/keymap_extras/keymap_german.h
index dbad26f8a..7e2e0ed44 100644
--- a/quantum/keymap_extras/keymap_german.h
+++ b/quantum/keymap_extras/keymap_german.h
@@ -1,10 +1,10 @@
#ifndef KEYMAP_GERMAN
#define KEYMAP_GERMAN
-#include "keymap_common.h"
+#include "keymap.h"
// Alt gr
-#define ALGR(kc) kc | 0x1400
+#define ALGR(kc) RALT(kc)
#define DE_ALGR KC_RALT
// normal characters
diff --git a/quantum/keymap_extras/keymap_german_ch.h b/quantum/keymap_extras/keymap_german_ch.h
new file mode 100644
index 000000000..b66d582a4
--- /dev/null
+++ b/quantum/keymap_extras/keymap_german_ch.h
@@ -0,0 +1,102 @@
+#ifndef KEYMAP_SWISS_GERMAN
+#define KEYMAP_SWISS_GERMAN
+
+#include "keymap.h"
+
+// Alt gr
+#define ALGR(kc) RALT(kc)
+#define CH_ALGR KC_RALT
+
+// normal characters
+#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
+#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
+#define CH_3 KC_3
+#define CH_4 KC_4
+#define CH_5 KC_5
+#define CH_6 KC_6
+#define CH_7 KC_7
+#define CH_8 KC_8
+#define CH_9 KC_9
+
+#define CH_DOT KC_DOT
+#define CH_COMM KC_COMM
+
+#define CH_QUOT KC_MINS // ' ? ´
+#define CH_AE KC_QUOT
+#define CH_UE KC_LBRC
+#define CH_OE KC_SCLN
+
+#define CH_PARA KC_GRAVE // secction sign § and °
+#define CH_CARR KC_EQL // carret ^ ` ~
+#define CH_DIER KC_RBRC // dieresis ¨ ! ]
+#define CH_DLR KC_BSLS // $ £ }
+#define CH_LESS KC_NUBS // < and > and backslash
+#define CH_MINS KC_SLSH // - and _
+
+// shifted characters
+#define CH_RING LSFT(CH_PARA) // °
+#define CH_PLUS LSFT(KC_1) // +
+#define CH_DQOT LSFT(KC_2) // "
+#define CH_PAST LSFT(KC_3) // *
+#define CH_CELA LSFT(KC_4) // ç
+#define CH_PERC LSFT(KC_5) // %
+#define CH_AMPR LSFT(KC_6) // &
+#define CH_SLSH LSFT(KC_7) // /
+#define CH_LPRN LSFT(KC_8) // (
+#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
diff --git a/quantum/keymap_extras/keymap_german_osx.h b/quantum/keymap_extras/keymap_german_osx.h
index da91b4bf4..f63f06618 100644
--- a/quantum/keymap_extras/keymap_german_osx.h
+++ b/quantum/keymap_extras/keymap_german_osx.h
@@ -1,100 +1,97 @@
#ifndef KEYMAP_GERMAN_OSX
#define KEYMAP_GERMAN_OSX
-#ifdef KEYMAP_GERMAN
- #warning redefining german keys
-#endif
-#include "keymap_common.h"
+#include "keymap.h"
// Alt gr
// normal characters
-#define DE_Z KC_Y
-#define DE_Y KC_Z
+#define DE_OSX_Z KC_Y
+#define DE_OSX_Y KC_Z
-#define DE_A KC_A
-#define DE_B KC_B
-#define DE_C KC_C
-#define DE_D KC_D
-#define DE_E KC_E
-#define DE_F KC_F
-#define DE_G KC_G
-#define DE_H KC_H
-#define DE_I KC_I
-#define DE_J KC_J
-#define DE_K KC_K
-#define DE_L KC_L
-#define DE_M KC_M
-#define DE_N KC_N
-#define DE_O KC_O
-#define DE_P KC_P
-#define DE_Q KC_Q
-#define DE_R KC_R
-#define DE_S KC_S
-#define DE_T KC_T
-#define DE_U KC_U
-#define DE_V KC_V
-#define DE_W KC_W
-#define DE_X KC_X
+#define DE_OSX_A KC_A
+#define DE_OSX_B KC_B
+#define DE_OSX_C KC_C
+#define DE_OSX_D KC_D
+#define DE_OSX_E KC_E
+#define DE_OSX_F KC_F
+#define DE_OSX_G KC_G
+#define DE_OSX_H KC_H
+#define DE_OSX_I KC_I
+#define DE_OSX_J KC_J
+#define DE_OSX_K KC_K
+#define DE_OSX_L KC_L
+#define DE_OSX_M KC_M
+#define DE_OSX_N KC_N
+#define DE_OSX_O KC_O
+#define DE_OSX_P KC_P
+#define DE_OSX_Q KC_Q
+#define DE_OSX_R KC_R
+#define DE_OSX_S KC_S
+#define DE_OSX_T KC_T
+#define DE_OSX_U KC_U
+#define DE_OSX_V KC_V
+#define DE_OSX_W KC_W
+#define DE_OSX_X KC_X
-#define DE_0 KC_0
-#define DE_1 KC_1
-#define DE_2 KC_2
-#define DE_3 KC_3
-#define DE_4 KC_4
-#define DE_5 KC_5
-#define DE_6 KC_6
-#define DE_7 KC_7
-#define DE_8 KC_8
-#define DE_9 KC_9
+#define DE_OSX_0 KC_0
+#define DE_OSX_1 KC_1
+#define DE_OSX_2 KC_2
+#define DE_OSX_3 KC_3
+#define DE_OSX_4 KC_4
+#define DE_OSX_5 KC_5
+#define DE_OSX_6 KC_6
+#define DE_OSX_7 KC_7
+#define DE_OSX_8 KC_8
+#define DE_OSX_9 KC_9
-#define DE_DOT KC_DOT
-#define DE_COMM KC_COMM
+#define DE_OSX_DOT KC_DOT
+#define DE_OSX_COMM KC_COMM
-#define DE_SS KC_MINS
-#define DE_AE KC_QUOT
-#define DE_UE KC_LBRC
-#define DE_OE KC_SCLN
+#define DE_OSX_SS KC_MINS
+#define DE_OSX_AE KC_QUOT
+#define DE_OSX_UE KC_LBRC
+#define DE_OSX_OE KC_SCLN
-#define DE_CIRC KC_NUBS // accent circumflex ^ and ring °
-#define DE_ACUT KC_EQL // accent acute ´ and grave `
-#define DE_PLUS KC_RBRC // + and * and ~
-#define DE_HASH KC_BSLS // # and '
-#define DE_LESS KC_GRV // < and > and |
-#define DE_MINS KC_SLSH // - and _
+#define DE_OSX_CIRC KC_NUBS // accent circumflex ^ and ring °
+#define DE_OSX_ACUT KC_EQL // accent acute ´ and grave `
+#define DE_OSX_PLUS KC_RBRC // + and * and ~
+#define DE_OSX_HASH KC_BSLS // # and '
+#define DE_OSX_LESS KC_GRV // < and > and |
+#define DE_OSX_MINS KC_SLSH // - and _
// shifted characters
-#define DE_RING LSFT(DE_CIRC) // °
-#define DE_EXLM LSFT(KC_1) // !
-#define DE_DQOT LSFT(KC_2) // "
-#define DE_PARA LSFT(KC_3) // §
-#define DE_DLR LSFT(KC_4) // $
-#define DE_PERC LSFT(KC_5) // %
-#define DE_AMPR LSFT(KC_6) // &
-#define DE_SLSH LSFT(KC_7) // /
-#define DE_LPRN LSFT(KC_8) // (
-#define DE_RPRN LSFT(KC_9) // )
-#define DE_EQL LSFT(KC_0) // =
-#define DE_QST LSFT(DE_SS) // ?
-#define DE_GRV LSFT(DE_ACUT) // `
-#define DE_ASTR LSFT(DE_PLUS) // *
-#define DE_QUOT LSFT(DE_HASH) // '
-#define DE_MORE LSFT(DE_LESS) // >
-#define DE_COLN LSFT(KC_DOT) // :
-#define DE_SCLN LSFT(KC_COMM) // ;
-#define DE_UNDS LSFT(DE_MINS) // _
+#define DE_OSX_RING LSFT(DE_OSX_CIRC) // °
+#define DE_OSX_EXLM LSFT(KC_1) // !
+#define DE_OSX_DQOT LSFT(KC_2) // "
+#define DE_OSX_PARA LSFT(KC_3) // §
+#define DE_OSX_DLR LSFT(KC_4) // $
+#define DE_OSX_PERC LSFT(KC_5) // %
+#define DE_OSX_AMPR LSFT(KC_6) // &
+#define DE_OSX_SLSH LSFT(KC_7) // /
+#define DE_OSX_LPRN LSFT(KC_8) // (
+#define DE_OSX_RPRN LSFT(KC_9) // )
+#define DE_OSX_EQL LSFT(KC_0) // =
+#define DE_OSX_QST LSFT(DE_OSX_SS) // ?
+#define DE_OSX_GRV LSFT(DE_OSX_ACUT) // `
+#define DE_OSX_ASTR LSFT(DE_OSX_PLUS) // *
+#define DE_OSX_QUOT LSFT(DE_OSX_HASH) // '
+#define DE_OSX_MORE LSFT(DE_OSX_LESS) // >
+#define DE_OSX_COLN LSFT(KC_DOT) // :
+#define DE_OSX_SCLN LSFT(KC_COMM) // ;
+#define DE_OSX_UNDS LSFT(DE_OSX_MINS) // _
// Alt-ed characters
-#define DE_SQ2 LALT(KC_2) // ²
-#define DE_SQ3 LALT(KC_3) // ³
-#define DE_LCBR LALT(KC_8) // {
-#define DE_LBRC LALT(KC_5) // [
-#define DE_RBRC LALT(KC_6) // ]
-#define DE_RCBR LALT(KC_9) // }
-#define DE_BSLS LALT(LSFT(KC_7)) // backslash
-#define DE_AT LALT(DE_L) // @
-#define DE_EURO LALT(KC_E) // €
-#define DE_TILD LALT(DE_N) // ~
-#define DE_PIPE LALT(DE_7) // |
+//#define DE_OSX_SQ2 LALT(KC_2) // ²
+//#define DE_OSX_SQ3 LALT(KC_3) // ³
+#define DE_OSX_LCBR LALT(KC_8) // {
+#define DE_OSX_LBRC LALT(KC_5) // [
+#define DE_OSX_RBRC LALT(KC_6) // ]
+#define DE_OSX_RCBR LALT(KC_9) // }
+#define DE_OSX_BSLS LALT(LSFT(KC_7)) // backslash
+#define DE_OSX_AT LALT(DE_OSX_L) // @
+#define DE_OSX_EURO LALT(KC_E) // €
+#define DE_OSX_TILD LALT(DE_OSX_N) // ~
+#define DE_OSX_PIPE LALT(DE_OSX_7) // |
#endif
diff --git a/quantum/keymap_extras/keymap_neo2.h b/quantum/keymap_extras/keymap_neo2.h
index a35ba55a5..80439af34 100644
--- a/quantum/keymap_extras/keymap_neo2.h
+++ b/quantum/keymap_extras/keymap_neo2.h
@@ -1,8 +1,8 @@
#ifndef KEYMAP_NEO2
#define KEYMAP_NEO2
-#include "keymap_common.h"
-#include "keymap_extras/keymap_german.h"
+#include "keymap.h"
+#include "keymap_german.h"
#define NEO_A KC_D
#define NEO_B KC_N
diff --git a/quantum/keymap_extras/keymap_nordic.h b/quantum/keymap_extras/keymap_nordic.h
index 7ef41fb79..da5c82975 100644
--- a/quantum/keymap_extras/keymap_nordic.h
+++ b/quantum/keymap_extras/keymap_nordic.h
@@ -1,10 +1,10 @@
#ifndef KEYMAP_NORDIC_H
#define KEYMAP_NORDIC_H
-#include "keymap_common.h"
+#include "keymap.h"
// Alt gr
-#define ALGR(kc) kc | 0x1400
+#define ALGR(kc) RALT(kc)
#define NO_ALGR KC_RALT
// Normal characters
@@ -25,7 +25,7 @@
#define NO_SECT LSFT(NO_HALF)
#define NO_QUO2 LSFT(KC_2)
#define NO_BULT LSFT(KC_4)
-#define NO_AMP LSFT(KC_6)
+#define NO_AMPR LSFT(KC_6)
#define NO_SLSH LSFT(KC_7)
#define NO_LPRN LSFT(KC_8)
#define NO_RPRN LSFT(KC_9)
diff --git a/quantum/keymap_extras/keymap_norwegian.c b/quantum/keymap_extras/keymap_norwegian.h
index 018bfeae5..5c4e8c495 100644
--- a/quantum/keymap_extras/keymap_norwegian.c
+++ b/quantum/keymap_extras/keymap_norwegian.h
@@ -13,7 +13,7 @@
#undef NO_BSLS
#define NO_BSLS KC_EQL // '\'
#undef NO_CIRC
-#define NO_CIRC LSFT(C_RBRC) // ^
+#define NO_CIRC LSFT(KC_RBRC) // ^
#undef NO_GRV
#define NO_GRV LSFT(NO_BSLS) //
#undef NO_OSLH
diff --git a/quantum/keymap_extras/keymap_plover.h b/quantum/keymap_extras/keymap_plover.h
new file mode 100644
index 000000000..9b88f7d84
--- /dev/null
+++ b/quantum/keymap_extras/keymap_plover.h
@@ -0,0 +1,32 @@
+#ifndef KEYMAP_PLOVER_H
+#define KEYMAP_PLOVER_H
+
+#include "keymap.h"
+
+#define PV_NUM KC_1
+#define PV_LS KC_Q
+#define PV_LT KC_W
+#define PV_LP KC_E
+#define PV_LH KC_R
+#define PV_LK KC_S
+#define PV_LW KC_D
+#define PV_LR KC_F
+
+#define PV_STAR KC_Y
+#define PV_RF KC_U
+#define PV_RP KC_I
+#define PV_RL KC_O
+#define PV_RT KC_P
+#define PV_RD KC_LBRC
+#define PV_RR KC_J
+#define PV_RB KC_K
+#define PV_RG KC_L
+#define PV_RS KC_SCLN
+#define PV_RZ KC_QUOT
+
+#define PV_A KC_C
+#define PV_O KC_V
+#define PV_E KC_N
+#define PV_U KC_M
+
+#endif
diff --git a/quantum/keymap_extras/keymap_russian.h b/quantum/keymap_extras/keymap_russian.h
new file mode 100644
index 000000000..237e9abde
--- /dev/null
+++ b/quantum/keymap_extras/keymap_russian.h
@@ -0,0 +1,77 @@
+#ifndef KEYMAP_RUSSIAN_H
+#define KEYMAP_RUSSIAN_H
+
+#include "keymap.h"
+
+// Normal Chracters // reg SHIFT
+#define RU_A KC_F // а and А
+#define RU_BE KC_COMM // б and Б
+#define RU_VE KC_D // в and В
+#define RU_GHE KC_U // г and Г
+#define RU_DE KC_L // д and Д
+#define RU_IE KC_T // е and Е
+#define RU_IO KC_GRV // ё and Ё
+#define RU_ZHE KC_SCLN // ж and Ж
+#define RU_ZE KC_P // з and З
+#define RU_I KC_B // и and И
+#define RU_SRT_I KC_Q // й and Й
+#define RU_KA KC_R // к and К
+#define RU_EL KC_K // л and Л
+#define RU_EM KC_V // м and М
+#define RU_EN KC_Y // н and Н
+#define RU_O KC_J // о and О
+#define RU_PE KC_G // п and П
+#define RU_ER KC_H // р and Р
+#define RU_ES KC_C // с and С
+#define RU_TE KC_N // т and Т
+#define RU_U KC_E // у and У
+#define RU_EF KC_A // ф and Ф
+#define RU_HA KC_LBRC // х and Х
+#define RU_TSE KC_W // ц and Ц
+#define RU_CHE KC_X // ч and Ч
+#define RU_SHA KC_I // ш and Ш
+#define RU_SHCHA KC_O // щ and Щ
+#define RU_HSIGN KC_RBRC // ъ and Ъ
+#define RU_YERU KC_S // ы and Ы
+#define RU_SSIGN KC_M // ь and Ь
+#define RU_E KC_QUOT // э and Э
+#define RU_YU KC_DOT // ю and Ю
+#define RU_YA KC_Z // я and Я
+
+#define RU_1 KC_1 // 1 and !
+#define RU_2 KC_2 // 2 and "
+#define RU_3 KC_3 // 3 and №
+#define RU_4 KC_4 // 4 and ;
+#define RU_5 KC_5 // 5 and %
+#define RU_6 KC_6 // 6 and :
+#define RU_7 KC_7 // 7 and ?
+#define RU_8 KC_8 // 8 and *
+#define RU_9 KC_9 // 9 and (
+#define RU_0 KC_0 // 0 and )
+
+#define RU_MINS KC_MINS // - and _
+#define RU_EQL KC_EQL // = and +
+#define RU_BSLS KC_BSLS // \ and /
+#define RU_DOT KC_SLSH // . and ,
+
+// Shifted Chracters
+#define RU_EXLM LSFT(RU_1) // !
+#define RU_DQUT LSFT(RU_2) // "
+#define RU_NMRO LSFT(RU_3) // №
+#define RU_SCLN LSFT(RU_4) // ;
+#define RU_PERC LSFT(RU_5) // %
+#define RU_COLN LSFT(RU_6) // :
+#define RU_QUES LSFT(RU_7) // ?
+#define RU_ASTR LSFT(RU_8) // *
+#define RU_LPRN LSFT(RU_9) // (
+#define RU_RPRN LSFT(RU_0) // )
+
+#define RU_UNDR LSFT(RU_MINS) // _
+#define RU_PLUS LSFT(RU_EQL) // +
+#define RU_SLSH LSFT(RU_BSLS) // /
+#define RU_COMM LSFT(RU_DOT) // ,
+
+// Alt Gr-ed characters
+#define RU_RUBL RALT(RU_8) // ₽
+
+#endif
diff --git a/quantum/keymap_extras/keymap_spanish.h b/quantum/keymap_extras/keymap_spanish.h
index 7f980afbc..4ba568af2 100644
--- a/quantum/keymap_extras/keymap_spanish.h
+++ b/quantum/keymap_extras/keymap_spanish.h
@@ -1,10 +1,10 @@
#ifndef KEYMAP_SPANISH_H
#define KEYMAP_SPANISH_H
-#include "keymap_common.h"
+#include "keymap.h"
// Alt gr
-#define ALGR(kc) kc | 0x1400
+#define ALGR(kc) RALT(kc)
#define NO_ALGR KC_RALT
// Normal characters
@@ -49,7 +49,7 @@
#define ES_PIPE ALGR(KC_1)
#define ES_AT ALGR(KC_2)
#define ES_HASH ALGR(KC_3)
-#define ES_TILD ALGR(KC_4)
+#define ES_TILD ALGR(ES_NTIL)
#define ES_EURO ALGR(KC_5)
#define ES_NOT ALGR(KC_6)
@@ -59,4 +59,4 @@
#define ES_LCBR ALGR(ES_ACUT)
#define ES_RCRB ALGR(ES_CCED)
-#endif \ No newline at end of file
+#endif
diff --git a/quantum/keymap_extras/keymap_uk.h b/quantum/keymap_extras/keymap_uk.h
index 5b4bd3c0d..00c87afc3 100644
--- a/quantum/keymap_extras/keymap_uk.h
+++ b/quantum/keymap_extras/keymap_uk.h
@@ -1,10 +1,10 @@
#ifndef KEYMAP_UK_H
#define KEYMAP_UK_H
-#include "keymap_common.h"
+#include "keymap.h"
// Alt gr
-#define ALGR(kc) kc | 0x1400
+#define ALGR(kc) RALT(kc)
#define NO_ALGR KC_RALT
// Normal characters
@@ -33,4 +33,4 @@
#define UK_AACT ALGR(KC_A)
-#endif \ No newline at end of file
+#endif
diff --git a/quantum/keymap_extras/keymap_unicode_cyrillic.h b/quantum/keymap_extras/keymap_unicode_cyrillic.h
new file mode 100644
index 000000000..a40626d91
--- /dev/null
+++ b/quantum/keymap_extras/keymap_unicode_cyrillic.h
@@ -0,0 +1,163 @@
+#ifndef KEYMAP_CYRILLIC_H
+#define KEYMAP_CYRILLIC_H
+
+#include "keymap.h"
+
+/*
+ * This is based off of
+ * https://en.wikipedia.org/wiki/Cyrillic_script
+ *
+ * Unicode is iffy, a software implementation is preferred
+ */
+
+// Capital Char russian/ukrainian/bulgarian
+#define CY_A UC(0x0410) // А rus ukr bul
+#define CY_BE UC(0x0411) // Б rus ukr bul
+#define CY_VE UC(0x0412) // В rus ukr bul
+#define CY_GHE UC(0x0413) // Г rus ukr bul
+#define CY_GHEUP UC(0x0490) // Ґ ukr
+#define CY_DE UC(0x0414) // Д rus ukr bul
+#define CY_DJE UC(0x0402) // Ђ
+#define CY_GJE UC(0x0403) // Ѓ
+#define CY_IE UC(0x0415) // Е rus ukr bul
+#define CY_IO UC(0x0401) // Ё rus
+#define CY_UIE UC(0x0404) // Є ukr
+#define CY_ZHE UC(0x0416) // Ж rus ukr bul
+#define CY_ZE UC(0x0417) // З rus ukr bul
+#define CY_DZE UC(0x0405) // Ѕ
+#define CY_I UC(0x0418) // И rus ukr bul
+#define CY_B_U_I UC(0x0406) // І ukr
+#define CY_YI UC(0x0407) // Ї ukr
+#define CY_SRT_I UC(0x0419) // Й rus ukr bul
+#define CY_JE UC(0x0408) // Ј
+#define CY_KA UC(0x041a) // К rus ukr bul
+#define CY_EL UC(0x041b) // Л rus ukr bul
+#define CY_LJE UC(0x0409) // Љ
+#define CY_EM UC(0x041c) // М rus ukr bul
+#define CY_EN UC(0x041d) // Н rus ukr bul
+#define CY_NJE UC(0x040a) // Њ
+#define CY_O UC(0x041e) // О rus ukr bul
+#define CY_PE UC(0x041f) // П rus ukr bul
+#define CY_ER UC(0x0420) // Р rus ukr bul
+#define CY_ES UC(0x0421) // С rus ukr bul
+#define CY_TE UC(0x0422) // Т rus ukr bul
+#define CY_TSHE UC(0x040b) // Ћ
+#define CY_KJE UC(0x040c) // Ќ
+#define CY_U UC(0x0423) // У rus ukr bul
+#define CY_SRT_U UC(0x040e) // Ў
+#define CY_EF UC(0x0424) // Ф rus ukr bul
+#define CY_HA UC(0x0425) // Х rus bul
+#define CY_TSE UC(0x0426) // Ц rus ukr bul
+#define CY_CHE UC(0x0427) // Ч rus ukr bul
+#define CY_DZHE UC(0x040f) // Џ
+#define CY_SHA UC(0x0428) // Ш rus ukr bul
+#define CY_SHCHA UC(0x0429) // Щ rus ukr bul
+#define CY_HSIGN UC(0x042a) // Ъ rus bul
+#define CY_YERU UC(0x042b) // Ы rus
+#define CY_SSIGN UC(0x042c) // Ь rus ukr bul
+#define CY_E UC(0x042d) // Э rus
+#define CY_YU UC(0x042e) // Ю rus ukr bul
+#define CY_YA UC(0x042f) // Я rus ukr bul
+// Important Cyrillic non-Slavic letters
+#define CY_PALOCHKA UC(0x04c0) // Ӏ
+#define CY_SCHWA UC(0x04d8) // Ә
+#define CY_GHE_S UC(0x0492) // Ғ
+#define CY_ZE_D UC(0x0498) // Ҙ
+#define CY_ES_D UC(0x04aa) // Ҫ
+#define CY_BR_KA UC(0x04a0) // Ҡ
+#define CY_ZHE_D UC(0x0496) // Җ
+#define CY_KA_D UC(0x049a) // Қ
+#define CY_EN_D UC(0x04a2) // Ң
+#define CY_ENGHE UC(0x04a4) // Ҥ
+#define CY_BRD_O UC(0x04e8) // Ө
+#define CY_STR_U UC(0x04ae) // Ү
+#define CY_S_U_S UC(0x04b0) // Ұ
+#define CY_SHHA UC(0x04ba) // Һ
+#define CY_HA_D UC(0x04b2) // Ҳ
+
+
+// Small
+#define CY_a UC(0x0430) // a rus ukr bul
+#define CY_be UC(0x0431) // б rus ukr bul
+#define CY_ve UC(0x0432) // в rus ukr bul
+#define CY_ghe UC(0x0433) // г rus ukr bul
+#define CY_gheup UC(0x0491) // ґ ukr
+#define CY_de UC(0x0434) // д rus ukr bul
+#define CY_dje UC(0x0452) // ђ
+#define CY_gje UC(0x0453) // ѓ
+#define CY_ie UC(0x0435) // е rus ukr bul
+#define CY_io UC(0x0451) // ё rus
+#define CY_uie UC(0x0454) // є ukr
+#define CY_zhe UC(0x0436) // ж rus ukr bul
+#define CY_ze UC(0x0437) // з rus ukr bul
+#define CY_dze UC(0x0455) // ѕ
+#define CY_i UC(0x0438) // и rus ukr bul
+#define CY_b_u_i UC(0x0456) // і ukr
+#define CY_yi UC(0x0457) // ї ukr
+#define CY_srt_i UC(0x0439) // й rus ukr bul
+#define CY_je UC(0x0458) // ј
+#define CY_ka UC(0x043a) // к rus ukr bul
+#define CY_el UC(0x043b) // л rus ukr bul
+#define CY_lje UC(0x0459) // љ
+#define CY_em UC(0x043c) // м rus ukr bul
+#define CY_en UC(0x043d) // н rus ukr bul
+#define CY_nje UC(0x045a) // њ
+#define CY_o UC(0x043e) // о rus ukr bul
+#define CY_pe UC(0x043f) // п rus ukr bul
+#define CY_er UC(0x0440) // р rus ukr bul
+#define CY_es UC(0x0441) // с rus ukr bul
+#define CY_te UC(0x0442) // т rus ukr bul
+#define CY_tshe UC(0x045b) // ћ
+#define CY_kje UC(0x045c) // ќ
+#define CY_u UC(0x0443) // у rus ukr bul
+#define CY_srt_u UC(0x045e) // ў
+#define CY_ef UC(0x0444) // ф rus ukr bul
+#define CY_ha UC(0x0445) // х rus ukr bul
+#define CY_tse UC(0x0446) // ц rus ukr bul
+#define CY_che UC(0x0447) // ч rus ukr bul
+#define CY_dzhe UC(0x045f) // џ
+#define CY_sha UC(0x0448) // ш rus ukr bul
+#define CY_shcha UC(0x0449) // щ rus ukr bul
+#define CY_hsign UC(0x044a) // ъ rus bul
+#define CY_yeru UC(0x044b) // ы rus
+#define CY_ssign UC(0x044c) // ь rus ukr bul
+#define CY_e UC(0x044d) // э rus
+#define CY_yu UC(0x044e) // ю rus ukr bul
+#define CY_ya UC(0x044f) // я rus ukr bul
+// Important Cyrillic non-Slavic letters
+#define CY_palochka UC(0x04cf) // ӏ
+#define CY_schwa UC(0x04d9) // ә
+#define CY_ghe_s UC(0x0493) // ғ
+#define CY_ze_d UC(0x0499) // ҙ
+#define CY_es_d UC(0x04ab) // ҫ
+#define CY_br_ka UC(0x04a1) // ҡ
+#define CY_zhe_d UC(0x0497) // җ
+#define CY_ka_d UC(0x049b) // қ
+#define CY_en_d UC(0x04a3) // ң
+#define CY_enghe UC(0x04a5) // ҥ
+#define CY_brd_o UC(0x04e9) // ө
+#define CY_str_u UC(0x04af) // ү
+#define CY_s_u_s UC(0x04b1) // ұ
+#define CY_shha UC(0x04bb) // һ
+#define CY_ha_d UC(0x04b3) // ҳ
+
+
+// Extra
+#define CY_slr_ve UC(0x1c80) // ᲀ CYRILLIC SMALL LETTER ROUNDED VE
+#define CY_ll_de UC(0x1c81) // ᲁ CYRILLIC SMALL LETTER LONG-LEGGED DE
+#define CY_ZEMLYA UC(0xa640) // Ꙁ CYRILLIC CAPITAL LETTER ZEMLYA
+#define CY_zemlya UC(0xa641) // ꙁ CYRILLIC SMALL LETTER ZEMLYA
+#define CY_RV_DZE UC(0xa644) // Ꙅ CYRILLIC CAPITAL LETTER REVERSED DZE
+#define CY_rv_DZE UC(0xa645) // ꙅ CYRILLIC SMALL LETTER REVERSED DZE
+#define CY_slw_es UC(0x1c83) // ᲃ CYRILLIC SMALL LETTER WIDE ES
+#define CY_st_te UC(0x1c84) // ᲄ CYRILLIC SMALL LETTER TALL TE
+#define CY_3l_te UC(0x1c85) // ᲅ CYRILLIC SMALL LETTER THREE-LEGGED TE
+#define CY_thsign UC(0x1c86) // ᲆ CYRILLIC SMALL LETTER TALL HARD SIGN
+#define CY_YERUBY UC(0xa650) // Ꙑ CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+#define CY_yeruby UC(0xa651) // ꙑ CYRILLIC SMALL LETTER YERU WITH BACK YER
+#define CY_RUBL UC(0x20bd) // ₽
+#define CY_NMRO UC(0x2116) // №
+
+// The letters Zje and Sje are made for other letters and accent marks
+
+#endif