adapted plain layout and legacy layouts to new structure - svkbd - simple virtual keyboard
 (HTM) git clone git://git.suckless.org/svkbd
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 9b5ebd84470cc5875bcd3a3f32f72a5d957815cd
 (DIR) parent 72b936baf6f179797118f86464d7aa1b7e960deb
 (HTM) Author: Maarten van Gompel <proycon@anaproy.nl>
       Date:   Mon,  8 Mar 2021 20:23:46 +0100
       
       adapted plain layout and legacy layouts to new structure
       
       Diffstat:
         M layout.de.h                         |     124 ++++++++++++++++----------------
         M layout.en.h                         |     112 ++++++++++++++++----------------
         M layout.mobile-plain.h               |     159 +++++++++++++++----------------
         M layout.ru.h                         |     118 ++++++++++++++++----------------
         M layout.sh.h                         |     124 ++++++++++++++++----------------
       
       5 files changed, 317 insertions(+), 320 deletions(-)
       ---
 (DIR) diff --git a/layout.de.h b/layout.de.h
       @@ -1,71 +1,71 @@
        #define KEYS 66
        static Key keys_de[KEYS] = {
       -        { "^°′", XK_dead_circumflex, 1},
       -        { "1!¹", XK_1, 1 },
       -        { "2\"²", 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_ssharp, 1 },
       -        { "´`¸", XK_dead_acute, 1 },
       -        { "<-", XK_BackSpace, 2 },
       -        { "Entf", XK_Delete, 1},
       +        { "^","°′", XK_dead_circumflex, 1},
       +        { "1", "!¹", XK_1, 1 },
       +        { "2","\"²", 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_ssharp, 1 },
       +        { "´","`¸", XK_dead_acute, 1 },
       +        { "<-", 0, XK_BackSpace, 2 },
       +        { "Entf", 0, XK_Delete, 1},
                { 0 }, /* New row */
       -        { "->|", XK_Tab, 1 },
       -        { "qQ@", XK_q, 1 },
       -        { "wWł", XK_w, 1 },
       -        { "eE€", XK_e, 1 },
       -        { "rR¶", XK_r, 1 },
       -        { "tTŧ", XK_t, 1 },
       -        { "zZ←", XK_z, 1 },
       -        { "uU↓", XK_u, 1 },
       -        { "iI→", XK_i, 1 },
       -        { "oOø", XK_o, 1 },
       -        { "pPþ", XK_p, 1 },
       -        { "üܨ", 0xfc, 1 },
       -        { "+*~", XK_plus, 1 },
       -        { "Enter", XK_Return, 3 },
       +        { "->|", 0, XK_Tab, 1 },
       +        { "q","Q@", XK_q, 1 },
       +        { "w","Wł", XK_w, 1 },
       +        { "e","E€", XK_e, 1 },
       +        { "r","R¶", XK_r, 1 },
       +        { "t","Tŧ", XK_t, 1 },
       +        { "z","Z←", XK_z, 1 },
       +        { "u","U↓", XK_u, 1 },
       +        { "i","I→", XK_i, 1 },
       +        { "o","Oø", XK_o, 1 },
       +        { "p","Pþ", XK_p, 1 },
       +        { "ü","ܨ", 0xfc, 1 },
       +        { "+","*~", XK_plus, 1 },
       +        { "Enter", 0, XK_Return, 3 },
                { 0 }, /* New row */
       -        { 0, XK_Caps_Lock, 2 },
       -        { "aAæ", XK_a, 1 },
       -        { "sSſ", XK_s, 1 },
       -        { "dDð", XK_d, 1 },
       -        { "fFđ", XK_f, 1 },
       -        { "gGŋ", XK_g, 1 },
       -        { "hHħ", XK_h, 1 },
       -        { "jJ̣̣", XK_j, 1 },
       -        { "kKĸ", XK_k, 1 },
       -        { "lLł", XK_l, 1 },
       -        { "öÖ˝", 0xf6, 1 },
       -        { "äÄ^", 0xe4, 1 },
       -        { "#'’", XK_numbersign, 1 },
       +        { 0, 0, XK_Caps_Lock, 2 },
       +        { "a","Aæ", XK_a, 1 },
       +        { "s","Sſ", XK_s, 1 },
       +        { "d","Dð", XK_d, 1 },
       +        { "f","Fđ", XK_f, 1 },
       +        { "g","Gŋ", XK_g, 1 },
       +        { "h","Hħ", XK_h, 1 },
       +        { "j","J̣̣", XK_j, 1 },
       +        { "k","Kĸ", XK_k, 1 },
       +        { "l","Lł", XK_l, 1 },
       +        { "ö","Ö˝", 0xf6, 1 },
       +        { "ä","Ä^", 0xe4, 1 },
       +        { "#","'’", XK_numbersign, 1 },
                { 0 }, /* New row */
       -        { 0, XK_Shift_L, 2 },
       -        { "<>|", XK_less, 1 },
       -        { "yY»", XK_y, 1 },
       -        { "xX«", XK_x, 1 },
       -        { "cC¢", XK_c, 1 },
       -        { "vV„", XK_v, 1 },
       -        { "bB“", XK_b, 1 },
       -        { "nN”", XK_n, 1 },
       -        { "mMµ", XK_m, 1 },
       -        { ",;·", XK_comma, 1 },
       -        { ".:…", XK_period, 1 },
       -        { "-_–", XK_minus, 1 },
       -        { 0, XK_Shift_R, 2 },
       +        { 0, 0, XK_Shift_L, 2 },
       +        { "<",">|", XK_less, 1 },
       +        { "y","Y»", XK_y, 1 },
       +        { "x","X«", XK_x, 1 },
       +        { "c","C¢", XK_c, 1 },
       +        { "v","V„", XK_v, 1 },
       +        { "b","B“", XK_b, 1 },
       +        { "n","N”", XK_n, 1 },
       +        { "m","Mµ", XK_m, 1 },
       +        { ",",";·", XK_comma, 1 },
       +        { ".",":…", XK_period, 1 },
       +        { "-","_–", XK_minus, 1 },
       +        { 0, 0, XK_Shift_R, 2 },
                { 0 }, /* New row */
       -        { "Ctrl", XK_Control_L, 2 },
       -        { "Win", XK_Super_L, 2 },
       -        { "Alt", XK_Alt_L, 2 },
       -        { "", XK_space, 5 },
       -        { "Alt Gr", XK_ISO_Level3_Shift, 2 },
       -        { "Menu", XK_Menu, 2 },
       -        { "Ctrl", XK_Control_R, 2 },
       +        { "Ctrl", 0, XK_Control_L, 2 },
       +        { "Win",  0, XK_Super_L, 2 },
       +        { "Alt", 0, XK_Alt_L, 2 },
       +        { "", 0, XK_space, 5 },
       +        { "Alt Gr", 0, XK_ISO_Level3_Shift, 2 },
       +        { "Menu", 0, XK_Menu, 2 },
       +        { "Ctrl", 0, XK_Control_R, 2 },
        };
        
        Buttonmod buttonmods[] = {
 (DIR) diff --git a/layout.en.h b/layout.en.h
       @@ -1,66 +1,66 @@
        #define KEYS 61
        static Key keys_en[] = {
       -        { "1!", XK_1, 1 },
       -        { "2@", 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_minus, 1 },
       -        { "=+", XK_plus, 1 },
       -        { "<-", XK_BackSpace, 2 },
       +        { "1","!", XK_1, 1 },
       +        { "2","@", 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_minus, 1 },
       +        { "=","+" XK_plus, 1 },
       +        { "⌫Bksp",0, XK_BackSpace, 2 },
                { 0 }, /* New row */
       -        { "->|", XK_Tab, 1 },
       -        { 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_bracketleft, 1 },
       -        { "]", XK_bracketright, 1 },
       +        { "->|",0, XK_Tab, 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_bracketleft, 1 },
       +        { "]", "}", XK_bracketright, 1 },
                { "Return", XK_Return, 3 },
                { 0 }, /* New row */
       -        { 0, XK_Caps_Lock, 2 },
       -        { 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_semicolon, 1 },
       -        { "'\"", XK_exclam, 1 },
       -        { "\\|", XK_backslash, 1 },
       +        { 0, 0, XK_Caps_Lock, 2 },
       +        { 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_semicolon, 1 },
       +        { "'","\"", XK_exclam, 1 },
       +        { "\\", "|", XK_backslash, 1 },
                { 0 }, /* New row */
       -        { 0, XK_Shift_L, 3 },
       -        { 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_colon, 1 },
       -        { ".", XK_period, 1 },
       -        { "/?", XK_slash, 1 },
       -        { 0, XK_Shift_R, 2 },
       +        { 0, 0, XK_Shift_L, 3 },
       +        { 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_colon, 1 },
       +        { ".", ">", XK_period, 1 },
       +        { "/", "?", XK_slash, 1 },
       +        { 0, 0, XK_Shift_R, 2 },
                { 0 }, /* New row */
       -        { "Ctrl", XK_Control_L, 2 },
       -        { "Alt", XK_Alt_L, 2 },
       -        { "", XK_space, 5 },
       -        { "Alt", XK_Alt_R, 2 },
       -        { "Ctrl", XK_Control_R, 2 },
       +        { "Ctrl",0,  XK_Control_L, 2 },
       +        { "Alt", 0, XK_Alt_L, 2 },
       +        { "", 0, XK_space, 5 },
       +        { "Alt", 0, XK_Alt_R, 2 },
       +        { "Ctrl", 0, XK_Control_R, 2 },
        };
        
        Buttonmod buttonmods[] = {
 (DIR) diff --git a/layout.mobile-plain.h b/layout.mobile-plain.h
       @@ -1,106 +1,103 @@
       -#define KEYS 40
       +#define KEYS 44
        static Key keys_en[KEYS] = {
       -        { 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 },
       +        { 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 },
        
                { 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_colon, 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_colon, 1 },
                /*{ "'", XK_apostrophe, 2 },*/
        
                { 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 },
       +        { 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_slash, 1 },*/
       -        { "Tab", XK_Tab, 1 },
       -        { "⇍ Bksp", XK_BackSpace, 2 },
       +        { "Tab", 0, XK_Tab, 1 },
       +        { "⇍ Bksp", 0, XK_BackSpace, 2 },
        
                { 0 }, /* New row */
       -        { "↺", XK_Cancel, 1},
       -        { "Shft", XK_Shift_L, 1 },
       +        { "↺", 0, XK_Cancel, 1},
       +        { "Shft", 0, XK_Shift_L, 1 },
                /*{ "L", XK_Left, 1 },*/
       -        { "↓", XK_Down, 1 },
       -        { "↑", XK_Up, 1 },
       +        { "↓", 0, XK_Down, 1 },
       +        { "↑", 0, XK_Up, 1 },
                /*{ "R", XK_Right, 1 },*/
       -        { "", XK_space, 2 },
       -        { "Esc", XK_Escape, 1 },
       -        { "Ctrl", XK_Control_L, 1 },
       +        { "", 0, XK_space, 2 },
       +        { "Esc", 0, XK_Escape, 1 },
       +        { "Ctrl", 0, XK_Control_L, 1 },
                /*{ "Alt", XK_Alt_L, 1 },*/
       -        { "↲ Enter", XK_Return, 2 },
       +        { "↲ Enter", 0, XK_Return, 2 },
        };
        
       -static Key keys_symbols[40] = {
       -  { "1!", XK_1, 1 },
       -  { "2@", 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 },
       +static Key keys_symbols[KEYS] = {
       +        { "1", "!", XK_1, 1 },
       +        { "2", "@", 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 }, /* New row */
        
       -  { "'\"", 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_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 }, /* New row */
        
       -  { "", XK_Shift_L|XK_bar, 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_Shift_L|XK_bar, 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},
       -  { "Shft", XK_Shift_L, 1 },
       -  /*{ "L", XK_Left, 1 },*/
       -  { "↓", XK_Down, 1 },
       -  { "↑", XK_Up, 1 },
       -  /*{ "R", XK_Right, 1 },*/
       -  { "", XK_space, 2 },
       -  { "Esc", XK_Escape, 1 },
       -  { "Ctrl", XK_Control_L, 1 },
       -  /*{ "Alt", XK_Alt_L, 1 },*/
       -  { "↲ Enter", XK_Return, 2 },
       +  { "↺", 0, XK_Cancel, 1},
       +  { "Shft", 0, XK_Shift_L, 1 },
       +  { "↓", 0, XK_Down, 1 },
       +  { "↑", 0, XK_Up, 1 },
       +  { "", 0, XK_space, 2 },
       +  { "Esc", 0, XK_Escape, 1 },
       +  { "Ctrl", 0, XK_Control_L, 1 },
       +  { "↲ Enter", 0, XK_Return, 2 },
        };
        
        Buttonmod buttonmods[] = {
       @@ -110,7 +107,7 @@ Buttonmod buttonmods[] = {
        
        #define OVERLAYS 1
        static Key overlay[OVERLAYS] = {
       -        { 0, XK_Cancel },
       +        { 0, 0, XK_Cancel },
        };
        
        #define LAYERS 2
 (DIR) diff --git a/layout.ru.h b/layout.ru.h
       @@ -1,68 +1,68 @@
        #define KEYS 63
        static Key keys_ru[] = {
       -        { "ёЁ", XK_Cyrillic_io, 1 },
       -        { "1!", XK_1, 1 },
       -        { "2\"", 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_minus, 1 },
       -        { "=+", XK_plus, 1 },
       -        { "<-", XK_BackSpace, 2 },
       -        { "Del", XK_Delete, 1},
       +        { "ё","Ё", XK_Cyrillic_io, 1 },
       +        { "1","!", XK_1, 1 },
       +        { "2","\"", 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_minus, 1 },
       +        { "=","+", XK_plus, 1 },
       +        { "<-", 0, XK_BackSpace, 2 },
       +        { "Del", 0, XK_Delete, 1},
                { 0 }, /* New row */
       -        { "->|", XK_Tab, 1 },
       -        { "йЙ", 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 },
       -        { "ъЪ", XK_Cyrillic_hardsign, 1 },
       -        { "Return", XK_Return, 3 },
       +        { "->|", 0, XK_Tab, 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, XK_Cyrillic_hardsign, 1 },
       +        { "Return", 0, XK_Return, 3 },
                { 0 }, /* New row */
       -        { 0, XK_Caps_Lock, 2 },
       -        { "фФ", 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_e, 1 },
       -        { "\\/", XK_backslash, 1 },
       +        { 0, 0, XK_Caps_Lock, 2 },
       +        { "ф", 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_e, 1 },
       +        { "\\","/", XK_backslash, 1 },
                { 0 }, /* New row */
       -        { 0, XK_Shift_L, 3 },
       -        { "яЯ", 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 },
       -        { "юЮ", XK_Cyrillic_yu, 1 },
       -        { ".,", XK_period, 1 },
       -        { 0, XK_Shift_R, 2 },
       +        { 0, 0, XK_Shift_L, 3 },
       +        { "я", 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 },
       +        { "ю", 0, XK_Cyrillic_yu, 1 },
       +        { ".", ",", XK_period, 1 },
       +        { 0, 0, XK_Shift_R, 2 },
                { 0 }, /* New row */
       -        { "Ctrl", XK_Control_L, 2 },
       -        { "Alt", XK_Alt_L, 2 },
       -        { "", XK_space, 5 },
       -        { "Alt", XK_Alt_R, 2 },
       -        { "Ctrl", XK_Control_R, 2 },
       +        { "Ctrl", 0, XK_Control_L, 2 },
       +        { "Alt",  0,XK_Alt_L, 2 },
       +        { "",  0,XK_space, 5 },
       +        { "Alt",  0,XK_Alt_R, 2 },
       +        { "Ctrl",  0,XK_Control_R, 2 },
        };
        
        Buttonmod buttonmods[] = {
 (DIR) diff --git a/layout.sh.h b/layout.sh.h
       @@ -1,71 +1,71 @@
        #define KEYS 66
        static Key keys_sh[] = {
       -        { "`~", XK_quoteleft, 1},
       -        { "1!~", XK_1, 1 },
       -        { "2\"ˇ", 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_plus, 1 },
       -        { "<-", XK_BackSpace, 2 },
       -        { "Del", XK_Delete, 1},
       +        { "`","~", XK_quoteleft, 1},
       +        { "1","!~", XK_1, 1 },
       +        { "2","\"ˇ", 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_plus, 1 },
       +        { "<","-", XK_BackSpace, 2 },
       +        { "Del",0, XK_Delete, 1},
                { 0 }, /* New row */
       -        { "->|", XK_Tab, 1 },
       -        { "qQ\\", XK_q, 1 },
       -        { "wW|", XK_w, 1 },
       -        { "eE", XK_e, 1 },
       -        { "rR", XK_r, 1 },
       -        { "tT", XK_t, 1 },
       -        { "zZ", XK_z, 1 },
       -        { "uU", XK_u, 1 },
       -        { "iI", XK_i, 1 },
       -        { "oO", XK_o, 1 },
       -        { "pP", XK_p, 1 },
       -        { "šŠ÷", XK_scaron, 1 },
       -        { "đĐ×", XK_dstroke, 1 },
       -        { "Enter", XK_Return, 3 },
       +        { "->|", 0, XK_Tab, 1 },
       +        { "q","Q\\", XK_q, 1 },
       +        { "w","W|", XK_w, 1 },
       +        { "e","E", XK_e, 1 },
       +        { "r","R", XK_r, 1 },
       +        { "t","T", XK_t, 1 },
       +        { "z","Z", XK_z, 1 },
       +        { "u","U", XK_u, 1 },
       +        { "i","I", XK_i, 1 },
       +        { "o","O", XK_o, 1 },
       +        { "p","P", XK_p, 1 },
       +        { "š","Š÷", XK_scaron, 1 },
       +        { "đ","Đ×", XK_dstroke, 1 },
       +        { "Enter",0, XK_Return, 3 },
                { 0 }, /* New row */
       -        { 0, XK_Caps_Lock, 2 },
       -        { "aA", XK_a, 1 },
       -        { "sS", XK_s, 1 },
       -        { "dD", XK_d, 1 },
       -        { "fF[", XK_f, 1 },
       -        { "gG]", XK_g, 1 },
       -        { "hH", XK_h, 1 },
       -        { "jJ̣̣", XK_j, 1 },
       -        { "kKł", XK_k, 1 },
       -        { "lLŁ", XK_l, 1 },
       -        { "čČ", XK_ccaron, 1 },
       -        { "ćĆß", XK_cacute, 1 },
       -        { "žŽ¤", XK_zcaron, 1 },
       +        { 0, 0, XK_Caps_Lock, 2 },
       +        { "a","A", XK_a, 1 },
       +        { "s","S", XK_s, 1 },
       +        { "d","D", XK_d, 1 },
       +        { "f","F[", XK_f, 1 },
       +        { "g","G]", XK_g, 1 },
       +        { "h","H", XK_h, 1 },
       +        { "j","J̣̣", XK_j, 1 },
       +        { "k","Kł", XK_k, 1 },
       +        { "l","LŁ", XK_l, 1 },
       +        { "č","Č", XK_ccaron, 1 },
       +        { "ć","Ćß", XK_cacute, 1 },
       +        { "ž","ޤ", XK_zcaron, 1 },
                { 0 }, /* New row */
       -        { 0, XK_Shift_L, 2 },
       -        { "<>«»", XK_less, 1 },
       -        { "yY", XK_y, 1 },
       -        { "xX", XK_x, 1 },
       -        { "cC", XK_c, 1 },
       -        { "vV@", XK_v, 1 },
       -        { "bB{", XK_b, 1 },
       -        { "nN}", XK_n, 1 },
       -        { "mM§", XK_m, 1 }, /* XXX no symbol */
       -        { ",;", XK_comma, 1 },
       -        { ".:", XK_period, 1 },
       -        { "-_", XK_minus, 1 },
       -        { 0, XK_Shift_R, 2 },
       +        { 0, 0, XK_Shift_L, 2 },
       +        { "<",">«»", XK_less, 1 },
       +        { "y","Y", XK_y, 1 },
       +        { "x","X", XK_x, 1 },
       +        { "c","C", XK_c, 1 },
       +        { "v","V@", XK_v, 1 },
       +        { "b","B{", XK_b, 1 },
       +        { "n","N}", XK_n, 1 },
       +        { "m","M§", XK_m, 1 }, /* XXX no symbol */
       +        { ",",";", XK_comma, 1 },
       +        { ".",":", XK_period, 1 },
       +        { "-","_", XK_minus, 1 },
       +        { 0, 0, XK_Shift_R, 2 },
                { 0 }, /* New row */
       -        { "Ctrl", XK_Control_L, 2 },
       -        { "Win", XK_Super_L, 2 },
       -        { "Alt", XK_Alt_L, 2 },
       -        { "", XK_space, 5 },
       -        { "Alt Gr", XK_ISO_Level3_Shift, 2 },
       -        { "Menu", XK_Menu, 2 },
       -        { "Ctrl", XK_Control_R, 2 },
       +        { "Ctrl", 0, XK_Control_L, 2 },
       +        { "Win", 0, XK_Super_L, 2 },
       +        { "Alt", 0, XK_Alt_L, 2 },
       +        { "", 0, XK_space, 5 },
       +        { "Alt Gr", 0, XK_ISO_Level3_Shift, 2 },
       +        { "Menu", 0, XK_Menu, 2 },
       +        { "Ctrl", 0, XK_Control_R, 2 },
        };
        
        Buttonmod buttonmods[] = {