We can't really know the client side keymaps, so we use the keysym
as the hardware keycode (essentially claiming to have a keyboard with
one key for all possible keysyms). This is not ideal, but its hard to
do better with no knowledge of the client side keyboard mappings.
(And html keyboard events suck badly...)
event->key.window = g_object_ref (window);
event->key.time = message->base.time;
event->key.keyval = message->key.key;
+ event->key.hardware_keycode = message->key.key;
event->key.length = 0;
gdk_event_set_device (event, display->core_pointer);
GdkKeymapKey **keys,
gint *n_keys)
{
- *n_keys = 0;
- return FALSE;
+ if (n_keys)
+ *n_keys = 1;
+ if (keys)
+ {
+ *keys = g_new0 (GdkKeymapKey, 1);
+ (*keys)->keycode = keyval;
+ }
+
+ return TRUE;
}
static gboolean
guint **keyvals,
gint *n_entries)
{
- *n_entries = 0;
- return FALSE;
+ if (n_entries)
+ *n_entries = 1;
+ if (keys)
+ {
+ *keys = g_new0 (GdkKeymapKey, 1);
+ (*keys)->keycode = hardware_keycode;
+ }
+ if (keyvals)
+ {
+ *keyvals = g_new0 (guint, 1);
+ (*keyvals)[0] = hardware_keycode;
+ }
+ return TRUE;
}
static guint
gdk_broadway_keymap_lookup_key (GdkKeymap *keymap,
const GdkKeymapKey *key)
{
- return 0;
+ return key->keycode;
}
gint *level,
GdkModifierType *consumed_modifiers)
{
- return FALSE;
+ if (keyval)
+ *keyval = hardware_keycode;
+ if (effective_group)
+ *effective_group = 0;
+ if (level)
+ *level = 0;
+ return TRUE;
}
static void
gdk_broadway_keymap_map_virtual_modifiers (GdkKeymap *keymap,
GdkModifierType *state)
{
- return FALSE;
+ return TRUE;
}
static void