Derive GdkKeymap for Quartz

This commit is contained in:
Matthias Clasen 2010-12-17 09:38:26 -05:00 committed by Kristian Rietveld
parent acd99409b8
commit f43f259d49

View File

@ -61,6 +61,12 @@
static GdkKeymap *default_keymap = NULL; static GdkKeymap *default_keymap = NULL;
typedef struct _GdkKeymapQuartz GdkKeymapQuartz;
typedef struct _GdkKeymapQuartzClass GdkKeymapQuartzClass;
G_DEFINE_TYPE (GdkKeyMapQuartz, _gdk_keymap_quartz, GDK_TYPE_KEYMAP)
/* Note: we could check only if building against the 10.5 SDK instead, but /* Note: we could check only if building against the 10.5 SDK instead, but
* that would make non-xml layouts not work in 32-bit which would be a quite * that would make non-xml layouts not work in 32-bit which would be a quite
* bad regression. This way, old unsupported layouts will just not work in * bad regression. This way, old unsupported layouts will just not work in
@ -431,47 +437,42 @@ gdk_keymap_get_for_display (GdkDisplay *display)
return default_keymap; return default_keymap;
} }
PangoDirection static PangoDirection
gdk_keymap_get_direction (GdkKeymap *keymap) gdk_quartz_keymap_get_direction (GdkKeymap *keymap)
{ {
return PANGO_DIRECTION_NEUTRAL; return PANGO_DIRECTION_NEUTRAL;
} }
gboolean static gboolean
gdk_keymap_have_bidi_layouts (GdkKeymap *keymap) gdk_quartz_keymap_have_bidi_layouts (GdkKeymap *keymap)
{ {
/* FIXME: Can we implement this? */ /* FIXME: Can we implement this? */
return FALSE; return FALSE;
} }
gboolean static gboolean
gdk_keymap_get_caps_lock_state (GdkKeymap *keymap) gdk_quartz_keymap_get_caps_lock_state (GdkKeymap *keymap)
{ {
/* FIXME: Implement this. */ /* FIXME: Implement this. */
return FALSE; return FALSE;
} }
gboolean static gboolean
gdk_keymap_get_num_lock_state (GdkKeymap *keymap) gdk_quartz_keymap_get_num_lock_state (GdkKeymap *keymap)
{ {
/* FIXME: Implement this. */ /* FIXME: Implement this. */
return FALSE; return FALSE;
} }
gboolean static gboolean
gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, gdk_quartz_keymap_get_entries_for_keyval (GdkKeymap *keymap,
guint keyval, guint keyval,
GdkKeymapKey **keys, GdkKeymapKey **keys,
gint *n_keys) gint *n_keys)
{ {
GArray *keys_array; GArray *keys_array;
int i; int i;
g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE);
g_return_val_if_fail (keys != NULL, FALSE);
g_return_val_if_fail (n_keys != NULL, FALSE);
g_return_val_if_fail (keyval != 0, FALSE);
maybe_update_keymap (); maybe_update_keymap ();
*n_keys = 0; *n_keys = 0;
@ -498,20 +499,17 @@ gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap,
return *n_keys > 0;; return *n_keys > 0;;
} }
gboolean static gboolean
gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, gdk_quartz_keymap_get_entries_for_keycode (GdkKeymap *keymap,
guint hardware_keycode, guint hardware_keycode,
GdkKeymapKey **keys, GdkKeymapKey **keys,
guint **keyvals, guint **keyvals,
gint *n_entries) gint *n_entries)
{ {
GArray *keys_array, *keyvals_array; GArray *keys_array, *keyvals_array;
int i; int i;
guint *p; guint *p;
g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE);
g_return_val_if_fail (n_entries != NULL, FALSE);
maybe_update_keymap (); maybe_update_keymap ();
*n_entries = 0; *n_entries = 0;
@ -562,14 +560,10 @@ gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap,
return *n_entries > 0; return *n_entries > 0;
} }
guint static guint
gdk_keymap_lookup_key (GdkKeymap *keymap, gdk_quartz_keymap_lookup_key (GdkKeymap *keymap,
const GdkKeymapKey *key) const GdkKeymapKey *key)
{ {
g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), 0);
g_return_val_if_fail (key != NULL, 0);
g_return_val_if_fail (key->group < 4, 0);
/* FIXME: Implement */ /* FIXME: Implement */
return 0; return 0;
@ -609,23 +603,20 @@ translate_keysym (guint hardware_keycode,
return tmp_keyval; return tmp_keyval;
} }
gboolean static gboolean
gdk_keymap_translate_keyboard_state (GdkKeymap *keymap, gdk_quartz_keymap_translate_keyboard_state (GdkKeymap *keymap,
guint hardware_keycode, guint hardware_keycode,
GdkModifierType state, GdkModifierType state,
gint group, gint group,
guint *keyval, guint *keyval,
gint *effective_group, gint *effective_group,
gint *level, gint *level,
GdkModifierType *consumed_modifiers) GdkModifierType *consumed_modifiers)
{ {
guint tmp_keyval; guint tmp_keyval;
GdkModifierType bit; GdkModifierType bit;
guint tmp_modifiers = 0; guint tmp_modifiers = 0;
g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE);
g_return_val_if_fail (group >= 0 && group <= 1, FALSE);
maybe_update_keymap (); maybe_update_keymap ();
if (keyval) if (keyval)
@ -659,16 +650,16 @@ gdk_keymap_translate_keyboard_state (GdkKeymap *keymap,
return TRUE; return TRUE;
} }
void static void
gdk_keymap_add_virtual_modifiers (GdkKeymap *keymap, gdk_quartz_keymap_add_virtual_modifiers (GdkKeymap *keymap,
GdkModifierType *state) GdkModifierType *state)
{ {
/* FIXME: For now, we've mimiced the Windows backend. */ /* FIXME: For now, we've mimiced the Windows backend. */
} }
gboolean static gboolean
gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap, gdk_quartz_keymap_map_virtual_modifiers (GdkKeymap *keymap,
GdkModifierType *state) GdkModifierType *state)
{ {
/* FIXME: For now, we've mimiced the Windows backend. */ /* FIXME: For now, we've mimiced the Windows backend. */
return TRUE; return TRUE;
@ -733,3 +724,34 @@ _gdk_quartz_keys_is_modifier (guint keycode)
return FALSE; return FALSE;
} }
static void
_gdk_keymap_quartz_init (GdkKeymapQuartz *keymap)
{
}
static void
_gdk_keymap_quartz_finalize (GObject *object)
{
G_OBJECT_CLASS (_gdk_keymap_quartz_parent_class)->finalize (object);
}
static void
_gdk_keymap_quartz_class_init (GdkKeymapQuartzClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GdkKeymapClass *keymap_class = GDK_KEYMAP_CLASS (klass);
object_class->finalize = gdk_keymap_quartz_finalize;
keymap_class->get_direction = gdk_quartz_keymap_get_direction;
keymap_class->have_bidi_layouts = gdk_quartz_keymap_have_bidi_layouts;
keymap_class->get_caps_lock_state = gdk_quartz_keymap_get_caps_lock_state;
keymap_class->get_num_lock_state = gdk_quartz_keymap_get_num_lock_state;
keymap_class->get_entries_for_keyval = gdk_quartz_keymap_get_entries_for_keyval;
keymap_class->get_entries_for_keycode = gdk_quartz_keymap_get_entries_for_keycode;
keymap_class->lookup_key = gdk_quartz_keymap_lookup_key;
keymap_class->translate_keyboard_state = gdk_quartz_keymap_translate_keyboard_state;
keymap_class->add_virtual_modifiers = gdk_quartz_keymap_add_virtual_modifiers;
keymap_class->map_virtual_modifiers = gdk_quartz_keymap_map_virtual_modifiers;
}