From 0b6935e50c22d46d24e6d9de1502fec3b1588964 Mon Sep 17 00:00:00 2001 From: Dorota Czaplejewicz Date: Sat, 3 Aug 2019 12:43:39 +0000 Subject: [PATCH] keystate: Use keycode --- eek/eek-key.c | 24 ++---------------------- eek/eek-section.c | 2 +- src/keyboard.h | 3 +++ src/keyboard.rs | 16 +++++++++++++++- 4 files changed, 21 insertions(+), 24 deletions(-) diff --git a/eek/eek-key.c b/eek/eek-key.c index 4268f22f..3fe859aa 100644 --- a/eek/eek-key.c +++ b/eek/eek-key.c @@ -38,7 +38,6 @@ enum { PROP_0, - PROP_KEYCODE, PROP_OREF, PROP_LAST }; @@ -53,7 +52,6 @@ static guint signals[LAST_SIGNAL] = { 0, }; typedef struct _EekKeyPrivate { - guint keycode; gulong oref; // UI outline reference struct squeek_key *state; gboolean is_locked; @@ -101,9 +99,6 @@ eek_key_set_property (GObject *object, GParamSpec *pspec) { switch (prop_id) { - case PROP_KEYCODE: - eek_key_set_keycode (EEK_KEY(object), g_value_get_uint (value)); - break; case PROP_OREF: eek_key_set_oref (EEK_KEY(object), g_value_get_uint (value)); break; @@ -120,9 +115,6 @@ eek_key_get_property (GObject *object, GParamSpec *pspec) { switch (prop_id) { - case PROP_KEYCODE: - g_value_set_uint (value, eek_key_get_keycode (EEK_KEY(object))); - break; case PROP_OREF: g_value_set_uint (value, eek_key_get_oref (EEK_KEY(object))); break; @@ -146,18 +138,6 @@ eek_key_class_init (EekKeyClass *klass) klass->locked = eek_key_real_locked; klass->unlocked = eek_key_real_unlocked; - /** - * 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_class_install_property (gobject_class, PROP_KEYCODE, pspec); - /** * EekKey:oref: * @@ -233,7 +213,7 @@ eek_key_set_keycode (EekKey *key, EekKeyPrivate *priv = eek_key_get_instance_private (key); - priv->keycode = keycode; + squeek_key_set_keycode(priv->state, keycode); } /** @@ -250,7 +230,7 @@ eek_key_get_keycode (EekKey *key) EekKeyPrivate *priv = eek_key_get_instance_private (key); - return priv->keycode; + return squeek_key_get_keycode(priv->state); } /** diff --git a/eek/eek-section.c b/eek/eek-section.c index 54da8801..1cc6942e 100644 --- a/eek/eek-section.c +++ b/eek/eek-section.c @@ -130,8 +130,8 @@ eek_section_real_create_key (EekSection *self, EekKey *key = (EekKey*)g_object_new (EEK_TYPE_KEY, "name", name, - "keycode", keycode, NULL); + eek_key_set_keycode(key, keycode); g_return_val_if_fail (key, NULL); EEK_CONTAINER_GET_CLASS(self)->add_child (EEK_CONTAINER(self), diff --git a/src/keyboard.h b/src/keyboard.h index c9929ca2..134502ba 100644 --- a/src/keyboard.h +++ b/src/keyboard.h @@ -15,5 +15,8 @@ void squeek_key_add_symbol(struct squeek_key* key, const char *tooltip); uint32_t squeek_key_is_pressed(struct squeek_key *key); void squeek_key_set_pressed(struct squeek_key *key, uint32_t pressed); +uint32_t squeek_key_get_keycode(struct squeek_key *key); +void squeek_key_set_keycode(struct squeek_key *key, uint32_t keycode); + struct squeek_symbol *squeek_key_get_symbol(struct squeek_key* key, uint32_t level); #endif diff --git a/src/keyboard.rs b/src/keyboard.rs index 0618606c..6be9cdb1 100644 --- a/src/keyboard.rs +++ b/src/keyboard.rs @@ -41,7 +41,7 @@ pub mod c { #[no_mangle] pub extern "C" - fn squeek_key_is_pressed(key: *const KeyState) -> u32{ + fn squeek_key_is_pressed(key: *const KeyState) -> u32 { let key = unsafe { &*key }; return key.pressed as u32; } @@ -53,6 +53,20 @@ pub mod c { key.pressed = pressed != 0; } + #[no_mangle] + pub extern "C" + fn squeek_key_get_keycode(key: *const KeyState) -> u32 { + let key = unsafe { &*key }; + return key.keycode as u32; + } + + #[no_mangle] + pub extern "C" + fn squeek_key_set_keycode(key: *mut KeyState, code: u32) { + let key = unsafe { &mut *key }; + key.keycode = code; + } + // TODO: this will receive data from the filesystem, // so it should handle garbled strings in the future #[no_mangle]