Merge "Modify current KCM files to support shift+capslock" into udc-dev
diff --git a/data/keyboards/Generic.kcm b/data/keyboards/Generic.kcm
index fe6eeeb..1048742 100644
--- a/data/keyboards/Generic.kcm
+++ b/data/keyboards/Generic.kcm
@@ -42,9 +42,10 @@
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
-    alt:                                '\u00e7'
-    shift+alt:                          '\u00c7'
     shift+capslock:                     'c'
+    alt:                                '\u00e7'
+    shift+alt, capslock+alt:            '\u00c7'
+    shift+capslock+alt:                 '\u00e7'
 }
 
 key D {
@@ -58,8 +59,8 @@
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
-    alt:                                '\u0301'
     shift+capslock:                     'e'
+    alt:                                '\u0301'
 }
 
 key F {
@@ -87,8 +88,8 @@
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
-    alt:                                '\u0302'
     shift+capslock:                     'i'
+    alt:                                '\u0302'
 }
 
 key J {
@@ -123,8 +124,8 @@
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
-    alt:                                '\u0303'
     shift+capslock:                     'n'
+    alt:                                '\u0303'
 }
 
 key O {
@@ -159,8 +160,8 @@
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
-    alt:                                '\u00df'
     shift+capslock:                     's'
+    alt:                                '\u00df'
 }
 
 key T {
@@ -174,8 +175,8 @@
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
-    alt:                                '\u0308'
     shift+capslock:                     'u'
+    alt:                                '\u0308'
 }
 
 key V {
diff --git a/data/keyboards/Virtual.kcm b/data/keyboards/Virtual.kcm
index 53308e3..06b8237 100644
--- a/data/keyboards/Virtual.kcm
+++ b/data/keyboards/Virtual.kcm
@@ -39,9 +39,10 @@
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
-    alt:                                '\u00e7'
-    shift+alt:                          '\u00c7'
     shift+capslock:                     'c'
+    alt:                                '\u00e7'
+    shift+alt, capslock+alt:            '\u00c7'
+    shift+capslock+alt:                 '\u00e7'
 }
 
 key D {
@@ -55,8 +56,8 @@
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
-    alt:                                '\u0301'
     shift+capslock:                     'e'
+    alt:                                '\u0301'
 }
 
 key F {
@@ -84,8 +85,8 @@
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
-    alt:                                '\u0302'
     shift+capslock:                     'i'
+    alt:                                 '\u0302'
 }
 
 key J {
@@ -120,8 +121,8 @@
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
-    alt:                                '\u0303'
     shift+capslock:                     'n'
+    alt:                                '\u0303'
 }
 
 key O {
@@ -156,8 +157,8 @@
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
-    alt:                                '\u00df'
     shift+capslock:                     's'
+    alt:                                '\u00df'
 }
 
 key T {
@@ -171,8 +172,8 @@
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
-    alt:                                '\u0308'
     shift+capslock:                     'u'
+    alt:                                '\u0308'
 }
 
 key V {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_arabic.kcm b/packages/InputDevices/res/raw/keyboard_layout_arabic.kcm
index 1614188..9c2064c 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_arabic.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_arabic.kcm
@@ -22,89 +22,89 @@
 
 key GRAVE {
     label:                              '`'
-    base, capslock:                     '\u0630'
+    base:                               '\u0630'
     shift:                              '\u0651'
 }
 
 key 1 {
     label:                              '1'
     base:                               '\u0661'
-    shift:                              '!'
     capslock:                           '1'
+    shift:                              '!'
 }
 
 key 2 {
     label:                              '2'
     base:                               '\u0662'
-    shift:                              '@'
     capslock:                           '2'
+    shift:                              '@'
 }
 
 key 3 {
     label:                              '3'
     base:                               '\u0663'
-    shift:                              '#'
     capslock:                           '3'
+    shift:                              '#'
 }
 
 key 4 {
     label:                              '4'
     base:                               '\u0664'
-    shift:                              '$'
     capslock:                           '4'
+    shift:                              '$'
 }
 
 key 5 {
     label:                              '5'
     base:                               '\u0665'
-    shift:                              '%'
     capslock:                           '5'
+    shift:                              '%'
 }
 
 key 6 {
     label:                              '6'
     base:                               '\u0666'
-    shift:                              '^'
     capslock:                           '6'
+    shift:                              '^'
 }
 
 key 7 {
     label:                              '7'
     base:                               '\u0667'
-    shift:                              '&'
     capslock:                           '7'
+    shift:                              '&'
 }
 
 key 8 {
     label:                              '8'
     base:                               '\u0668'
-    shift:                              '*'
     capslock:                           '8'
+    shift:                              '*'
 }
 
 key 9 {
     label:                              '9'
     base:                               '\u0669'
-    shift:                              ')'
     capslock:                           '9'
+    shift:                              ')'
 }
 
 key 0 {
     label:                              '0'
     base:                               '\u0660'
-    shift:                              '('
     capslock:                           '0'
+    shift:                              '('
 }
 
 key MINUS {
     label:                              '-'
-    base, capslock:                     '-'
+    base:                               '-'
     shift:                              '_'
 }
 
 key EQUALS {
     label:                              '='
-    base, capslock:                     '='
+    base:                               '='
     shift:                              '+'
 }
 
@@ -112,79 +112,79 @@
 
 key Q {
     label:                              'Q'
-    base, capslock:                     '\u0636'
+    base:                               '\u0636'
     shift:                              '\u064e'
 }
 
 key W {
     label:                              'W'
-    base, capslock:                     '\u0635'
+    base:                               '\u0635'
     shift:                              '\u064b'
 }
 
 key E {
     label:                              'E'
-    base, capslock:                     '\u062b'
+    base:                               '\u062b'
     shift:                              '\u064f'
 }
 
 key R {
     label:                              'R'
-    base, capslock:                     '\u0642'
+    base:                               '\u0642'
     shift:                              '\u064c'
 }
 
 key T {
     label:                              'T'
-    base, capslock:                     '\u0641'
+    base:                               '\u0641'
     shift:                              '\ufef9'
 }
 
 key Y {
     label:                              'Y'
-    base, capslock:                     '\u063a'
+    base:                               '\u063a'
     shift:                              '\u0625'
 }
 
 key U {
     label:                              'U'
-    base, capslock:                     '\u0639'
+    base:                               '\u0639'
     shift:                              '\u2018'
 }
 
 key I {
     label:                              'I'
-    base, capslock:                     '\u0647'
+    base:                               '\u0647'
     shift:                              '\u00f7'
 }
 
 key O {
     label:                              'O'
-    base, capslock:                     '\u062e'
+    base:                               '\u062e'
     shift:                              '\u00d7'
 }
 
 key P {
     label:                              'P'
-    base, capslock:                     '\u062d'
+    base:                               '\u062d'
     shift:                              '\u061b'
 }
 
 key LEFT_BRACKET {
     label:                              ']'
-    base, capslock:                     '\u062c'
+    base:                               '\u062c'
     shift:                              '>'
 }
 
 key RIGHT_BRACKET {
     label:                              '['
-    base, capslock:                     '\u062f'
+    base:                               '\u062f'
     shift:                              '<'
 }
 
 key BACKSLASH {
     label:                              '\\'
-    base, capslock:                     '\\'
+    base:                               '\\'
     shift:                              '|'
 }
 
@@ -192,67 +192,67 @@
 
 key A {
     label:                              'A'
-    base, capslock:                     '\u0634'
+    base:                               '\u0634'
     shift:                              '\u0650'
 }
 
 key S {
     label:                              'S'
-    base, capslock:                     '\u0633'
+    base:                               '\u0633'
     shift:                              '\u064d'
 }
 
 key D {
     label:                              'D'
-    base, capslock:                     '\u064a'
+    base:                               '\u064a'
     shift:                              ']'
 }
 
 key F {
     label:                              'F'
-    base, capslock:                     '\u0628'
+    base:                               '\u0628'
     shift:                              '['
 }
 
 key G {
     label:                              'G'
-    base, capslock:                     '\u0644'
+    base:                               '\u0644'
     shift:                              '\ufef7'
 }
 
 key H {
     label:                              'H'
-    base, capslock:                     '\u0627'
+    base:                               '\u0627'
     shift:                              '\u0623'
 }
 
 key J {
     label:                              'J'
-    base, capslock:                     '\u062a'
+    base:                               '\u062a'
     shift:                              '\u0640'
 }
 
 key K {
     label:                              'K'
-    base, capslock:                     '\u0646'
+    base:                               '\u0646'
     shift:                              '\u060c'
 }
 
 key L {
     label:                              'L'
-    base, capslock:                     '\u0645'
+    base:                               '\u0645'
     shift:                              '/'
 }
 
 key SEMICOLON {
     label:                              ';'
-    base, capslock:                     '\u0643'
+    base:                               '\u0643'
     shift:                              ':'
 }
 
 key APOSTROPHE {
     label:                              '\''
-    base, capslock:                     '\u0637'
+    base:                               '\u0637'
     shift:                              '"'
 }
 
@@ -260,60 +260,60 @@
 
 key Z {
     label:                              'Z'
-    base, capslock:                     '\u0626'
+    base:                               '\u0626'
     shift:                              '~'
 }
 
 key X {
     label:                              'X'
-    base, capslock:                     '\u0621'
+    base:                               '\u0621'
     shift:                              '\u0652'
 }
 
 key C {
     label:                              'C'
-    base, capslock:                     '\u0624'
+    base:                               '\u0624'
     shift:                              '}'
 }
 
 key V {
     label:                              'V'
-    base, capslock:                     '\u0631'
+    base:                               '\u0631'
     shift:                              '{'
 }
 
 key B {
     label:                              'B'
-    base, capslock:                     '\ufefb'
+    base:                               '\ufefb'
     shift:                              '\ufef5'
 }
 
 key N {
     label:                              'N'
-    base, capslock:                     '\u0649'
+    base:                               '\u0649'
     shift:                              '\u0622'
 }
 
 key M {
     label:                              'M'
-    base, capslock:                     '\u0629'
+    base:                               '\u0629'
     shift:                              '\u2019'
 }
 
 key COMMA {
     label:                              ','
-    base, capslock:                     '\u0648'
+    base:                               '\u0648'
     shift:                              ','
 }
 
 key PERIOD {
     label:                              '.'
-    base, capslock:                     '\u0632'
+    base:                               '\u0632'
     shift:                              '.'
 }
 
 key SLASH {
     label:                              '/'
-    base, capslock:                     '\u0638'
+    base:                               '\u0638'
     shift:                              '\u061f'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_azerbaijani.kcm b/packages/InputDevices/res/raw/keyboard_layout_azerbaijani.kcm
index 69490cc..3f5e894 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_azerbaijani.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_azerbaijani.kcm
@@ -107,72 +107,84 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              '\u00dc'
     base:                               '\u00fc'
     shift, capslock:                    '\u00dc'
+    shift+capslock:                     '\u00fc'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              '\u0130'
     base:                               'i'
     shift, capslock:                    '\u0130'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u00d6'
     base:                               '\u00f6'
     shift:                              '\u00d6'
+    shift+capslock:                     '\u00f6'
 }
 
 key RIGHT_BRACKET {
     label:                              '\u011e'
     base:                               '\u011f'
     shift:                              '\u011e'
+    shift+capslock:                     '\u011f'
 }
 
 key BACKSLASH {
@@ -187,66 +199,77 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              'I'
     base:                               '\u0131'
     shift:                              'I'
+    shift+capslock:                     '\u0131'
 }
 
 key APOSTROPHE {
     label:                              '\u018f'
     base:                               '\u0259'
     shift:                              '\u018f'
+    shift+capslock:                     '\u0259'
 }
 
 ### ROW 4
@@ -255,54 +278,63 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
     label:                              '\u00c7'
     base:                               '\u00e7'
     shift:                              '\u00c7'
+    shift+capslock:                     '\u00e7'
 }
 
 key PERIOD {
     label:                              '\u015e'
     base:                               '\u015f'
     shift:                              '\u015e'
+    shift+capslock:                     '\u015f'
 }
 
 key SLASH {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_belarusian.kcm b/packages/InputDevices/res/raw/keyboard_layout_belarusian.kcm
index 3deb9dd..6751e1d 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_belarusian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_belarusian.kcm
@@ -24,6 +24,7 @@
     label:                              '\u0401'
     base:                               '\u0451'
     shift, capslock:                    '\u0401'
+    shift+capslock:                     '\u0451'
     ralt:                               '`'
     ralt+shift:                         '~'
 }
@@ -106,163 +107,203 @@
     label:                              '\u0419'
     base:                               '\u0439'
     shift, capslock:                    '\u0419'
+    shift+capslock:                     '\u0439'
     ralt:                               'q'
-    ralt+shift, ralt+capslock:          'Q'
+    shift+ralt, capslock+ralt:          'Q'
+    shift+capslock+ralt:                'q'
 }
 key W {
     label:                              '\u0426'
     base:                               '\u0446'
     shift, capslock:                    '\u0426'
+    shift+capslock:                     '\u0446'
     ralt:                               'w'
-    ralt+shift, ralt+capslock:          'W'
+    shift+ralt, capslock+ralt:          'W'
+    shift+capslock+ralt:                'w'
 }
 key E {
     label:                              '\u0423'
     base:                               '\u0443'
     shift, capslock:                    '\u0423'
+    shift+capslock:                     '\u0443'
     ralt:                               'e'
-    ralt+shift, ralt+capslock:          'E'
+    shift+ralt, capslock+ralt:          'E'
+    shift+capslock+ralt:                'e'
 }
 key R {
     label:                              '\u041a'
     base:                               '\u043a'
     shift, capslock:                    '\u041a'
+    shift+capslock:                     '\u043a'
     ralt:                               'r'
-    ralt+shift, ralt+capslock:          'R'
+    shift+ralt, capslock+ralt:          'R'
+    shift+capslock+ralt:                'r'
 }
 key T {
     label:                              '\u0415'
     base:                               '\u0435'
     shift, capslock:                    '\u0415'
+    shift+capslock:                     '\u0435'
     ralt:                               't'
-    ralt+shift, ralt+capslock:          'T'
+    shift+ralt, capslock+ralt:          'T'
+    shift+capslock+ralt:                't'
 }
 key Y {
     label:                              '\u041d'
     base:                               '\u043d'
     shift, capslock:                    '\u041d'
+    shift+capslock:                     '\u043d'
     ralt:                               'y'
-    ralt+shift, ralt+capslock:          'Y'
+    shift+ralt, capslock+ralt:          'Y'
+    shift+capslock+ralt:                'y'
 }
 key U {
     label:                              '\u0413'
     base:                               '\u0433'
     shift, capslock:                    '\u0413'
+    shift+capslock:                     '\u0433'
     ralt:                               'u'
-    ralt+shift, ralt+capslock:          'U'
+    shift+ralt, capslock+ralt:          'U'
+    shift+capslock+ralt:                'u'
 }
 key I {
     label:                              '\u0428'
     base:                               '\u0448'
     shift, capslock:                    '\u0428'
+    shift+capslock:                     '\u0448'
     ralt:                               'i'
-    ralt+shift, ralt+capslock:          'I'
+    shift+ralt, capslock+ralt:          'I'
+    shift+capslock+ralt:                'i'
 }
 key O {
     label:                              '\u040E'
     base:                               '\u045E'
     shift, capslock:                    '\u040E'
+    shift+capslock:                     '\u045E'
     ralt:                               'o'
-    ralt+shift, ralt+capslock:          'O'
+    shift+ralt, capslock+ralt:          'O'
+    shift+capslock+ralt:                'o'
 }
 key P {
     label:                              '\u0417'
     base:                               '\u0437'
     shift, capslock:                    '\u0417'
+    shift+capslock:                     '\u0437'
     ralt:                               'p'
-    ralt+shift, ralt+capslock:          'P'
+    shift+ralt, capslock+ralt:          'P'
+    shift+capslock+ralt:                'p'
 }
 key LEFT_BRACKET {
     label:                              '\u0425'
     base:                               '\u0445'
     shift, capslock:                    '\u0425'
+    shift+capslock:                     '\u0445'
     ralt:                               '['
-    ralt+shift:                         '{'
+    shift+ralt:                         '{'
 }
 key RIGHT_BRACKET {
     label:                              '\u0027'
     base:                               '\u0027'
-    shift, capslock:                    '\u0027'
     ralt:                               ']'
-    ralt+shift:                         '}'
+    shift+ralt:                         '}'
 }
 ### ROW 3
 key A {
     label:                              '\u0424'
     base:                               '\u0444'
     shift, capslock:                    '\u0424'
+    shift+capslock:                     '\u0444'
     ralt:                               'a'
-    ralt+shift, ralt+capslock:          'A'
+    shift+ralt, capslock+ralt:          'A'
+    shift+capslock+ralt:                'a'
 }
 key S {
     label:                              '\u042b'
     base:                               '\u044b'
     shift, capslock:                    '\u042b'
+    shift+capslock:                     '\u044b'
     ralt:                               's'
-    ralt+shift, ralt+capslock:          'S'
+    shift+ralt, capslock+ralt:          'S'
+    shift+capslock+ralt:                's'
 }
 key D {
     label:                              '\u0412'
     base:                               '\u0432'
     shift, capslock:                    '\u0412'
+    shift+capslock:                     '\u0432'
     ralt:                               'd'
-    ralt+shift, ralt+capslock:          'D'
+    shift+ralt, capslock+ralt:          'D'
+    shift+capslock+ralt:                'd'
 }
 key F {
     label:                              '\u0410'
     base:                               '\u0430'
     shift, capslock:                    '\u0410'
+    shift+capslock:                     '\u0430'
     ralt:                               'f'
-    ralt+shift, ralt+capslock:          'F'
+    shift+ralt, capslock+ralt:          'F'
+    shift+capslock+ralt:                'f'
 }
 key G {
     label:                              '\u041f'
     base:                               '\u043f'
     shift, capslock:                    '\u041f'
+    shift+capslock:                     '\u043f'
     ralt:                               'g'
-    ralt+shift, ralt+capslock:          'G'
+    shift+ralt, capslock+ralt:          'G'
+    shift+capslock+ralt:                'g'
 }
 key H {
     label:                              '\u0420'
     base:                               '\u0440'
     shift, capslock:                    '\u0420'
+    shift+capslock:                     '\u0440'
     ralt:                               'h'
-    ralt+shift, ralt+capslock:          'H'
+    shift+ralt, capslock+ralt:          'H'
+    shift+capslock+ralt:                'h'
 }
 key J {
     label:                              '\u041e'
     base:                               '\u043e'
     shift, capslock:                    '\u041e'
+    shift+capslock:                     '\u043e'
     ralt:                               'j'
-    ralt+shift, ralt+capslock:          'J'
+    shift+ralt, capslock+ralt:          'J'
+    shift+capslock+ralt:                'j'
 }
 key K {
     label:                              '\u041b'
     base:                               '\u043b'
     shift, capslock:                    '\u041b'
+    shift+capslock:                     '\u043b'
     ralt:                               'k'
-    ralt+shift, ralt+capslock:          'K'
+    shift+ralt, capslock+ralt:          'K'
+    shift+capslock+ralt:                'k'
 }
 key L {
     label:                              '\u0414'
     base:                               '\u0434'
     shift, capslock:                    '\u0414'
+    shift+capslock:                     '\u0434'
     ralt:                               'l'
-    ralt+shift, ralt+capslock:          'L'
+    shift+ralt, capslock+ralt:          'L'
+    shift+capslock+ralt:                'l'
 }
 key SEMICOLON {
     label:                              '\u0416'
     base:                               '\u0436'
     shift, capslock:                    '\u0416'
+    shift+capslock:                     '\u0436'
     ralt:                               ';'
-    ralt+shift:                         ':'
+    shift+ralt:                         ':'
 }
 key APOSTROPHE {
     label:                              '\u042d'
     base:                               '\u044d'
     shift, capslock:                    '\u042d'
+    shift+capslock:                     '\u044d'
     ralt:                               '\''
-    ralt+shift:                         '"'
+    shift+ralt:                         '"'
 }
 key BACKSLASH {
     label:                              '\\'
@@ -275,69 +316,85 @@
     label:                              '\u042f'
     base:                               '\u044f'
     shift, capslock:                    '\u042f'
+    shift+capslock:                     '\u044f'
     ralt:                               'z'
-    ralt+shift, ralt+capslock:          'Z'
+    shift+ralt, capslock+ralt:          'Z'
+    shift+capslock+ralt:                'z'
 }
 key X {
     label:                              '\u0427'
     base:                               '\u0447'
     shift, capslock:                    '\u0427'
+    shift+capslock:                     '\u0447'
     ralt:                               'x'
-    ralt+shift, ralt+capslock:          'X'
+    shift+ralt, capslock+ralt:          'X'
+    shift+capslock+ralt:                'x'
 }
 key C {
     label:                              '\u0421'
     base:                               '\u0441'
     shift, capslock:                    '\u0421'
+    shift+capslock:                      '\u0441'
     ralt:                               'c'
-    ralt+shift, ralt+capslock:          'C'
+    shift+ralt, capslock+ralt:          'C'
+    shift+capslock+ralt:                'c'
 }
 key V {
     label:                              '\u041c'
     base:                               '\u043c'
     shift, capslock:                    '\u041c'
+    shift+capslock:                     '\u043c'
     ralt:                               'v'
-    ralt+shift, ralt+capslock:          'V'
+    shift+ralt, capslock+ralt:          'V'
+    shift+capslock+ralt:                'v'
 }
 key B {
     label:                              '\u0406'
     base:                               '\u0456'
     shift, capslock:                    '\u0406'
+    shift+capslock:                     '\u0456'
     ralt:                               'b'
-    ralt+shift, ralt+capslock:          'B'
+    shift+ralt, capslock+ralt:          'B'
+    shift+capslock+ralt:                'b'
 }
 key N {
     label:                              '\u0422'
     base:                               '\u0442'
     shift, capslock:                    '\u0422'
+    shift+capslock:                     '\u0442'
     ralt:                               'n'
-    ralt+shift, ralt+capslock:          'N'
+    shift+ralt, capslock+ralt:          'N'
+    shift+capslock+ralt:                'n'
 }
 key M {
     label:                              '\u042c'
     base:                               '\u044c'
     shift, capslock:                    '\u042c'
+    shift+capslock:                     '\u044c'
     ralt:                               'm'
-    ralt+shift, ralt+capslock:          'M'
+    shift+ralt, capslock+ralt:          'M'
+    shift+capslock+ralt:                'm'
 }
 key COMMA {
     label:                              '\u0411'
     base:                               '\u0431'
     shift, capslock:                    '\u0411'
+    shift+capslock:                     '\u0431'
     ralt:                               ','
-    ralt+shift:                         '<'
+    shift+ralt:                         '<'
 }
 key PERIOD {
     label:                              '\u042e'
     base:                               '\u044e'
     shift, capslock:                    '\u042e'
+    shift+capslock:                     '\u044e'
     ralt:                               '.'
-    ralt+shift:                         '>'
+    shift+ralt:                         '>'
 }
 key SLASH {
     label:                              '.'
     base:                               '.'
     shift:                              ','
     ralt:                               '/'
-    ralt+shift:                         '?'
+    shift+ralt:                         '?'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_belgian.kcm b/packages/InputDevices/res/raw/keyboard_layout_belgian.kcm
index f2c39ce..d529311 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_belgian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_belgian.kcm
@@ -122,18 +122,21 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key Z {
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -141,42 +144,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -199,60 +209,70 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key APOSTROPHE {
@@ -282,36 +302,42 @@
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_brazilian.kcm b/packages/InputDevices/res/raw/keyboard_layout_brazilian.kcm
index 140c7ac..ad3199f 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_brazilian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_brazilian.kcm
@@ -115,6 +115,7 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '/'
 }
 
@@ -122,6 +123,7 @@
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
     ralt:                               '?'
 }
 
@@ -129,6 +131,7 @@
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -136,42 +139,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -193,60 +203,70 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u00c7'
     base:                               '\u00e7'
     shift, capslock:                    '\u00c7'
+    shift+capslock:                     '\u00e7'
 }
 
 key APOSTROPHE {
@@ -258,7 +278,7 @@
 key BACKSLASH {
     label:                              ']'
     base:                               ']'
-    shift, capslock:                    '}'
+    shift:                              '}'
     ralt:                               '\u00ba'
 }
 
@@ -274,18 +294,21 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
     ralt:                               '\u20a2'
 }
 
@@ -293,24 +316,28 @@
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'n'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_bulgarian.kcm b/packages/InputDevices/res/raw/keyboard_layout_bulgarian.kcm
index c56367e..94ffbd0 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_bulgarian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_bulgarian.kcm
@@ -27,7 +27,7 @@
 key GRAVE {
     label:                              '`'
     base:                               '`'
-    shift, capslock:                    '~'
+    shift:                              '~'
     ralt:                               '`'
     ralt+shift:                         '~'
 }
@@ -123,89 +123,109 @@
     label:                              ','
     base:                               ','
     shift:                              '\u044b'
-    capslock:                           '\u042b'
+    shift+capslock:                     '\u042b'
     ralt:                               'q'
-    ralt+shift, ralt+capslock:          'Q'
+    shift+ralt, capslock+ralt:          'Q'
+    shift+capslock+ralt:                'q'
 }
 
 key W {
     label:                              '\u0423'
     base:                               '\u0443'
     shift, capslock:                    '\u0423'
+    shift+capslock:                     '\u0443'
     ralt:                               'w'
-    ralt+shift, ralt+capslock:          'W'
+    shift+ralt, capslock+ralt:          'W'
+    shift+capslock+ralt:                'w'
 }
 
 key E {
     label:                              '\u0415'
     base:                               '\u0435'
     shift, capslock:                    '\u0415'
+    shift+capslock:                     '\u0435'
     ralt:                               'e'
-    ralt+shift, ralt+capslock:          'E'
+    shift+ralt, capslock+ralt:          'E'
+    shift+capslock+ralt:                'e'
 }
 
 key R {
     label:                              '\u0418'
     base:                               '\u0438'
     shift, capslock:                    '\u0418'
+    shift+capslock:                     '\u0438'
     ralt:                               'r'
-    ralt+shift, ralt+capslock:          'R'
+    shift+ralt, capslock+ralt:          'R'
+    shift+capslock+ralt:                'r'
 }
 
 key T {
     label:                              '\u0428'
     base:                               '\u0448'
     shift, capslock:                    '\u0428'
+    shift+capslock:                     '\u0448'
     ralt:                               't'
-    ralt+shift, ralt+capslock:          'T'
+    shift+ralt, capslock+ralt:          'T'
+    shift+capslock+ralt:                't'
 }
 
 key Y {
     label:                              '\u0429'
     base:                               '\u0449'
     shift, capslock:                    '\u0429'
+    shift+capslock:                     '\u0449'
     ralt:                               'y'
-    ralt+shift, ralt+capslock:          'Y'
+    shift+ralt, capslock+ralt:          'Y'
+    shift+capslock+ralt:                'y'
 }
 
 key U {
     label:                              '\u041a'
     base:                               '\u043a'
     shift, capslock:                    '\u041a'
+    shift+capslock:                     '\u043a'
     ralt:                               'u'
-    ralt+shift, ralt+capslock:          'U'
+    shift+ralt, capslock+ralt:          'U'
+    shift+capslock+ralt:                'u'
 }
 
 key I {
     label:                              '\u0421'
     base:                               '\u0441'
     shift, capslock:                    '\u0421'
+    shift+capslock:                     '\u0441'
     ralt:                               'i'
-    ralt+shift, ralt+capslock:          'I'
+    shift+ralt, capslock+ralt:          'I'
+    shift+capslock+ralt:                'i'
 }
 
 key O {
     label:                              '\u0414'
     base:                               '\u0434'
     shift, capslock:                    '\u0414'
+    shift+capslock:                     '\u0434'
     ralt:                               'o'
-    ralt+shift, ralt+capslock:          'O'
+    shift+ralt, capslock+ralt:          'O'
+    shift+capslock+ralt:                'o'
 }
 
 key P {
     label:                              '\u0417'
     base:                               '\u0437'
     shift, capslock:                    '\u0417'
+    shift+capslock:                     '\u0437'
     ralt:                               'p'
-    ralt+shift, ralt+capslock:          'P'
+    shift+ralt, capslock+ralt:          'P'
+    shift+capslock+ralt:                'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u0426'
     base:                               '\u0446'
     shift, capslock:                    '\u0426'
+    shift+capslock:                     '\u0446'
     ralt:                               '['
-    ralt+shift:                         '{'
+    shift+ralt:                         '{'
 }
 
 key RIGHT_BRACKET {
@@ -213,7 +233,7 @@
     base:                               ';'
     shift:                              '\u00a7'
     ralt:                               ']'
-    ralt+shift:                         '}'
+    shift+ralt:                         '}'
 }
 
 ### ROW 3
@@ -222,78 +242,97 @@
     label:                              '\u042c'
     base:                               '\u044c'
     shift, capslock:                    '\u042c'
+    shift+capslock:                     '\u044c'
     ralt:                               'a'
-    ralt+shift, ralt+capslock:          'A'
+    shift+ralt, capslock+ralt:          'A'
+    shift+capslock+ralt:                'a'
 }
 
 key S {
     label:                              '\u042f'
     base:                               '\u044f'
     shift, capslock:                    '\u042f'
+    shift+capslock:                     '\u044f'
     ralt:                               's'
-    ralt+shift, ralt+capslock:          'S'
+    shift+ralt, capslock+ralt:          'S'
+    shift+capslock+ralt:                's'
 }
 
 key D {
     label:                              '\u0410'
     base:                               '\u0430'
     shift, capslock:                    '\u0410'
+    shift+capslock:                     '\u0430'
     ralt:                               'd'
-    ralt+shift, ralt+capslock:          'D'
+    shift+ralt, capslock+ralt:          'D'
+    shift+capslock+ralt:                'd'
 }
 
 key F {
     label:                              '\u041e'
     base:                               '\u043e'
     shift, capslock:                    '\u041e'
+    shift+capslock:                     '\u043e'
     ralt:                               'f'
-    ralt+shift, ralt+capslock:          'F'
+    shift+ralt, capslock+ralt:          'F'
+    shift+capslock+ralt:                'f'
 }
 
 key G {
     label:                              '\u0416'
     base:                               '\u0436'
     shift, capslock:                    '\u0416'
+    shift+capslock:                     '\u0436'
     ralt:                               'g'
-    ralt+shift, ralt+capslock:          'G'
+    shift+ralt, capslock+ralt:          'G'
+    shift+capslock+ralt:                'g'
 }
 
 key H {
     label:                              '\u0413'
     base:                               '\u0433'
     shift, capslock:                    '\u0413'
+    shift+capslock:                     '\u0433'
     ralt:                               'h'
-    ralt+shift, ralt+capslock:          'H'
+    shift+ralt, capslock+ralt:          'H'
+    shift+capslock+ralt:                'h'
 }
 
 key J {
     label:                              '\u0422'
     base:                               '\u0442'
     shift, capslock:                    '\u0422'
+    shift+capslock:                     '\u0442'
     ralt:                               'j'
-    ralt+shift, ralt+capslock:          'J'
+    shift+ralt, capslock+ralt:          'J'
+    shift+capslock+ralt:                'j'
 }
 
 key K {
     label:                              '\u041d'
     base:                               '\u043d'
     shift, capslock:                    '\u041d'
+    shift+capslock:                     '\u043d'
     ralt:                               'k'
-    ralt+shift, ralt+capslock:          'K'
+    shift+ralt, capslock+ralt:          'K'
+    shift+capslock+ralt:                'k'
 }
 
 key L {
     label:                              '\u0412'
     base:                               '\u0432'
     shift, capslock:                    '\u0412'
+    shift+capslock:                     '\u0432'
     ralt:                               'l'
-    ralt+shift, ralt+capslock:          'L'
+    shift+ralt, capslock+ralt:          'L'
+    shift+capslock+ralt:                'l'
 }
 
 key SEMICOLON {
     label:                              '\u041c'
     base:                               '\u043c'
     shift, capslock:                    '\u041c'
+    shift+capslock:                     '\u043c'
     ralt:                               ';'
     ralt+shift:                         ':'
 }
@@ -302,6 +341,7 @@
     label:                              '\u0427'
     base:                               '\u0447'
     shift, capslock:                    '\u0427'
+    shift+capslock:                     '\u0447'
     ralt:                               '\''
     ralt+shift:                         '"'
 }
@@ -328,62 +368,77 @@
     label:                              '\u042e'
     base:                               '\u044e'
     shift, capslock:                    '\u042e'
+    shift+capslock:                     '\u044e'
     ralt:                               'z'
-    ralt+shift, ralt+capslock:          'Z'
+    shift+ralt, capslock+ralt:          'Z'
+    shift+capslock+ralt:                'z'
 }
 
 key X {
     label:                              '\u0419'
     base:                               '\u0439'
     shift, capslock:                    '\u0419'
+    shift+capslock:                     '\u0439'
     ralt:                               'x'
-    ralt+shift, ralt+capslock:          'X'
+    shift+ralt, capslock+ralt:          'X'
+    shift+capslock+ralt:                'x'
 }
 
 key C {
     label:                              '\u042a'
     base:                               '\u044a'
     shift, capslock:                    '\u042a'
+    shift+capslock:                     '\u044a'
     ralt:                               'c'
-    ralt+shift, ralt+capslock:          'C'
+    shift+ralt, capslock+ralt:          'C'
+    shift+capslock+ralt:                'c'
 }
 
 key V {
     label:                              '\u042d'
     base:                               '\u044d'
     shift, capslock:                    '\u042d'
+    shift+capslock:                     '\u044d'
     ralt:                               'v'
-    ralt+shift, ralt+capslock:          'V'
+    shift+ralt, capslock+ralt:          'V'
+    shift+capslock+ralt:                'v'
 }
 
 key B {
     label:                              '\u0424'
     base:                               '\u0444'
     shift, capslock:                    '\u0424'
+    shift+capslock:                     '\u0444'
     ralt:                               'b'
-    ralt+shift, ralt+capslock:          'B'
+    shift+ralt, capslock+ralt:          'B'
+    shift+capslock+ralt:                'b'
 }
 
 key N {
     label:                              '\u0425'
     base:                               '\u0445'
     shift, capslock:                    '\u0425'
+    shift+capslock:                     '\u0445'
     ralt:                               'n'
-    ralt+shift, ralt+capslock:          'N'
+    shift+ralt, capslock+ralt:          'N'
+    shift+capslock+ralt:                'n'
 }
 
 key M {
     label:                              '\u041f'
     base:                               '\u043f'
     shift, capslock:                    '\u041f'
+    shift+capslock:                     '\u043f'
     ralt:                               'm'
-    ralt+shift, ralt+capslock:          'M'
+    shift+ralt, capslock+ralt:          'M'
+    shift+capslock+ralt:                'm'
 }
 
 key COMMA {
     label:                              '\u0420'
     base:                               '\u0440'
     shift, capslock:                    '\u0420'
+    shift+capslock:                     '\u0440'
     ralt:                               ','
     ralt+shift:                         '<'
 }
@@ -392,6 +447,7 @@
     label:                              '\u041b'
     base:                               '\u043b'
     shift, capslock:                    '\u041b'
+    shift+capslock:                     '\u043b'
     ralt:                               '.'
     ralt+shift:                         '>'
 }
@@ -400,6 +456,7 @@
     label:                              '\u0411'
     base:                               '\u0431'
     shift, capslock:                    '\u0411'
+    shift+capslock:                     '\u0431'
     ralt:                               '/'
     ralt+shift:                         '?'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_bulgarian_phonetic.kcm b/packages/InputDevices/res/raw/keyboard_layout_bulgarian_phonetic.kcm
index 8878807..6314158 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_bulgarian_phonetic.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_bulgarian_phonetic.kcm
@@ -28,6 +28,7 @@
     label:                              '`'
     base:                               '\u044e'
     shift, capslock:                    '\u042e'
+    shift+capslock:                     '\u044e'
     ralt:                               '`'
     ralt+shift:                         '~'
 }
@@ -122,88 +123,108 @@
 key Q {
     label:                              '\u0447'
     base:                               '\u0447'
-    shift:                              '\u0427'
-    capslock:                           '\u0427'
+    shift, capslock:                    '\u0427'
+    shift+capslock:                     '\u0447'
     ralt:                               'q'
-    ralt+shift, ralt+capslock:          'Q'
+    shift+ralt, capslock+ralt:          'Q'
+    shift+capslock+ralt:                'q'
 }
 
 key W {
     label:                              '\u0448'
     base:                               '\u0448'
     shift, capslock:                    '\u0428'
+    shift+capslock:                     '\u0448'
     ralt:                               'w'
-    ralt+shift, ralt+capslock:          'W'
+    shift+ralt, capslock+ralt:          'W'
+    shift+capslock+ralt:                'w'
 }
 
 key E {
     label:                              '\u0435'
     base:                               '\u0435'
     shift, capslock:                    '\u0415'
+    shift+capslock:                     '\u0435'
     ralt:                               'e'
-    ralt+shift, ralt+capslock:          'E'
+    shift+ralt, capslock+ralt:          'E'
+    shift+capslock+ralt:                'e'
 }
 
 key R {
     label:                              '\u0440'
     base:                               '\u0440'
     shift, capslock:                    '\u0420'
+    shift+capslock:                     '\u0440'
     ralt:                               'r'
-    ralt+shift, ralt+capslock:          'R'
+    shift+ralt, capslock+ralt:          'R'
+    shift+capslock+ralt:                'r'
 }
 
 key T {
     label:                              '\u0442'
     base:                               '\u0442'
     shift, capslock:                    '\u0422'
+    shift+capslock:                     '\u0442'
     ralt:                               't'
-    ralt+shift, ralt+capslock:          'T'
+    shift+ralt, capslock+ralt:          'T'
+    shift+capslock+ralt:                't'
 }
 
 key Y {
     label:                              '\u044a'
     base:                               '\u044a'
     shift, capslock:                    '\u042a'
+    shift+capslock:                     '\u044a'
     ralt:                               'y'
-    ralt+shift, ralt+capslock:          'Y'
+    shift+ralt, capslock+ralt:          'Y'
+    shift+capslock+ralt:                'y'
 }
 
 key U {
     label:                              '\u0443'
     base:                               '\u0443'
     shift, capslock:                    '\u0423'
+    shift+capslock:                     '\u0443'
     ralt:                               'u'
-    ralt+shift, ralt+capslock:          'U'
+    shift+ralt, capslock+ralt:          'U'
+    shift+capslock+ralt:                'u'
 }
 
 key I {
     label:                              '\u0438'
     base:                               '\u0438'
     shift, capslock:                    '\u0418'
+    shift+capslock:                     '\u0438'
     ralt:                               'i'
-    ralt+shift, ralt+capslock:          'I'
+    shift+ralt, capslock+ralt:          'I'
+    shift+capslock+ralt:                'i'
 }
 
 key O {
     label:                              '\u043e'
     base:                               '\u043e'
     shift, capslock:                    '\u041e'
+    shift+capslock:                     '\u043e'
     ralt:                               'o'
-    ralt+shift, ralt+capslock:          'O'
+    shift+ralt, capslock+ralt:          'O'
+    shift+capslock+ralt:                'o'
 }
 
 key P {
     label:                              '\u043f'
     base:                               '\u043f'
     shift, capslock:                    '\u041f'
+    shift+capslock:                     '\u043f'
     ralt:                               'p'
-    ralt+shift, ralt+capslock:          'P'
+    shift+ralt, capslock+ralt:          'P'
+    shift+capslock+ralt:                'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u044f'
     base:                               '\u044f'
     shift, capslock:                    '\u042f'
+    shift+capslock:                     '\u044f'
     ralt:                               '['
     ralt+shift:                         '{'
 }
@@ -211,7 +232,8 @@
 key RIGHT_BRACKET {
     label:                              '\u0449'
     base:                               '\u0449'
-    shift:                              '\u0429'
+    shift, capslock:                    '\u0429'
+    shift+capslock:                     '\u0449'
     ralt:                               ']'
     ralt+shift:                         '}'
 }
@@ -219,9 +241,8 @@
 key BACKSLASH {
     label:                              '\u044c'
     base:                               '\u044c'
-    shift:                              '\u042c'
-    capslock:                           '\u042c'
-    shift+capslock:                     '\u040d'
+    shift, capslock:                    '\u042c'
+    shift+capslock:                     '\u044c'
     ralt:                               '\\'
     ralt+shift:                         '|'
 }
@@ -232,78 +253,96 @@
     label:                              '\u0430'
     base:                               '\u0430'
     shift, capslock:                    '\u0410'
+    shift+capslock:                     '\u0430'
     ralt:                               'a'
-    ralt+shift, ralt+capslock:          'A'
+    shift+ralt, capslock+ralt:          'A'
+    shift+capslock+ralt:                'a'
 }
 
 key S {
     label:                              '\u0441'
     base:                               '\u0441'
     shift, capslock:                    '\u0421'
+    shift+capslock:                     '\u0441'
     ralt:                               's'
-    ralt+shift, ralt+capslock:          'S'
+    shift+ralt, capslock+ralt:          'S'
+    shift+capslock+ralt:                's'
 }
 
 key D {
     label:                              '\u0434'
     base:                               '\u0434'
     shift, capslock:                    '\u0414'
+    shift+capslock:                     '\u0434'
     ralt:                               'd'
-    ralt+shift, ralt+capslock:          'D'
+    shift+ralt, capslock+ralt:          'D'
+    shift+capslock+ralt:                'd'
 }
 
 key F {
     label:                              '\u0444'
     base:                               '\u0444'
     shift, capslock:                    '\u0424'
+    shift+capslock:                     '\u0444'
     ralt:                               'f'
-    ralt+shift, ralt+capslock:          'F'
+    shift+ralt, capslock+ralt:          'F'
+    shift+capslock+ralt:                'f'
 }
 
 key G {
     label:                              '\u0433'
     base:                               '\u0433'
     shift, capslock:                    '\u0413'
+    shift+capslock:                     '\u0433'
     ralt:                               'g'
-    ralt+shift, ralt+capslock:          'G'
+    shift+ralt, capslock+ralt:          'G'
+    shift+capslock+ralt:                'g'
 }
 
 key H {
     label:                              '\u0445'
     base:                               '\u0445'
     shift, capslock:                    '\u0425'
+    shift+capslock:                     '\u0445'
     ralt:                               'h'
-    ralt+shift, ralt+capslock:          'H'
+    shift+ralt, capslock+ralt:          'H'
+    shift+capslock+ralt:                'h'
 }
 
 key J {
     label:                              '\u0439'
     base:                               '\u0439'
     shift, capslock:                    '\u0419'
+    shift+capslock:                     '\u0439'
     ralt:                               'j'
-    ralt+shift, ralt+capslock:          'J'
+    shift+ralt, capslock+ralt:          'J'
+    shift+capslock+ralt:                'j'
 }
 
 key K {
     label:                              '\u043a'
     base:                               '\u043a'
     shift, capslock:                    '\u041a'
+    shift+capslock:                     '\u043a'
     ralt:                               'k'
-    ralt+shift, ralt+capslock:          'K'
+    shift+ralt, capslock+ralt:          'K'
+    shift+capslock+ralt:                'k'
 }
 
 key L {
     label:                              '\u043b'
     base:                               '\u043b'
     shift, capslock:                    '\u041b'
+    shift+capslock:                     '\u043b'
     ralt:                               'l'
-    ralt+shift, ralt+capslock:          'L'
+    shift+ralt, capslock+ralt:          'L'
+    shift+capslock+ralt:                'l'
 }
 
 key SEMICOLON {
     label:                              ';'
     base:                               ';'
-    shift, capslock:                    ':'
+    shift:                              ':'
     ralt:                               ';'
     ralt+shift:                         ':'
 }
@@ -311,7 +350,7 @@
 key APOSTROPHE {
     label:                              '\''
     base:                               '\''
-    shift, capslock:                    '"'
+    shift:                              '"'
     ralt:                               '\''
     ralt+shift:                         '"'
 }
@@ -322,6 +361,7 @@
     label:                              '\u045d'
     base:                               '\u045d'
     shift, capslock:                    '\u040d'
+    shift+capslock:                     '\u045d'
     ralt:                               '\\'
     ralt+shift:                         '|'
 }
@@ -330,62 +370,76 @@
     label:                              '\u0437'
     base:                               '\u0437'
     shift, capslock:                    '\u0417'
+    shift+capslock:                     '\u0437'
     ralt:                               'z'
-    ralt+shift, ralt+capslock:          'Z'
+    shift+ralt, capslock+ralt:          'Z'
+    shift+capslock+ralt:                'z'
 }
 
 key X {
     label:                              '\u0436'
     base:                               '\u0436'
     shift, capslock:                    '\u0416'
+    shift+capslock:                     '\u0436'
     ralt:                               'x'
-    ralt+shift, ralt+capslock:          'X'
+    shift+ralt, capslock+ralt:          'X'
+    shift+capslock+ralt:                'x'
 }
 
 key C {
     label:                              '\u0446'
     base:                               '\u0446'
     shift, capslock:                    '\u0426'
+    shift+capslock:                     '\u0446'
     ralt:                               'c'
-    ralt+shift, ralt+capslock:          'C'
+    shift+ralt, capslock+ralt:          'C'
+    shift+capslock+ralt:                'c'
 }
 
 key V {
     label:                              '\u0432'
     base:                               '\u0432'
     shift, capslock:                    '\u0412'
+    shift+capslock:                     '\u0432'
     ralt:                               'v'
-    ralt+shift, ralt+capslock:          'V'
+    shift+ralt, capslock+ralt:          'V'
+    shift+capslock+ralt:                'v'
 }
 
 key B {
     label:                              '\u0431'
     base:                               '\u0431'
     shift, capslock:                    '\u0411'
+    shift+capslock:                     '\u0431'
     ralt:                               'b'
-    ralt+shift, ralt+capslock:          'B'
+    shift+ralt, capslock+ralt:          'B'
+    shift+capslock+ralt:                'b'
 }
 
 key N {
     label:                              '\u043d'
     base:                               '\u043d'
     shift, capslock:                    '\u041d'
+    shift+capslock:                     '\u043d'
     ralt:                               'n'
-    ralt+shift, ralt+capslock:          'N'
+    shift+ralt, capslock+ralt:          'N'
+    shift+capslock+ralt:                'n'
 }
 
 key M {
     label:                              '\u043c'
     base:                               '\u043c'
     shift, capslock:                    '\u041c'
+    shift+capslock:                     '\u043c'
     ralt:                               'm'
-    ralt+shift, ralt+capslock:          'M'
+    shift+ralt, capslock+ralt:          'M'
+    shift+capslock+ralt:                'm'
 }
 
 key COMMA {
     label:                              ','
     base:                               ','
-    shift, capslock:                    '\u201e'
+    shift:                              '\u201e'
     ralt:                               ','
     ralt+shift:                         '<'
 }
@@ -393,7 +447,7 @@
 key PERIOD {
     label:                              '.'
     base:                               '.'
-    shift, capslock:                    '\u201c'
+    shift:                              '\u201c'
     ralt:                               '.'
     ralt+shift:                         '>'
 }
@@ -401,7 +455,7 @@
 key SLASH {
     label:                              '/'
     base:                               '/'
-    shift, capslock:                    '?'
+    shift:                              '?'
     ralt:                               '/'
     ralt+shift:                         '?'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_croatian_and_slovenian.kcm b/packages/InputDevices/res/raw/keyboard_layout_croatian_and_slovenian.kcm
index 96445a4..1c774cc 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_croatian_and_slovenian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_croatian_and_slovenian.kcm
@@ -122,6 +122,7 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '\\'
 }
 
@@ -129,6 +130,7 @@
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
     ralt:                               '|'
 }
 
@@ -136,6 +138,7 @@
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -143,48 +146,56 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Z {
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u0160'
     base:                               '\u0161'
     shift, capslock:                    '\u0160'
+    shift+capslock:                     '\u0161'
     ralt:                               '\u00f7'
 }
 
@@ -192,6 +203,7 @@
     label:                              '\u0110'
     base:                               '\u0111'
     shift, capslock:                    '\u0110'
+    shift+capslock:                     '\u0111'
     ralt:                               '\u00d7'
 }
 
@@ -201,24 +213,28 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
     ralt:                               '['
 }
 
@@ -226,6 +242,7 @@
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
     ralt:                               ']'
 }
 
@@ -233,40 +250,48 @@
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
     ralt:                               '\u0268'
-    ralt+shift, ralt+capslock:          '\u0197'
+    shift+ralt, capslock+ralt:          '\u0197'
+    shift+capslock+ralt:                '\u0268'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
     ralt:                               '\u0142'
-    ralt+shift, ralt+capslock:          '\u0141'
+    shift+ralt, capslock+ralt:          '\u0141'
+    shift+capslock+ralt:                '\u0142'
 }
 
 key SEMICOLON {
     label:                              '\u010c'
     base:                               '\u010d'
     shift, capslock:                    '\u010c'
+    shift+capslock:                     '\u010d'
 }
 
 key APOSTROPHE {
     label:                              '\u0106'
     base:                               '\u0107'
     shift, capslock:                    '\u0106'
+    shift+capslock:                     '\u0107'
     ralt:                               '\u00df'
 }
 
@@ -274,6 +299,7 @@
     label:                              '\u017d'
     base:                               '\u017e'
     shift, capslock:                    '\u017d'
+    shift+capslock:                     '\u017e'
     ralt:                               '\u00a4'
 }
 
@@ -289,24 +315,28 @@
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
     ralt:                               '@'
 }
 
@@ -314,6 +344,7 @@
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
     ralt:                               '{'
 }
 
@@ -321,6 +352,7 @@
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
     ralt:                               '}'
 }
 
@@ -328,6 +360,7 @@
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
     ralt:                               '\u00a7'
 }
 
diff --git a/packages/InputDevices/res/raw/keyboard_layout_czech.kcm b/packages/InputDevices/res/raw/keyboard_layout_czech.kcm
index 32750e0..08b012e 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_czech.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_czech.kcm
@@ -131,18 +131,21 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -150,42 +153,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -211,54 +221,63 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
@@ -300,24 +319,28 @@
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
     ralt:                               '@'
 }
 
@@ -325,18 +348,21 @@
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
     ralt:                               '\u00b5'
 }
 
diff --git a/packages/InputDevices/res/raw/keyboard_layout_czech_qwerty.kcm b/packages/InputDevices/res/raw/keyboard_layout_czech_qwerty.kcm
index 457d4da..cad262b 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_czech_qwerty.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_czech_qwerty.kcm
@@ -131,18 +131,21 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -150,42 +153,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -211,54 +221,63 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
@@ -300,24 +319,28 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
     ralt:                               '@'
 }
 
@@ -325,18 +348,21 @@
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
     ralt:                               '\u00b5'
 }
 
diff --git a/packages/InputDevices/res/raw/keyboard_layout_danish.kcm b/packages/InputDevices/res/raw/keyboard_layout_danish.kcm
index 9168d12..83ee8c3 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_danish.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_danish.kcm
@@ -115,76 +115,90 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '\u00e2'
-    ralt+capslock, shift+ralt:          '\u00c2'
+    shift+ralt, capslock+ralt:          '\u00c2'
+    shift+capslock+ralt:                '\u00e2'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
-    ralt+capslock:                      '\u20ac'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
     ralt:                               '\u0167'
-    ralt+capslock, shift+ralt:          '\u0166'
+    shift+ralt, capslock+ralt:          '\u0166'
+    shift+capslock+ralt:                '\u0167'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
     ralt:                               '\u00ef'
-    ralt+capslock, shift+ralt:          '\u00cf'
+    shift+ralt, capslock+ralt:          '\u00cf'
+    shift+capslock+ralt:                '\u00ef'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
     ralt:                               '\u00f5'
-    ralt+capslock, shift+ralt:          '\u00d5'
+    shift+ralt, capslock+ralt:          '\u00d5'
+    shift+capslock+ralt:                '\u00f5'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u00c5'
     base:                               '\u00e5'
     shift, capslock:                    '\u00c5'
+    shift+capslock:                     '\u00e5'
 }
 
 key RIGHT_BRACKET {
@@ -200,84 +214,104 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
     ralt:                               '\u00e1'
-    ralt+capslock, shift+ralt:          '\u00c1'
+    shift+ralt, capslock+ralt:          '\u00c1'
+    shift+capslock+ralt:                '\u00e1'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u0161'
-    ralt+capslock, shift+ralt:          '\u0160'
+    shift+ralt, capslock+ralt:          '\u0160'
+    shift+capslock+ralt:                '\u0161'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
     ralt:                               '\u0111'
-    ralt+capslock, shift+ralt:          '\u0110'
+    shift+ralt, capslock+ralt:          '\u0110'
+    shift+capslock+ralt:                '\u0111'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
     ralt:                               '\u01e5'
-    ralt+capslock, shift+ralt:          '\u01e4'
+    shift+ralt, capslock+ralt:          '\u01e4'
+    shift+capslock+ralt:                '\u01e5'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
     ralt:                               '\u01e7'
-    ralt+capslock, shift+ralt:          '\u01e6'
+    shift+ralt, capslock+ralt:          '\u01e6'
+    shift+capslock+ralt:                '\u01e7'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
     ralt:                               '\u021f'
-    ralt+capslock, shift+ralt:          '\u021e'
+    shift+ralt, capslock+ralt:          '\u021e'
+    shift+capslock+ralt:                '\u021f'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
     ralt:                               '\u01e9'
-    ralt+capslock, shift+ralt:          '\u01e8'
+    shift+ralt, capslock+ralt:          '\u01e8'
+    shift+capslock+ralt:                '\u01e9'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u00c6'
     base:                               '\u00e6'
     shift, capslock:                    '\u00c6'
+    shift+capslock:                     '\u00e6'
     ralt:                               '\u00e4'
-    ralt+capslock, shift+ralt:          '\u00c4'
+    shift+ralt, capslock+ralt:          '\u00c4'
+    shift+capslock+ralt:                '\u00e4'
 }
 
 key APOSTROPHE {
     label:                              '\u00d8'
     base:                               '\u00f8'
     shift, capslock:                    '\u00d8'
+    shift+capslock:                     '\u00f8'
     ralt:                               '\u00f6'
-    ralt+capslock, shift+ralt:          '\u00d6'
+    shift+ralt, capslock+ralt:          '\u00d6'
+    shift+capslock+ralt:                '\u00f6'
 }
 
 key BACKSLASH {
@@ -299,53 +333,65 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
     ralt:                               '\u017e'
-    ralt+capslock, shift+ralt:          '\u017d'
+    shift+ralt, capslock+ralt:          '\u017d'
+    shift+capslock+ralt:                '\u017e'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
     ralt:                               '\u010d'
-    ralt+capslock, shift+ralt:          '\u010c'
+    shift+ralt, capslock+ralt:          '\u010c'
+    shift+capslock+ralt:                '\u010d'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
     ralt:                               '\u01ef'
-    ralt+capslock, shift+ralt:          '\u01ee'
+    shift+ralt, capslock+ralt:          '\u01ee'
+    shift+capslock+ralt:                '\u01ef'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
     ralt:                               '\u0292'
-    ralt+capslock, shift+ralt:          '\u01b7'
+    shift+ralt, capslock+ralt:          '\u01b7'
+    shift+capslock+ralt:                '\u0292'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
     ralt:                               '\u014b'
-    ralt+capslock, shift+ralt:          '\u014a'
+    shift+ralt, capslock+ralt:          '\u014a'
+    shift+capslock+ralt:                '\u014b'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
-    ralt, ralt+capslock:                '\u00b5'
+    shift+capslock:                     'm'
+    ralt:                               '\u00b5'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_english_uk.kcm b/packages/InputDevices/res/raw/keyboard_layout_english_uk.kcm
index 6d9c2e5..93a5082 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_english_uk.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_english_uk.kcm
@@ -108,68 +108,82 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u00e9'
-    shift+ralt:                         '\u00c9'
+    shift+ralt, capslock+ralt:          '\u00c9'
+    shift+capslock+ralt:                '\u00e9'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
     ralt:                               '\u00fa'
-    shift+ralt:                         '\u00da'
+    shift+ralt, capslock+ralt:          '\u00da'
+    shift+capslock+ralt:                '\u00fa'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
     ralt:                               '\u00ed'
-    shift+ralt:                         '\u00cd'
+    shift+ralt, capslock+ralt:          '\u00cd'
+    shift+capslock+ralt:                '\u00ed'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
     ralt:                               '\u00f3'
-    shift+ralt:                         '\u00d3'
+    shift+ralt, capslock+ralt:          '\u00d3'
+    shift+capslock+ralt:                '\u00f3'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -190,56 +204,66 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
     ralt:                               '\u00e1'
-    shift+ralt:                         '\u00c1'
+    shift+ralt, capslock+ralt:          '\u00c1'
+    shift+capslock+ralt:                '\u00e1'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
@@ -274,42 +298,49 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_english_us.kcm b/packages/InputDevices/res/raw/keyboard_layout_english_us.kcm
index 050b149..da76448 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_english_us.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_english_us.kcm
@@ -106,60 +106,70 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -186,54 +196,63 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
@@ -254,42 +273,49 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_english_us_colemak.kcm b/packages/InputDevices/res/raw/keyboard_layout_english_us_colemak.kcm
index 72e6d04..e52ccf0 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_english_us_colemak.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_english_us_colemak.kcm
@@ -125,60 +125,70 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key SEMICOLON {
     label:                              ';'
     base:                               ';'
     shift, capslock:                    ':'
+    shift+capslock:                     ':'
 }
 
 key LEFT_BRACKET {
@@ -205,54 +215,63 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
@@ -273,42 +292,49 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_english_us_dvorak.kcm b/packages/InputDevices/res/raw/keyboard_layout_english_us_dvorak.kcm
index df6a3fd..6ff627b 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_english_us_dvorak.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_english_us_dvorak.kcm
@@ -160,42 +160,49 @@
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SLASH {
@@ -222,60 +229,70 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key MINUS {
@@ -296,52 +313,61 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key Z {
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_english_us_intl.kcm b/packages/InputDevices/res/raw/keyboard_layout_english_us_intl.kcm
index aa31493..dff17b3 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_english_us_intl.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_english_us_intl.kcm
@@ -121,30 +121,37 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '\u00e4'
     shift+ralt, capslock+ralt:          '\u00c4'
+    shift+capslock+ralt:                '\u00e4'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
     ralt:                               '\u00e5'
     shift+ralt, capslock+ralt:          '\u00c5'
+    shift+capslock+ralt:                '\u00e5'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u00e9'
     shift+ralt, capslock+ralt:          '\u00c9'
+    shift+capslock+ralt:                '\u00e9'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
     ralt:                               '\u00ae'
 }
 
@@ -152,48 +159,60 @@
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
     ralt:                               '\u00fe'
     shift+ralt, capslock+ralt:          '\u00de'
+    shift+capslock+ralt:                '\u00fe'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
     ralt:                               '\u00fc'
     shift+ralt, capslock+ralt:          '\u00dc'
+    shift+capslock+ralt:                '\u00fc'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
     ralt:                               '\u00fa'
     shift+ralt, capslock+ralt:          '\u00da'
+    shift+capslock+ralt:                '\u00fa'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
     ralt:                               '\u00ed'
     shift+ralt, capslock+ralt:          '\u00cd'
+    shift+capslock+ralt:                '\u00ed'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
     ralt:                               '\u00f3'
     shift+ralt, capslock+ralt:          '\u00d3'
+    shift+capslock+ralt:                '\u00f3'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
     ralt:                               '\u00f6'
     shift+ralt, capslock+ralt:          '\u00d6'
+    shift+capslock+ralt:                '\u00f6'
 }
 
 key LEFT_BRACKET {
@@ -224,14 +243,17 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
     ralt:                               '\u00e1'
-    shift+ralt, ralt+capslock:          '\u00c1'
+    shift+ralt, capslock+ralt:          '\u00c1'
+    shift+capslock+ralt:                '\u00e1'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u00df'
     shift+ralt:                         '\u00a7'
 }
@@ -240,46 +262,55 @@
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
     ralt:                               '\u00f0'
     shift+ralt, capslock+ralt:          '\u00d0'
+    shift+capslock+ralt:                '\u00f0'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
     ralt:                               '\u00f8'
     shift+ralt, capslock+ralt:          '\u00d8'
+    shift+capslock+ralt:                '\u00f8'
 }
 
 key SEMICOLON {
@@ -312,20 +343,24 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
     ralt:                               '\u00e6'
     shift+ralt, capslock+ralt:          '\u00c6'
+    shift+capslock+ralt:                '\u00e6'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
     ralt:                               '\u00a9'
     shift+ralt:                         '\u00a2'
 }
@@ -334,26 +369,31 @@
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
     ralt:                               '\u00f1'
     shift+ralt, capslock+ralt:          '\u00d1'
+    shift+capslock+ralt:                '\u00f1'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
     ralt:                               '\u00b5'
 }
 
@@ -363,6 +403,7 @@
     shift:                              '<'
     ralt:                               '\u00e7'
     shift+ralt, capslock+ralt:          '\u00c7'
+    shift+capslock+ralt:                '\u00e7'
 }
 
 key PERIOD {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_english_us_workman.kcm b/packages/InputDevices/res/raw/keyboard_layout_english_us_workman.kcm
index fe82c8d..713afba 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_english_us_workman.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_english_us_workman.kcm
@@ -129,60 +129,70 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key SEMICOLON {
     label:                              ';'
     base:                               ';'
     shift, capslock:                    ':'
+    shift+capslock:                     ':'
 }
 
 key LEFT_BRACKET {
@@ -209,48 +219,56 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
 }
 
 key O {
@@ -263,6 +281,7 @@
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key APOSTROPHE {
@@ -277,42 +296,49 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_estonian.kcm b/packages/InputDevices/res/raw/keyboard_layout_estonian.kcm
index ef545b8..27a03da 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_estonian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_estonian.kcm
@@ -116,18 +116,21 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -135,54 +138,63 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u00dc'
     base:                               '\u00fc'
     shift, capslock:                    '\u00dc'
+    shift+capslock:                     '\u00fc'
 }
 
 key RIGHT_BRACKET {
     label:                              '\u00d5'
     base:                               '\u00f5'
     shift, capslock:                    '\u00d5'
+    shift+capslock:                     '\u00f5'
     ralt:                               '\u00a7'
 }
 
@@ -192,68 +204,80 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u0161'
-    ralt+shift, ralt+capslock:          '\u0160'
+    shift+ralt, capslock+ralt:          '\u0160'
+    shift+capslock+ralt:                '\u0161'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u00d6'
     base:                               '\u00f6'
     shift, capslock:                    '\u00d6'
+    shift+capslock:                     '\u00f6'
 }
 
 key APOSTROPHE {
     label:                              '\u00c4'
     base:                               '\u00e4'
     shift, capslock:                    '\u00c4'
+    shift+capslock:                     '\u00e4'
     ralt:                               '\u0302'
 }
 
@@ -277,44 +301,52 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
     ralt:                               '\u017e'
-    ralt+shift, ralt+capslock:          '\u017d'
+    shift+ralt, capslock+ralt:          '\u017d'
+    shift+capslock+ralt:                '\u017e'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_finnish.kcm b/packages/InputDevices/res/raw/keyboard_layout_finnish.kcm
index b4deed4..79096ad 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_finnish.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_finnish.kcm
@@ -115,76 +115,90 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '\u00e2'
-    ralt+capslock, shift+ralt:          '\u00c2'
+    shift+ralt, capslock+ralt:          '\u00c2'
+    shift+capslock+ralt:                '\u00e2'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
-    ralt+capslock:                      '\u20ac'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
     ralt:                               '\u0167'
-    ralt+capslock, shift+ralt:          '\u0166'
+    shift+ralt, capslock+ralt:          '\u0166'
+    shift+capslock+ralt:                '\u0167'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
     ralt:                               '\u00ef'
-    ralt+capslock, shift+ralt:          '\u00cf'
+    shift+ralt, capslock+ralt:          '\u00cf'
+    shift+capslock+ralt:                '\u00ef'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
     ralt:                               '\u00f5'
-    ralt+capslock, shift+ralt:          '\u00d5'
+    shift+ralt, capslock+ralt:          '\u00d5'
+    shift+capslock+ralt:                '\u00f5'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u00c5'
     base:                               '\u00e5'
     shift, capslock:                    '\u00c5'
+    shift+capslock:                     '\u00e5'
 }
 
 key RIGHT_BRACKET {
@@ -200,84 +214,104 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
     ralt:                               '\u00e1'
-    ralt+capslock, shift+ralt:          '\u00c1'
+    shift+ralt, capslock+ralt:          '\u00c1'
+    shift+capslock+ralt:                '\u00e1'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u0161'
-    ralt+capslock, shift+ralt:          '\u0160'
+    shift+ralt, capslock+ralt:          '\u0160'
+    shift+capslock+ralt:                '\u0161'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
     ralt:                               '\u0111'
-    ralt+capslock, shift+ralt:          '\u0110'
+    shift+ralt, capslock+ralt:          '\u0110'
+    shift+capslock+ralt:                '\u0111'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
     ralt:                               '\u01e5'
-    ralt+capslock, shift+ralt:          '\u01e4'
+    shift+ralt, capslock+ralt:          '\u01e4'
+    shift+capslock+ralt:                '\u01e5'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
     ralt:                               '\u01e7'
-    ralt+capslock, shift+ralt:          '\u01e6'
+    shift+ralt, capslock+ralt:          '\u01e6'
+    shift+capslock+ralt:                '\u01e7'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
     ralt:                               '\u021f'
-    ralt+capslock, shift+ralt:          '\u021e'
+    shift+ralt, capslock+ralt:          '\u021e'
+    shift+capslock+ralt:                '\u021f'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
     ralt:                               '\u01e9'
-    ralt+capslock, shift+ralt:          '\u01e8'
+    shift+ralt, capslock+ralt:          '\u01e8'
+    shift+capslock+ralt:                '\u01e9'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u00d6'
     base:                               '\u00f6'
     shift, capslock:                    '\u00d6'
+    shift+capslock:                     '\u00f6'
     ralt:                               '\u00f8'
-    ralt+capslock, shift+ralt:          '\u00d8'
+    shift+ralt, capslock+ralt:          '\u00d8'
+    shift+capslock+ralt:                '\u00f8'
 }
 
 key APOSTROPHE {
     label:                              '\u00c4'
     base:                               '\u00e4'
     shift, capslock:                    '\u00c4'
+    shift+capslock:                     '\u00e4'
     ralt:                               '\u00e6'
-    ralt+capslock, shift+ralt:          '\u00c6'
+    shift+ralt, capslock+ralt:          '\u00c6'
+    shift+capslock+ralt:                '\u00e6'
 }
 
 key BACKSLASH {
@@ -299,53 +333,65 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
     ralt:                               '\u017e'
-    ralt+capslock, shift+ralt:          '\u017d'
+    shift+ralt, capslock+ralt:          '\u017d'
+    shift+capslock+ralt:                '\u017e'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
     ralt:                               '\u010d'
-    ralt+capslock, shift+ralt:          '\u010c'
+    shift+ralt, capslock+ralt:          '\u010c'
+    shift+capslock+ralt:                '\u010d'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
     ralt:                               '\u01ef'
-    ralt+capslock, shift+ralt:          '\u01ee'
+    shift+ralt, capslock+ralt:          '\u01ee'
+    shift+capslock+ralt:                '\u01ef'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
     ralt:                               '\u0292'
-    ralt+capslock, shift+ralt:          '\u01b7'
+    shift+ralt, capslock+ralt:          '\u01b7'
+    shift+capslock+ralt:                '\u0292'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
     ralt:                               '\u014b'
-    ralt+capslock, shift+ralt:          '\u014a'
+    shift+ralt, capslock+ralt:          '\u014a'
+    shift+capslock+ralt:                '\u014b'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
-    ralt, ralt+capslock:                '\u00b5'
+    shift+capslock:                     'm'
+    ralt:                               '\u00b5'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_french.kcm b/packages/InputDevices/res/raw/keyboard_layout_french.kcm
index 89e83da..4906304 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_french.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_french.kcm
@@ -123,18 +123,21 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key Z {
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -142,42 +145,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -199,60 +209,70 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key APOSTROPHE {
@@ -279,36 +299,42 @@
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_french_ca.kcm b/packages/InputDevices/res/raw/keyboard_layout_french_ca.kcm
index 55ddd60..03b5c19 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_french_ca.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_french_ca.kcm
@@ -119,54 +119,63 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
     ralt:                               '\u00a7'
 }
 
@@ -174,6 +183,7 @@
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
     ralt:                               '\u00b6'
 }
 
@@ -196,54 +206,63 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
@@ -279,42 +298,49 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
     ralt:                               '\u00b5'
 }
 
@@ -335,5 +361,6 @@
     label:                              '\u00c9'
     base:                               '\u00e9'
     shift, capslock:                    '\u00c9'
+    shift+capslock:                     '\u00e9'
     ralt:                               '\u0301'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_georgian.kcm b/packages/InputDevices/res/raw/keyboard_layout_georgian.kcm
index 35b66a3..a8f229f 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_georgian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_georgian.kcm
@@ -28,6 +28,7 @@
     label:                              '\u201e'
     base:                               '\u201e'
     shift, capslock:                    '\u201c'
+    shift+capslock:                     '\u201e'
     ralt:                               '`'
     ralt+shift:                         '~'
 }
@@ -128,79 +129,92 @@
     label:                              '\u10e5'
     base:                               '\u10e5'
     ralt:                               'q'
-    ralt+shift, ralt+capslock:          'Q'
+    shift+ralt, capslock+ralt:          'Q'
+    shift+capslock+ralt:                'q'
 }
 
 key W {
     label:                              '\u10ec'
     base:                               '\u10ec'
     shift, capslock:                    '\u10ed'
+    shift+capslock:                     '\u10ec'
     ralt:                               'w'
-    ralt+shift, ralt+capslock:          'W'
+    shift+ralt, capslock+ralt:          'W'
+    shift+capslock+ralt:                'w'
 }
 
 key E {
     label:                              '\u10d4'
     base:                               '\u10d4'
     ralt:                               'e'
-    ralt+shift, ralt+capslock:          'E'
+    shift+ralt, capslock+ralt:          'E'
+    shift+capslock+ralt:                'e'
 }
 
 key R {
     label:                              '\u10e0'
     base:                               '\u10e0'
     shift, capslock:                    '\u10e6'
+    shift+capslock:                     '\u10e0'
     ralt:                               'r'
-    ralt+shift, ralt+capslock:          'R'
+    shift+ralt, capslock+ralt:          'R'
+    shift+capslock+ralt:                'r'
 }
 
 key T {
     label:                              '\u10e2'
     base:                               '\u10e2'
     shift, capslock:                    '\u10d7'
+    shift+capslock:                     '\u10e2'
     ralt:                               't'
-    ralt+shift, ralt+capslock:          'T'
+    shift+ralt, capslock+ralt:          'T'
+    shift+capslock+ralt:                't'
 }
 
 key Y {
     label:                              '\u10e7'
     base:                               '\u10e7'
     ralt:                               'y'
-    ralt+shift, ralt+capslock:          'Y'
+    shift+ralt, capslock+ralt:          'Y'
+    shift+capslock+ralt:                'y'
 }
 
 key U {
     label:                              '\u10e3'
     base:                               '\u10e3'
     ralt:                               'u'
-    ralt+shift, ralt+capslock:          'U'
+    shift+ralt, capslock+ralt:          'U'
+    shift+capslock+ralt:                'u'
 }
 
 key I {
     label:                              '\u10d8'
     base:                               '\u10d8'
     ralt:                               'i'
-    ralt+shift, ralt+capslock:          'I'
+    shift+ralt, capslock+ralt:          'I'
+    shift+capslock+ralt:                'i'
 }
 
 key O {
     label:                              '\u10dd'
     base:                               '\u10dd'
     ralt:                               'o'
-    ralt+shift, ralt+capslock:          'O'
+    shift+ralt, capslock+ralt:          'O'
+    shift+capslock+ralt:                'o'
 }
 
 key P {
     label:                              '\u10de'
     base:                               '\u10de'
     ralt:                               'p'
-    ralt+shift, ralt+capslock:          'P'
+    shift+ralt, capslock+ralt:          'P'
+    shift+capslock+ralt:                'p'
 }
 
 key LEFT_BRACKET {
     label:                              '['
     base:                               '['
-    shift, capslock:                    '{'
+    shift:                              '{'
     ralt:                               '['
     ralt+shift:                         '{'
 }
@@ -208,7 +222,7 @@
 key RIGHT_BRACKET {
     label:                              ']'
     base:                               ']'
-    shift, capslock:                    '}'
+    shift:                              '}'
     ralt:                               ']'
     ralt+shift:                         '}'
 }
@@ -227,72 +241,84 @@
     label:                              '\u10d0'
     base:                               '\u10d0'
     ralt:                               'a'
-    ralt+shift, ralt+capslock:          'A'
+    shift+ralt, capslock+ralt:          'A'
+    shift+capslock+ralt:                'a'
 }
 
 key S {
     label:                              '\u10e1'
     base:                               '\u10e1'
     shift, capslock:                    '\u10e8'
+    shift+capslock:                     '\u10e1'
     ralt:                               's'
-    ralt+shift, ralt+capslock:          'S'
+    shift+ralt, capslock+ralt:          'S'
+    shift+capslock+ralt:                's'
 }
 
 key D {
     label:                              '\u10d3'
     base:                               '\u10d3'
     ralt:                               'd'
-    ralt+shift, ralt+capslock:          'D'
+    shift+ralt, capslock+ralt:          'D'
+    shift+capslock+ralt:                'd'
 }
 
 key F {
     label:                              '\u10e4'
     base:                               '\u10e4'
     ralt:                               'f'
-    ralt+shift, ralt+capslock:          'F'
+    shift+ralt, capslock+ralt:          'F'
+    shift+capslock+ralt:                'f'
 }
 
 key G {
     label:                              '\u10d2'
     base:                               '\u10d2'
     ralt:                               'g'
-    ralt+shift, ralt+capslock:          'G'
+    shift+ralt, capslock+ralt:          'G'
+    shift+capslock+ralt:                'g'
 }
 
 key H {
     label:                              '\u10f0'
     base:                               '\u10f0'
     ralt:                               'h'
-    ralt+shift, ralt+capslock:          'H'
+    shift+ralt, capslock+ralt:          'H'
+    shift+capslock+ralt:                'h'
 }
 
 key J {
     label:                              '\u10ef'
     base:                               '\u10ef'
     shift, capslock:                    '\u10df'
+    shift+capslock:                     '\u10ef'
     ralt:                               'j'
-    ralt+shift, ralt+capslock:          'J'
+    shift+ralt, capslock+ralt:          'J'
+    shift+capslock+ralt:                'j'
 }
 
 key K {
     label:                              '\u10d9'
     base:                               '\u10d9'
     ralt:                               'k'
-    ralt+shift, ralt+capslock:          'K'
+    shift+ralt, capslock+ralt:          'K'
+    shift+capslock+ralt:                'k'
 }
 
 key L {
     label:                              '\u10da'
     base:                               '\u10da'
     shift, capslock:                    '\u20be'
+    shift+capslock:                     '\u10da'
     ralt:                               'l'
-    ralt+shift, ralt+capslock:          'L'
+    shift+ralt, capslock+ralt:          'L'
+    shift+capslock+ralt:                'l'
 }
 
 key SEMICOLON {
     label:                              ';'
     base:                               ';'
-    shift, capslock:                    ':'
+    shift:                              ':'
     ralt:                               ';'
     ralt+shift:                         ':'
 }
@@ -300,7 +326,7 @@
 key APOSTROPHE {
     label:                              '\''
     base:                               '\''
-    shift, capslock:                    '"'
+    shift:                              '"'
     ralt:                               '\''
     ralt+shift:                         '"'
 }
@@ -311,57 +337,66 @@
     label:                              '\u10d6'
     base:                               '\u10d6'
     shift, capslock:                    '\u10eb'
+    shift+capslock:                     '\u10d6'
     ralt:                               'z'
-    ralt+shift, ralt+capslock:          'Z'
+    shift+ralt, capslock+ralt:          'Z'
+    shift+capslock+ralt:                'z'
 }
 
 key X {
     label:                              '\u10ee'
     base:                               '\u10ee'
     ralt:                               'x'
-    ralt+shift, ralt+capslock:          'X'
+    shift+ralt, capslock+ralt:          'X'
+    shift+capslock+ralt:                'x'
 }
 
 key C {
     label:                              '\u10ea'
     base:                               '\u10ea'
     shift, capslock:                    '\u10e9'
+    shift+capslock:                     '\u10ea'
     ralt:                               'c'
-    ralt+shift, ralt+capslock:          'C'
+    shift+ralt, capslock+ralt:          'C'
+    shift+capslock+ralt:                'c'
 }
 
 key V {
     label:                              '\u10d5'
     base:                               '\u10d5'
     ralt:                               'v'
-    ralt+shift, ralt+capslock:          'V'
+    shift+ralt, capslock+ralt:          'V'
+    shift+capslock+ralt:                'v'
 }
 
 key B {
     label:                              '\u10d1'
     base:                               '\u10d1'
     ralt:                               'b'
-    ralt+shift, ralt+capslock:          'B'
+    shift+ralt, capslock+ralt:          'B'
+    shift+capslock+ralt:                'b'
 }
 
 key N {
     label:                              '\u10dc'
     base:                               '\u10dc'
     ralt:                               'n'
-    ralt+shift, ralt+capslock:          'N'
+    shift+ralt, capslock+ralt:          'N'
+    shift+capslock+ralt:                'n'
 }
 
 key M {
     label:                              '\u10db'
     base:                               '\u10db'
     ralt:                               'm'
-    ralt+shift, ralt+capslock:          'M'
+    shift+ralt, capslock+ralt:          'M'
+    shift+capslock+ralt:                'm'
 }
 
 key COMMA {
     label:                              ','
     base:                               ','
-    shift, capslock:                    '<'
+    shift:                              '<'
     ralt:                               ','
     ralt+shift:                         '<'
 }
@@ -369,7 +404,7 @@
 key PERIOD {
     label:                              '.'
     base:                               '.'
-    shift, capslock:                    '>'
+    shift:                              '>'
     ralt:                               '.'
     ralt+shift:                         '>'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_german.kcm b/packages/InputDevices/res/raw/keyboard_layout_german.kcm
index d9caa32..23ccc9a 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_german.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_german.kcm
@@ -18,7 +18,7 @@
 
 type OVERLAY
 
-map key 12 SLASH            # § ? \
+map key 12 SLASH            # § ? \
 map key 21 Z
 map key 44 Y
 map key 53 MINUS            # - _
@@ -117,6 +117,7 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '@'
 }
 
@@ -124,12 +125,14 @@
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -137,48 +140,56 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Z {
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u00dc'
     base:                               '\u00fc'
     shift, capslock:                    '\u00dc'
+    shift+capslock:                     '\u00fc'
 }
 
 key RIGHT_BRACKET {
@@ -194,66 +205,77 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u00d6'
     base:                               '\u00f6'
     shift, capslock:                    '\u00d6'
+    shift+capslock:                     '\u00f6'
 }
 
 key APOSTROPHE {
     label:                              '\u00c4'
     base:                               '\u00e4'
     shift, capslock:                    '\u00c4'
+    shift+capslock:                     '\u00e4'
 }
 
 key BACKSLASH {
@@ -275,42 +297,49 @@
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
     ralt:                               '\u00b5'
 }
 
diff --git a/packages/InputDevices/res/raw/keyboard_layout_greek.kcm b/packages/InputDevices/res/raw/keyboard_layout_greek.kcm
index a7684e1..6eff114 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_greek.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_greek.kcm
@@ -24,88 +24,88 @@
 
 key GRAVE {
     label:                              '`'
-    base, capslock:                     '`'
+    base:                               '`'
     shift:                              '~'
 }
 
 key 1 {
     label:                              '1'
-    base, capslock:                     '1'
+    base:                               '1'
     shift:                              '!'
 }
 
 key 2 {
     label:                              '2'
-    base, capslock:                     '2'
+    base:                               '2'
     shift:                              '@'
     ralt:                               '\u00b2'
 }
 
 key 3 {
     label:                              '3'
-    base, capslock:                     '3'
+    base:                               '3'
     shift:                              '#'
     ralt:                               '\u00b3'
 }
 
 key 4 {
     label:                              '4'
-    base, capslock:                     '4'
+    base:                               '4'
     shift:                              '$'
     ralt:                               '\u00a3'
 }
 
 key 5 {
     label:                              '5'
-    base, capslock:                     '5'
+    base:                               '5'
     shift:                              '%'
     ralt:                               '\u00a7'
 }
 
 key 6 {
     label:                              '6'
-    base, capslock:                     '6'
+    base:                               '6'
     shift:                              '^'
     ralt:                               '\u00b6'
 }
 
 key 7 {
     label:                              '7'
-    base, capslock:                     '7'
+    base:                               '7'
     shift:                              '&'
 }
 
 key 8 {
     label:                              '8'
-    base, capslock:                     '8'
+    base:                               '8'
     shift:                              '*'
     ralt:                               '\u00a4'
 }
 
 key 9 {
     label:                              '9'
-    base, capslock:                     '9'
+    base:                               '9'
     shift:                              '('
     ralt:                               '\u00a6'
 }
 
 key 0 {
     label:                              '0'
-    base, capslock:                     '0'
+    base:                               '0'
     shift:                              ')'
     ralt:                               '\u00b0'
 }
 
 key MINUS {
     label:                              '-'
-    base, capslock:                     '-'
+    base:                               '-'
     shift:                              '_'
     ralt:                               '\u00b1'
 }
 
 key EQUALS {
     label:                              '='
-    base, capslock:                     '='
+    base:                               '='
     shift:                              '+'
     ralt:                               '\u00bd'
 }
@@ -114,13 +114,13 @@
 
 key Q {
     label:                              'Q'
-    base, capslock:                     ';'
+    base:                               ';'
     shift:                              ':'
 }
 
 key W {
     label:                              'W'
-    base, capslock:                     '\u03c2'
+    base:                               '\u03c2'
     shift:                              '\u0385'
 }
 
@@ -128,6 +128,7 @@
     label:                              'E'
     base:                               '\u03b5'
     shift, capslock:                    '\u0395'
+    shift+capslock:                     '\u03b5'
     ralt:                               '\u20ac'
 }
 
@@ -135,6 +136,7 @@
     label:                              'R'
     base:                               '\u03c1'
     shift, capslock:                    '\u03a1'
+    shift+capslock:                     '\u03c1'
     ralt:                               '\u00ae'
 }
 
@@ -142,12 +144,14 @@
     label:                              'T'
     base:                               '\u03c4'
     shift, capslock:                    '\u03a4'
+    shift+capslock:                     '\u03c4'
 }
 
 key Y {
     label:                              'Y'
     base:                               '\u03c5'
     shift, capslock:                    '\u03a5'
+    shift+capslock:                     '\u03c5'
     ralt:                               '\u00a5'
 }
 
@@ -155,36 +159,40 @@
     label:                              'U'
     base:                               '\u03b8'
     shift, capslock:                    '\u0398'
+    shift+capslock:                     '\u03b8'
 }
 
 key I {
     label:                              'I'
     base:                               '\u03b9'
     shift, capslock:                    '\u0399'
+    shift+capslock:                     '\u03b9'
 }
 
 key O {
     label:                              'O'
     base:                               '\u03bf'
     shift, capslock:                    '\u039f'
+    shift+capslock:                     '\u03bf'
 }
 
 key P {
     label:                              'P'
     base:                               '\u03c0'
     shift, capslock:                    '\u03a0'
+    shift+capslock:                     '\u03c0'
 }
 
 key LEFT_BRACKET {
     label:                              '['
-    base, capslock:                     '['
+    base:                               '['
     shift:                              '{'
     ralt:                               '\u00ab'
 }
 
 key RIGHT_BRACKET {
     label:                              ']'
-    base, capslock:                     ']'
+    base:                               ']'
     shift:                              '}'
     ralt:                               '\u00bb'
 }
@@ -195,59 +203,68 @@
     label:                              'A'
     base:                               '\u03b1'
     shift, capslock:                    '\u0391'
+    shift+capslock:                     '\u03b1'
 }
 
 key S {
     label:                              'S'
     base:                               '\u03c3'
     shift, capslock:                    '\u03a3'
+    shift+capslock:                     '\u03c3'
 }
 
 key D {
     label:                              'D'
     base:                               '\u03b4'
     shift, capslock:                    '\u0394'
+    shift+capslock:                     '\u03b4'
 }
 
 key F {
     label:                              'F'
     base:                               '\u03c6'
     shift, capslock:                    '\u03a6'
+    shift+capslock:                     '\u03c6'
 }
 
 key G {
     label:                              'G'
     base:                               '\u03b3'
     shift, capslock:                    '\u0393'
+    shift+capslock:                     '\u03b3'
 }
 
 key H {
     label:                              'H'
     base:                               '\u03b7'
     shift, capslock:                    '\u0397'
+    shift+capslock:                     '\u03b7'
 }
 
 key J {
     label:                              'J'
     base:                               '\u03be'
     shift, capslock:                    '\u039e'
+    shift+capslock:                     '\u03be'
 }
 
 key K {
     label:                              'K'
     base:                               '\u03ba'
     shift, capslock:                    '\u039a'
+    shift+capslock:                     '\u03ba'
 }
 
 key L {
     label:                              'L'
     base:                               '\u03bb'
     shift, capslock:                    '\u039b'
+    shift+capslock:                     '\u03bb'
 }
 
 key SEMICOLON {
     label:                              ';'
-    base, capslock:                     '\u0301'
+    base:                               '\u0301'
 #should be \u0384 (greek tonos)
     shift:                              '\u0308'
     ralt:                               '\u0385'
@@ -255,13 +272,13 @@
 
 key APOSTROPHE {
     label:                              '\''
-    base, capslock:                     '\''
+    base:                               '\''
     shift:                              '"'
 }
 
 key BACKSLASH {
     label:                              '\\'
-    base, capslock:                     '\\'
+    base:                               '\\'
     shift:                              '|'
     ralt:                               '\u00ac'
 }
@@ -270,7 +287,7 @@
 
 key PLUS {
     label:                              '<'
-    base, capslock:                     '<'
+    base:                               '<'
     shift:                              '>'
     ralt:                               '\\'
     shift+ralt:                         '|'
@@ -280,18 +297,21 @@
     label:                              'Z'
     base:                               '\u03b6'
     shift, capslock:                    '\u0396'
+    shift+capslock:                     '\u03b6'
 }
 
 key X {
     label:                              'X'
     base:                               '\u03c7'
     shift, capslock:                    '\u03a7'
+    shift+capslock:                     '\u03c7'
 }
 
 key C {
     label:                              'C'
     base:                               '\u03c8'
     shift, capslock:                    '\u03a8'
+    shift+capslock:                     '\u03c8'
     ralt:                               '\u00a9'
 }
 
@@ -299,40 +319,44 @@
     label:                              'V'
     base:                               '\u03c9'
     shift, capslock:                    '\u03a9'
+    shift+capslock:                     '\u03c9'
 }
 
 key B {
     label:                              'B'
     base:                               '\u03b2'
     shift, capslock:                    '\u0392'
+    shift+capslock:                     '\u03b2'
 }
 
 key N {
     label:                              'N'
     base:                               '\u03bd'
     shift, capslock:                    '\u039d'
+    shift+capslock:                     '\u03bd'
 }
 
 key M {
     label:                              'M'
     base:                               '\u03bc'
     shift, capslock:                    '\u039c'
+    shift+capslock:                     '\u03bc'
 }
 
 key COMMA {
     label:                              ','
-    base, capslock:                     ','
+    base:                               ','
     shift:                              '<'
 }
 
 key PERIOD {
     label:                              '.'
-    base, capslock:                     '.'
+    base:                               '.'
     shift:                              '>'
 }
 
 key SLASH {
     label:                              '/'
-    base, capslock:                     '/'
+    base:                               '/'
     shift:                              '?'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_hebrew.kcm b/packages/InputDevices/res/raw/keyboard_layout_hebrew.kcm
index 283cb4e..11ade42 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_hebrew.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_hebrew.kcm
@@ -121,18 +121,21 @@
     label:                              'Q'
     base:                               '/'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               '\u0027'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               '\u05e7'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -140,24 +143,28 @@
     label:                              'R'
     base:                               '\u05e8'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               '\u05d0'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               '\u05d8'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               '\u05d5'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
     ralt:                               '\u05f0'
 }
 
@@ -165,29 +172,32 @@
     label:                              'I'
     base:                               '\u05df'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               '\u05dd'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               '\u05e4'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              ']'
-    base, capslock:                     ']'
+    base:                               ']'
     shift:                              '}'
 }
 
 key RIGHT_BRACKET {
     label:                              '['
-    base, capslock:                     '['
+    base:                               '['
     shift:                              '{'
 }
 
@@ -197,36 +207,42 @@
     label:                              'A'
     base:                               '\u05e9'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               '\u05d3'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               '\u05d2'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               '\u05db'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               '\u05e2'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               '\u05d9'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
     ralt:                               '\u05f2'
 }
 
@@ -234,6 +250,7 @@
     label:                              'J'
     base:                               '\u05d7'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
     ralt:                               '\u05f1'
 }
 
@@ -241,12 +258,14 @@
     label:                              'K'
     base:                               '\u05dc'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               '\u05da'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
@@ -254,6 +273,7 @@
     base:                               '\u05e3'
     shift:                              ':'
     capslock:                           ';'
+    shift+capslock:                     ':'
 }
 
 key APOSTROPHE {
@@ -261,6 +281,7 @@
     base:                               ','
     shift:                              '"'
     capslock:                           '\''
+    shift+capslock:                     '"'
 }
 
 key BACKSLASH {
@@ -273,7 +294,7 @@
 
 key PLUS {
     label:                              '\\'
-    base, capslock:                     '\\'
+    base:                               '\\'
     shift:                              '|'
 }
 
@@ -281,42 +302,49 @@
     label:                              'Z'
     base:                               '\u05d6'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               '\u05e1'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               '\u05d1'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               '\u05d4'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               '\u05e0'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               '\u05de'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               '\u05e6'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
@@ -324,6 +352,7 @@
     base:                               '\u05ea'
     shift:                              '>'
     capslock:                           ','
+    shift+capslock:                     '>'
 }
 
 key PERIOD {
@@ -331,6 +360,7 @@
     base:                               '\u05e5'
     shift:                              '<'
     capslock:                           '.'
+    shift+capslock:                     '<'
 }
 
 key SLASH {
@@ -338,4 +368,5 @@
     base:                               '.'
     shift:                              '?'
     capslock:                           '/'
+    shift+capslock:                     '?'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm b/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm
index dafb50b..6c947c7 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm
@@ -101,6 +101,7 @@
     label:                              '\u00d6'
     base:                               '\u00f6'
     shift, capslock:                    '\u00d6'
+    shift+capslock:                     '\u00f6'
     ralt:                               '\u030b'
 }
 
@@ -108,6 +109,7 @@
     label:                              '\u00dc'
     base:                               '\u00fc'
     shift, capslock:                    '\u00dc'
+    shift+capslock:                     '\u00fc'
     ralt:                               '\u0308'
 }
 
@@ -115,6 +117,7 @@
     label:                              '\u00d3'
     base:                               '\u00f3'
     shift, capslock:                    '\u00d3'
+    shift+capslock:                     '\u00f3'
     ralt:                               '\u0327'
 }
 
@@ -124,6 +127,7 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '\\'
 }
 
@@ -131,6 +135,7 @@
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
     ralt:                               '|'
 }
 
@@ -138,6 +143,7 @@
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u00c4'
 }
 
@@ -145,24 +151,28 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Z {
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
     ralt:                               '\u20ac'
 }
 
@@ -170,6 +180,7 @@
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
     ralt:                               '\u00cd'
 }
 
@@ -177,18 +188,21 @@
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u0150'
     base:                               '\u0151'
     shift, capslock:                    '\u0150'
+    shift+capslock:                     '\u0151'
     ralt:                               '\u00f7'
 }
 
@@ -196,6 +210,7 @@
     label:                              '\u00da'
     base:                               '\u00fa'
     shift, capslock:                    '\u00da'
+    shift+capslock:                     '\u00fa'
     ralt:                               '\u00d7'
 }
 
@@ -205,6 +220,7 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
     ralt:                               '\u00e4'
 }
 
@@ -212,6 +228,7 @@
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u0111'
 }
 
@@ -219,6 +236,7 @@
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
     ralt:                               '\u0110'
 }
 
@@ -226,6 +244,7 @@
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
     ralt:                               '['
 }
 
@@ -233,6 +252,7 @@
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
     ralt:                               ']'
 }
 
@@ -240,12 +260,14 @@
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
     ralt:                               '\u00ed'
 }
 
@@ -253,6 +275,7 @@
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
     ralt:                               '\u0197'
 }
 
@@ -260,6 +283,7 @@
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
     ralt:                               '\u0141'
 }
 
@@ -267,6 +291,7 @@
     label:                              '\u00c9'
     base:                               '\u00e9'
     shift, capslock:                    '\u00c9'
+    shift+capslock:                     '\u00e9'
     ralt:                               '$'
 }
 
@@ -274,6 +299,7 @@
     label:                              '\u00c1'
     base:                               '\u00e1'
     shift, capslock:                    '\u00c1'
+    shift+capslock:                     '\u00e1'
     ralt:                               '\u00df'
 }
 
@@ -281,6 +307,7 @@
     label:                              '\u0170'
     base:                               '\u0171'
     shift, capslock:                    '\u0170'
+    shift+capslock:                     '\u0171'
     ralt:                               '\u00a4'
 }
 
@@ -290,6 +317,7 @@
     label:                              '\u00cd'
     base:                               '\u00ed'
     shift, capslock:                    '\u00cd'
+    shift+capslock:                     '\u00ed'
     ralt:                               '<'
 }
 
@@ -297,6 +325,7 @@
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
     ralt:                               '>'
 }
 
@@ -304,6 +333,7 @@
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
     ralt:                               '#'
 }
 
@@ -311,6 +341,7 @@
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
     ralt:                               '&'
 }
 
@@ -318,6 +349,7 @@
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
     ralt:                               '@'
 }
 
@@ -325,6 +357,7 @@
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
     ralt:                               '{'
 }
 
@@ -332,6 +365,7 @@
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
     ralt:                               '}'
 }
 
@@ -339,6 +373,7 @@
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_icelandic.kcm b/packages/InputDevices/res/raw/keyboard_layout_icelandic.kcm
index 117f58b..5131b4f 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_icelandic.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_icelandic.kcm
@@ -99,6 +99,7 @@
     label:                              '\u00d6'
     base:                               '\u00f6'
     shift, capslock:                    '\u00d6'
+    shift+capslock:                     '\u00f6'
     ralt:                               '\\'
 }
 
@@ -114,6 +115,7 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '@'
 }
 
@@ -121,12 +123,14 @@
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -134,48 +138,56 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u0110'
     base:                               '\u0111'
     shift, capslock:                    '\u0110'
+    shift+capslock:                     '\u0111'
 }
 
 key RIGHT_BRACKET {
@@ -191,60 +203,70 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u00c6'
     base:                               '\u00e6'
     shift, capslock:                    '\u00c6'
+    shift+capslock:                     '\u00e6'
 }
 
 key APOSTROPHE {
@@ -274,42 +296,49 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
     ralt:                               '\u00b5'
 }
 
@@ -329,4 +358,5 @@
     label:                              '\u00de'
     base:                               '\u00fe'
     shift, capslock:                    '\u00de'
+    shift+capslock:                     '\u00fe'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_italian.kcm b/packages/InputDevices/res/raw/keyboard_layout_italian.kcm
index bd2d25a..309d8b2 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_italian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_italian.kcm
@@ -109,18 +109,21 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -128,42 +131,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -188,54 +198,63 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
@@ -270,42 +289,49 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_latvian_qwerty.kcm b/packages/InputDevices/res/raw/keyboard_layout_latvian_qwerty.kcm
index d4bc0c0..3b77cb1 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_latvian_qwerty.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_latvian_qwerty.kcm
@@ -119,70 +119,85 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u0113'
-    shift+ralt, ralt+capslock:          '\u0112'
+    shift+ralt, capslock+ralt:          '\u0112'
+    shift+capslock+ralt:                '\u0113'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
     ralt:                               '\u0157'
-    shift+ralt, ralt+capslock:          '\u0156'
+    shift+ralt, capslock+ralt:          '\u0156'
+    shift+capslock+ralt:                '\u0157'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
     ralt:                               '\u016b'
-    shift+ralt, ralt+capslock:          '\u016a'
+    shift+ralt, capslock+ralt:          '\u016a'
+    shift+capslock+ralt:                '\u016b'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
     ralt:                               '\u012b'
-    shift+ralt, ralt+capslock:          '\u012a'
+    shift+ralt, capslock+ralt:          '\u012a'
+    shift+capslock+ralt:                '\u012b'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
     ralt:                               '\u00f5'
-    shift+ralt, ralt+capslock:          '\u00d5'
+    shift+ralt, capslock+ralt:          '\u00d5'
+    shift+capslock+ralt:                '\u00f5'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -204,64 +219,78 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
     ralt:                               '\u0101'
-    shift+ralt, ralt+capslock:          '\u0100'
+    shift+ralt, capslock+ralt:          '\u0100'
+    shift+capslock+ralt:                '\u0101'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u0161'
-    shift+ralt, ralt+capslock:          '\u0160'
+    shift+ralt, capslock+ralt:          '\u0160'
+    shift+capslock+ralt:                '\u0161'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
     ralt:                               '\u0123'
-    shift+ralt, ralt+capslock:          '\u0122'
+    shift+ralt, capslock+ralt:          '\u0122'
+    shift+capslock+ralt:                '\u0123'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
     ralt:                               '\u0137'
-    shift+ralt, ralt+capslock:          '\u0136'
+    shift+ralt, capslock+ralt:          '\u0136'
+    shift+capslock+ralt:                '\u0137'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
     ralt:                               '\u013c'
-    shift+ralt, ralt+capslock:          '\u013b'
+    shift+ralt, capslock+ralt:          '\u013b'
+    shift+capslock+ralt:                '\u013c'
 }
 
 key SEMICOLON {
@@ -298,48 +327,58 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
     ralt:                               '\u017e'
-    shift+ralt, ralt+capslock:          '\u017d'
+    shift+ralt, capslock+ralt:          '\u017d'
+    shift+capslock+ralt:                '\u017e'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
     ralt:                               '\u010d'
-    shift+ralt, ralt+capslock:          '\u010c'
+    shift+ralt, capslock+ralt:          '\u010c'
+    shift+capslock+ralt:                '\u010d'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
     ralt:                               '\u0146'
-    shift+ralt, ralt+capslock:          '\u0145'
+    shift+ralt, capslock+ralt:          '\u0145'
+    shift+capslock+ralt:                '\u0146'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_lithuanian.kcm b/packages/InputDevices/res/raw/keyboard_layout_lithuanian.kcm
index 72ca333..bcfdb12 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_lithuanian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_lithuanian.kcm
@@ -32,6 +32,7 @@
     label:                              '1'
     base:                               '\u0105'
     shift, capslock:                    '\u0104'
+    shift+capslock:                     '\u0105'
     ralt:                               '1'
     shift+ralt:                         '!'
 }
@@ -40,6 +41,7 @@
     label:                              '2'
     base:                               '\u010d'
     shift, capslock:                    '\u010c'
+    shift+capslock:                     '\u010d'
     ralt:                               '2'
     shift+ralt:                         '@'
 }
@@ -48,6 +50,7 @@
     label:                              '3'
     base:                               '\u0119'
     shift, capslock:                    '\u0118'
+    shift+capslock:                     '\u0119'
     ralt:                               '3'
     shift+ralt:                         '#'
 }
@@ -56,6 +59,7 @@
     label:                              '4'
     base:                               '\u0117'
     shift, capslock:                    '\u0116'
+    shift+capslock:                     '\u0117'
     ralt:                               '4'
     shift+ralt:                         '$'
 }
@@ -64,6 +68,7 @@
     label:                              '5'
     base:                               '\u012f'
     shift, capslock:                    '\u012e'
+    shift+capslock:                     '\u012f'
     ralt:                               '5'
     shift+ralt:                         '%'
 }
@@ -72,6 +77,7 @@
     label:                              '6'
     base:                               '\u0161'
     shift, capslock:                    '\u0160'
+    shift+capslock:                     '\u0161'
     ralt:                               '6'
     shift+ralt:                         '\u0302'
 }
@@ -80,6 +86,7 @@
     label:                              '7'
     base:                               '\u0173'
     shift, capslock:                    '\u0172'
+    shift+capslock:                     '\u0173'
     ralt:                               '7'
     shift+ralt:                         '&'
 }
@@ -88,6 +95,7 @@
     label:                              '8'
     base:                               '\u016b'
     shift, capslock:                    '\u016a'
+    shift+capslock:                     '\u016b'
     ralt:                               '8'
     shift+ralt:                         '*'
 }
@@ -116,6 +124,7 @@
     label:                              '='
     base:                               '\u017e'
     shift, capslock:                    '\u017d'
+    shift+capslock:                     '\u017e'
     ralt:                               '='
     shift+ralt:                         '+'
 }
@@ -126,18 +135,21 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -145,42 +157,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -201,54 +220,63 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
@@ -281,42 +309,49 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_mongolian.kcm b/packages/InputDevices/res/raw/keyboard_layout_mongolian.kcm
index 3d4a8c6..77cc672 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_mongolian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_mongolian.kcm
@@ -28,6 +28,7 @@
     label:                              '='
     base:                               '='
     shift, capslock:                    '+'
+    shift+capslock:                     '+'
     ralt:                               '`'
     ralt+shift:                         '~'
 }
@@ -122,86 +123,107 @@
     label:                              '\u0444'
     base:                               '\u0444'
     shift, capslock:                    '\u0424'
+    shift+capslock:                     '\u0444'
     ralt:                               'q'
-    ralt+shift, ralt+capslock:          'Q'
+    shift+ralt, capslock+ralt:          'Q'
+    shift+capslock+ralt:                'q'
 }
 
 key W {
     label:                              '\u0446'
     base:                               '\u0446'
     shift, capslock:                    '\u0426'
+    shift+capslock:                     '\u0446'
     ralt:                               'w'
-    ralt+shift, ralt+capslock:          'W'
+    shift+ralt, capslock+ralt:          'W'
+    shift+capslock+ralt:                'w'
 }
 
 key E {
     label:                              '\u0443'
     base:                               '\u0443'
     shift, capslock:                    '\u0423'
+    shift+capslock:                     '\u0443'
     ralt:                               'e'
-    ralt+shift, ralt+capslock:          'E'
+    shift+ralt, capslock+ralt:          'E'
+    shift+capslock+ralt:                'e'
 }
 
 key R {
     label:                              '\u0436'
     base:                               '\u0436'
     shift, capslock:                    '\u0416'
+    shift+capslock:                     '\u0436'
     ralt:                               'r'
-    ralt+shift, ralt+capslock:          'R'
+    shift+ralt, capslock+ralt:          'R'
+    shift+capslock+ralt:                'r'
 }
 
 key T {
     label:                              '\u044d'
     base:                               '\u044d'
     shift, capslock:                    '\u042d'
+    shift+capslock:                     '\u044d'
     ralt:                               't'
-    ralt+shift, ralt+capslock:          'T'
+    shift+ralt, capslock+ralt:          'T'
+    shift+capslock+ralt:                't'
 }
 
 key Y {
     label:                              '\u043d'
     base:                               '\u043d'
     shift, capslock:                    '\u041d'
+    shift+capslock:                     '\u043d'
     ralt:                               'y'
-    ralt+shift, ralt+capslock:          'Y'
+    shift+ralt, capslock+ralt:          'Y'
+    shift+capslock+ralt:                'y'
 }
 
 key U {
     label:                              '\u0433'
     base:                               '\u0433'
     shift, capslock:                    '\u0413'
+    shift+capslock:                     '\u0433'
     ralt:                               'u'
-    ralt+shift, ralt+capslock:          'U'
+    shift+ralt, capslock+ralt:          'U'
+    shift+capslock+ralt:                'u'
 }
 
 key I {
     label:                              '\u0448'
     base:                               '\u0448'
     shift, capslock:                    '\u0428'
+    shift+capslock:                     '\u0448'
     ralt:                               'i'
-    ralt+shift, ralt+capslock:          'I'
+    shift+ralt, capslock+ralt:          'I'
+    shift+capslock+ralt:                'i'
 }
 
 key O {
     label:                              '\u04af'
     base:                               '\u04af'
     shift, capslock:                    '\u04ae'
+    shift+capslock:                     '\u04af'
     ralt:                               'o'
-    ralt+shift, ralt+capslock:          'O'
+    shift+ralt, capslock+ralt:          'O'
+    shift+capslock+ralt:                'o'
 }
 
 key P {
     label:                              '\u0437'
     base:                               '\u0437'
     shift, capslock:                    '\u0417'
+    shift+capslock:                     '\u0437'
     ralt:                               'p'
-    ralt+shift, ralt+capslock:          'P'
+    shift+ralt, capslock+ralt:          'P'
+    shift+capslock+ralt:                'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u043a'
     base:                               '\u043a'
     shift, capslock:                    '\u041a'
+    shift+capslock:                     '\u043a'
     ralt:                               '['
     ralt+shift:                         '{'
 }
@@ -210,6 +232,7 @@
     label:                              '\u044a'
     base:                               '\u044a'
     shift, capslock:                    '\u042a'
+    shift+capslock:                     '\u044a'
     ralt:                               ']'
     ralt+shift:                         '}'
 }
@@ -220,78 +243,97 @@
     label:                              '\u0439'
     base:                               '\u0439'
     shift, capslock:                    '\u0419'
+    shift+capslock:                     '\u0439'
     ralt:                               'a'
-    ralt+shift, ralt+capslock:          'A'
+    shift+ralt, capslock+ralt:          'A'
+    shift+capslock+ralt:                'a'
 }
 
 key S {
     label:                              '\u044b'
     base:                               '\u044b'
     shift, capslock:                    '\u042b'
+    shift+capslock:                     '\u044b'
     ralt:                               's'
-    ralt+shift, ralt+capslock:          'S'
+    shift+ralt, capslock+ralt:          'S'
+    shift+capslock+ralt:                's'
 }
 
 key D {
     label:                              '\u0431'
     base:                               '\u0431'
     shift, capslock:                    '\u0411'
+    shift+capslock:                     '\u0431'
     ralt:                               'd'
-    ralt+shift, ralt+capslock:          'D'
+    shift+ralt, capslock+ralt:          'D'
+    shift+capslock+ralt:                'd'
 }
 
 key F {
     label:                              '\u04e9'
     base:                               '\u04e9'
     shift, capslock:                    '\u04e8'
+    shift+capslock:                     '\u04e9'
     ralt:                               'f'
-    ralt+shift, ralt+capslock:          'F'
+    shift+ralt, capslock+ralt:          'F'
+    shift+capslock+ralt:                'f'
 }
 
 key G {
     label:                              '\u0430'
     base:                               '\u0430'
     shift, capslock:                    '\u0410'
+    shift+capslock:                     '\u0430'
     ralt:                               'g'
-    ralt+shift, ralt+capslock:          'G'
+    shift+ralt, capslock+ralt:          'G'
+    shift+capslock+ralt:                'g'
 }
 
 key H {
     label:                              '\u0445'
     base:                               '\u0445'
     shift, capslock:                    '\u0425'
+    shift+capslock:                     '\u0445'
     ralt:                               'h'
-    ralt+shift, ralt+capslock:          'H'
+    shift+ralt, capslock+ralt:          'H'
+    shift+capslock+ralt:                'h'
 }
 
 key J {
     label:                              '\u0440'
     base:                               '\u0440'
     shift, capslock:                    '\u0420'
+    shift+capslock:                     '\u0440'
     ralt:                               'j'
-    ralt+shift, ralt+capslock:          'J'
+    shift+ralt, capslock+ralt:          'J'
+    shift+capslock+ralt:                'j'
 }
 
 key K {
     label:                              '\u043e'
     base:                               '\u043e'
     shift, capslock:                    '\u041e'
+    shift+capslock:                     '\u043e'
     ralt:                               'k'
-    ralt+shift, ralt+capslock:          'K'
+    shift+ralt, capslock+ralt:          'K'
+    shift+capslock+ralt:                'k'
 }
 
 key L {
     label:                              '\u043b'
     base:                               '\u043b'
     shift, capslock:                    '\u041b'
+    shift+capslock:                     '\u043b'
     ralt:                               'l'
-    ralt+shift, ralt+capslock:          'L'
+    shift+ralt, capslock+ralt:          'L'
+    shift+capslock+ralt:                'l'
 }
 
 key SEMICOLON {
     label:                              '\u0434'
     base:                               '\u0434'
     shift, capslock:                    '\u0414'
+    shift+capslock:                     '\u0434'
     ralt:                               ';'
     ralt+shift:                         ':'
 }
@@ -300,6 +342,7 @@
     label:                              '\u043f'
     base:                               '\u043f'
     shift, capslock:                    '\u041f'
+    shift+capslock:                     '\u043f'
     ralt:                               '\''
     ralt+shift:                         '"'
 }
@@ -318,62 +361,77 @@
     label:                              '\u044f'
     base:                               '\u044f'
     shift, capslock:                    '\u042f'
+    shift+capslock:                     '\u044f'
     ralt:                               'z'
-    ralt+shift, ralt+capslock:          'Z'
+    shift+ralt, capslock+ralt:          'Z'
+    shift+capslock+ralt:                'z'
 }
 
 key X {
     label:                              '\u0447'
     base:                               '\u0447'
     shift, capslock:                    '\u0427'
+    shift+capslock:                     '\u0447'
     ralt:                               'x'
-    ralt+shift, ralt+capslock:          'X'
+    shift+ralt, capslock+ralt:          'X'
+    shift+capslock+ralt:                'x'
 }
 
 key C {
     label:                              '\u0451'
     base:                               '\u0451'
     shift, capslock:                    '\u0401'
+    shift+capslock:                     '\u0451'
     ralt:                               'c'
-    ralt+shift, ralt+capslock:          'C'
+    shift+ralt, capslock+ralt:          'C'
+    shift+capslock+ralt:                'c'
 }
 
 key V {
     label:                              '\u0441'
     base:                               '\u0441'
     shift, capslock:                    '\u0421'
+    shift+capslock:                     '\u0441'
     ralt:                               'v'
-    ralt+shift, ralt+capslock:          'V'
+    shift+ralt, capslock+ralt:          'V'
+    shift+capslock+ralt:                'v'
 }
 
 key B {
     label:                              '\u043c'
     base:                               '\u043c'
     shift, capslock:                    '\u041c'
+    shift+capslock:                     '\u043c'
     ralt:                               'b'
-    ralt+shift, ralt+capslock:          'B'
+    shift+ralt, capslock+ralt:          'B'
+    shift+capslock+ralt:                'b'
 }
 
 key N {
     label:                              '\u0438'
     base:                               '\u0438'
     shift, capslock:                    '\u0418'
+    shift+capslock:                     '\u0438'
     ralt:                               'n'
-    ralt+shift, ralt+capslock:          'N'
+    shift+ralt, capslock+ralt:          'N'
+    shift+capslock+ralt:                'n'
 }
 
 key M {
     label:                              '\u0442'
     base:                               '\u0442'
     shift, capslock:                    '\u0422'
+    shift+capslock:                     '\u0442'
     ralt:                               'm'
-    ralt+shift, ralt+capslock:          'M'
+    shift+ralt, capslock+ralt:          'M'
+    shift+capslock+ralt:                'm'
 }
 
 key COMMA {
     label:                              '\u044c'
     base:                               '\u044c'
     shift, capslock:                    '\u042c'
+    shift+capslock:                     '\u044c'
     ralt:                               ','
     ralt+shift:                         '<'
 }
@@ -382,6 +440,7 @@
     label:                              '\u0432'
     base:                               '\u0432'
     shift, capslock:                    '\u0412'
+    shift+capslock:                     '\u0432'
     ralt:                               '.'
     ralt+shift:                         '>'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_norwegian.kcm b/packages/InputDevices/res/raw/keyboard_layout_norwegian.kcm
index 560dd16..cae1c94 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_norwegian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_norwegian.kcm
@@ -115,76 +115,90 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '\u00e2'
-    ralt+capslock, shift+ralt:          '\u00c2'
+    shift+ralt, capslock+ralt:          '\u00c2'
+    shift+capslock+ralt:                '\u00e2'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
-    ralt+capslock:                      '\u20ac'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
     ralt:                               '\u0167'
-    ralt+capslock, shift+ralt:          '\u0166'
+    shift+ralt, capslock+ralt:          '\u0166'
+    shift+capslock+ralt:                '\u0167'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
     ralt:                               '\u00ef'
-    ralt+capslock, shift+ralt:          '\u00cf'
+    shift+ralt, capslock+ralt:          '\u00cf'
+    shift+capslock+ralt:                '\u00ef'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
     ralt:                               '\u00f5'
-    ralt+capslock, shift+ralt:          '\u00d5'
+    shift+ralt, capslock+ralt:          '\u00d5'
+    shift+capslock+ralt:                '\u00f5'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u00c5'
     base:                               '\u00e5'
     shift, capslock:                    '\u00c5'
+    shift+capslock:                     '\u00e5'
 }
 
 key RIGHT_BRACKET {
@@ -200,84 +214,104 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
     ralt:                               '\u00e1'
-    ralt+capslock, shift+ralt:          '\u00c1'
+    shift+ralt, capslock+ralt:          '\u00c1'
+    shift+capslock+ralt:                '\u00e1'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u0161'
-    ralt+capslock, shift+ralt:          '\u0160'
+    shift+ralt, capslock+ralt:          '\u0160'
+    shift+capslock+ralt:                '\u0161'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
     ralt:                               '\u0111'
-    ralt+capslock, shift+ralt:          '\u0110'
+    shift+ralt, capslock+ralt:          '\u0110'
+    shift+capslock+ralt:                '\u0111'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
     ralt:                               '\u01e5'
-    ralt+capslock, shift+ralt:          '\u01e4'
+    shift+ralt, capslock+ralt:          '\u01e4'
+    shift+capslock+ralt:                '\u01e5'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
     ralt:                               '\u01e7'
-    ralt+capslock, shift+ralt:          '\u01e6'
+    shift+ralt, capslock+ralt:          '\u01e6'
+    shift+capslock+ralt:                '\u01e7'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
     ralt:                               '\u021f'
-    ralt+capslock, shift+ralt:          '\u021e'
+    shift+ralt, capslock+ralt:          '\u021e'
+    shift+capslock+ralt:                '\u021f'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
     ralt:                               '\u01e9'
-    ralt+capslock, shift+ralt:          '\u01e8'
+    shift+ralt, capslock+ralt:          '\u01e8'
+    shift+capslock+ralt:                '\u01e9'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u00d8'
     base:                               '\u00f8'
     shift, capslock:                    '\u00d8'
+    shift+capslock:                     '\u00f8'
     ralt:                               '\u00f6'
-    ralt+capslock, shift+ralt:          '\u00d6'
+    shift+ralt, capslock+ralt:          '\u00d6'
+    shift+capslock+ralt:                '\u00f6'
 }
 
 key APOSTROPHE {
     label:                              '\u00c6'
     base:                               '\u00e6'
     shift, capslock:                    '\u00c6'
+    shift+capslock:                     '\u00e6'
     ralt:                               '\u00e4'
-    ralt+capslock, shift+ralt:          '\u00c4'
+    shift+ralt, capslock+ralt:          '\u00c4'
+    shift+capslock+ralt:                '\u00e4'
 }
 
 key BACKSLASH {
@@ -298,53 +332,65 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
     ralt:                               '\u017e'
-    ralt+capslock, shift+ralt:          '\u017d'
+    shift+ralt, capslock+ralt:          '\u017d'
+    shift+capslock+ralt:                '\u017e'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
     ralt:                               '\u010d'
-    ralt+capslock, shift+ralt:          '\u010c'
+    shift+ralt, capslock+ralt:          '\u010c'
+    shift+capslock+ralt:                '\u010d'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
     ralt:                               '\u01ef'
-    ralt+capslock, shift+ralt:          '\u01ee'
+    shift+ralt, capslock+ralt:          '\u01ee'
+    shift+capslock+ralt:                '\u01ef'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
     ralt:                               '\u0292'
-    ralt+capslock, shift+ralt:          '\u01b7'
+    shift+ralt, capslock+ralt:          '\u01b7'
+    shift+capslock+ralt:                '\u0292'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
     ralt:                               '\u014b'
-    ralt+capslock, shift+ralt:          '\u014a'
+    shift+ralt, capslock+ralt:          '\u014a'
+    shift+capslock+ralt:                '\u014b'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
-    ralt, ralt+capslock:                '\u00b5'
+    shift+capslock:                     'm'
+    ralt:                               '\u00b5'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_persian.kcm b/packages/InputDevices/res/raw/keyboard_layout_persian.kcm
index bfe7821..6744922 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_persian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_persian.kcm
@@ -22,231 +22,222 @@
     label:                              '\u0634'
     base:                               '\u0634'
     shift, capslock:                    '\u0624'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0634'
 }
 
 key B {
     label:                              '\u0630'
     base:                               '\u0630'
     shift, capslock:                    '\u200C'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0630'
 }
 
 key C {
     label:                              '\u0632'
     base:                               '\u0632'
     shift, capslock:                    '\u0698'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0632'
 }
 
 key D {
     label:                              '\u06CC'
     base:                               '\u06CC'
     shift, capslock:                    '\u064A'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u06CC'
 }
 
 key E {
     label:                              '\u062B'
     base:                               '\u062B'
     shift, capslock:                    '\u064D'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u062B'
 }
 
 key F {
     label:                              '\u0628'
     base:                               '\u0628'
     shift, capslock:                    '\u0625'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0628'
 }
 
 key G {
     label:                              '\u0644'
     base:                               '\u0644'
     shift, capslock:                    '\u0623'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0644'
 }
 
 key H {
     label:                              '\u0627'
     base:                               '\u0627'
     shift, capslock:                    '\u0622'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0627'
 }
 
 key I {
     label:                              '\u0647'
     base:                               '\u0647'
     shift, capslock:                    '\u0651'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0647'
 }
 
 key J {
     label:                              '\u062A'
     base:                               '\u062A'
     shift, capslock:                    '\u0629'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u062A'
 }
 
 key K {
     label:                              '\u0646'
     base:                               '\u0646'
     shift, capslock:                    '\u00AB'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0646'
 }
 
 key L {
     label:                              '\u0645'
     base:                               '\u0645'
     shift, capslock:                    '\u00BB'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0645'
 }
 
 key M {
     label:                              '\u067E'
     base:                               '\u067E'
     shift, capslock:                    '\u0621'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u067E'
 }
 
 key N {
     label:                              '\u062F'
     base:                               '\u062F'
     shift, capslock:                    '\u0654'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u062F'
 }
 
 key O {
     label:                              '\u062E'
     base:                               '\u062E'
-    shift, capslock:                    ']'
-    ctrl, alt, meta:                    none
+    shift:                              ']'
 }
 
 key P {
     label:                              '\u062D'
     base:                               '\u062D'
-    shift, capslock:                    '['
-    ctrl, alt, meta:                    none
+    shift:                              '['
 }
 
 key Q {
     label:                              '\u0636'
     base:                               '\u0636'
     shift, capslock:                    '\u0652'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0636'
 }
 
 key R {
     label:                              '\u0642'
     base:                               '\u0642'
     shift, capslock:                    '\u064B'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0642'
 }
 
 key S {
     label:                              '\u0633'
     base:                               '\u0633'
     shift, capslock:                    '\u0626'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0633'
 }
 
 key T {
     label:                              '\u0641'
     base:                               '\u0641'
     shift, capslock:                    '\u064F'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0641'
 }
 
 key U {
     label:                              '\u0639'
     base:                               '\u0639'
     shift, capslock:                    '\u064E'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0639'
 }
 
 key V {
     label:                              '\u0631'
     base:                               '\u0631'
     shift, capslock:                    '\u0670'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0631'
 }
 
 key W {
     label:                              '\u0635'
     base:                               '\u0635'
     shift, capslock:                    '\u064C'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0635'
 }
 
 key X {
     label:                              '\u0637'
     base:                               '\u0637'
     shift, capslock:                    '\u0653'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0637'
 }
 
 key Y {
     label:                              '\u063A'
     base:                               '\u063A'
     shift, capslock:                    '\u0650'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u063A'
 }
 
 key Z {
     label:                              '\u0638'
     base:                               '\u0638'
     shift, capslock:                    '\u0643'
-    ctrl, alt, meta:                    none
+    shift+capslock:                     '\u0638'
 }
 
 key 0 {
     label, number:                      '\u06F0'
     base:                               '\u06F0'
     shift:                              '('
-    ctrl, alt, meta:                    none
 }
 
 key 1 {
     label, number:                      '\u06F1'
     base:                               '\u06F1'
     shift:                              '!'
-    ctrl, alt, meta:                    none
 }
 
 key 2 {
     label, number:                      '\u06F2'
     base:                               '\u06F2'
     shift:                              '\u066C'
-    ctrl, alt, meta:                    none
 
 }
 key 3 {
     label, number:                      '\u06F3'
     base:                               '\u06F3'
     shift:                              '\u066B'
-    ctrl, alt, meta:                    none
 }
 
 key 4 {
     label, number:                      '\u06F4'
     base:                               '\u06F4'
     shift:                              '\uFDFC'
-    ctrl, alt, meta:                    none
 }
 
 key 5 {
     label, number:                      '\u06F5'
     base:                               '\u06F5'
     shift:                              '\u066A'
-    ctrl, alt, meta:                    none
 }
 
 key 6 {
     label, number:                      '\u06F6'
     base:                               '\u06F6'
     shift:                              '\u00D7'
-    ctrl, alt, meta:                    none
 }
 
 
@@ -254,248 +245,82 @@
     label, number:                      '\u06F7'
     base:                               '\u06F7'
     shift:                              '\u060C'
-    ctrl, alt, meta:                    none
 }
 
 key 8 {
     label, number:                      '\u06F8'
     base:                               '\u06F8'
     shift:                              '*'
-    ctrl, alt, meta:                    none
 }
 
 key 9 {
     label, number:                      '\u06F9'
     base:                               '\u06F9'
     shift:                              ')'
-    ctrl, alt, meta:                    none
-}
-
-key SPACE {
-    label:                              ' '
-    base:                               ' '
-    ctrl, alt, meta:                    none
-}
-
-key ENTER {
-    label:                              '\n'
-    base:                               '\n'
-    ctrl, alt, meta:                    none
-}
-
-key TAB {
-    label:                              '\t'
-    base:                               '\t'
-    ctrl, alt, meta:                    none
 }
 
 key COMMA {
     label, number:                      '\u0648'
     base:                               '\u0648'
     shift:                              '>'
-    ctrl, alt, meta:                    none
 }
 
 key PERIOD {
     label, number:                      '.'
     base:                               '.'
     shift:                              '<'
-    ctrl, alt, meta:                    none
 }
 
 key SLASH {
     label, number:                      '/'
     base:                               '/'
     shift:                              '\u061F'
-    ctrl, alt, meta:                    none
 }
 
 key GRAVE {
     label, number:                      '`'
     base:                               '`'
     shift:                              '\u00F7'
-    ctrl, alt, meta:                    none
 }
 
-
 key MINUS {
     label, number:                      '-'
     base:                               '-'
     shift:                              '_'
-    ctrl, alt, meta:                    none
 }
 
 key EQUALS {
     label, number:                      '='
     base:                               '='
     shift:                              '+'
-    ctrl, alt, meta:                    none
 }
 
 key LEFT_BRACKET {
     label, number:                      '\u062C'
     base:                               '\u062C'
     shift:                              '}'
-    ctrl, alt, meta:                    none
 }
 
 key RIGHT_BRACKET {
     label, number:                      '\u0686'
     base:                               '\u0686'
     shift:                              '{'
-    ctrl, alt, meta:                    none
 }
 
 key BACKSLASH {
     label, number:                      '\\'
     base:                               '\\'
     shift:                              '|'
-    ctrl, alt, meta:                    none
 }
 
 key SEMICOLON {
     label, number:                      '\u06A9'
     base:                               '\u06A9'
     shift:                              ':'
-    ctrl, alt, meta:                    none
 }
 
 key APOSTROPHE {
     label, number:                      '\''
     base:                               '\''
     shift:                              '\"'
-    ctrl, alt, meta:                    none
-}
-
-### Numeric keypad ###
-
-key NUMPAD_0 {
-    label, number:                      '0'
-    base:                               fallback INSERT
-    numlock:                            '0'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_1 {
-    label, number:                      '1'
-    base:                               fallback MOVE_END
-    numlock:                            '1'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_2 {
-    label, number:                      '2'
-    base:                               fallback DPAD_DOWN
-    numlock:                            '2'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_3 {
-    label, number:                      '3'
-    base:                               fallback PAGE_DOWN
-    numlock:                            '3'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_4 {
-    label, number:                      '4'
-    base:                               fallback DPAD_LEFT
-    numlock:                            '4'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_5 {
-    label, number:                      '5'
-    base:                               fallback DPAD_CENTER
-    numlock:                            '5'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_6 {
-    label, number:                      '6'
-    base:                               fallback DPAD_RIGHT
-    numlock:                            '6'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_7 {
-    label, number:                      '7'
-    base:                               fallback MOVE_HOME
-    numlock:                            '7'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_8 {
-    label, number:                      '8'
-    base:                               fallback DPAD_UP
-    numlock:                            '8'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_9 {
-    label, number:                      '9'
-    base:                               fallback PAGE_UP
-    numlock:                            '9'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_LEFT_PAREN {
-    label, number:                      ')'
-    base:                               ')'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_RIGHT_PAREN {
-    label, number:                      '('
-    base:                               '('
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_DIVIDE {
-    label, number:                      '/'
-    base:                               '/'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_MULTIPLY {
-    label, number:                      '*'
-    base:                               '*'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_SUBTRACT {
-    label, number:                      '-'
-    base:                               '-'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_ADD {
-    label, number:                      '+'
-    base:                               '+'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_DOT {
-    label, number:                      '.'
-    base:                               fallback FORWARD_DEL
-    numlock:                            '.'
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_COMMA {
-    label, number:                      ','
-    base:                               ','
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_EQUALS {
-    label, number:                      '='
-    base:                               '='
-    ctrl, alt, meta:                    none
-}
-
-key NUMPAD_ENTER {
-    label:                              '\n'
-    base:                               '\n' fallback ENTER
-    ctrl, alt, meta:                    none fallback ENTER
-}
+}
\ No newline at end of file
diff --git a/packages/InputDevices/res/raw/keyboard_layout_polish.kcm b/packages/InputDevices/res/raw/keyboard_layout_polish.kcm
index 559ec07..66fbefc1 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_polish.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_polish.kcm
@@ -104,64 +104,76 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u0119'
-    ralt+shift, ralt+capslock:          '\u0118'
+    shift+ralt, capslock+ralt:          '\u0118'
+    shift+capslock+ralt:                '\u0119'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
     ralt:                               '\u00F3'
-    ralt+shift, ralt+capslock:          '\u00D3'
+    shift+ralt, capslock+ralt:          '\u00D3'
+    shift+capslock+ralt:                '\u00F3'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -188,60 +200,72 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
     ralt:                               '\u0105'
-    ralt+shift, ralt+capslock:          '\u0104'
+    shift+ralt, capslock+ralt:          '\u0104'
+    shift+capslock+ralt:                '\u0105'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u015b'
-    ralt+shift, ralt+capslock:          '\u015a'
+    shift+ralt, capslock+ralt:          '\u015a'
+    shift+capslock+ralt:                '\u015b'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
     ralt:                               '\u0142'
-    ralt+shift, ralt+capslock:          '\u0141'
+    shift+ralt, capslock+ralt:          '\u0141'
+    shift+capslock+ralt:                '\u0142'
 }
 
 key SEMICOLON {
@@ -262,50 +286,61 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
     ralt:                               '\u017c'
-    ralt+shift, ralt+capslock:          '\u017b'
+    shift+ralt, capslock+ralt:          '\u017b'
+    shift+capslock+ralt:                '\u017c'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
     ralt:                               '\u017a'
-    ralt+shift, ralt+capslock:          '\u0179'
+    shift+ralt, capslock+ralt:          '\u0179'
+    shift+capslock+ralt:                '\u017a'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
     ralt:                               '\u0107'
-    ralt+shift, ralt+capslock:          '\u0106'
+    shift+ralt, capslock+ralt:          '\u0106'
+    shift+capslock+ralt:                '\u0107'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
     ralt:                               '\u0144'
-    ralt+shift, ralt+capslock:          '\u0143'
+    shift+ralt, capslock+ralt:          '\u0143'
+    shift+capslock+ralt:                '\u0144'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_portuguese.kcm b/packages/InputDevices/res/raw/keyboard_layout_portuguese.kcm
index 47ee867..6fe0e47 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_portuguese.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_portuguese.kcm
@@ -115,18 +115,21 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -134,42 +137,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -191,60 +201,70 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u00c7'
     base:                               '\u00e7'
     shift, capslock:                    '\u00c7'
+    shift+capslock:                     '\u00e7'
 }
 
 key APOSTROPHE {
@@ -272,42 +292,49 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_russian.kcm b/packages/InputDevices/res/raw/keyboard_layout_russian.kcm
index 41c6bb3..ecada49 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_russian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_russian.kcm
@@ -28,6 +28,7 @@
     label:                              '\u0401'
     base:                               '\u0451'
     shift, capslock:                    '\u0401'
+    shift+capslock:                     '\u0451'
     ralt:                               '`'
     ralt+shift:                         '~'
 }
@@ -124,86 +125,107 @@
     label:                              '\u0419'
     base:                               '\u0439'
     shift, capslock:                    '\u0419'
+    shift+capslock:                     '\u0439'
     ralt:                               'q'
-    ralt+shift, ralt+capslock:          'Q'
+    shift+ralt, capslock+ralt:          'Q'
+    shift+capslock+ralt:                'q'
 }
 
 key W {
     label:                              '\u0426'
     base:                               '\u0446'
     shift, capslock:                    '\u0426'
+    shift+capslock:                     '\u0446'
     ralt:                               'w'
-    ralt+shift, ralt+capslock:          'W'
+    shift+ralt, capslock+ralt:          'W'
+    shift+capslock+ralt:                'w'
 }
 
 key E {
     label:                              '\u0423'
     base:                               '\u0443'
     shift, capslock:                    '\u0423'
+    shift+capslock:                     '\u0443'
     ralt:                               'e'
-    ralt+shift, ralt+capslock:          'E'
+    shift+ralt, capslock+ralt:          'E'
+    shift+capslock+ralt:                'e'
 }
 
 key R {
     label:                              '\u041a'
     base:                               '\u043a'
     shift, capslock:                    '\u041a'
+    shift+capslock:                     '\u043a'
     ralt:                               'r'
-    ralt+shift, ralt+capslock:          'R'
+    shift+ralt, capslock+ralt:          'R'
+    shift+capslock+ralt:                'r'
 }
 
 key T {
     label:                              '\u0415'
     base:                               '\u0435'
     shift, capslock:                    '\u0415'
+    shift+capslock:                     '\u0435'
     ralt:                               't'
-    ralt+shift, ralt+capslock:          'T'
+    shift+ralt, capslock+ralt:          'T'
+    shift+capslock+ralt:                't'
 }
 
 key Y {
     label:                              '\u041d'
     base:                               '\u043d'
     shift, capslock:                    '\u041d'
+    shift+capslock:                     '\u043d'
     ralt:                               'y'
-    ralt+shift, ralt+capslock:          'Y'
+    shift+ralt, capslock+ralt:          'Y'
+    shift+capslock+ralt:                'y'
 }
 
 key U {
     label:                              '\u0413'
     base:                               '\u0433'
     shift, capslock:                    '\u0413'
+    shift+capslock:                     '\u0433'
     ralt:                               'u'
-    ralt+shift, ralt+capslock:          'U'
+    shift+ralt, capslock+ralt:          'U'
+    shift+capslock+ralt:                'u'
 }
 
 key I {
     label:                              '\u0428'
     base:                               '\u0448'
     shift, capslock:                    '\u0428'
+    shift+capslock:                     '\u0448'
     ralt:                               'i'
-    ralt+shift, ralt+capslock:          'I'
+    shift+ralt, capslock+ralt:          'I'
+    shift+capslock+ralt:                'i'
 }
 
 key O {
     label:                              '\u0429'
     base:                               '\u0449'
     shift, capslock:                    '\u0429'
+    shift+capslock:                     '\u0449'
     ralt:                               'o'
-    ralt+shift, ralt+capslock:          'O'
+    shift+ralt, capslock+ralt:          'O'
+    shift+capslock+ralt:                'o'
 }
 
 key P {
     label:                              '\u0417'
     base:                               '\u0437'
     shift, capslock:                    '\u0417'
+    shift+capslock:                     '\u0437'
     ralt:                               'p'
-    ralt+shift, ralt+capslock:          'P'
+    shift+ralt, capslock+ralt:          'P'
+    shift+capslock+ralt:                'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u0425'
     base:                               '\u0445'
     shift, capslock:                    '\u0425'
+    shift+capslock:                     '\u0445'
     ralt:                               '['
     ralt+shift:                         '{'
 }
@@ -212,6 +234,7 @@
     label:                              '\u042a'
     base:                               '\u044a'
     shift, capslock:                    '\u042a'
+    shift+capslock:                     '\u044a'
     ralt:                               ']'
     ralt+shift:                         '}'
 }
@@ -222,78 +245,97 @@
     label:                              '\u0424'
     base:                               '\u0444'
     shift, capslock:                    '\u0424'
+    shift+capslock:                     '\u0444'
     ralt:                               'a'
-    ralt+shift, ralt+capslock:          'A'
+    shift+ralt, capslock+ralt:          'A'
+    shift+capslock+ralt:                'a'
 }
 
 key S {
     label:                              '\u042b'
     base:                               '\u044b'
     shift, capslock:                    '\u042b'
+    shift+capslock:                     '\u044b'
     ralt:                               's'
-    ralt+shift, ralt+capslock:          'S'
+    shift+ralt, capslock+ralt:          'S'
+    shift+capslock+ralt:                's'
 }
 
 key D {
     label:                              '\u0412'
     base:                               '\u0432'
     shift, capslock:                    '\u0412'
+    shift+capslock:                     '\u0432'
     ralt:                               'd'
-    ralt+shift, ralt+capslock:          'D'
+    shift+ralt, capslock+ralt:          'D'
+    shift+capslock+ralt:                'd'
 }
 
 key F {
     label:                              '\u0410'
     base:                               '\u0430'
     shift, capslock:                    '\u0410'
+    shift+capslock:                     '\u0430'
     ralt:                               'f'
-    ralt+shift, ralt+capslock:          'F'
+    shift+ralt, capslock+ralt:          'F'
+    shift+capslock+ralt:                'f'
 }
 
 key G {
     label:                              '\u041f'
     base:                               '\u043f'
     shift, capslock:                    '\u041f'
+    shift+capslock:                     '\u043f'
     ralt:                               'g'
-    ralt+shift, ralt+capslock:          'G'
+    shift+ralt, capslock+ralt:          'G'
+    shift+capslock+ralt:                'g'
 }
 
 key H {
     label:                              '\u0420'
     base:                               '\u0440'
     shift, capslock:                    '\u0420'
+    shift+capslock:                     '\u0440'
     ralt:                               'h'
-    ralt+shift, ralt+capslock:          'H'
+    shift+ralt, capslock+ralt:          'H'
+    shift+capslock+ralt:                'h'
 }
 
 key J {
     label:                              '\u041e'
     base:                               '\u043e'
     shift, capslock:                    '\u041e'
+    shift+capslock:                     '\u043e'
     ralt:                               'j'
-    ralt+shift, ralt+capslock:          'J'
+    shift+ralt, capslock+ralt:          'J'
+    shift+capslock+ralt:                'j'
 }
 
 key K {
     label:                              '\u041b'
     base:                               '\u043b'
     shift, capslock:                    '\u041b'
+    shift+capslock:                     '\u043b'
     ralt:                               'k'
-    ralt+shift, ralt+capslock:          'K'
+    shift+ralt, capslock+ralt:          'K'
+    shift+capslock+ralt:                'k'
 }
 
 key L {
     label:                              '\u0414'
     base:                               '\u0434'
     shift, capslock:                    '\u0414'
+    shift+capslock:                     '\u0434'
     ralt:                               'l'
-    ralt+shift, ralt+capslock:          'L'
+    shift+ralt, capslock+ralt:          'L'
+    shift+capslock+ralt:                'l'
 }
 
 key SEMICOLON {
     label:                              '\u0416'
     base:                               '\u0436'
     shift, capslock:                    '\u0416'
+    shift+capslock:                     '\u0436'
     ralt:                               ';'
     ralt+shift:                         ':'
 }
@@ -302,6 +344,7 @@
     label:                              '\u042d'
     base:                               '\u044d'
     shift, capslock:                    '\u042d'
+    shift+capslock:                     '\u044d'
     ralt:                               '\''
     ralt+shift:                         '"'
 }
@@ -319,62 +362,77 @@
     label:                              '\u042f'
     base:                               '\u044f'
     shift, capslock:                    '\u042f'
+    shift+capslock:                     '\u044f'
     ralt:                               'z'
-    ralt+shift, ralt+capslock:          'Z'
+    shift+ralt, capslock+ralt:          'Z'
+    shift+capslock+ralt:                'z'
 }
 
 key X {
     label:                              '\u0427'
     base:                               '\u0447'
     shift, capslock:                    '\u0427'
+    shift+capslock:                     '\u0447'
     ralt:                               'x'
-    ralt+shift, ralt+capslock:          'X'
+    shift+ralt, capslock+ralt:          'X'
+    shift+capslock+ralt:                'x'
 }
 
 key C {
     label:                              '\u0421'
     base:                               '\u0441'
     shift, capslock:                    '\u0421'
+    shift+capslock:                     '\u0441'
     ralt:                               'c'
-    ralt+shift, ralt+capslock:          'C'
+    shift+ralt, capslock+ralt:          'C'
+    shift+capslock+ralt:                'c'
 }
 
 key V {
     label:                              '\u041c'
     base:                               '\u043c'
     shift, capslock:                    '\u041c'
+    shift+capslock:                     '\u043c'
     ralt:                               'v'
-    ralt+shift, ralt+capslock:          'V'
+    shift+ralt, capslock+ralt:          'V'
+    shift+capslock+ralt:                'v'
 }
 
 key B {
     label:                              '\u0418'
     base:                               '\u0438'
     shift, capslock:                    '\u0418'
+    shift+capslock:                     '\u0438'
     ralt:                               'b'
-    ralt+shift, ralt+capslock:          'B'
+    shift+ralt, capslock+ralt:          'B'
+    shift+capslock+ralt:                'b'
 }
 
 key N {
     label:                              '\u0422'
     base:                               '\u0442'
     shift, capslock:                    '\u0422'
+    shift+capslock:                     '\u0442'
     ralt:                               'n'
-    ralt+shift, ralt+capslock:          'N'
+    shift+ralt, capslock+ralt:          'N'
+    shift+capslock+ralt:                'n'
 }
 
 key M {
     label:                              '\u042c'
     base:                               '\u044c'
     shift, capslock:                    '\u042c'
+    shift+capslock:                     '\u044c'
     ralt:                               'm'
-    ralt+shift, ralt+capslock:          'M'
+    shift+ralt, capslock+ralt:          'M'
+    shift+capslock+ralt:                'm'
 }
 
 key COMMA {
     label:                              '\u0411'
     base:                               '\u0431'
     shift, capslock:                    '\u0411'
+    shift+capslock:                     '\u0431'
     ralt:                               ','
     ralt+shift:                         '<'
 }
@@ -383,6 +441,7 @@
     label:                              '\u042e'
     base:                               '\u044e'
     shift, capslock:                    '\u042e'
+    shift+capslock:                     '\u044e'
     ralt:                               '.'
     ralt+shift:                         '>'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_russian_mac.kcm b/packages/InputDevices/res/raw/keyboard_layout_russian_mac.kcm
index 11c2ad4..5417bc3 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_russian_mac.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_russian_mac.kcm
@@ -126,86 +126,107 @@
     label:                              '\u0419'
     base:                               '\u0439'
     shift, capslock:                    '\u0419'
+    shift+capslock:                     '\u0439'
     ralt:                               'q'
-    ralt+shift, ralt+capslock:          'Q'
+    shift+ralt, capslock+ralt:          'Q'
+    shift+capslock+ralt:                'q'
 }
 
 key W {
     label:                              '\u0426'
     base:                               '\u0446'
     shift, capslock:                    '\u0426'
+    shift+capslock:                     '\u0446'
     ralt:                               'w'
-    ralt+shift, ralt+capslock:          'W'
+    shift+ralt, capslock+ralt:          'W'
+    shift+capslock+ralt:                'w'
 }
 
 key E {
     label:                              '\u0423'
     base:                               '\u0443'
     shift, capslock:                    '\u0423'
+    shift+capslock:                     '\u0443'
     ralt:                               'e'
-    ralt+shift, ralt+capslock:          'E'
+    shift+ralt, capslock+ralt:          'E'
+    shift+capslock+ralt:                'e'
 }
 
 key R {
     label:                              '\u041a'
     base:                               '\u043a'
     shift, capslock:                    '\u041a'
+    shift+capslock:                     '\u043a'
     ralt:                               'r'
-    ralt+shift, ralt+capslock:          'R'
+    shift+ralt, capslock+ralt:          'R'
+    shift+capslock+ralt:                'r'
 }
 
 key T {
     label:                              '\u0415'
     base:                               '\u0435'
     shift, capslock:                    '\u0415'
+    shift+capslock:                     '\u0435'
     ralt:                               't'
-    ralt+shift, ralt+capslock:          'T'
+    shift+ralt, capslock+ralt:          'T'
+    shift+capslock+ralt:                't'
 }
 
 key Y {
     label:                              '\u041d'
     base:                               '\u043d'
     shift, capslock:                    '\u041d'
+    shift+capslock:                     '\u043d'
     ralt:                               'y'
-    ralt+shift, ralt+capslock:          'Y'
+    shift+ralt, capslock+ralt:          'Y'
+    shift+capslock+ralt:                'y'
 }
 
 key U {
     label:                              '\u0413'
     base:                               '\u0433'
     shift, capslock:                    '\u0413'
+    shift+capslock:                     '\u0433'
     ralt:                               'u'
-    ralt+shift, ralt+capslock:          'U'
+    shift+ralt, capslock+ralt:          'U'
+    shift+capslock+ralt:                'u'
 }
 
 key I {
     label:                              '\u0428'
     base:                               '\u0448'
     shift, capslock:                    '\u0428'
+    shift+capslock:                     '\u0448'
     ralt:                               'i'
-    ralt+shift, ralt+capslock:          'I'
+    shift+ralt, capslock+ralt:          'I'
+    shift+capslock+ralt:                'i'
 }
 
 key O {
     label:                              '\u0429'
     base:                               '\u0449'
     shift, capslock:                    '\u0429'
+    shift+capslock:                     '\u0449'
     ralt:                               'o'
-    ralt+shift, ralt+capslock:          'O'
+    shift+ralt, capslock+ralt:          'O'
+    shift+capslock+ralt:                'o'
 }
 
 key P {
     label:                              '\u0417'
     base:                               '\u0437'
     shift, capslock:                    '\u0417'
+    shift+capslock:                     '\u0437'
     ralt:                               'p'
-    ralt+shift, ralt+capslock:          'P'
+    shift+ralt, capslock+ralt:          'P'
+    shift+capslock+ralt:                'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u0425'
     base:                               '\u0445'
     shift, capslock:                    '\u0425'
+    shift+capslock:                     '\u0445'
     ralt:                               '['
     ralt+shift:                         '{'
 }
@@ -214,6 +235,7 @@
     label:                              '\u042a'
     base:                               '\u044a'
     shift, capslock:                    '\u042a'
+    shift+capslock:                     '\u044a'
     ralt:                               ']'
     ralt+shift:                         '}'
 }
@@ -224,78 +246,97 @@
     label:                              '\u0424'
     base:                               '\u0444'
     shift, capslock:                    '\u0424'
+    shift+capslock:                     '\u0444'
     ralt:                               'a'
-    ralt+shift, ralt+capslock:          'A'
+    shift+ralt, capslock+ralt:          'A'
+    shift+capslock+ralt:                'a'
 }
 
 key S {
     label:                              '\u042b'
     base:                               '\u044b'
     shift, capslock:                    '\u042b'
+    shift+capslock:                     '\u044b'
     ralt:                               's'
-    ralt+shift, ralt+capslock:          'S'
+    shift+ralt, capslock+ralt:          'S'
+    shift+capslock+ralt:                's'
 }
 
 key D {
     label:                              '\u0412'
     base:                               '\u0432'
     shift, capslock:                    '\u0412'
+    shift+capslock:                     '\u0432'
     ralt:                               'd'
-    ralt+shift, ralt+capslock:          'D'
+    shift+ralt, capslock+ralt:          'D'
+    shift+capslock+ralt:                'd'
 }
 
 key F {
     label:                              '\u0410'
     base:                               '\u0430'
     shift, capslock:                    '\u0410'
+    shift+capslock:                     '\u0430'
     ralt:                               'f'
-    ralt+shift, ralt+capslock:          'F'
+    shift+ralt, capslock+ralt:          'F'
+    shift+capslock+ralt:                'f'
 }
 
 key G {
     label:                              '\u041f'
     base:                               '\u043f'
     shift, capslock:                    '\u041f'
+    shift+capslock:                     '\u043f'
     ralt:                               'g'
-    ralt+shift, ralt+capslock:          'G'
+    shift+ralt, capslock+ralt:          'G'
+    shift+capslock+ralt:                'g'
 }
 
 key H {
     label:                              '\u0420'
     base:                               '\u0440'
     shift, capslock:                    '\u0420'
+    shift+capslock:                     '\u0440'
     ralt:                               'h'
-    ralt+shift, ralt+capslock:          'H'
+    shift+ralt, capslock+ralt:          'H'
+    shift+capslock+ralt:                'h'
 }
 
 key J {
     label:                              '\u041e'
     base:                               '\u043e'
     shift, capslock:                    '\u041e'
+    shift+capslock:                     '\u043e'
     ralt:                               'j'
-    ralt+shift, ralt+capslock:          'J'
+    shift+ralt, capslock+ralt:          'J'
+    shift+capslock+ralt:                'j'
 }
 
 key K {
     label:                              '\u041b'
     base:                               '\u043b'
     shift, capslock:                    '\u041b'
+    shift+capslock:                     '\u043b'
     ralt:                               'k'
-    ralt+shift, ralt+capslock:          'K'
+    shift+ralt, capslock+ralt:          'K'
+    shift+capslock+ralt:                'k'
 }
 
 key L {
     label:                              '\u0414'
     base:                               '\u0434'
     shift, capslock:                    '\u0414'
+    shift+capslock:                     '\u0434'
     ralt:                               'l'
-    ralt+shift, ralt+capslock:          'L'
+    shift+ralt, capslock+ralt:          'L'
+    shift+capslock+ralt:                'l'
 }
 
 key SEMICOLON {
     label:                              '\u0416'
     base:                               '\u0436'
     shift, capslock:                    '\u0416'
+    shift+capslock:                     '\u0436'
     ralt:                               ';'
     ralt+shift:                         ':'
 }
@@ -304,6 +345,7 @@
     label:                              '\u042d'
     base:                               '\u044d'
     shift, capslock:                    '\u042d'
+    shift+capslock:                     '\u044d'
     ralt:                               '\''
     ralt+shift:                         '"'
 }
@@ -312,6 +354,7 @@
     label:                              '\u0401'
     base:                               '\u0451'
     shift, capslock:                    '\u0401'
+    shift+capslock:                     '\u0451'
     ralt:                               '\\'
     ralt+shift:                         '|'
 }
@@ -330,62 +373,77 @@
     label:                              '\u042f'
     base:                               '\u044f'
     shift, capslock:                    '\u042f'
+    shift+capslock:                     '\u044f'
     ralt:                               'z'
-    ralt+shift, ralt+capslock:          'Z'
+    shift+ralt, capslock+ralt:          'Z'
+    shift+capslock+ralt:                'z'
 }
 
 key X {
     label:                              '\u0427'
     base:                               '\u0447'
     shift, capslock:                    '\u0427'
+    shift+capslock:                     '\u0447'
     ralt:                               'x'
-    ralt+shift, ralt+capslock:          'X'
+    shift+ralt, capslock+ralt:          'X'
+    shift+capslock+ralt:                'x'
 }
 
 key C {
     label:                              '\u0421'
     base:                               '\u0441'
     shift, capslock:                    '\u0421'
+    shift+capslock:                     '\u0441'
     ralt:                               'c'
-    ralt+shift, ralt+capslock:          'C'
+    shift+ralt, capslock+ralt:          'C'
+    shift+capslock+ralt:                'c'
 }
 
 key V {
     label:                              '\u041c'
     base:                               '\u043c'
     shift, capslock:                    '\u041c'
+    shift+capslock:                     '\u043c'
     ralt:                               'v'
-    ralt+shift, ralt+capslock:          'V'
+    shift+ralt, capslock+ralt:          'V'
+    shift+capslock+ralt:                'v'
 }
 
 key B {
     label:                              '\u0418'
     base:                               '\u0438'
     shift, capslock:                    '\u0418'
+    shift+capslock:                     '\u0438'
     ralt:                               'b'
-    ralt+shift, ralt+capslock:          'B'
+    shift+ralt, capslock+ralt:          'B'
+    shift+capslock+ralt:                'b'
 }
 
 key N {
     label:                              '\u0422'
     base:                               '\u0442'
     shift, capslock:                    '\u0422'
+    shift+capslock:                     '\u0442'
     ralt:                               'n'
-    ralt+shift, ralt+capslock:          'N'
+    shift+ralt, capslock+ralt:          'N'
+    shift+capslock+ralt:                'n'
 }
 
 key M {
     label:                              '\u042c'
     base:                               '\u044c'
     shift, capslock:                    '\u042c'
+    shift+capslock:                     '\u044c'
     ralt:                               'm'
-    ralt+shift, ralt+capslock:          'M'
+    shift+ralt, capslock+ralt:          'M'
+    shift+capslock+ralt:                'm'
 }
 
 key COMMA {
     label:                              '\u0411'
     base:                               '\u0431'
     shift, capslock:                    '\u0411'
+    shift+capslock:                     '\u0431'
     ralt:                               ','
     ralt+shift:                         '<'
 }
@@ -394,6 +452,7 @@
     label:                              '\u042e'
     base:                               '\u044e'
     shift, capslock:                    '\u042e'
+    shift+capslock:                     '\u044e'
     ralt:                               '.'
     ralt+shift:                         '>'
 }
diff --git a/packages/InputDevices/res/raw/keyboard_layout_slovak.kcm b/packages/InputDevices/res/raw/keyboard_layout_slovak.kcm
index 2eb0f63..5065aa8 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_slovak.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_slovak.kcm
@@ -118,6 +118,7 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '\\'
 }
 
@@ -125,6 +126,7 @@
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
     ralt:                               '|'
 }
 
@@ -132,6 +134,7 @@
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -139,42 +142,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
     ralt:                               '\''
 }
 
@@ -198,12 +208,14 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u0111'
 }
 
@@ -211,6 +223,7 @@
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
     ralt:                               '\u0110'
 }
 
@@ -218,6 +231,7 @@
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
     ralt:                               '['
 }
 
@@ -225,6 +239,7 @@
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
     ralt:                               ']'
 }
 
@@ -232,18 +247,21 @@
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
     ralt:                               '\u0142'
 }
 
@@ -251,6 +269,7 @@
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
     ralt:                               '\u0141'
 }
 
@@ -288,6 +307,7 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
     ralt:                               '>'
 }
 
@@ -295,6 +315,7 @@
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
     ralt:                               '#'
 }
 
@@ -302,6 +323,7 @@
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
     ralt:                               '&'
 }
 
@@ -309,6 +331,7 @@
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
     ralt:                               '@'
 }
 
@@ -316,6 +339,7 @@
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
     ralt:                               '{'
 }
 
@@ -323,6 +347,7 @@
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
     ralt:                               '}'
 }
 
@@ -330,6 +355,7 @@
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_spanish.kcm b/packages/InputDevices/res/raw/keyboard_layout_spanish.kcm
index da9159b..6a63e70 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_spanish.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_spanish.kcm
@@ -113,18 +113,21 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -132,42 +135,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -190,60 +200,70 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u00d1'
     base:                               '\u00f1'
     shift, capslock:                    '\u00d1'
+    shift+capslock:                     '\u00f1'
 }
 
 key APOSTROPHE {
@@ -257,6 +277,7 @@
     label:                              '\u00c7'
     base:                               '\u00e7'
     shift, capslock:                    '\u00c7'
+    shift+capslock:                     '\u00e7'
     ralt:                               '}'
 }
 
@@ -272,42 +293,49 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_spanish_latin.kcm b/packages/InputDevices/res/raw/keyboard_layout_spanish_latin.kcm
index 16eb53f..29aab97 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_spanish_latin.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_spanish_latin.kcm
@@ -109,6 +109,7 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '@'
 }
 
@@ -116,54 +117,63 @@
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -186,60 +196,70 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u00d1'
     base:                               '\u00f1'
     shift, capslock:                    '\u00d1'
+    shift+capslock:                     '\u00f1'
 }
 
 key APOSTROPHE {
@@ -268,42 +288,49 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_swedish.kcm b/packages/InputDevices/res/raw/keyboard_layout_swedish.kcm
index 8a4e9a5..f12804f 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_swedish.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_swedish.kcm
@@ -115,76 +115,90 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '\u00e2'
-    ralt+capslock, shift+ralt:          '\u00c2'
+    shift+ralt, capslock+ralt:          '\u00c2'
+    shift+capslock+ralt:                '\u00e2'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
-    ralt+capslock:                      '\u20ac'
 }
 
 key R {
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
     ralt:                               '\u0167'
-    ralt+capslock, shift+ralt:          '\u0166'
+    shift+ralt, capslock+ralt:          '\u0166'
+    shift+capslock+ralt:                '\u0167'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
     ralt:                               '\u00ef'
-    ralt+capslock, shift+ralt:          '\u00cf'
+    shift+ralt, capslock+ralt:          '\u00cf'
+    shift+capslock+ralt:                '\u00ef'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
     ralt:                               '\u00f5'
-    ralt+capslock, shift+ralt:          '\u00d5'
+    shift+ralt, capslock+ralt:          '\u00d5'
+    shift+capslock+ralt:                '\u00f5'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u00c5'
     base:                               '\u00e5'
     shift, capslock:                    '\u00c5'
+    shift+capslock:                     '\u00e5'
 }
 
 key RIGHT_BRACKET {
@@ -200,84 +214,104 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
     ralt:                               '\u00e1'
-    ralt+capslock, shift+ralt:          '\u00c1'
+    shift+ralt, capslock+ralt:          '\u00c1'
+    shift+capslock+ralt:                '\u00e1'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u0161'
-    ralt+capslock, shift+ralt:          '\u0160'
+    shift+ralt, capslock+ralt:          '\u0160'
+    shift+capslock+ralt:                '\u0161'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
     ralt:                               '\u0111'
-    ralt+capslock, shift+ralt:          '\u0110'
+    shift+ralt, capslock+ralt:          '\u0110'
+    shift+capslock+ralt:                '\u0111'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
     ralt:                               '\u01e5'
-    ralt+capslock, shift+ralt:          '\u01e4'
+    shift+ralt, capslock+ralt:          '\u01e4'
+    shift+capslock+ralt:                '\u01e5'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
     ralt:                               '\u01e7'
-    ralt+capslock, shift+ralt:          '\u01e6'
+    shift+ralt, capslock+ralt:          '\u01e6'
+    shift+capslock+ralt:                '\u01e7'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
     ralt:                               '\u021f'
-    ralt+capslock, shift+ralt:          '\u021e'
+    shift+ralt, capslock+ralt:          '\u021e'
+    shift+capslock+ralt:                '\u021f'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
     ralt:                               '\u01e9'
-    ralt+capslock, shift+ralt:          '\u01e8'
+    shift+ralt, capslock+ralt:          '\u01e8'
+    shift+capslock+ralt:                '\u01e9'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u00d6'
     base:                               '\u00f6'
     shift, capslock:                    '\u00d6'
+    shift+capslock:                     '\u00f6'
     ralt:                               '\u00f8'
-    ralt+capslock, shift+ralt:          '\u00d8'
+    shift+ralt, capslock+ralt:          '\u00d8'
+    shift+capslock+ralt:                '\u00f8'
 }
 
 key APOSTROPHE {
     label:                              '\u00c4'
     base:                               '\u00e4'
     shift, capslock:                    '\u00c4'
+    shift+capslock:                     '\u00e4'
     ralt:                               '\u00e6'
-    ralt+capslock, shift+ralt:          '\u00c6'
+    shift+ralt, capslock+ralt:          '\u00c6'
+    shift+capslock+ralt:                '\u00e6'
 }
 
 key BACKSLASH {
@@ -299,53 +333,65 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
     ralt:                               '\u017e'
-    ralt+capslock, shift+ralt:          '\u017d'
+    shift+ralt, capslock+ralt:          '\u017d'
+    shift+capslock+ralt:                '\u017e'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
     ralt:                               '\u010d'
-    ralt+capslock, shift+ralt:          '\u010c'
+    shift+ralt, capslock+ralt:          '\u010c'
+    shift+capslock+ralt:                '\u010d'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
     ralt:                               '\u01ef'
-    ralt+capslock, shift+ralt:          '\u01ee'
+    shift+ralt, capslock+ralt:          '\u01ee'
+    shift+capslock+ralt:                '\u01ef'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
     ralt:                               '\u0292'
-    ralt+capslock, shift+ralt:          '\u01b7'
+    shift+ralt, capslock+ralt:          '\u01b7'
+    shift+capslock+ralt:                '\u0292'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
     ralt:                               '\u014b'
-    ralt+capslock, shift+ralt:          '\u014a'
+    shift+ralt, capslock+ralt:          '\u014a'
+    shift+capslock+ralt:                '\u014b'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
-    ralt, ralt+capslock:                '\u00b5'
+    shift+capslock:                     'm'
+    ralt:                               '\u00b5'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_swiss_french.kcm b/packages/InputDevices/res/raw/keyboard_layout_swiss_french.kcm
index 9e20462..6476793 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_swiss_french.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_swiss_french.kcm
@@ -119,18 +119,21 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -138,42 +141,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Z {
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -196,54 +206,63 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
@@ -279,42 +298,49 @@
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_swiss_german.kcm b/packages/InputDevices/res/raw/keyboard_layout_swiss_german.kcm
index 7fbd1a9..9d6f367 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_swiss_german.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_swiss_german.kcm
@@ -119,18 +119,21 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
 }
 
 key W {
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -138,42 +141,49 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Z {
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               'i'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
@@ -198,54 +208,63 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
 }
 
 key D {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
@@ -285,42 +304,49 @@
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key COMMA {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_turkish.kcm b/packages/InputDevices/res/raw/keyboard_layout_turkish.kcm
index e193d34..2a8fcef 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_turkish.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_turkish.kcm
@@ -124,6 +124,7 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '@'
 }
 
@@ -131,12 +132,14 @@
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
 }
 
 key E {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -144,50 +147,59 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key T {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
 }
 
 key Y {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
 }
 
 key U {
     label:                              'U'
     base:                               'u'
     shift, capslock:                    'U'
+    shift+capslock:                     'u'
 }
 
 key I {
     label:                              'I'
     base:                               '\u0131'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
     ralt:                               'i'
-    ralt+shift, ralt+capslock:          '\u0130'
+    shift+ralt, capslock+ralt:          '\u0130'
+    shift+capslock+ralt:                'i'
 }
 
 key O {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u011e'
     base:                               '\u011f'
     shift, capslock:                    '\u011e'
+    shift+capslock:                     '\u011f'
     ralt:                               '\u0308'
 }
 
@@ -195,6 +207,7 @@
     label:                              '\u00dc'
     base:                               '\u00fc'
     shift, capslock:                    '\u00dc'
+    shift+capslock:                     '\u00fc'
     ralt:                               '\u0303'
 }
 
@@ -204,14 +217,17 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
     ralt:                               '\u00e6'
-    ralt+shift, ralt+capslock:          '\u00c6'
+    shift+ralt, capslock+ralt:          '\u00c6'
+    shift+capslock+ralt:                '\u00e6'
 }
 
 key S {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u00df'
 }
 
@@ -219,48 +235,56 @@
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
 }
 
 key F {
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
 }
 
 key G {
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key H {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
 }
 
 key J {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
 }
 
 key K {
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              '\u015e'
     base:                               '\u015f'
     shift, capslock:                    '\u015e'
+    shift+capslock:                     '\u015f'
     ralt:                               '\u0301'
 }
 
@@ -268,6 +292,7 @@
     label:                              '\u0130'
     base:                               'i'
     shift, capslock:                    '\u0130'
+    shift+capslock:                     'i'
 }
 
 key COMMA {
@@ -290,54 +315,63 @@
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key X {
     label:                              'X'
     base:                               'x'
     shift, capslock:                    'X'
+    shift+capslock:                     'x'
 }
 
 key C {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key V {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
 }
 
 key B {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
 }
 
 key N {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key M {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key EQUALS {
     label:                              '\u00d6'
     base:                               '\u00f6'
     shift, capslock:                    '\u00d6'
+    shift+capslock:                     '\u00f6'
 }
 
 key BACKSLASH {
     label:                              '\u00c7'
     base:                               '\u00e7'
     shift, capslock:                    '\u00c7'
+    shift+capslock:                     '\u00e7'
 }
 
 key PERIOD {
diff --git a/packages/InputDevices/res/raw/keyboard_layout_turkish_f.kcm b/packages/InputDevices/res/raw/keyboard_layout_turkish_f.kcm
index 5b96da0..b27f6fa 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_turkish_f.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_turkish_f.kcm
@@ -125,6 +125,7 @@
     label:                              'F'
     base:                               'f'
     shift, capslock:                    'F'
+    shift+capslock:                     'f'
     ralt:                               '@'
 }
 
@@ -132,32 +133,38 @@
     label:                              'G'
     base:                               'g'
     shift, capslock:                    'G'
+    shift+capslock:                     'g'
 }
 
 key E {
     label:                              '\u011f'
     base:                               '\u011f'
     shift, capslock:                    '\u011e'
+    shift+capslock:                     '\u011f'
 }
 
 key R {
     label:                              '\u0131'
     base:                               '\u0131'
     shift, capslock:                    'I'
+    shift+capslock:                     'i'
     ralt:                               '\u00b6'
-    ralt+shift, ralt+capslock:          '\u00ae'
+    shift+ralt, capslock+ralt:          '\u00ae'
+    shift+capslock+ralt:                '\u00b6'
 }
 
 key T {
     label:                              'O'
     base:                               'o'
     shift, capslock:                    'O'
+    shift+capslock:                     'o'
 }
 
 key Y {
     label:                              'D'
     base:                               'd'
     shift, capslock:                    'D'
+    shift+capslock:                     'd'
     ralt:                               '\u00a5'
 }
 
@@ -165,26 +172,31 @@
     label:                              'R'
     base:                               'r'
     shift, capslock:                    'R'
+    shift+capslock:                     'r'
 }
 
 key I {
     label:                              'N'
     base:                               'n'
     shift, capslock:                    'N'
+    shift+capslock:                     'n'
 }
 
 key O {
     label:                              'H'
     base:                               'h'
     shift, capslock:                    'H'
+    shift+capslock:                     'h'
     ralt:                               '\u00f8'
-    ralt+shift, ralt+capslock:          '\u00d8'
+    shift+ralt, capslock+ralt:          '\u00d8'
+    shift+capslock+ralt:                '\u00f8'
 }
 
 key P {
     label:                              'P'
     base:                               'p'
     shift, capslock:                    'P'
+    shift+capslock:                     'p'
     ralt:                               '\u00a3'
 }
 
@@ -192,6 +204,7 @@
     label:                              'Q'
     base:                               'q'
     shift, capslock:                    'Q'
+    shift+capslock:                     'q'
     ralt:                               '"'
 }
 
@@ -199,6 +212,7 @@
     label:                              'W'
     base:                               'w'
     shift, capslock:                    'W'
+    shift+capslock:                     'w'
     ralt:                               '~'
 }
 
@@ -208,22 +222,27 @@
     label:                              '\u0075'
     base:                               '\u0075'
     shift, capslock:                    '\u0055'
+    shift+capslock:                     '\u0075'
     ralt:                               '\u00e6'
-    ralt+shift, ralt+capslock:          '\u00c6'
+    shift+ralt, capslock+ralt:          '\u00c6'
+    shift+capslock+ralt:                '\u00e6'
 }
 
 key S {
     label:                              'i'
     base:                               'i'
     shift, capslock:                    '\u0130'
+    shift+capslock:                     'i'
     ralt:                               '\u00df'
-    ralt+shift, ralt+capslock:          '\u00a7'
+    shift+ralt, capslock+ralt:          '\u00a7'
+    shift+capslock+ralt:                '\u00df'
 }
 
 key D {
     label:                              'E'
     base:                               'e'
     shift, capslock:                    'E'
+    shift+capslock:                     'e'
     ralt:                               '\u20ac'
 }
 
@@ -231,6 +250,7 @@
     label:                              'A'
     base:                               'a'
     shift, capslock:                    'A'
+    shift+capslock:                     'a'
     ralt:                               '\u00aa'
 }
 
@@ -238,12 +258,14 @@
     label:                              '\u00fc'
     base:                               '\u00fc'
     shift, capslock:                    '\u00dc'
+    shift+capslock:                     '\u00fc'
 }
 
 key H {
     label:                              'T'
     base:                               't'
     shift, capslock:                    'T'
+    shift+capslock:                     't'
     ralt:                               '\u20ba'
 }
 
@@ -251,24 +273,28 @@
     label:                              'K'
     base:                               'k'
     shift, capslock:                    'K'
+    shift+capslock:                     'k'
 }
 
 key K {
     label:                              'M'
     base:                               'm'
     shift, capslock:                    'M'
+    shift+capslock:                     'm'
 }
 
 key L {
     label:                              'L'
     base:                               'l'
     shift, capslock:                    'L'
+    shift+capslock:                     'l'
 }
 
 key SEMICOLON {
     label:                              'Y'
     base:                               'y'
     shift, capslock:                    'Y'
+    shift+capslock:                     'y'
     ralt:                               '\u00b4'
 }
 
@@ -276,6 +302,7 @@
     label:                              '\u015f'
     base:                               '\u015f'
     shift, capslock:                    '\u015e'
+    shift+capslock:                     '\u015f'
 }
 
 key COMMA {
@@ -292,63 +319,76 @@
     base:                               '<'
     shift:                              '>'
     ralt:                               '|'
-    ralt+shift, ralt+capslock:          '\u00a6'
+    shift+ralt, capslock+ralt:          '\u00a6'
+    shift+capslock+ralt:                '|'
 }
 
 key Z {
     label:                              'J'
     base:                               'j'
     shift, capslock:                    'J'
+    shift+capslock:                     'j'
     ralt:                               '\u00ab'
-    ralt+shift, ralt+capslock:          '<'
+    shift+ralt, capslock+ralt:          '<'
+    shift+capslock+ralt:                '\u00ab'
 }
 
 key X {
     label:                              '\u00f6'
     base:                               '\u00f6'
     shift, capslock:                    '\u00d6'
+    shift+capslock:                     '\u00f6'
     ralt:                               '\u00bb'
-    ralt+shift, ralt+capslock:          '>'
+    shift+ralt, capslock+ralt:          '>'
+    shift+capslock+ralt:                '\u00bb'
 }
 
 key C {
     label:                              'V'
     base:                               'v'
     shift, capslock:                    'V'
+    shift+capslock:                     'v'
     ralt:                               '\u00a2'
-    ralt+shift, ralt+capslock:          '\u00a9'
+    shift+ralt, capslock+ralt:          '\u00a9'
+    shift+capslock+ralt:                '\u00a2'
 }
 
 key V {
     label:                              'C'
     base:                               'c'
     shift, capslock:                    'C'
+    shift+capslock:                     'c'
 }
 
 key B {
     label:                              '\u00e7'
     base:                               '\u00e7'
     shift, capslock:                    '\u00c7'
+    shift+capslock:                     '\u00e7'
 }
 
 key N {
     label:                              'Z'
     base:                               'z'
     shift, capslock:                    'Z'
+    shift+capslock:                     'z'
 }
 
 key M {
     label:                              'S'
     base:                               's'
     shift, capslock:                    'S'
+    shift+capslock:                     's'
     ralt:                               '\u00b5'
-    ralt+shift, ralt+capslock:          '\u00ba'
+    shift+ralt, capslock+ralt:          '\u00ba'
+    shift+capslock+ralt:                '\u00b5'
 }
 
 key EQUALS {
     label:                              'B'
     base:                               'b'
     shift, capslock:                    'B'
+    shift+capslock:                     'b'
     ralt:                               '\u00d7'
 }
 
@@ -356,6 +396,7 @@
     label:                              '.'
     base:                               '.'
     shift, capslock:                    ':'
+    shift+capslock:                     ':'
     ralt:                               '\u00f7'
 }
 
diff --git a/packages/InputDevices/res/raw/keyboard_layout_ukrainian.kcm b/packages/InputDevices/res/raw/keyboard_layout_ukrainian.kcm
index a802460..1346bbb 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_ukrainian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_ukrainian.kcm
@@ -28,6 +28,7 @@
     label:                              '\u0401'
     base:                               '\u0451'
     shift, capslock:                    '\u0401'
+    shift+capslock:                     '\u0451'
     ralt:                               '`'
     ralt+shift:                         '~'
 }
@@ -124,86 +125,107 @@
     label:                              '\u0419'
     base:                               '\u0439'
     shift, capslock:                    '\u0419'
+    shift+capslock:                     '\u0439'
     ralt:                               'q'
-    ralt+shift, ralt+capslock:          'Q'
+    shift+ralt, capslock+ralt:          'Q'
+    shift+capslock+ralt:                'q'
 }
 
 key W {
     label:                              '\u0426'
     base:                               '\u0446'
     shift, capslock:                    '\u0426'
+    shift+capslock:                     '\u0446'
     ralt:                               'w'
-    ralt+shift, ralt+capslock:          'W'
+    shift+ralt, capslock+ralt:          'W'
+    shift+capslock+ralt:                'w'
 }
 
 key E {
     label:                              '\u0423'
     base:                               '\u0443'
     shift, capslock:                    '\u0423'
+    shift+capslock:                     '\u0443'
     ralt:                               'e'
-    ralt+shift, ralt+capslock:          'E'
+    shift+ralt, capslock+ralt:          'E'
+    shift+capslock+ralt:                'e'
 }
 
 key R {
     label:                              '\u041a'
     base:                               '\u043a'
     shift, capslock:                    '\u041a'
+    shift+capslock:                     '\u043a'
     ralt:                               'r'
-    ralt+shift, ralt+capslock:          'R'
+    shift+ralt, capslock+ralt:          'R'
+    shift+capslock+ralt:                'r'
 }
 
 key T {
     label:                              '\u0415'
     base:                               '\u0435'
     shift, capslock:                    '\u0415'
+    shift+capslock:                     '\u0435'
     ralt:                               't'
-    ralt+shift, ralt+capslock:          'T'
+    shift+ralt, capslock+ralt:          'T'
+    shift+capslock+ralt:                't'
 }
 
 key Y {
     label:                              '\u041d'
     base:                               '\u043d'
     shift, capslock:                    '\u041d'
+    shift+capslock:                     '\u043d'
     ralt:                               'y'
-    ralt+shift, ralt+capslock:          'Y'
+    shift+ralt, capslock+ralt:          'Y'
+    shift+capslock+ralt:                'y'
 }
 
 key U {
     label:                              '\u0413'
     base:                               '\u0433'
     shift, capslock:                    '\u0413'
+    shift+capslock:                     '\u0433'
     ralt:                               'u'
-    ralt+shift, ralt+capslock:          'U'
+    shift+ralt, capslock+ralt:          'U'
+    shift+capslock+ralt:                'u'
 }
 
 key I {
     label:                              '\u0428'
     base:                               '\u0448'
     shift, capslock:                    '\u0428'
+    shift+capslock:                     '\u0448'
     ralt:                               'i'
-    ralt+shift, ralt+capslock:          'I'
+    shift+ralt, capslock+ralt:          'I'
+    shift+capslock+ralt:                'i'
 }
 
 key O {
     label:                              '\u0429'
     base:                               '\u0449'
     shift, capslock:                    '\u0429'
+    shift+capslock:                     '\u0449'
     ralt:                               'o'
-    ralt+shift, ralt+capslock:          'O'
+    shift+ralt, capslock+ralt:          'O'
+    shift+capslock+ralt:                'o'
 }
 
 key P {
     label:                              '\u0417'
     base:                               '\u0437'
     shift, capslock:                    '\u0417'
+    shift+capslock:                     '\u0437'
     ralt:                               'p'
-    ralt+shift, ralt+capslock:          'P'
+    shift+ralt, capslock+ralt:          'P'
+    shift+capslock+ralt:                'p'
 }
 
 key LEFT_BRACKET {
     label:                              '\u0425'
     base:                               '\u0445'
     shift, capslock:                    '\u0425'
+    shift+capslock:                     '\u0445'
     ralt:                               '['
     ralt+shift:                         '{'
 }
@@ -212,6 +234,7 @@
     label:                              '\u0407'
     base:                               '\u0457'
     shift, capslock:                    '\u0407'
+    shift+capslock:                     '\u0457'
     ralt:                               ']'
     ralt+shift:                         '}'
 }
@@ -222,78 +245,97 @@
     label:                              '\u0424'
     base:                               '\u0444'
     shift, capslock:                    '\u0424'
+    shift+capslock:                     '\u0444'
     ralt:                               'a'
-    ralt+shift, ralt+capslock:          'A'
+    shift+ralt, capslock+ralt:          'A'
+    shift+capslock+ralt:                'a'
 }
 
 key S {
     label:                              '\u0406'
     base:                               '\u0456'
     shift, capslock:                    '\u0406'
+    shift+capslock:                     '\u0456'
     ralt:                               's'
-    ralt+shift, ralt+capslock:          'S'
+    shift+ralt, capslock+ralt:          'S'
+    shift+capslock+ralt:                's'
 }
 
 key D {
     label:                              '\u0412'
     base:                               '\u0432'
     shift, capslock:                    '\u0412'
+    shift+capslock:                     '\u0432'
     ralt:                               'd'
-    ralt+shift, ralt+capslock:          'D'
+    shift+ralt, capslock+ralt:          'D'
+    shift+capslock+ralt:                'd'
 }
 
 key F {
     label:                              '\u0410'
     base:                               '\u0430'
     shift, capslock:                    '\u0410'
+    shift+capslock:                     '\u0430'
     ralt:                               'f'
-    ralt+shift, ralt+capslock:          'F'
+    shift+ralt, capslock+ralt:          'F'
+    shift+capslock+ralt:                'f'
 }
 
 key G {
     label:                              '\u041f'
     base:                               '\u043f'
     shift, capslock:                    '\u041f'
+    shift+capslock:                     '\u043f'
     ralt:                               'g'
-    ralt+shift, ralt+capslock:          'G'
+    shift+ralt, capslock+ralt:          'G'
+    shift+capslock+ralt:                'g'
 }
 
 key H {
     label:                              '\u0420'
     base:                               '\u0440'
     shift, capslock:                    '\u0420'
+    shift+capslock:                     '\u0440'
     ralt:                               'h'
-    ralt+shift, ralt+capslock:          'H'
+    shift+ralt, capslock+ralt:          'H'
+    shift+capslock+ralt:                'h'
 }
 
 key J {
     label:                              '\u041e'
     base:                               '\u043e'
     shift, capslock:                    '\u041e'
+    shift+capslock:                     '\u043e'
     ralt:                               'j'
-    ralt+shift, ralt+capslock:          'J'
+    shift+ralt, capslock+ralt:          'J'
+    shift+capslock+ralt:                'j'
 }
 
 key K {
     label:                              '\u041b'
     base:                               '\u043b'
     shift, capslock:                    '\u041b'
+    shift+capslock:                     '\u043b'
     ralt:                               'k'
-    ralt+shift, ralt+capslock:          'K'
+    shift+ralt, capslock+ralt:          'K'
+    shift+capslock+ralt:                'k'
 }
 
 key L {
     label:                              '\u0414'
     base:                               '\u0434'
     shift, capslock:                    '\u0414'
+    shift+capslock:                     '\u0434'
     ralt:                               'l'
-    ralt+shift, ralt+capslock:          'L'
+    shift+ralt, capslock+ralt:          'L'
+    shift+capslock+ralt:                'l'
 }
 
 key SEMICOLON {
     label:                              '\u0416'
     base:                               '\u0436'
     shift, capslock:                    '\u0416'
+    shift+capslock:                     '\u0436'
     ralt:                               ';'
     ralt+shift:                         ':'
 }
@@ -302,6 +344,7 @@
     label:                              '\u0404'
     base:                               '\u0454'
     shift, capslock:                    '\u0404'
+    shift+capslock:                     '\u0454'
     ralt:                               '\''
     ralt+shift:                         '"'
 }
@@ -319,6 +362,7 @@
     label:                              '\u0490'
     base:                               '\u0491'
     shift, capslock:                    '\u0490'
+    shift+capslock:                     '\u0491'
     ralt:                               '\\'
     ralt+shift:                         '|'
 }
@@ -327,62 +371,77 @@
     label:                              '\u042f'
     base:                               '\u044f'
     shift, capslock:                    '\u042f'
+    shift+capslock:                     '\u044f'
     ralt:                               'z'
-    ralt+shift, ralt+capslock:          'Z'
+    shift+ralt, capslock+ralt:          'Z'
+    shift+capslock+ralt:                'z'
 }
 
 key X {
     label:                              '\u0427'
     base:                               '\u0447'
     shift, capslock:                    '\u0427'
+    shift+capslock:                     '\u0447'
     ralt:                               'x'
-    ralt+shift, ralt+capslock:          'X'
+    shift+ralt, capslock+ralt:          'X'
+    shift+capslock+ralt:                'x'
 }
 
 key C {
     label:                              '\u0421'
     base:                               '\u0441'
     shift, capslock:                    '\u0421'
+    shift+capslock:                     '\u0441'
     ralt:                               'c'
-    ralt+shift, ralt+capslock:          'C'
+    shift+ralt, capslock+ralt:          'C'
+    shift+capslock+ralt:                'c'
 }
 
 key V {
     label:                              '\u041c'
     base:                               '\u043c'
     shift, capslock:                    '\u041c'
+    shift+capslock:                     '\u043c'
     ralt:                               'v'
-    ralt+shift, ralt+capslock:          'V'
+    shift+ralt, capslock+ralt:          'V'
+    shift+capslock+ralt:                'v'
 }
 
 key B {
     label:                              '\u0418'
     base:                               '\u0438'
     shift, capslock:                    '\u0418'
+    shift+capslock:                     '\u0438'
     ralt:                               'b'
-    ralt+shift, ralt+capslock:          'B'
+    shift+ralt, capslock+ralt:          'B'
+    shift+capslock+ralt:                'b'
 }
 
 key N {
     label:                              '\u0422'
     base:                               '\u0442'
     shift, capslock:                    '\u0422'
+    shift+capslock:                     '\u0442'
     ralt:                               'n'
-    ralt+shift, ralt+capslock:          'N'
+    shift+ralt, capslock+ralt:          'N'
+    shift+capslock+ralt:                'n'
 }
 
 key M {
     label:                              '\u042c'
     base:                               '\u044c'
     shift, capslock:                    '\u042c'
+    shift+capslock:                     '\u044c'
     ralt:                               'm'
-    ralt+shift, ralt+capslock:          'M'
+    shift+ralt, capslock+ralt:          'M'
+    shift+capslock+ralt:                'm'
 }
 
 key COMMA {
     label:                              '\u0411'
     base:                               '\u0431'
     shift, capslock:                    '\u0411'
+    shift+capslock:                     '\u0431'
     ralt:                               ','
     ralt+shift:                         '<'
 }
@@ -391,6 +450,7 @@
     label:                              '\u042e'
     base:                               '\u044e'
     shift, capslock:                    '\u042e'
+    shift+capslock:                     '\u044e'
     ralt:                               '.'
     ralt+shift:                         '>'
 }