Add "keycode" property to EekKey.
Add eek_key_get_keysyms().
This commit is contained in:
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
|
PROP_KEYCODE,
|
||||||
PROP_KEYSYMS,
|
PROP_KEYSYMS,
|
||||||
PROP_COLUMN,
|
PROP_COLUMN,
|
||||||
PROP_ROW,
|
PROP_ROW,
|
||||||
@ -59,6 +60,15 @@ struct _EekClutterKeyPrivate
|
|||||||
EekSimpleKey *simple;
|
EekSimpleKey *simple;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static guint
|
||||||
|
eek_clutter_key_real_get_keycode (EekKey *self)
|
||||||
|
{
|
||||||
|
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(self);
|
||||||
|
|
||||||
|
g_return_val_if_fail (priv, EEK_INVALID_KEYCODE);
|
||||||
|
return eek_key_get_keycode (EEK_KEY(priv->simple));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
eek_clutter_key_real_set_keysyms (EekKey *self,
|
eek_clutter_key_real_set_keysyms (EekKey *self,
|
||||||
guint *keysyms,
|
guint *keysyms,
|
||||||
@ -71,6 +81,18 @@ eek_clutter_key_real_set_keysyms (EekKey *self,
|
|||||||
eek_key_set_keysyms (EEK_KEY(priv->simple), keysyms, groups, levels);
|
eek_key_set_keysyms (EEK_KEY(priv->simple), keysyms, groups, levels);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
eek_clutter_key_real_get_keysyms (EekKey *self,
|
||||||
|
guint **keysyms,
|
||||||
|
gint *groups,
|
||||||
|
gint *levels)
|
||||||
|
{
|
||||||
|
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(self);
|
||||||
|
|
||||||
|
g_return_if_fail (priv);
|
||||||
|
eek_key_get_keysyms (EEK_KEY(priv->simple), keysyms, groups, levels);
|
||||||
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
eek_clutter_key_real_get_groups (EekKey *self)
|
eek_clutter_key_real_get_groups (EekKey *self)
|
||||||
{
|
{
|
||||||
@ -177,7 +199,9 @@ eek_clutter_key_real_get_keysym_index (EekKey *self, gint *group, gint *level)
|
|||||||
static void
|
static void
|
||||||
eek_key_iface_init (EekKeyIface *iface)
|
eek_key_iface_init (EekKeyIface *iface)
|
||||||
{
|
{
|
||||||
|
iface->get_keycode = eek_clutter_key_real_get_keycode;
|
||||||
iface->set_keysyms = eek_clutter_key_real_set_keysyms;
|
iface->set_keysyms = eek_clutter_key_real_set_keysyms;
|
||||||
|
iface->get_keysyms = eek_clutter_key_real_get_keysyms;
|
||||||
iface->get_groups = eek_clutter_key_real_get_groups;
|
iface->get_groups = eek_clutter_key_real_get_groups;
|
||||||
iface->get_keysym = eek_clutter_key_real_get_keysym;
|
iface->get_keysym = eek_clutter_key_real_get_keysym;
|
||||||
iface->set_index = eek_clutter_key_real_set_index;
|
iface->set_index = eek_clutter_key_real_set_index;
|
||||||
@ -337,6 +361,7 @@ eek_clutter_key_set_property (GObject *object,
|
|||||||
g_value_get_pointer (value));
|
g_value_get_pointer (value));
|
||||||
break;
|
break;
|
||||||
/* Otherwise delegate to priv->simple or the parent. */
|
/* Otherwise delegate to priv->simple or the parent. */
|
||||||
|
case PROP_KEYCODE:
|
||||||
case PROP_KEYSYMS:
|
case PROP_KEYSYMS:
|
||||||
case PROP_COLUMN:
|
case PROP_COLUMN:
|
||||||
case PROP_GROUP:
|
case PROP_GROUP:
|
||||||
@ -369,6 +394,7 @@ eek_clutter_key_get_property (GObject *object,
|
|||||||
eek_key_get_bounds (EEK_KEY(object), &bounds);
|
eek_key_get_bounds (EEK_KEY(object), &bounds);
|
||||||
g_value_set_boxed (value, &bounds);
|
g_value_set_boxed (value, &bounds);
|
||||||
break;
|
break;
|
||||||
|
case PROP_KEYCODE:
|
||||||
case PROP_KEYSYMS:
|
case PROP_KEYSYMS:
|
||||||
case PROP_COLUMN:
|
case PROP_COLUMN:
|
||||||
case PROP_ROW:
|
case PROP_ROW:
|
||||||
@ -409,6 +435,9 @@ eek_clutter_key_class_init (EekClutterKeyClass *klass)
|
|||||||
gobject_class->finalize = eek_clutter_key_finalize;
|
gobject_class->finalize = eek_clutter_key_finalize;
|
||||||
gobject_class->dispose = eek_clutter_key_dispose;
|
gobject_class->dispose = eek_clutter_key_dispose;
|
||||||
|
|
||||||
|
g_object_class_override_property (gobject_class,
|
||||||
|
PROP_KEYCODE,
|
||||||
|
"keycode");
|
||||||
g_object_class_override_property (gobject_class,
|
g_object_class_override_property (gobject_class,
|
||||||
PROP_KEYSYMS,
|
PROP_KEYSYMS,
|
||||||
"keysyms");
|
"keysyms");
|
||||||
|
|||||||
@ -169,6 +169,7 @@ eek_clutter_section_real_get_bounds (EekSection *self,
|
|||||||
static EekKey *
|
static EekKey *
|
||||||
eek_clutter_section_real_create_key (EekSection *self,
|
eek_clutter_section_real_create_key (EekSection *self,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
|
guint keycode,
|
||||||
guint *keysyms,
|
guint *keysyms,
|
||||||
gint num_groups,
|
gint num_groups,
|
||||||
gint num_levels,
|
gint num_levels,
|
||||||
@ -195,6 +196,7 @@ eek_clutter_section_real_create_key (EekSection *self,
|
|||||||
matrix.num_levels = num_levels;
|
matrix.num_levels = num_levels;
|
||||||
key = g_object_new (EEK_TYPE_CLUTTER_KEY,
|
key = g_object_new (EEK_TYPE_CLUTTER_KEY,
|
||||||
"name", name,
|
"name", name,
|
||||||
|
"keycode", keycode,
|
||||||
"keysyms", &matrix,
|
"keysyms", &matrix,
|
||||||
"column", column,
|
"column", column,
|
||||||
"row", row,
|
"row", row,
|
||||||
|
|||||||
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
|
PROP_KEYCODE,
|
||||||
PROP_KEYSYMS,
|
PROP_KEYSYMS,
|
||||||
PROP_COLUMN,
|
PROP_COLUMN,
|
||||||
PROP_ROW,
|
PROP_ROW,
|
||||||
@ -59,6 +60,15 @@ struct _EekGtkKeyPrivate
|
|||||||
EekSimpleKey *simple;
|
EekSimpleKey *simple;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static guint
|
||||||
|
eek_gtk_key_real_get_keycode (EekKey *self)
|
||||||
|
{
|
||||||
|
EekGtkKeyPrivate *priv = EEK_GTK_KEY_GET_PRIVATE(self);
|
||||||
|
|
||||||
|
g_return_val_if_fail (priv, EEK_INVALID_KEYCODE);
|
||||||
|
return eek_key_get_keycode (EEK_KEY(priv->simple));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
eek_gtk_key_real_set_keysyms (EekKey *self,
|
eek_gtk_key_real_set_keysyms (EekKey *self,
|
||||||
guint *keysyms,
|
guint *keysyms,
|
||||||
@ -73,6 +83,18 @@ eek_gtk_key_real_set_keysyms (EekKey *self,
|
|||||||
eek_key_set_keysym_index (EEK_KEY(self), 0, 0);
|
eek_key_set_keysym_index (EEK_KEY(self), 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
eek_gtk_key_real_get_keysyms (EekKey *self,
|
||||||
|
guint **keysyms,
|
||||||
|
gint *groups,
|
||||||
|
gint *levels)
|
||||||
|
{
|
||||||
|
EekGtkKeyPrivate *priv = EEK_GTK_KEY_GET_PRIVATE(self);
|
||||||
|
|
||||||
|
g_return_if_fail (priv);
|
||||||
|
eek_key_get_keysyms (EEK_KEY(priv->simple), keysyms, groups, levels);
|
||||||
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
eek_gtk_key_real_get_groups (EekKey *self)
|
eek_gtk_key_real_get_groups (EekKey *self)
|
||||||
{
|
{
|
||||||
@ -181,7 +203,9 @@ eek_gtk_key_real_get_keysym_index (EekKey *self, gint *group, gint *level)
|
|||||||
static void
|
static void
|
||||||
eek_key_iface_init (EekKeyIface *iface)
|
eek_key_iface_init (EekKeyIface *iface)
|
||||||
{
|
{
|
||||||
|
iface->get_keycode = eek_gtk_key_real_get_keycode;
|
||||||
iface->set_keysyms = eek_gtk_key_real_set_keysyms;
|
iface->set_keysyms = eek_gtk_key_real_set_keysyms;
|
||||||
|
iface->get_keysyms = eek_gtk_key_real_get_keysyms;
|
||||||
iface->get_groups = eek_gtk_key_real_get_groups;
|
iface->get_groups = eek_gtk_key_real_get_groups;
|
||||||
iface->get_keysym = eek_gtk_key_real_get_keysym;
|
iface->get_keysym = eek_gtk_key_real_get_keysym;
|
||||||
iface->set_index = eek_gtk_key_real_set_index;
|
iface->set_index = eek_gtk_key_real_set_index;
|
||||||
@ -227,6 +251,7 @@ eek_gtk_key_set_property (GObject *object,
|
|||||||
matrix->num_groups,
|
matrix->num_groups,
|
||||||
matrix->num_levels);
|
matrix->num_levels);
|
||||||
break;
|
break;
|
||||||
|
case PROP_KEYCODE:
|
||||||
case PROP_BOUNDS:
|
case PROP_BOUNDS:
|
||||||
case PROP_OUTLINE:
|
case PROP_OUTLINE:
|
||||||
case PROP_COLUMN:
|
case PROP_COLUMN:
|
||||||
@ -255,6 +280,7 @@ eek_gtk_key_get_property (GObject *object,
|
|||||||
|
|
||||||
g_return_if_fail (priv);
|
g_return_if_fail (priv);
|
||||||
switch (prop_id) {
|
switch (prop_id) {
|
||||||
|
case PROP_KEYCODE:
|
||||||
case PROP_BOUNDS:
|
case PROP_BOUNDS:
|
||||||
case PROP_KEYSYMS:
|
case PROP_KEYSYMS:
|
||||||
case PROP_COLUMN:
|
case PROP_COLUMN:
|
||||||
@ -288,6 +314,9 @@ eek_gtk_key_class_init (EekGtkKeyClass *klass)
|
|||||||
gobject_class->finalize = eek_gtk_key_finalize;
|
gobject_class->finalize = eek_gtk_key_finalize;
|
||||||
gobject_class->dispose = eek_gtk_key_dispose;
|
gobject_class->dispose = eek_gtk_key_dispose;
|
||||||
|
|
||||||
|
g_object_class_override_property (gobject_class,
|
||||||
|
PROP_KEYCODE,
|
||||||
|
"keycode");
|
||||||
g_object_class_override_property (gobject_class,
|
g_object_class_override_property (gobject_class,
|
||||||
PROP_KEYSYMS,
|
PROP_KEYSYMS,
|
||||||
"keysyms");
|
"keysyms");
|
||||||
|
|||||||
@ -162,6 +162,7 @@ eek_gtk_section_real_get_bounds (EekSection *self,
|
|||||||
static EekKey *
|
static EekKey *
|
||||||
eek_gtk_section_real_create_key (EekSection *self,
|
eek_gtk_section_real_create_key (EekSection *self,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
|
guint keycode,
|
||||||
guint *keysyms,
|
guint *keysyms,
|
||||||
gint num_groups,
|
gint num_groups,
|
||||||
gint num_levels,
|
gint num_levels,
|
||||||
@ -187,6 +188,7 @@ eek_gtk_section_real_create_key (EekSection *self,
|
|||||||
matrix.num_levels = num_levels;
|
matrix.num_levels = num_levels;
|
||||||
key = g_object_new (EEK_TYPE_GTK_KEY,
|
key = g_object_new (EEK_TYPE_GTK_KEY,
|
||||||
"name", name,
|
"name", name,
|
||||||
|
"keycode", keycode,
|
||||||
"keysyms", &matrix,
|
"keysyms", &matrix,
|
||||||
"column", column,
|
"column", column,
|
||||||
"row", row,
|
"row", row,
|
||||||
|
|||||||
@ -54,6 +54,18 @@ eek_key_base_init (gpointer g_iface)
|
|||||||
G_PARAM_READWRITE);
|
G_PARAM_READWRITE);
|
||||||
g_object_interface_install_property (g_iface, pspec);
|
g_object_interface_install_property (g_iface, pspec);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* EekKey:keycode:
|
||||||
|
*
|
||||||
|
* The keycode of #EekKey.
|
||||||
|
*/
|
||||||
|
pspec = g_param_spec_uint ("keycode",
|
||||||
|
"Keycode",
|
||||||
|
"Keycode of the key",
|
||||||
|
0, G_MAXUINT, 0,
|
||||||
|
G_PARAM_READWRITE);
|
||||||
|
g_object_interface_install_property (g_iface, pspec);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EekKey:keysyms:
|
* EekKey:keysyms:
|
||||||
*
|
*
|
||||||
@ -164,6 +176,22 @@ eek_key_get_type (void)
|
|||||||
return iface_type;
|
return iface_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* eek_key_get_keycode:
|
||||||
|
* @key: an #EekKey
|
||||||
|
*
|
||||||
|
* Get the keycode of @key.
|
||||||
|
*/
|
||||||
|
guint
|
||||||
|
eek_key_get_keycode (EekKey *key)
|
||||||
|
{
|
||||||
|
EekKeyIface *iface = EEK_KEY_GET_IFACE(key);
|
||||||
|
|
||||||
|
g_return_val_if_fail (iface, EEK_INVALID_KEYCODE);
|
||||||
|
g_return_val_if_fail (iface->get_keycode, EEK_INVALID_KEYCODE);
|
||||||
|
return (*iface->get_keycode) (key);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* eek_key_set_keysyms:
|
* eek_key_set_keysyms:
|
||||||
* @key: an #EekKey
|
* @key: an #EekKey
|
||||||
@ -188,6 +216,32 @@ eek_key_set_keysyms (EekKey *key,
|
|||||||
(*iface->set_keysyms) (key, keysyms, num_groups, num_levels);
|
(*iface->set_keysyms) (key, keysyms, num_groups, num_levels);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* eek_key_get_keysyms:
|
||||||
|
* @key: an #EekKey
|
||||||
|
* @keysyms: pointer where symbol matrix of @key will be stored
|
||||||
|
* @num_groups: pointer where the number of groups (rows) of @keysyms
|
||||||
|
* will be stored
|
||||||
|
* @num_levels: pointer where the number of levels (columns) of
|
||||||
|
* @keysyms will be stored
|
||||||
|
*
|
||||||
|
* Get the symbol matrix of @key to @keysyms. @keysyms is an array of
|
||||||
|
* symbols (unsigned int) and the length must match with @num_groups *
|
||||||
|
* @num_levels.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
eek_key_get_keysyms (EekKey *key,
|
||||||
|
guint **keysyms,
|
||||||
|
gint *num_groups,
|
||||||
|
gint *num_levels)
|
||||||
|
{
|
||||||
|
EekKeyIface *iface = EEK_KEY_GET_IFACE(key);
|
||||||
|
|
||||||
|
g_return_if_fail (iface);
|
||||||
|
g_return_if_fail (iface->get_keysyms);
|
||||||
|
(*iface->get_keysyms) (key, keysyms, num_groups, num_levels);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* eek_key_get_groups:
|
* eek_key_get_groups:
|
||||||
* @key: an #EekKey
|
* @key: an #EekKey
|
||||||
|
|||||||
@ -39,10 +39,15 @@ struct _EekKeyIface
|
|||||||
GTypeInterface g_iface;
|
GTypeInterface g_iface;
|
||||||
|
|
||||||
/*< public >*/
|
/*< public >*/
|
||||||
|
guint (* get_keycode) (EekKey *self);
|
||||||
void (* set_keysyms) (EekKey *self,
|
void (* set_keysyms) (EekKey *self,
|
||||||
guint *keysyms,
|
guint *keysyms,
|
||||||
gint num_groups,
|
gint num_groups,
|
||||||
gint num_levels);
|
gint num_levels);
|
||||||
|
void (* get_keysyms) (EekKey *self,
|
||||||
|
guint **keysyms,
|
||||||
|
gint *num_groups,
|
||||||
|
gint *num_levels);
|
||||||
gint (* get_groups) (EekKey *self);
|
gint (* get_groups) (EekKey *self);
|
||||||
guint (* get_keysym) (EekKey *self);
|
guint (* get_keysym) (EekKey *self);
|
||||||
|
|
||||||
@ -71,10 +76,15 @@ struct _EekKeyIface
|
|||||||
|
|
||||||
GType eek_key_get_type (void) G_GNUC_CONST;
|
GType eek_key_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
|
guint eek_key_get_keycode (EekKey *key);
|
||||||
void eek_key_set_keysyms (EekKey *key,
|
void eek_key_set_keysyms (EekKey *key,
|
||||||
guint *keysyms,
|
guint *keysyms,
|
||||||
gint num_groups,
|
gint num_groups,
|
||||||
gint num_levels);
|
gint num_levels);
|
||||||
|
void eek_key_get_keysyms (EekKey *key,
|
||||||
|
guint **keysyms,
|
||||||
|
gint *num_groups,
|
||||||
|
gint *num_levels);
|
||||||
gint eek_key_get_groups (EekKey *key);
|
gint eek_key_get_groups (EekKey *key);
|
||||||
guint eek_key_get_keysym (EekKey *key);
|
guint eek_key_get_keysym (EekKey *key);
|
||||||
|
|
||||||
|
|||||||
@ -21,6 +21,8 @@
|
|||||||
#define EEK_KEYSYMS_H 1
|
#define EEK_KEYSYMS_H 1
|
||||||
|
|
||||||
#define EEK_INVALID_KEYSYM ((guint)(-1))
|
#define EEK_INVALID_KEYSYM ((guint)(-1))
|
||||||
|
#define EEK_INVALID_KEYCODE ((guint)(-1))
|
||||||
|
|
||||||
G_CONST_RETURN gchar *eek_keysym_to_string (guint keysym);
|
G_CONST_RETURN gchar *eek_keysym_to_string (guint keysym);
|
||||||
|
|
||||||
#endif /* EEK_KEYSYMS_H */
|
#endif /* EEK_KEYSYMS_H */
|
||||||
|
|||||||
@ -317,6 +317,7 @@ eek_section_get_bounds (EekSection *section,
|
|||||||
EekKey *
|
EekKey *
|
||||||
eek_section_create_key (EekSection *section,
|
eek_section_create_key (EekSection *section,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
|
guint keycode,
|
||||||
guint *keysyms,
|
guint *keysyms,
|
||||||
gint num_groups,
|
gint num_groups,
|
||||||
gint num_levels,
|
gint num_levels,
|
||||||
@ -334,6 +335,7 @@ eek_section_create_key (EekSection *section,
|
|||||||
|
|
||||||
return (*iface->create_key) (section,
|
return (*iface->create_key) (section,
|
||||||
name,
|
name,
|
||||||
|
keycode,
|
||||||
keysyms,
|
keysyms,
|
||||||
num_groups,
|
num_groups,
|
||||||
num_levels,
|
num_levels,
|
||||||
|
|||||||
@ -63,6 +63,7 @@ struct _EekSectionIface
|
|||||||
|
|
||||||
EekKey *(* create_key) (EekSection *self,
|
EekKey *(* create_key) (EekSection *self,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
|
guint keycode,
|
||||||
guint *keysyms,
|
guint *keysyms,
|
||||||
gint num_groups,
|
gint num_groups,
|
||||||
gint num_levels,
|
gint num_levels,
|
||||||
@ -103,6 +104,7 @@ void eek_section_get_bounds (EekSection *section,
|
|||||||
|
|
||||||
EekKey *eek_section_create_key (EekSection *section,
|
EekKey *eek_section_create_key (EekSection *section,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
|
guint keycode,
|
||||||
guint *keysyms,
|
guint *keysyms,
|
||||||
gint num_groups,
|
gint num_groups,
|
||||||
gint num_levels,
|
gint num_levels,
|
||||||
|
|||||||
@ -32,6 +32,7 @@
|
|||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_NAME,
|
PROP_NAME,
|
||||||
|
PROP_KEYCODE,
|
||||||
PROP_KEYSYMS,
|
PROP_KEYSYMS,
|
||||||
PROP_COLUMN,
|
PROP_COLUMN,
|
||||||
PROP_ROW,
|
PROP_ROW,
|
||||||
@ -55,6 +56,7 @@ G_DEFINE_TYPE_WITH_CODE (EekSimpleKey, eek_simple_key,
|
|||||||
struct _EekSimpleKeyPrivate
|
struct _EekSimpleKeyPrivate
|
||||||
{
|
{
|
||||||
gchar *name;
|
gchar *name;
|
||||||
|
guint keycode;
|
||||||
guint *keysyms;
|
guint *keysyms;
|
||||||
gint num_levels;
|
gint num_levels;
|
||||||
gint num_groups;
|
gint num_groups;
|
||||||
@ -66,6 +68,15 @@ struct _EekSimpleKeyPrivate
|
|||||||
gint level;
|
gint level;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static guint
|
||||||
|
eek_simple_key_real_get_keycode (EekKey *self)
|
||||||
|
{
|
||||||
|
EekSimpleKeyPrivate *priv = EEK_SIMPLE_KEY_GET_PRIVATE(self);
|
||||||
|
|
||||||
|
g_return_val_if_fail (priv, EEK_INVALID_KEYCODE);
|
||||||
|
return priv->keycode;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
eek_simple_key_real_set_keysyms (EekKey *self,
|
eek_simple_key_real_set_keysyms (EekKey *self,
|
||||||
guint *keysyms,
|
guint *keysyms,
|
||||||
@ -94,6 +105,27 @@ eek_simple_key_real_set_keysyms (EekKey *self,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
eek_simple_key_real_get_keysyms (EekKey *self,
|
||||||
|
guint **keysyms,
|
||||||
|
gint *groups,
|
||||||
|
gint *levels)
|
||||||
|
{
|
||||||
|
EekSimpleKeyPrivate *priv = EEK_SIMPLE_KEY_GET_PRIVATE(self);
|
||||||
|
|
||||||
|
g_return_if_fail (groups);
|
||||||
|
g_return_if_fail (levels);
|
||||||
|
g_return_if_fail (keysyms);
|
||||||
|
|
||||||
|
*groups = priv->num_groups;
|
||||||
|
*levels = priv->num_levels;
|
||||||
|
if (priv->keysyms) {
|
||||||
|
*keysyms = g_slice_alloc (*groups * *levels * sizeof(guint));
|
||||||
|
memcpy (*keysyms, priv->keysyms, *groups * *levels * sizeof(guint));
|
||||||
|
} else
|
||||||
|
*keysyms = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
eek_simple_key_real_get_groups (EekKey *self)
|
eek_simple_key_real_get_groups (EekKey *self)
|
||||||
{
|
{
|
||||||
@ -212,7 +244,9 @@ eek_simple_key_real_get_keysym_index (EekKey *self,
|
|||||||
static void
|
static void
|
||||||
eek_key_iface_init (EekKeyIface *iface)
|
eek_key_iface_init (EekKeyIface *iface)
|
||||||
{
|
{
|
||||||
|
iface->get_keycode = eek_simple_key_real_get_keycode;
|
||||||
iface->set_keysyms = eek_simple_key_real_set_keysyms;
|
iface->set_keysyms = eek_simple_key_real_set_keysyms;
|
||||||
|
iface->get_keysyms = eek_simple_key_real_get_keysyms;
|
||||||
iface->get_groups = eek_simple_key_real_get_groups;
|
iface->get_groups = eek_simple_key_real_get_groups;
|
||||||
iface->get_keysym = eek_simple_key_real_get_keysym;
|
iface->get_keysym = eek_simple_key_real_get_keysym;
|
||||||
iface->set_index = eek_simple_key_real_set_index;
|
iface->set_index = eek_simple_key_real_set_index;
|
||||||
@ -256,6 +290,9 @@ eek_simple_key_set_property (GObject *object,
|
|||||||
g_free (priv->name);
|
g_free (priv->name);
|
||||||
priv->name = g_strdup (g_value_get_string (value));
|
priv->name = g_strdup (g_value_get_string (value));
|
||||||
break;
|
break;
|
||||||
|
case PROP_KEYCODE:
|
||||||
|
priv->keycode = g_value_get_uint (value);
|
||||||
|
break;
|
||||||
case PROP_KEYSYMS:
|
case PROP_KEYSYMS:
|
||||||
matrix = g_value_get_boxed (value);
|
matrix = g_value_get_boxed (value);
|
||||||
eek_key_set_keysyms (EEK_KEY(object),
|
eek_key_set_keysyms (EEK_KEY(object),
|
||||||
@ -304,6 +341,9 @@ eek_simple_key_get_property (GObject *object,
|
|||||||
case PROP_NAME:
|
case PROP_NAME:
|
||||||
g_value_set_string (value, priv->name);
|
g_value_set_string (value, priv->name);
|
||||||
break;
|
break;
|
||||||
|
case PROP_KEYCODE:
|
||||||
|
g_value_set_uint (value, priv->keycode);
|
||||||
|
break;
|
||||||
case PROP_KEYSYMS:
|
case PROP_KEYSYMS:
|
||||||
matrix.data = priv->keysyms;
|
matrix.data = priv->keysyms;
|
||||||
matrix.num_groups = priv->num_groups;
|
matrix.num_groups = priv->num_groups;
|
||||||
@ -354,6 +394,9 @@ eek_simple_key_class_init (EekSimpleKeyClass *klass)
|
|||||||
g_object_class_override_property (gobject_class,
|
g_object_class_override_property (gobject_class,
|
||||||
PROP_NAME,
|
PROP_NAME,
|
||||||
"name");
|
"name");
|
||||||
|
g_object_class_override_property (gobject_class,
|
||||||
|
PROP_KEYCODE,
|
||||||
|
"keycode");
|
||||||
g_object_class_override_property (gobject_class,
|
g_object_class_override_property (gobject_class,
|
||||||
PROP_KEYSYMS,
|
PROP_KEYSYMS,
|
||||||
"keysyms");
|
"keysyms");
|
||||||
@ -384,6 +427,7 @@ eek_simple_key_init (EekSimpleKey *self)
|
|||||||
|
|
||||||
priv = self->priv = EEK_SIMPLE_KEY_GET_PRIVATE(self);
|
priv = self->priv = EEK_SIMPLE_KEY_GET_PRIVATE(self);
|
||||||
priv->keysyms = NULL;
|
priv->keysyms = NULL;
|
||||||
|
priv->keycode = 0;
|
||||||
priv->num_groups = 0;
|
priv->num_groups = 0;
|
||||||
priv->num_levels = 0;
|
priv->num_levels = 0;
|
||||||
priv->column = 0;
|
priv->column = 0;
|
||||||
|
|||||||
@ -170,6 +170,7 @@ eek_simple_section_real_get_bounds (EekSection *self, EekBounds *bounds)
|
|||||||
static EekKey *
|
static EekKey *
|
||||||
eek_simple_section_real_create_key (EekSection *self,
|
eek_simple_section_real_create_key (EekSection *self,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
|
guint keycode,
|
||||||
guint *keysyms,
|
guint *keysyms,
|
||||||
gint num_groups,
|
gint num_groups,
|
||||||
gint num_levels,
|
gint num_levels,
|
||||||
@ -191,6 +192,7 @@ eek_simple_section_real_create_key (EekSection *self,
|
|||||||
matrix.num_levels = num_levels;
|
matrix.num_levels = num_levels;
|
||||||
key = g_object_new (EEK_TYPE_SIMPLE_KEY,
|
key = g_object_new (EEK_TYPE_SIMPLE_KEY,
|
||||||
"name", name,
|
"name", name,
|
||||||
|
"keycode", keycode,
|
||||||
"keysyms", &matrix,
|
"keysyms", &matrix,
|
||||||
"column", column,
|
"column", column,
|
||||||
"row", row,
|
"row", row,
|
||||||
|
|||||||
@ -198,6 +198,7 @@ create_key (EekXkbLayout *layout,
|
|||||||
|
|
||||||
eek_section_create_key (section,
|
eek_section_create_key (section,
|
||||||
name,
|
name,
|
||||||
|
keycode,
|
||||||
keysyms,
|
keysyms,
|
||||||
num_groups,
|
num_groups,
|
||||||
num_levels,
|
num_levels,
|
||||||
|
|||||||
@ -4,8 +4,8 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#define CSW 640
|
#define CSW 1280
|
||||||
#define CSH 480
|
#define CSH 1024
|
||||||
|
|
||||||
static gchar *symbols = NULL;
|
static gchar *symbols = NULL;
|
||||||
static gchar *keycodes = NULL;
|
static gchar *keycodes = NULL;
|
||||||
|
|||||||
@ -65,6 +65,7 @@ test_create (void)
|
|||||||
|
|
||||||
key = eek_section_create_key (section,
|
key = eek_section_create_key (section,
|
||||||
"test-key",
|
"test-key",
|
||||||
|
0,
|
||||||
keysyms,
|
keysyms,
|
||||||
3,
|
3,
|
||||||
2,
|
2,
|
||||||
|
|||||||
Reference in New Issue
Block a user