diff options
author | David Härdeman <david@hardeman.nu> | 2015-07-17 21:29:17 +0200 |
---|---|---|
committer | David Härdeman <david@hardeman.nu> | 2015-07-18 01:06:19 +0200 |
commit | dc425fc6d1c75656fc30f0afd7825274200a97fa (patch) | |
tree | 7fcc1b2bff1162c1ee29cdcc179faf0d115856cb /rcm-server-main.c | |
parent | 9e6f5343c8d7ec85e5df4d44ec9d909ed2f5b2fe (diff) |
Separate keymap and layout
Diffstat (limited to 'rcm-server-main.c')
-rw-r--r-- | rcm-server-main.c | 25 |
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 |