From e5b6d66d60faaeb3537ed12bff50b3d40badbae3 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Thu, 18 Jul 2019 21:16:22 +0200 Subject: [PATCH] Omit keys without labels on the current level, update key definitions --- data/keyboards/geometry/compact.xml | 1 + data/keyboards/keymaps/us.xkb | 9 +++++---- data/keyboards/symbols/us.xml | 18 ++++++++++++------ eek/eek-key.c | 8 ++++++++ eek/eek-key.h | 2 ++ eek/eek-renderer.c | 3 +++ eek/eek-section.c | 12 ++++-------- 7 files changed, 35 insertions(+), 18 deletions(-) diff --git a/data/keyboards/geometry/compact.xml b/data/keyboards/geometry/compact.xml index d2ef4914..f9f76bd4 100644 --- a/data/keyboards/geometry/compact.xml +++ b/data/keyboards/geometry/compact.xml @@ -26,6 +26,7 @@ +
diff --git a/data/keyboards/keymaps/us.xkb b/data/keyboards/keymaps/us.xkb index 44efcbb7..244f5646 100644 --- a/data/keyboards/keymaps/us.xkb +++ b/data/keyboards/keymaps/us.xkb @@ -271,10 +271,11 @@ xkb_keymap { key { [ d, D ], [ dollar, U00A3 ] }; key { [ f, F ], [ percent, EuroSign ] }; key { [ g, G ], [ ampersand, U00A5 ] }; - key { [ h, H ], [ minus, underscore ] }; - key { [ j, J ], [ plus, equal ] }; - key { [ k, K ], [ U00FC, asciicircum ] }; - key { [ l, L ], [ U00F6, degree ] }; + key { [ h, H ], [ minus, asciicircum ] }; + key { [ j, J ], [ underscore, degree ] }; + key { [ k, K ], [ plus, equal ] }; + key { [ l, L ], [ parenleft, braceleft ] }; + key { [ ], [ parenright, braceright ] }; key { [ Return, Return ], [ Return, Return ] }; key { [ Shift_L, Shift_L ], [ Shift_L, Shift_L ] }; key { [ z, Z ], [ comma, backslash ] }; diff --git a/data/keyboards/symbols/us.xml b/data/keyboards/symbols/us.xml index 047e968d..dd01d459 100644 --- a/data/keyboards/symbols/us.xml +++ b/data/keyboards/symbols/us.xml @@ -94,23 +94,29 @@ h H minus - underscore + asciicircum j J - plus - equal + underscore + degree k K - parenleft - braceleft + plus + equal l L + parenleft + braceleft + + + + parenright braceright @@ -181,6 +187,6 @@ space - backspace + BackSpace diff --git a/eek/eek-key.c b/eek/eek-key.c index 7df2b81d..a2b33381 100644 --- a/eek/eek-key.c +++ b/eek/eek-key.c @@ -609,3 +609,11 @@ void eek_key_set_pressed(EekKey *key, gboolean value) priv->is_pressed = value; } + +gboolean +eek_key_has_label(EekKey *key) +{ + EekSymbol *symbol = eek_key_get_symbol(key); + return (eek_symbol_get_label(symbol) != NULL) || + (eek_symbol_get_icon_name(symbol) != NULL); +} diff --git a/eek/eek-key.h b/eek/eek-key.h index 31d8b65b..cd6ae4f0 100644 --- a/eek/eek-key.h +++ b/eek/eek-key.h @@ -89,5 +89,7 @@ gboolean eek_key_is_locked (EekKey *key); void eek_key_set_pressed (EekKey *key, gboolean value); +gboolean eek_key_has_label (EekKey *key); + G_END_DECLS #endif /* EEK_KEY_H */ diff --git a/eek/eek-renderer.c b/eek/eek-renderer.c index 212536ed..eeb7cc3d 100644 --- a/eek/eek-renderer.c +++ b/eek/eek-renderer.c @@ -447,6 +447,9 @@ render_key (EekRenderer *self, PangoRectangle extents = { 0, }; EekColor foreground; + if (!eek_key_has_label(key)) + return; + oref = eek_key_get_oref (key); outline = eek_keyboard_get_outline (priv->keyboard, oref); if (outline == NULL) diff --git a/eek/eek-section.c b/eek/eek-section.c index f0d13312..e2763b9f 100644 --- a/eek/eek-section.c +++ b/eek/eek-section.c @@ -500,10 +500,6 @@ keysizer(EekElement *element, gpointer user_data) { EekKey *key = EEK_KEY(element); - /* Skip keys without symbols for the current level. */ - if (!eek_key_get_symbol(key)) - return; - EekKeyboard *keyboard = EEK_KEYBOARD(user_data); uint oref = eek_key_get_oref (key); EekOutline *outline = eek_keyboard_get_outline (keyboard, oref); @@ -539,8 +535,8 @@ keycounter (EekElement *element, gpointer user_data) { EekKey *key = EEK_KEY(element); - /* Skip keys without symbols for the current level. */ - if (!eek_key_get_symbol(key)) + /* Skip keys without labels for the current level. */ + if (!eek_key_has_label(key)) return; struct keys_info *data = user_data; @@ -558,8 +554,8 @@ keyplacer(EekElement *element, gpointer user_data) { EekKey *key = EEK_KEY(element); - /* Skip keys without symbols for the current level. */ - if (!eek_key_get_symbol(key)) + /* Skip keys without labels for the current level. */ + if (!eek_key_has_label(key)) return; double *current_offset = user_data;