modifiers: Support Control and Alt

Control and Alt are special in that they aren't expected to switch levels, and so don't need to change what characters are output.

Use in layouts by adding `modifier: Control` or `modifier: Alt` in place of `text: "foo"`.

The latching of the modifier will force the keyboard to emit raw key presses and prevent it from outputting text.
This commit is contained in:
Dorota Czaplejewicz
2020-01-15 15:23:06 +00:00
parent c28f07fcfd
commit 92e9d994fe
13 changed files with 193 additions and 34 deletions

View File

@ -99,8 +99,7 @@ eek_gtk_keyboard_real_draw (GtkWidget *self,
eek_renderer_set_scale_factor (priv->renderer,
gtk_widget_get_scale_factor (self));
}
eek_renderer_render_keyboard (priv->renderer, cr);
eek_renderer_render_keyboard (priv->renderer, priv->submission, cr);
return FALSE;
}

View File

@ -214,8 +214,10 @@ render_button_label (cairo_t *cr,
g_object_unref (layout);
}
// FIXME: Pass just the active modifiers instead of entire submission
void
eek_renderer_render_keyboard (EekRenderer *self,
struct submission *submission,
cairo_t *cr)
{
EekRendererPrivate *priv = eek_renderer_get_instance_private (self);
@ -235,7 +237,7 @@ eek_renderer_render_keyboard (EekRenderer *self,
cairo_scale (cr, priv->widget_to_layout.scale, priv->widget_to_layout.scale);
squeek_draw_layout_base_view(priv->keyboard->layout, self, cr);
squeek_layout_draw_all_changed(priv->keyboard->layout, self, cr);
squeek_layout_draw_all_changed(priv->keyboard->layout, self, cr, submission);
cairo_restore (cr);
}

View File

@ -25,6 +25,7 @@
#include <pango/pangocairo.h>
#include "eek-types.h"
#include "src/submission.h"
G_BEGIN_DECLS
@ -59,7 +60,7 @@ cairo_surface_t *eek_renderer_get_icon_surface(const gchar *icon_name,
gint size,
gint scale);
void eek_renderer_render_keyboard (EekRenderer *renderer,
void eek_renderer_render_keyboard (EekRenderer *renderer, struct submission *submission,
cairo_t *cr);
struct transformation