Merge branch 'adapt-keyboard-for-different-levels' into 'master'
Omit keys without labels on the current level, update key definitions See merge request Librem5/squeekboard!87
This commit is contained in:
		@ -26,6 +26,7 @@
 | 
				
			|||||||
      <key keycode="44" name="AC07" oref="outline2" />
 | 
					      <key keycode="44" name="AC07" oref="outline2" />
 | 
				
			||||||
      <key keycode="45" name="AC08" oref="outline2" />
 | 
					      <key keycode="45" name="AC08" oref="outline2" />
 | 
				
			||||||
      <key keycode="46" name="AC09" oref="outline2" />
 | 
					      <key keycode="46" name="AC09" oref="outline2" />
 | 
				
			||||||
 | 
					      <key keycode="47" name="AC10" oref="outline2" />
 | 
				
			||||||
    </row>
 | 
					    </row>
 | 
				
			||||||
  </section>
 | 
					  </section>
 | 
				
			||||||
  <section angle="0">
 | 
					  <section angle="0">
 | 
				
			||||||
 | 
				
			|||||||
@ -271,10 +271,11 @@ xkb_keymap {
 | 
				
			|||||||
        key <AC03> { [ d, D ], [ dollar, U00A3 ] };
 | 
					        key <AC03> { [ d, D ], [ dollar, U00A3 ] };
 | 
				
			||||||
        key <AC04> { [ f, F ], [ percent, EuroSign ] };
 | 
					        key <AC04> { [ f, F ], [ percent, EuroSign ] };
 | 
				
			||||||
        key <AC05> { [ g, G ], [ ampersand, U00A5 ] };
 | 
					        key <AC05> { [ g, G ], [ ampersand, U00A5 ] };
 | 
				
			||||||
        key <AC06> { [ h, H ], [ minus, underscore ] };
 | 
					        key <AC06> { [ h, H ], [ minus, asciicircum ] };
 | 
				
			||||||
        key <AC07> { [ j, J ], [ plus, equal ] };
 | 
					        key <AC07> { [ j, J ], [ underscore, degree ] };
 | 
				
			||||||
        key <AC08> { [ k, K ], [ U00FC, asciicircum ] };
 | 
					        key <AC08> { [ k, K ], [ plus, equal ] };
 | 
				
			||||||
        key <AC09> { [ l, L ], [ U00F6, degree ] };
 | 
					        key <AC09> { [ l, L ], [ parenleft, braceleft ] };
 | 
				
			||||||
 | 
					        key <AC10> { [   ], [ parenright, braceright ] };
 | 
				
			||||||
        key <RTRN> { [ Return, Return ], [ Return, Return ] };
 | 
					        key <RTRN> { [ Return, Return ], [ Return, Return ] };
 | 
				
			||||||
        key <LFSH> { [ Shift_L, Shift_L ], [ Shift_L, Shift_L ] };
 | 
					        key <LFSH> { [ Shift_L, Shift_L ], [ Shift_L, Shift_L ] };
 | 
				
			||||||
        key <AB01> { [ z, Z ], [ comma, backslash ] };
 | 
					        key <AB01> { [ z, Z ], [ comma, backslash ] };
 | 
				
			||||||
 | 
				
			|||||||
@ -94,23 +94,29 @@
 | 
				
			|||||||
    <symbol label="h">h</symbol>
 | 
					    <symbol label="h">h</symbol>
 | 
				
			||||||
    <symbol label="H">H</symbol>
 | 
					    <symbol label="H">H</symbol>
 | 
				
			||||||
    <symbol label="-">minus</symbol>
 | 
					    <symbol label="-">minus</symbol>
 | 
				
			||||||
    <symbol label="_">underscore</symbol>
 | 
					    <symbol label="^">asciicircum</symbol>
 | 
				
			||||||
  </key>
 | 
					  </key>
 | 
				
			||||||
  <key name="AC07">
 | 
					  <key name="AC07">
 | 
				
			||||||
    <symbol label="j">j</symbol>
 | 
					    <symbol label="j">j</symbol>
 | 
				
			||||||
    <symbol label="J">J</symbol>
 | 
					    <symbol label="J">J</symbol>
 | 
				
			||||||
    <symbol label="+">plus</symbol>
 | 
					    <symbol label="_">underscore</symbol>
 | 
				
			||||||
    <symbol label="=">equal</symbol>
 | 
					    <symbol label="°">degree</symbol>
 | 
				
			||||||
  </key>
 | 
					  </key>
 | 
				
			||||||
  <key name="AC08">
 | 
					  <key name="AC08">
 | 
				
			||||||
    <symbol label="k">k</symbol>
 | 
					    <symbol label="k">k</symbol>
 | 
				
			||||||
    <symbol label="K">K</symbol>
 | 
					    <symbol label="K">K</symbol>
 | 
				
			||||||
    <symbol label="(">parenleft</symbol>
 | 
					    <symbol label="+">plus</symbol>
 | 
				
			||||||
    <symbol label="{">braceleft</symbol>
 | 
					    <symbol label="=">equal</symbol>
 | 
				
			||||||
  </key>
 | 
					  </key>
 | 
				
			||||||
  <key name="AC09">
 | 
					  <key name="AC09">
 | 
				
			||||||
    <symbol label="l">l</symbol>
 | 
					    <symbol label="l">l</symbol>
 | 
				
			||||||
    <symbol label="L">L</symbol>
 | 
					    <symbol label="L">L</symbol>
 | 
				
			||||||
 | 
					    <symbol label="(">parenleft</symbol>
 | 
				
			||||||
 | 
					    <symbol label="{">braceleft</symbol>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key name="AC10">
 | 
				
			||||||
 | 
					    <symbol label=""></symbol>
 | 
				
			||||||
 | 
					    <symbol label=""></symbol>
 | 
				
			||||||
    <symbol label=")">parenright</symbol>
 | 
					    <symbol label=")">parenright</symbol>
 | 
				
			||||||
    <symbol label="}">braceright</symbol>
 | 
					    <symbol label="}">braceright</symbol>
 | 
				
			||||||
  </key>
 | 
					  </key>
 | 
				
			||||||
@ -181,6 +187,6 @@
 | 
				
			|||||||
    <symbol label=" ">space</symbol>
 | 
					    <symbol label=" ">space</symbol>
 | 
				
			||||||
  </key>
 | 
					  </key>
 | 
				
			||||||
  <key name="BKSP">
 | 
					  <key name="BKSP">
 | 
				
			||||||
    <symbol keyval="65288" icon="edit-clear-symbolic">backspace</symbol>
 | 
					    <symbol keyval="65288" icon="edit-clear-symbolic">BackSpace</symbol>
 | 
				
			||||||
  </key>
 | 
					  </key>
 | 
				
			||||||
</symbols>
 | 
					</symbols>
 | 
				
			||||||
 | 
				
			|||||||
@ -609,3 +609,11 @@ void eek_key_set_pressed(EekKey *key, gboolean value)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    priv->is_pressed = 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);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -89,5 +89,7 @@ gboolean         eek_key_is_locked           (EekKey          *key);
 | 
				
			|||||||
void             eek_key_set_pressed         (EekKey          *key,
 | 
					void             eek_key_set_pressed         (EekKey          *key,
 | 
				
			||||||
                                              gboolean         value);
 | 
					                                              gboolean         value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gboolean         eek_key_has_label           (EekKey          *key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
G_END_DECLS
 | 
					G_END_DECLS
 | 
				
			||||||
#endif  /* EEK_KEY_H */
 | 
					#endif  /* EEK_KEY_H */
 | 
				
			||||||
 | 
				
			|||||||
@ -447,6 +447,9 @@ render_key (EekRenderer *self,
 | 
				
			|||||||
    PangoRectangle extents = { 0, };
 | 
					    PangoRectangle extents = { 0, };
 | 
				
			||||||
    EekColor foreground;
 | 
					    EekColor foreground;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!eek_key_has_label(key))
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    oref = eek_key_get_oref (key);
 | 
					    oref = eek_key_get_oref (key);
 | 
				
			||||||
    outline = eek_keyboard_get_outline (priv->keyboard, oref);
 | 
					    outline = eek_keyboard_get_outline (priv->keyboard, oref);
 | 
				
			||||||
    if (outline == NULL)
 | 
					    if (outline == NULL)
 | 
				
			||||||
 | 
				
			|||||||
@ -500,10 +500,6 @@ keysizer(EekElement *element, gpointer user_data)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    EekKey *key = EEK_KEY(element);
 | 
					    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);
 | 
					    EekKeyboard *keyboard = EEK_KEYBOARD(user_data);
 | 
				
			||||||
    uint oref = eek_key_get_oref (key);
 | 
					    uint oref = eek_key_get_oref (key);
 | 
				
			||||||
    EekOutline *outline = eek_keyboard_get_outline (keyboard, oref);
 | 
					    EekOutline *outline = eek_keyboard_get_outline (keyboard, oref);
 | 
				
			||||||
@ -539,8 +535,8 @@ keycounter (EekElement *element, gpointer user_data)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    EekKey *key = EEK_KEY(element);
 | 
					    EekKey *key = EEK_KEY(element);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Skip keys without symbols for the current level. */
 | 
					    /* Skip keys without labels for the current level. */
 | 
				
			||||||
    if (!eek_key_get_symbol(key))
 | 
					    if (!eek_key_has_label(key))
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    struct keys_info *data = user_data;
 | 
					    struct keys_info *data = user_data;
 | 
				
			||||||
@ -558,8 +554,8 @@ keyplacer(EekElement *element, gpointer user_data)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    EekKey *key = EEK_KEY(element);
 | 
					    EekKey *key = EEK_KEY(element);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Skip keys without symbols for the current level. */
 | 
					    /* Skip keys without labels for the current level. */
 | 
				
			||||||
    if (!eek_key_get_symbol(key))
 | 
					    if (!eek_key_has_label(key))
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    double *current_offset = user_data;
 | 
					    double *current_offset = user_data;
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user