[hackers] [PATCH 09/24] Added a second key label for the shift-activated symbols

From: Maarten van Gompel <proycon_AT_anaproy.nl>
Date: Fri, 19 Mar 2021 21:39:18 +0100

---
 config.def.h         |   8 +-
 layout.mobile-intl.h | 843 +++++++++++++++++++++----------------------
 svkbd.c              |  37 +-
 3 files changed, 459 insertions(+), 429 deletions(-)
diff --git a/config.def.h b/config.def.h
index 44fcd5c..91e51dd 100644
--- a/config.def.h
+++ b/config.def.h
_AT_@ -10,8 +10,14 @@ static const char *fonts[] = {
 static const char *colors[SchemeLast][2] = {
 	/*     fg         bg       */
 	[SchemeNorm] = { "#bbbbbb", "#132a33" },
+	[SchemeNormShift] = { "#008ac0", "#132a33" },
 	[SchemeNormABC] = { "#ffffff", "#14313d" },
-	[SchemePress] = { "#ffffff", "#000000" },
+	[SchemeNormABCShift] = { "#008ac0", "#14313d" },
+	[SchemePress] = { "#ffffff", "#259937" },
+	[SchemePressShift] = { "#00c001", "#259937" },
 	[SchemeHighlight] = { "#58a7c6", "#005577" },
+	[SchemeHighlightShift] = { "#008ac0", "#005577" },
 	[SchemeOverlay] = { "#ffffff", "#2b3313" },
+	[SchemeOverlayShift] = { "#008ac0", "#2b3313" },
 };
+
diff --git a/layout.mobile-intl.h b/layout.mobile-intl.h
index c196b88..7f162e9 100644
--- a/layout.mobile-intl.h
+++ b/layout.mobile-intl.h
_AT_@ -1,550 +1,549 @@
 #define KEYS 55
 
 static Key keys_en[KEYS] = {
-        { "Esc", XK_Escape, 1 },
-		{ "1!", XK_1, 1 },
-		{ "2_AT_", XK_2, 1 },
-		{ "3#", XK_3, 1 },
-		{ "4$", XK_4, 1 },
-		{ "5%", XK_5, 1 },
-		{ "6^", XK_6, 1 },
-		{ "7&", XK_7, 1 },
-		{ "8*", XK_8, 1 },
-		{ "9(", XK_9, 1 },
-		{ "0)", XK_0, 1 },
+        { "Esc", "", XK_Escape, 1 },
+		{ "1", "!", XK_1, 1 },
+		{ "2", "_AT_", XK_2, 1 },
+		{ "3", "#", XK_3, 1 },
+		{ "4", "$", XK_4, 1 },
+		{ "5", "%", XK_5, 1 },
+		{ "6", "^", XK_6, 1 },
+		{ "7", "&", XK_7, 1 },
+		{ "8", "*", XK_8, 1 },
+		{ "9", "(", XK_9, 1 },
+		{ "0", ")", XK_0, 1 },
 
         { 0 }, /* New row */
 
-        { 0, XK_q, 1 },
-        { 0, XK_w, 1 },
-        { 0, XK_e, 1 },
-        { 0, XK_r, 1 },
-        { 0, XK_t, 1 },
-        { 0, XK_y, 1 },
-        { 0, XK_u, 1 },
-        { 0, XK_i, 1 },
-        { 0, XK_o, 1 },
-        { 0, XK_p, 1 },
-        { "'\"", XK_apostrophe, 1 },
+        { 0, 0, XK_q, 1 },
+        { 0, 0, XK_w, 1 },
+        { 0, 0, XK_e, 1 },
+        { 0, 0, XK_r, 1 },
+        { 0, 0, XK_t, 1 },
+        { 0, 0, XK_y, 1 },
+        { 0, 0, XK_u, 1 },
+        { 0, 0, XK_i, 1 },
+        { 0, 0, XK_o, 1 },
+        { 0, 0, XK_p, 1 },
+        { "'", "\"", XK_apostrophe, 1 },
 
         { 0 }, /* New row */
 
-        { 0, XK_a, 1 },
-        { 0, XK_s, 1 },
-        { 0, XK_d, 1 },
-        { 0, XK_f, 1 },
-        { 0, XK_g, 1 },
-        { 0, XK_h, 1 },
-        { 0, XK_j, 1 },
-        { 0, XK_k, 1 },
-        { 0, XK_l, 1 },
-        { "/?", XK_slash, 1 },
-        { "Tab", XK_Tab, 1 },
+        { 0, 0, XK_a, 1 },
+        { 0, 0, XK_s, 1 },
+        { 0, 0, XK_d, 1 },
+        { 0, 0, XK_f, 1 },
+        { 0, 0, XK_g, 1 },
+        { 0, 0, XK_h, 1 },
+        { 0, 0, XK_j, 1 },
+        { 0, 0, XK_k, 1 },
+        { 0, 0, XK_l, 1 },
+        { "/", "?", XK_slash, 1 },
+        { "Tab", 0, XK_Tab, 1 },
 
         { 0 }, /* New row */
 
-        { 0, XK_z, 1 },
-        { 0, XK_x, 1 },
-        { 0, XK_c, 1 },
-        { 0, XK_v, 1 },
-        { 0, XK_b, 1 },
-        { 0, XK_n, 1 },
-        { 0, XK_m, 1 },
-        { ",<", XK_comma, 1 },
-        { ".>", XK_period, 1 },
-        { "⌫Bksp", XK_BackSpace, 2 },
+        { 0, 0, XK_z, 1 },
+        { 0, 0, XK_x, 1 },
+        { 0, 0, XK_c, 1 },
+        { 0, 0, XK_v, 1 },
+        { 0, 0, XK_b, 1 },
+        { 0, 0, XK_n, 1 },
+        { 0, 0, XK_m, 1 },
+        { ",", "<", XK_comma, 1 },
+        { ".", ">", XK_period, 1 },
+        { "⌫Bksp", 0, XK_BackSpace, 2 },
 
         { 0 }, /* New row */
-        { "↺", XK_Cancel, 1},
-        { "Shift", XK_Shift_L, 2 },
-        { "Ctrl", XK_Control_L, 1 },
-        { "Alt", XK_Alt_L, 1 },
-        { "", XK_space, 2 },
-        { "↓", XK_Down, 1 },
-        { "↑", XK_Up, 1 },
-        { "↲ Enter", XK_Return, 2 },
+        { "↺", 0, XK_Cancel, 1},
+        { "Shift", 0, XK_Shift_L, 2 },
+        { "Ctrl", 0, XK_Control_L, 1 },
+        { "Alt", 0, XK_Alt_L, 1 },
+        { "", 0, XK_space, 2 },
+        { "↓", 0, XK_Down, 1 },
+        { "↑", 0, XK_Up, 1 },
+        { "↲ Enter", 0, XK_Return, 2 },
 };
 
 #define OVERLAYS 197
 static Key overlay[OVERLAYS] = {
-        { 0, XK_a }, //Overlay for a
-        //---
-        { "à", XK_agrave },
-        { "á", XK_aacute },
-        { "â", XK_acircumflex },
-        { "ä", XK_adiaeresis },
-        { "ą", XK_aogonek },
-        { "ã", XK_atilde },
-        { "ā", XK_amacron },
-        { "ă", XK_abreve },
-        { "å", XK_aring },
-        { "æ", XK_ae },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { 0, 0, XK_a }, //Overlay for a
+        //---
+        { "à", 0, XK_agrave },
+        { "á", 0, XK_aacute },
+        { "â", 0, XK_acircumflex },
+        { "ä", 0, XK_adiaeresis },
+        { "ą", 0, XK_aogonek },
+        { "ã", 0, XK_atilde },
+        { "ā", 0, XK_amacron },
+        { "ă", 0, XK_abreve },
+        { "å", 0, XK_aring },
+        { "æ", 0, XK_ae },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //--
-        { 0, XK_e }, //Overlay for e (first item after boundary defines the trigger)
-        //---
-        { "è", XK_egrave },
-        { "é", XK_eacute },
-        { "ê", XK_ecircumflex },
-        { "ë", XK_ediaeresis },
-        { "ę", XK_eogonek },
-        { "ē", XK_emacron },
-        { "ė", XK_eabovedot },
-        { 0, XK_Cancel },
+        { 0, 0, XK_e }, //Overlay for e (first item after boundary defines the trigger)
+        //---
+        { "è", 0, XK_egrave },
+        { "é", 0, XK_eacute },
+        { "ê", 0, XK_ecircumflex },
+        { "ë", 0, XK_ediaeresis },
+        { "ę", 0, XK_eogonek },
+        { "ē", 0, XK_emacron },
+        { "ė", 0, XK_eabovedot },
+        { 0, 0, XK_Cancel },
         //--
-        { 0, XK_y }, //New overlay
+        { 0, 0, XK_y }, //New overlay
         //---
-        { "ỳ", XK_ygrave },
-        { "ý", XK_yacute },
-        { "ŷ", XK_ycircumflex },
-        { "ÿ", XK_ydiaeresis },
-        { 0, XK_Cancel },
+        { "ỳ", 0, XK_ygrave },
+        { "ý", 0, XK_yacute },
+        { "ŷ", 0, XK_ycircumflex },
+        { "ÿ", 0, XK_ydiaeresis },
+        { 0, 0, XK_Cancel },
         //--
-        { 0, XK_u }, //New overlay
-        //---
-        { "ù", XK_ugrave },
-        { "ú", XK_uacute },
-        { "û", XK_ucircumflex },
-        { "ü", XK_udiaeresis },
-        { "ų", XK_uogonek },
-        { "ū", XK_umacron },
-        { "ů", XK_uring},
-        { "ŭ", XK_ubreve},
-        { "ű", XK_udoubleacute },
-        { 0, XK_Cancel },
+        { 0, 0, XK_u }, //New overlay
+        //---
+        { "ù", 0, XK_ugrave },
+        { "ú", 0, XK_uacute },
+        { "û", 0, XK_ucircumflex },
+        { "ü", 0, XK_udiaeresis },
+        { "ų", 0, XK_uogonek },
+        { "ū", 0, XK_umacron },
+        { "ů", 0, XK_uring},
+        { "ŭ", 0, XK_ubreve},
+        { "ű", 0, XK_udoubleacute },
+        { 0, 0, XK_Cancel },
         //--
-        { 0, XK_i }, //New overlay
-        //---
-        { "ì", XK_igrave },
-        { "í", XK_iacute },
-        { "î", XK_icircumflex },
-        { "ï", XK_idiaeresis },
-        { "į", XK_iogonek },
-        { "ī", XK_imacron },
-        { "ı", XK_idotless },
-        { 0, XK_Cancel },
+        { 0, 0, XK_i }, //New overlay
+        //---
+        { "ì", 0, XK_igrave },
+        { "í", 0, XK_iacute },
+        { "î", 0, XK_icircumflex },
+        { "ï", 0, XK_idiaeresis },
+        { "į", 0, XK_iogonek },
+        { "ī", 0, XK_imacron },
+        { "ı", 0, XK_idotless },
+        { 0, 0, XK_Cancel },
         //--
-        { 0, XK_o }, //New overlay
-        //---
-        { "ò", XK_ograve },
-        { "ó", XK_oacute },
-        { "ô", XK_ocircumflex },
-        { "ö", XK_odiaeresis },
-        { "ǫ", XK_ogonek },
-        { "õ", XK_otilde },
-        { "ō", XK_omacron },
-        { "ø", XK_oslash },
-        { "ő", XK_odoubleacute },
-        { "œ", XK_oe },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { 0, 0, XK_o }, //New overlay
+        //---
+        { "ò", 0, XK_ograve },
+        { "ó", 0, XK_oacute },
+        { "ô", 0, XK_ocircumflex },
+        { "ö", 0, XK_odiaeresis },
+        { "ǫ", 0, XK_ogonek },
+        { "õ", 0, XK_otilde },
+        { "ō", 0, XK_omacron },
+        { "ø", 0, XK_oslash },
+        { "ő", 0, XK_odoubleacute },
+        { "œ", 0, XK_oe },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //--
-        { 0, XK_d }, //New overlay
+        { 0, 0, XK_d }, //New overlay
         //---
-        { "ď", XK_dcaron },
-        { "ð", XK_eth },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ď", 0, XK_dcaron },
+        { "ð", 0, XK_eth },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //--
-        { 0, XK_c }, //New overlay
+        { 0, 0, XK_c }, //New overlay
         //---
-        { "ç", XK_ccedilla },
-        { "ĉ", XK_ccircumflex },
-        { "č", XK_ccaron },
-        { "ć", XK_cacute },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ç", 0, XK_ccedilla },
+        { "ĉ", 0, XK_ccircumflex },
+        { "č", 0, XK_ccaron },
+        { "ć", 0, XK_cacute },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //--
-        { 0, XK_s }, //New overlay
+        { 0, 0, XK_s }, //New overlay
         //---
-        { "ş", XK_scedilla },
-        { "ŝ", XK_scircumflex },
-        { "š", XK_scaron },
-        { "ś", XK_sacute },
-        { "ß", XK_ssharp },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ş", 0, XK_scedilla },
+        { "ŝ", 0, XK_scircumflex },
+        { "š", 0, XK_scaron },
+        { "ś", 0, XK_sacute },
+        { "ß", 0, XK_ssharp },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //---
-        { 0, XK_z }, //New overlay
+        { 0, 0, XK_z }, //New overlay
         //---
-        { "ž", XK_zcaron },
-        { "ż", XK_zabovedot },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ž", 0, XK_zcaron },
+        { "ż", 0, XK_zabovedot },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //--
-        { 0, XK_n }, //New overlay
+        { 0, 0, XK_n }, //New overlay
         //---
-        { "ñ", XK_ntilde },
-        { "ń", XK_nacute },
-        { "ň", XK_ncaron },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ñ", 0, XK_ntilde },
+        { "ń", 0, XK_nacute },
+        { "ň", 0, XK_ncaron },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //
-        { 0, XK_t }, //New overlay
+        { 0, 0, XK_t }, //New overlay
         //---
-        { "ț", XK_tcedilla },
-        { "ť", XK_tcaron },
-        { "þ", XK_thorn },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ț", 0, XK_tcedilla },
+        { "ť", 0, XK_tcaron },
+        { "þ", 0, XK_thorn },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //----
-        { 0, XK_g }, //New overlay
+        { 0, 0, XK_g }, //New overlay
         //---
-        { "ĝ", XK_gcircumflex },
-        { "ğ", XK_gbreve },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ĝ", 0, XK_gcircumflex },
+        { "ğ", 0, XK_gbreve },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //
-        { 0, XK_h }, //New overlay
+        { 0, 0, XK_h }, //New overlay
         //---
-        { "ĥ", XK_hcircumflex },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ĥ", 0, XK_hcircumflex },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //
-        { 0, XK_j }, //New overlay
+        { 0, 0, XK_j }, //New overlay
         //---
-        { "ĵ", XK_jcircumflex },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ĵ", 0, XK_jcircumflex },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //--
-        { 0, XK_l }, //New overlay
+        { 0, 0, XK_l }, //New overlay
         //---
-        { "ł", XK_lstroke },
-        { "ľ", XK_lcaron },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ł", 0, XK_lstroke },
+        { "ľ", 0, XK_lcaron },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //--
-        { 0, XK_r }, //New overlay
+        { 0, 0, XK_r }, //New overlay
         //---
-        { "ř", XK_rcaron },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ř", 0, XK_rcaron },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //---
-        { 0, XK_Cyrillic_softsign }, //New overlay
+        { 0, 0, XK_Cyrillic_softsign }, //New overlay
         //---
-        { "ъ", XK_Cyrillic_hardsign },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ъ", 0, XK_Cyrillic_hardsign },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //---
-        { 0, XK_Cyrillic_ie }, //New overlay
+        { 0, 0, XK_Cyrillic_ie }, //New overlay
         //---
-        { "ё", XK_Cyrillic_io },
-        { "э", XK_Cyrillic_e },
-        { "Є", XK_Ukrainian_ie },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ё", 0, XK_Cyrillic_io },
+        { "э", 0, XK_Cyrillic_e },
+        { "Є", 0, XK_Ukrainian_ie },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //---
-        { 0, XK_Cyrillic_i }, //New overlay
+        { 0, 0, XK_Cyrillic_i }, //New overlay
         //---
-        { "і", XK_Ukrainian_i },
-        { "ї", XK_Ukrainian_yi },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "і", 0, XK_Ukrainian_i },
+        { "ї", 0, XK_Ukrainian_yi },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //---
-        { 0, XK_Cyrillic_u }, //New overlay
+        { 0, 0, XK_Cyrillic_u }, //New overlay
         //---
-        { "ў", XK_Byelorussian_shortu },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ў", 0, XK_Byelorussian_shortu },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
 		//---
-        { 0, XK_Cyrillic_shorti }, //New overlay
+        { 0, 0, XK_Cyrillic_shorti }, //New overlay
         //---
-        { "ј", XK_Cyrillic_je },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ј", 0, XK_Cyrillic_je },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
 		//---
-        { 0, XK_Cyrillic_el }, //New overlay
+        { 0, 0, XK_Cyrillic_el }, //New overlay
         //---
-        { "љ", XK_Cyrillic_lje },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "љ", 0, XK_Cyrillic_lje },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
 		//---
-        { 0, XK_Cyrillic_en }, //New overlay
+        { 0, 0, XK_Cyrillic_en }, //New overlay
         //---
-        { "њ", XK_Cyrillic_nje },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "њ", 0, XK_Cyrillic_nje },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
 		//---
-        { 0, XK_Cyrillic_tse }, //New overlay
+        { 0, 0, XK_Cyrillic_tse }, //New overlay
         //---
-        { "џ", XK_Cyrillic_dzhe },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "џ", 0, XK_Cyrillic_dzhe },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
 		//---
-        { 0, XK_Cyrillic_che }, //New overlay
+        { 0, 0, XK_Cyrillic_che }, //New overlay
         //---
-        { "ћ", XK_Serbian_tshe },
-        { "ђ", XK_Serbian_dje },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "ћ", 0, XK_Serbian_tshe },
+        { "ђ", 0, XK_Serbian_dje },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
 		//---
-        { "🙂", 0x101f642 }, //emoji overlay
-        //---
-        { "😀", 0x101f600 },
-        { "😁", 0x101f601 },
-        { "😂", 0x101f602 },
-        { "😃", 0x101f603 },
-        { "😄", 0x101f604 },
-        { "😅", 0x101f605 },
-        { "😆", 0x101f606 },
-        { "😇", 0x101f607 },
-        { "😈", 0x101f608 },
-        { "😉", 0x101f609 },
-        { "😊", 0x101f60a },
-        { "😋", 0x101f60b },
-        { "😌", 0x101f60c },
-        { "😍", 0x101f60d },
-        { "😎", 0x101f60e },
-        { "😏", 0x101f60f },
-        { "😐", 0x101f610 },
-        { "😒", 0x101f612 },
-        { "😓", 0x101f613 },
-        { "😛", 0x101f61b },
-        { "😮", 0x101f62e },
-        { "😟", 0x101f61f },
-        { "😟", 0x101f620 },
-        { "😢", 0x101f622 },
-        { "😭", 0x101f62d },
-        { "😳", 0x101f633 },
-        { "😴", 0x101f634 },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+        { "🙂", 0, 0x101f642 }, //emoji overlay
+        //---
+        { "😀", 0, 0x101f600 },
+        { "😁", 0, 0x101f601 },
+        { "😂", 0, 0x101f602 },
+        { "😃", 0, 0x101f603 },
+        { "😄", 0, 0x101f604 },
+        { "😅", 0, 0x101f605 },
+        { "😆", 0, 0x101f606 },
+        { "😇", 0, 0x101f607 },
+        { "😈", 0, 0x101f608 },
+        { "😉", 0, 0x101f609 },
+        { "😊", 0, 0x101f60a },
+        { "😋", 0, 0x101f60b },
+        { "😌", 0, 0x101f60c },
+        { "😍", 0, 0x101f60d },
+        { "😎", 0, 0x101f60e },
+        { "😏", 0, 0x101f60f },
+        { "😐", 0, 0x101f610 },
+        { "😒", 0, 0x101f612 },
+        { "😓", 0, 0x101f613 },
+        { "😛", 0, 0x101f61b },
+        { "😮", 0, 0x101f62e },
+        { "😟", 0, 0x101f61f },
+        { "😟", 0, 0x101f620 },
+        { "😢", 0, 0x101f622 },
+        { "😭", 0, 0x101f62d },
+        { "😳", 0, 0x101f633 },
+        { "😴", 0, 0x101f634 },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
         //--
-		{ "/?", XK_slash }, //punctuation overlay
+		{ "/?", 0, XK_slash }, //punctuation overlay
 		//--
-		{ "1!", XK_1, 1 },
-		{ "2_AT_", XK_2, 1 },
-		{ "3#", XK_3, 1 },
-		{ "4$", XK_4, 1 },
-		{ "5%", XK_5, 1 },
-		{ "6^", XK_6, 1 },
-		{ "7&", XK_7, 1 },
-		{ "8*", XK_8, 1 },
-		{ "9(", XK_9, 1 },
-		{ "0)", XK_0, 1 },
-		{ "'\"", XK_apostrophe, 1 },
-		{ "`~", XK_grave, 1 },
-		{ "-_", XK_minus, 1 },
-		{ "=+", XK_plus, 1 },
-		{ "[{", XK_bracketleft, 1 },
-		{ "]}", XK_bracketright, 1 },
-		{ ",<", XK_comma, 1 },
-		{ ".>", XK_period, 1 },
-		{ "/?", XK_slash, 1 },
-		{ "\\|", XK_backslash, 1 },
-		{ "¡", XK_exclamdown, 1 },
-		{ "?", XK_questiondown, 1 },
-		{ "°", XK_degree, 1 },
-		{ "£", XK_sterling, 1 },
-		{ "€", XK_EuroSign, 1 },
-		{ "¥", XK_yen, 1 },
-		{ ";:", XK_colon, 1 },
-        { 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
+		{ "1", "!", XK_1, 1 },
+		{ "2", "_AT_", XK_2, 1 },
+		{ "3", "#", XK_3, 1 },
+		{ "4", "$", XK_4, 1 },
+		{ "5", "%", XK_5, 1 },
+		{ "6", "^", XK_6, 1 },
+		{ "7", "&", XK_7, 1 },
+		{ "8", "*", XK_8, 1 },
+		{ "9", "(", XK_9, 1 },
+		{ "0", ")", XK_0, 1 },
+		{ "'", "\"", XK_apostrophe, 1 },
+		{ "`", "~", XK_grave, 1 },
+		{ "-", "_", XK_minus, 1 },
+		{ "=", "+", XK_plus, 1 },
+		{ "[", "{", XK_bracketleft, 1 },
+		{ "]", "}", XK_bracketright, 1 },
+		{ ",", "<", XK_comma, 1 },
+		{ ".", ">", XK_period, 1 },
+		{ "/", "?", XK_slash, 1 },
+		{ "\\", "|", XK_backslash, 1 },
+		{ "¡", 0, XK_exclamdown, 1 },
+		{ "?", 0, XK_questiondown, 1 },
+		{ "°", 0, XK_degree, 1 },
+		{ "£", 0, XK_sterling, 1 },
+		{ "€", 0, XK_EuroSign, 1 },
+		{ "¥", 0, XK_yen, 1 },
+		{ ";", ":", XK_colon, 1 },
+        { 0, 0, XK_Cancel }, /* XK_Cancel signifies  overlay boundary */
 };
 
 static Key keys_symbols[KEYS] = {
-  { "Esc", XK_Escape, 1 },
-  { "F1", XK_F1, 1 },
-  { "F2", XK_F2, 1 },
-  { "F3", XK_F3, 1 },
-  { "F4", XK_F4, 1 },
-  { "F5", XK_F5, 1 },
-  { "F6", XK_F6, 1 },
-  { "F7", XK_F7, 1 },
-  { "F8", XK_F8, 1 },
-  { "F9", XK_F9, 1 },
-  { "F10", XK_F10, 1 },
+  { "Esc", 0, XK_Escape, 1 },
+  { "F1", 0, XK_F1, 1 },
+  { "F2", 0, XK_F2, 1 },
+  { "F3", 0, XK_F3, 1 },
+  { "F4", 0, XK_F4, 1 },
+  { "F5", 0, XK_F5, 1 },
+  { "F6", 0, XK_F6, 1 },
+  { "F7", 0, XK_F7, 1 },
+  { "F8", 0, XK_F8, 1 },
+  { "F9", 0, XK_F9, 1 },
+  { "F10", 0, XK_F10, 1 },
   { 0 }, /* New row */
 
-  { "'\"", XK_apostrophe, 1 },
-  { "1!", XK_1, 1 },
-  { "2_AT_", XK_2, 1 },
-  { "3#", XK_3, 1 },
-  { "4$", XK_4, 1 },
-  { "5%", XK_5, 1 },
-  { "6^", XK_6, 1 },
-  { "7&", XK_7, 1 },
-  { "8*", XK_8, 1 },
-  { "9(", XK_9, 1 },
-  { "0)", XK_0, 1 },
+  { "'\"", 0, XK_apostrophe, 1 },
+	{ "1", "!", XK_1, 1 },
+	{ "2", "_AT_", XK_2, 1 },
+	{ "3", "#", XK_3, 1 },
+	{ "4", "$", XK_4, 1 },
+	{ "5", "%", XK_5, 1 },
+	{ "6", "^", XK_6, 1 },
+	{ "7", "&", XK_7, 1 },
+	{ "8", "*", XK_8, 1 },
+	{ "9", "(", XK_9, 1 },
+	{ "0", ")", XK_0, 1 },
 
   { 0 }, /* New row */
 
-  { ".>", XK_period, 1 },
-  { ",<", XK_comma, 1 },
-  { "`~", XK_grave, 1 },
-  { "-_", XK_minus, 1 },
-  { "=+", XK_plus, 1 },
-  { "\\|", XK_backslash, 1 },
-  { ";:", XK_colon, 1 },
-  { "/?", XK_slash, 1 },
-  { "[{", XK_bracketleft, 1 },
-  { "]}", XK_bracketright, 1 },
-  { "Del", XK_Delete, 1 },
+  { ".", ">", XK_period, 1 },
+  { ",", "<", XK_comma, 1 },
+  { "`", "~", XK_grave, 1 },
+  { "-", "_", XK_minus, 1 },
+  { "=", "+", XK_plus, 1 },
+  { "\\", "|", XK_backslash, 1 },
+  { ";", ":", XK_colon, 1 },
+  { "/", "?", XK_slash, 1 },
+  { "[", "{", XK_bracketleft, 1 },
+  { "]", "}", XK_bracketright, 1 },
+  { "Del", 0, XK_Delete, 1 },
 
   { 0 }, /* New row */
 
-  { "abc", XK_Mode_switch, 1 },
-  { "☺", 0x101f642, 1 },
-  { "⇤", XK_Home, 1 },
-  { "←", XK_Left, 1 },
-  { "→", XK_Right, 1 },
-  { "⇥", XK_End, 1 },
-  { "⇊", XK_Next, 1 },
-  { "⇈", XK_Prior, 1 },
-  { "Tab", XK_Tab, 1 },
-  { "⌫Bksp", XK_BackSpace, 2 },
+  { "abc", 0, XK_Mode_switch, 1 },
+  { "☺", 0, 0x101f642, 1 },
+  { "⇤", 0, XK_Home, 1 },
+  { "←", 0, XK_Left, 1 },
+  { "→", 0, XK_Right, 1 },
+  { "⇥", 0, XK_End, 1 },
+  { "⇊", 0, XK_Next, 1 },
+  { "⇈", 0, XK_Prior, 1 },
+  { "Tab", 0, XK_Tab, 1 },
+  { "⌫Bksp", 0, XK_BackSpace, 2 },
 
   { 0 }, /* New row */
-  { "↺", XK_Cancel, 1},
-  { "Shift", XK_Shift_L, 2 },
-  { "Ctrl", XK_Control_L, 1 },
-  { "Alt", XK_Alt_L, 1 },
-  { "", XK_space, 2 },
-  { "↓", XK_Down, 1 },
-  { "↑", XK_Up, 1 },
-  { "↲ Enter", XK_Return, 2 },
+  { "↺", 0, XK_Cancel, 1},
+  { "Shift", 0, XK_Shift_L, 2 },
+  { "Ctrl", 0, XK_Control_L, 1 },
+  { "Alt", 0, XK_Alt_L, 1 },
+  { "", 0, XK_space, 2 },
+  { "↓", 0, XK_Down, 1 },
+  { "↑", 0, XK_Up, 1 },
+  { "↲ Enter", 0, XK_Return, 2 },
 };
 
 static Key keys_functions[KEYS] = {
 
-  { "Esc", XK_Escape, 1 },
-  { "▶", XF86XK_AudioPlay, 1 },
-  { "●", XF86XK_AudioRecord, 1 },
-  { "■", XF86XK_AudioStop, 1 },
-  { "◂◂", XF86XK_AudioPrev, 1 },
-  { "▸▸", XF86XK_AudioNext, 1 },
-  { "♫M", XF86XK_AudioMute, 1 },
-  { "♫-", XF86XK_AudioLowerVolume, 1 },
-  { "♫+", XF86XK_AudioRaiseVolume, 1 },
-  { "☀-", XF86XK_MonBrightnessDown, 1 },
-  { "☀+", XF86XK_MonBrightnessUp, 1 },
+  { "Esc", 0, XK_Escape, 1 },
+  { "▶", 0, XF86XK_AudioPlay, 1 },
+  { "●", 0, XF86XK_AudioRecord, 1 },
+  { "■", 0, XF86XK_AudioStop, 1 },
+  { "◂◂", 0, XF86XK_AudioPrev, 1 },
+  { "▸▸", 0, XF86XK_AudioNext, 1 },
+  { "♫M", 0, XF86XK_AudioMute, 1 },
+  { "♫-", 0, XF86XK_AudioLowerVolume, 1 },
+  { "♫+", 0, XF86XK_AudioRaiseVolume, 1 },
+  { "☀-", 0, XF86XK_MonBrightnessDown, 1 },
+  { "☀+", 0, XF86XK_MonBrightnessUp, 1 },
 
   { 0 }, /* New row */
 
-  { "≅", XK_KP_Insert, 1 },
-  { "Del", XK_Delete, 1 },
-  { "⇤", XK_Home, 1 },
-  { "←", XK_Left, 1 },
-  { "→", XK_Right, 1 },
-  { "⇥", XK_End, 1 },
-  { "⇊", XK_Next, 1 },
-  { "⇈", XK_Prior, 1 },
-  { "Tab", XK_Tab, 1 },
-  { "⌫Bksp", XK_BackSpace, 2 },
+  { "≅", 0, XK_KP_Insert, 1 },
+  { "Del", 0, XK_Delete, 1 },
+  { "⇤", 0, XK_Home, 1 },
+  { "←", 0, XK_Left, 1 },
+  { "→", 0, XK_Right, 1 },
+  { "⇥", 0, XK_End, 1 },
+  { "⇊", 0, XK_Next, 1 },
+  { "⇈", 0, XK_Prior, 1 },
+  { "Tab", 0, XK_Tab, 1 },
+  { "⌫Bksp", 0, XK_BackSpace, 2 },
 
   { 0 }, /* New row */
-  { "↺", XK_Cancel, 1},
-  { "Shift", XK_Shift_L, 2 },
-  { "Ctrl", XK_Control_L, 1 },
-  { "Alt", XK_Alt_L, 1 },
-  { "", XK_space, 2 },
-  { "↓", XK_Down, 1 },
-  { "↑", XK_Up, 1 },
-  { "↲ Enter", XK_Return, 2 },
+  { "↺", 0, XK_Cancel, 1},
+  { "Shift", 0, XK_Shift_L, 2 },
+  { "Ctrl", 0, XK_Control_L, 1 },
+  { "Alt", 0, XK_Alt_L, 1 },
+  { "", 0, XK_space, 2 },
+  { "↓", 0, XK_Down, 1 },
+  { "↑", 0, XK_Up, 1 },
+  { "↲ Enter", 0, XK_Return, 2 },
 
   { 0 }, /* Last item (double 0) */
   { 0 }, /* Last item (double 0) */
 };
 
 static Key keys_navigation[KEYS] = {
-    { "Esc", XK_Escape, 1 },
-    { "⇤", XK_Home, 1 },
-    { "↑", XK_Up, 1 },
-    { "⇥", XK_End, 1 },
-    { "⇈", XK_Prior, 1 },
+    { "Esc", 0, XK_Escape, 1 },
+    { "⇤", 0, XK_Home, 1 },
+    { "↑", 0, XK_Up, 1 },
+    { "⇥", 0, XK_End, 1 },
+    { "⇈", 0, XK_Prior, 1 },
     { 0 }, /* New row */
 
-    { "Shift", XK_Shift_L, 1 },
-    { "←", XK_Left, 1 },
-    { "", XK_space, 1 },
-    { "→", XK_Right, 1 },
-    { "⇊", XK_Next, 1 },
+    { "Shift", 0, XK_Shift_L, 1 },
+    { "←", 0, XK_Left, 1 },
+    { "", 0, XK_space, 1 },
+    { "→", 0, XK_Right, 1 },
+    { "⇊", 0, XK_Next, 1 },
 
     { 0 }, /* New row */
 
-    { "↺", XK_Cancel, 1},
-    { "⌫Bksp", XK_BackSpace, 1 },
-    { "↓", XK_Down, 1 },
-    { "Tab", XK_Tab, 1 },
-    { "↲ Enter", XK_Return, 1},
+    { "↺", 0, XK_Cancel, 1},
+    { "⌫Bksp", 0, XK_BackSpace, 1 },
+    { "↓", 0, XK_Down, 1 },
+    { "Tab", 0, XK_Tab, 1 },
+    { "↲ Enter", 0, XK_Return, 1},
   { 0 }, /* Last item (double 0) */
   { 0 }, /* Last item (double 0) */
 };
 
 
 static Key keys_ru[KEYS] = {
-        { "Esc", XK_Escape, 1 },
-		{ "1!", XK_1, 1 },
-		{ "2_AT_", XK_2, 1 },
-		{ "3#", XK_3, 1 },
-		{ "4$", XK_4, 1 },
-		{ "5%", XK_5, 1 },
-		{ "6^", XK_6, 1 },
-		{ "7&", XK_7, 1 },
-		{ "8*", XK_8, 1 },
-		{ "9(", XK_9, 1 },
-		{ "0)", XK_0, 1 },
-
+        { "Esc", 0, XK_Escape, 1 },
+		{ "1", "!", XK_1, 1 },
+		{ "2", "_AT_", XK_2, 1 },
+		{ "3", "#", XK_3, 1 },
+		{ "4", "$", XK_4, 1 },
+		{ "5", "%", XK_5, 1 },
+		{ "6", "^", XK_6, 1 },
+		{ "7", "&", XK_7, 1 },
+		{ "8", "*", XK_8, 1 },
+		{ "9", "(", XK_9, 1 },
+		{ "0", ")", XK_0, 1 },
         { 0 }, /* New row */
 
-        { "й", XK_Cyrillic_shorti, 1 },
-        { "ц", XK_Cyrillic_tse, 1 },
-        { "у", XK_Cyrillic_u, 1 },
-        { "к", XK_Cyrillic_ka, 1 },
-        { "е", XK_Cyrillic_ie, 1 },
-        { "н", XK_Cyrillic_en, 1 },
-        { "г", XK_Cyrillic_ghe, 1 },
-        { "ш", XK_Cyrillic_sha, 1 },
-        { "щ", XK_Cyrillic_shcha, 1 },
-        { "з", XK_Cyrillic_ze, 1 },
-        { "х", XK_Cyrillic_ha, 1 },
+        { "й", 0, XK_Cyrillic_shorti, 1 },
+        { "ц", 0, XK_Cyrillic_tse, 1 },
+        { "у", 0, XK_Cyrillic_u, 1 },
+        { "к", 0, XK_Cyrillic_ka, 1 },
+        { "е", 0, XK_Cyrillic_ie, 1 },
+        { "н", 0, XK_Cyrillic_en, 1 },
+        { "г", 0, XK_Cyrillic_ghe, 1 },
+        { "ш", 0, XK_Cyrillic_sha, 1 },
+        { "щ", 0, XK_Cyrillic_shcha, 1 },
+        { "з", 0, XK_Cyrillic_ze, 1 },
+        { "х", 0, XK_Cyrillic_ha, 1 },
 
         { 0 }, /* New row */
 
-        { "ф", XK_Cyrillic_ef, 1 },
-        { "ы", XK_Cyrillic_yeru, 1 },
-        { "в", XK_Cyrillic_ve, 1 },
-        { "а", XK_Cyrillic_a, 1 },
-        { "п", XK_Cyrillic_pe, 1 },
-        { "р", XK_Cyrillic_er, 1 },
-        { "о", XK_Cyrillic_o, 1 },
-        { "л", XK_Cyrillic_el, 1 },
-        { "д", XK_Cyrillic_de, 1 },
-        { "ж", XK_Cyrillic_zhe, 1 },
-        { "ю", XK_Cyrillic_yu, 1 },
+        { "ф", 0, XK_Cyrillic_ef, 1 },
+        { "ы", 0, XK_Cyrillic_yeru, 1 },
+        { "в", 0, XK_Cyrillic_ve, 1 },
+        { "а", 0, XK_Cyrillic_a, 1 },
+        { "п", 0, XK_Cyrillic_pe, 1 },
+        { "р", 0, XK_Cyrillic_er, 1 },
+        { "о", 0, XK_Cyrillic_o, 1 },
+        { "л", 0, XK_Cyrillic_el, 1 },
+        { "д", 0, XK_Cyrillic_de, 1 },
+        { "ж", 0, XK_Cyrillic_zhe, 1 },
+        { "ю", 0, XK_Cyrillic_yu, 1 },
 
         { 0 }, /* New row */
 
-        { "123", XK_Mode_switch, 1 },
-        { "я", XK_Cyrillic_ya, 1 },
-        { "ч", XK_Cyrillic_che, 1 },
-        { "с", XK_Cyrillic_es, 1 },
-        { "м", XK_Cyrillic_em, 1 },
-        { "и", XK_Cyrillic_i, 1 },
-        { "т", XK_Cyrillic_te, 1 },
-        { "ь", XK_Cyrillic_softsign, 1 },
-        { "б", XK_Cyrillic_be, 1 },
-        { "⌫Bksp", XK_BackSpace, 2 },
+        { "123", 0, XK_Mode_switch, 1 },
+        { "я", 0, XK_Cyrillic_ya, 1 },
+        { "ч", 0, XK_Cyrillic_che, 1 },
+        { "с", 0, XK_Cyrillic_es, 1 },
+        { "м", 0, XK_Cyrillic_em, 1 },
+        { "и", 0, XK_Cyrillic_i, 1 },
+        { "т", 0, XK_Cyrillic_te, 1 },
+        { "ь", 0, XK_Cyrillic_softsign, 1 },
+        { "б", 0, XK_Cyrillic_be, 1 },
+        { "⌫Bksp", 0, XK_BackSpace, 2 },
 
         { 0 }, /* New row */
-        { "↺", XK_Cancel, 1},
-        { "Shift", XK_Shift_L, 2 },
-        { "Ctrl", XK_Control_L, 1 },
-        { "Alt", XK_Alt_L, 1 },
-        { "", XK_space, 2 },
-        { "↓", XK_Down, 1 },
-        { "↑", XK_Up, 1 },
-        { "↲ Enter", XK_Return, 2 },
+        { "↺", 0, XK_Cancel, 1},
+        { "Shift", 0, XK_Shift_L, 2 },
+        { "Ctrl", 0, XK_Control_L, 1 },
+        { "Alt", 0, XK_Alt_L, 1 },
+        { "", 0, XK_space, 2 },
+        { "↓", 0, XK_Down, 1 },
+        { "↑", 0, XK_Up, 1 },
+        { "↲ Enter", 0, XK_Return, 2 },
 };
 
 static Key keys_dialer[KEYS] = {
-        { "Esc", XK_Escape, 1 },
-        { "1!", XK_1, 1 },
-        { "2_AT_", XK_2, 1 },
-        { "3#", XK_3, 1 },
-        { "⌫Bksp", XK_BackSpace, 2 },
+        { "Esc", 0, XK_Escape, 1 },
+        { "1", "!" , XK_1, 1 },
+        { "2", "_AT_", XK_2, 1 },
+        { "3", "#", XK_3, 1 },
+        { "⌫Bksp", 0, XK_BackSpace, 2 },
         { 0 }, /* New row */
 
-        { "Shift", XK_Shift_L, 1 },
-        { "4$", XK_4, 1 },
-        { "5%", XK_5, 1 },
-        { "6^", XK_6, 1 },
-        { "-_", XK_minus, 1 },
-        { ",<", XK_comma, 1 },
+        { "Shift", 0, XK_Shift_L, 1 },
+        { "4", "$", XK_4, 1 },
+        { "5", "%", XK_5, 1 },
+        { "6", "^", XK_6, 1 },
+        { "-", "_", XK_minus, 1 },
+        { ",", "<", XK_comma, 1 },
         { 0 }, /* New row */
 
-        { "abc", XK_Mode_switch, 1 },
-        { "7&", XK_7, 1 },
-        { "8*", XK_8, 1 },
-        { "9(", XK_9, 1 },
-        { "=+", XK_equal, 1 },
-        { "/?", XK_slash, 1 },
+        { "abc", 0, XK_Mode_switch, 1 },
+        { "7", "&", XK_7, 1 },
+        { "8", "*", XK_8, 1 },
+        { "9", "(", XK_9, 1 },
+        { "=", "+", XK_equal, 1 },
+        { "/", "?", XK_slash, 1 },
         { 0 }, /* New row */
 
-        { "↺", XK_Cancel, 1},
-        { "", XK_space, 1 },
-        { "0)", XK_0, 1 },
-        { ".>", XK_period, 1 },
-        { "↲ Enter", XK_Return, 2},
+        { "↺", 0, XK_Cancel, 1},
+        { "", 0, XK_space, 1 },
+        { "0", ")", XK_0, 1 },
+        { ".", ">", XK_period, 1 },
+        { "↲ Enter", 0, XK_Return, 2},
         { 0 }, /* New row */
         { 0 }, /* Last item (double 0) */
 };
diff --git a/svkbd.c b/svkbd.c
index f66c4e6..ca64035 100644
--- a/svkbd.c
+++ b/svkbd.c
_AT_@ -33,12 +33,13 @@
 #define STRINGTOKEYSYM(X) (XStringToKeySym(X))
 
 /* enums */
-enum { SchemeNorm, SchemeNormABC, SchemePress, SchemeHighlight, SchemeOverlay, SchemeLast };
+enum { SchemeNorm, SchemeNormABC, SchemeNormABCShift, SchemeNormShift, SchemePress, SchemePressShift, SchemeHighlight, SchemeHighlightShift, SchemeOverlay, SchemeOverlayShift, SchemeLast };
 enum { NetWMWindowType, NetLast };
 
 /* typedefs */
 typedef struct {
 	char *label;
+	char *label2;
 	KeySym keysym;
 	unsigned int width;
 	KeySym modifier;
_AT_@ -303,20 +304,25 @@ void
 drawkey(Key *k, int idx)
 {
 	int x, y, w, h;
+	int x2, y2, w2, h2;
 	const char *l;
 
+	int use_scheme = SchemeNorm;
+
 	if (k->pressed)
-		drw_setscheme(drw, scheme[SchemePress]);
+		use_scheme = SchemePress;
 	else if (k->highlighted)
-		drw_setscheme(drw, scheme[SchemeHighlight]);
+		use_scheme = SchemeHighlight;
 	else if (idx < overlaykeycount)
-		drw_setscheme(drw, scheme[SchemeOverlay]);
+		use_scheme = SchemeOverlay;
 	else if ((k->keysym == XK_Return) ||
 			((k->keysym >= XK_a) && (k->keysym <= XK_z)) ||
 			((k->keysym >= XK_Cyrillic_io) && (k->keysym <= XK_Cyrillic_hardsign)))
-		drw_setscheme(drw, scheme[SchemeNormABC]);
+		use_scheme = SchemeNormABC;
 	else
-		drw_setscheme(drw, scheme[SchemeNorm]);
+		use_scheme = SchemeNorm;
+
+	drw_setscheme(drw, scheme[use_scheme]);
 	drw_rect(drw, k->x, k->y, k->w, k->h, 1, 1);
 
 	if (k->keysym == XK_KP_Insert) {
_AT_@ -335,6 +341,24 @@ drawkey(Key *k, int idx)
 	w = TEXTW(l);
 	x = k->x + (k->w / 2) - (w / 2);
 	drw_text(drw, x, y, w, h, 0, l, 0);
+	if (k->label2) {
+		if (use_scheme == SchemeNorm)
+			use_scheme = SchemeNormShift;
+		else if (use_scheme == SchemeNormABC)
+			use_scheme = SchemeNormABCShift;
+		else if (use_scheme == SchemePress)
+			use_scheme = SchemePressShift;
+		else if (use_scheme == SchemeHighlight)
+			use_scheme = SchemeHighlightShift;
+		else if (use_scheme == SchemeOverlay)
+			use_scheme = SchemeOverlayShift;
+		drw_setscheme(drw, scheme[use_scheme]);
+		x += w;
+		y -= 15;
+		l = k->label2;
+		w = TEXTW(l);
+		drw_text(drw, x, y, w, h, 0, l, 0);
+	}
 	drw_map(drw, win, k->x, k->y, k->w, k->h);
 }
 
_AT_@ -882,6 +906,7 @@ showoverlay(int idx)
 		if (overlay[i].width)
 			j += overlay[i].width;
 		keys[j].label = overlay[i].label;
+		keys[j].label2 = overlay[i].label2;
 		keys[j].keysym = overlay[i].keysym;
 		keys[j].modifier = overlay[i].modifier;
 	}
-- 
2.30.2
Received on Fri Mar 19 2021 - 21:39:18 CET

This archive was generated by hypermail 2.3.0 : Fri Mar 19 2021 - 21:36:35 CET