Introduction
Introduction Statistics Contact Development Disclaimer Help
Added an extra row to the mobile-intl layout for numbers/punctuation, reshuffli…
git clone git://git.suckless.org/svkbd
Log
Files
Refs
README
LICENSE
---
commit 6f3308b3275382e2109b0f0b81ecf637d7dc70ca
parent 0ea4559388dee3ebdb8224b17433385730f7c625
Author: Maarten van Gompel <[email protected]>
Date: Fri, 5 Mar 2021 19:03:46 +0100
Added an extra row to the mobile-intl layout for numbers/punctuation, reshuffli…
Diffstat:
M config.def.h | 6 +++---
M layout.mobile-intl.h | 111 +++++++++++++++++++++++------…
M svkbd.c | 8 +++++++-
3 files changed, 93 insertions(+), 32 deletions(-)
---
diff --git a/config.def.h b/config.def.h
@@ -1,9 +1,9 @@
static const Bool wmborder = True;
-static int fontsize = 20;
+static int fontsize = 22;
static double overlay_delay = 1.0;
-static int heightfactor = 16; //one row of keys takes up 1/x of the screen hei…
+static int heightfactor = 14; //one row of keys takes up 1/x of the screen hei…
static const char *fonts[] = {
- "DejaVu Sans:bold:size=20"
+ "DejaVu Sans:bold:size=22"
};
static const char *colors[SchemeLast][2] = {
/* fg bg */
diff --git a/layout.mobile-intl.h b/layout.mobile-intl.h
@@ -1,7 +1,20 @@
-#define KEYS 43
+#define KEYS 55
static Key keys_en[KEYS] = {
{ "Esc", XK_Escape, 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 },
+
+ { 0 }, /* New row */
+
{ 0, XK_q, 1 },
{ 0, XK_w, 1 },
{ 0, XK_e, 1 },
@@ -12,10 +25,10 @@ static Key keys_en[KEYS] = {
{ 0, XK_i, 1 },
{ 0, XK_o, 1 },
{ 0, XK_p, 1 },
+ { "'\"", XK_apostrophe, 1 },
{ 0 }, /* New row */
- { "'\"", XK_apostrophe, 1 },
{ 0, XK_a, 1 },
{ 0, XK_s, 1 },
{ 0, XK_d, 1 },
@@ -26,10 +39,10 @@ static Key keys_en[KEYS] = {
{ 0, XK_k, 1 },
{ 0, XK_l, 1 },
{ "/?", XK_slash, 1 },
+ { "Tab", XK_Tab, 1 },
{ 0 }, /* New row */
- { "123", XK_Mode_switch, 1 },
{ 0, XK_z, 1 },
{ 0, XK_x, 1 },
{ 0, XK_c, 1 },
@@ -37,7 +50,8 @@ static Key keys_en[KEYS] = {
{ 0, XK_b, 1 },
{ 0, XK_n, 1 },
{ 0, XK_m, 1 },
- { "Tab", XK_Tab, 1 },
+ { ",<", XK_comma, 1 },
+ { ".>", XK_period, 1 },
{ "⌫Bksp", XK_BackSpace, 2 },
{ 0 }, /* New row */
@@ -306,9 +320,21 @@ static Key overlay[OVERLAYS] = {
{ 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 },
+ { 0 }, /* New row */
+
+ { "'\"", XK_apostrophe, 1 },
{ "1!", XK_1, 1 },
{ "2@", XK_2, 1 },
{ "3#", XK_3, 1 },
@@ -322,17 +348,17 @@ static Key keys_symbols[KEYS] = {
{ 0 }, /* New row */
- { "'\"", XK_apostrophe, 1 },
+ { ".>", XK_period, 1 },
+ { ",<", XK_comma, 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_colon, 1 },
+ { "/?", XK_slash, 1 },
+ { "[{", XK_bracketleft, 1 },
+ { "]}", XK_bracketright, 1 },
+ { "Del", XK_Delete, 1 },
{ 0 }, /* New row */
@@ -359,21 +385,8 @@ static Key keys_symbols[KEYS] = {
};
static Key keys_functions[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 },
- { 0 }, /* New row */
-
- { "≅", XK_KP_Insert, 1 },
+ { "Esc", XK_Escape, 1 },
{ "▶", XF86XK_AudioPlay, 1 },
{ "●", XF86XK_AudioRecord, 1 },
{ "■", XF86XK_AudioStop, 1 },
@@ -387,7 +400,7 @@ static Key keys_functions[KEYS] = {
{ 0 }, /* New row */
- { "abc", XK_Mode_switch, 1 },
+ { "≅", XK_KP_Insert, 1 },
{ "Del", XK_Delete, 1 },
{ "⇤", XK_Home, 1 },
{ "←", XK_Left, 1 },
@@ -407,10 +420,52 @@ static Key keys_functions[KEYS] = {
{ "↓", XK_Down, 1 },
{ "↑", XK_Up, 1 },
{ "↲ Enter", 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 },
+ { 0 }, /* New row */
+
+ { "Shift", XK_Shift_L, 1 },
+ { "←", XK_Left, 1 },
+ { "", XK_space, 1 },
+ { "→", XK_Right, 1 },
+ { "⇊", 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 }, /* Last item (double 0) */
+ { 0 }, /* Last item (double 0) */
};
static Key keys_ru[KEYS] = {
+ { "Esc", XK_Escape, 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 },
+
+ { 0 }, /* New row */
+
{ "й", XK_Cyrillic_shorti, 1 },
{ "ц", XK_Cyrillic_tse, 1 },
{ "у", XK_Cyrillic_u, 1 },
@@ -498,7 +553,7 @@ static Key keys_dialer[KEYS] = {
static char* layer_names[LAYERS] = {
"en",
"symbols",
- "functions",
+ "navigation",
"dialer",
"ru",
};
@@ -506,7 +561,7 @@ static char* layer_names[LAYERS] = {
static Key* available_layers[LAYERS] = {
keys_en,
keys_symbols,
- keys_functions,
+ keys_navigation,
keys_dialer,
keys_ru
};
diff --git a/svkbd.c b/svkbd.c
@@ -238,8 +238,13 @@ countrows(void)
int i;
for (i = 0, rows = 1; i < numkeys; i++) {
- if (keys[i].keysym == 0)
+ if (keys[i].keysym == 0) {
rows++;
+ if ((i > 0) && (keys[i-1].keysym == 0)) {
+ rows--;
+ break;
+ }
+ }
}
}
@@ -770,6 +775,7 @@ setlayer(void)
{
numkeys = countkeys(layers[currentlayer]);
memcpy(&keys, layers[currentlayer], sizeof(Key) * numkeys);
+ countrows();
}
void
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.