summaryrefslogtreecommitdiff
path: root/rcm-server-main.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2015-07-17 21:29:17 +0200
committerDavid Härdeman <david@hardeman.nu>2015-07-18 01:06:19 +0200
commitdc425fc6d1c75656fc30f0afd7825274200a97fa (patch)
tree7fcc1b2bff1162c1ee29cdcc179faf0d115856cb /rcm-server-main.c
parent9e6f5343c8d7ec85e5df4d44ec9d909ed2f5b2fe (diff)
Separate keymap and layout
Diffstat (limited to 'rcm-server-main.c')
-rw-r--r--rcm-server-main.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/rcm-server-main.c b/rcm-server-main.c
index 8ec3140..572d5c9 100644
--- a/rcm-server-main.c
+++ b/rcm-server-main.c
@@ -135,6 +135,25 @@ method_getkeymap(sd_bus_message *m, void *userdata, sd_bus_error *error)
if (r < 0)
goto out;
+ /* Keymap */
+ r = sd_bus_message_open_container(reply, 'a', "a{sv}");
+ if (r < 0)
+ goto out;
+
+ for (i = 0; i < keymap->keycode_count; i++) {
+ r = sd_bus_message_append(reply, "a{sv}", 3,
+ "protocol", "s", keymap->keycodes[i].protocol,
+ "scancode", "t", keymap->keycodes[i].scancode,
+ "keycode", "s", keymap->keycodes[i].keycode);
+ if (r < 0)
+ goto out;
+ }
+
+ r = sd_bus_message_close_container(reply);
+ if (r < 0)
+ goto out;
+
+ /* Layout */
r = sd_bus_message_open_container(reply, 'a', "a{sv}");
if (r < 0)
goto out;
@@ -144,10 +163,8 @@ method_getkeymap(sd_bus_message *m, void *userdata, sd_bus_error *error)
r = sd_bus_message_append(reply, "a{sv}", 1,
"type", "s", "blank");
else
- r = sd_bus_message_append(reply, "a{sv}", 4,
+ r = sd_bus_message_append(reply, "a{sv}", 2,
"type", "s", "button",
- "protocol", "s", keymap->layout[i]->protocol,
- "scancode", "t", keymap->layout[i]->scancode,
"keycode", "s", keymap->layout[i]->keycode);
if (r < 0)
goto out;
@@ -173,7 +190,7 @@ static const sd_bus_vtable device_vtable[] = {
SD_BUS_PROPERTY("KernelKeymapName", "s", property_get, 0, 0),
SD_BUS_PROPERTY("HardwareType", "s", property_get, 0, 0),
SD_BUS_METHOD("ListKeymaps", NULL, "as", method_listkeymaps, SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD("GetKeymap", "s", "qqaa{sv}", method_getkeymap, SD_BUS_VTABLE_UNPRIVILEGED),
+ SD_BUS_METHOD("GetKeymap", "s", "qqaa{sv}aa{sv}", method_getkeymap, SD_BUS_VTABLE_UNPRIVILEGED),
SD_BUS_SIGNAL("KeyPressed", "s", 0),
SD_BUS_SIGNAL("KeyReleased", "s", 0),
SD_BUS_VTABLE_END