From dc425fc6d1c75656fc30f0afd7825274200a97fa Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Fri, 17 Jul 2015 21:29:17 +0200 Subject: Separate keymap and layout --- rcm-server-main.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'rcm-server-main.c') 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 -- cgit v1.2.3