mirror of
https://github.com/NickHu/sway
synced 2024-12-28 22:23:30 +01:00
Merge pull request #443 from mikkeloscar/binding-event-input_code
Add bindcode to binding events.
This commit is contained in:
commit
46992d6060
1 changed files with 28 additions and 9 deletions
|
@ -667,20 +667,39 @@ void ipc_event_binding_keyboard(struct sway_binding *sb) {
|
|||
|
||||
json_object_object_add(sb_obj, "event_state_mask", modifiers);
|
||||
|
||||
// TODO: implement bindcode
|
||||
json_object_object_add(sb_obj, "input_code", json_object_new_int(0));
|
||||
|
||||
json_object *input_codes = json_object_new_array();
|
||||
int input_code = 0;
|
||||
json_object *symbols = json_object_new_array();
|
||||
uint32_t keysym;
|
||||
char buffer[64];
|
||||
for (i = 0; i < sb->keys->length; ++i) {
|
||||
keysym = *(uint32_t *)sb->keys->items[i];
|
||||
if (xkb_keysym_get_name(keysym, buffer, 64) > 0) {
|
||||
json_object_array_add(symbols, json_object_new_string(buffer));
|
||||
json_object *symbol = NULL;
|
||||
|
||||
if (sb->bindcode) { // bindcode: populate input_codes
|
||||
uint32_t keycode;
|
||||
for (i = 0; i < sb->keys->length; ++i) {
|
||||
keycode = *(uint32_t *)sb->keys->items[i];
|
||||
json_object_array_add(input_codes, json_object_new_int(keycode));
|
||||
if (i == 0) {
|
||||
input_code = keycode;
|
||||
}
|
||||
}
|
||||
} else { // bindsym: populate symbols
|
||||
uint32_t keysym;
|
||||
char buffer[64];
|
||||
for (i = 0; i < sb->keys->length; ++i) {
|
||||
keysym = *(uint32_t *)sb->keys->items[i];
|
||||
if (xkb_keysym_get_name(keysym, buffer, 64) > 0) {
|
||||
json_object *str = json_object_new_string(buffer);
|
||||
json_object_array_add(symbols, str);
|
||||
if (i == 0) {
|
||||
symbol = str;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
json_object_object_add(sb_obj, "input_codes", input_codes);
|
||||
json_object_object_add(sb_obj, "input_code", json_object_new_int(input_code));
|
||||
json_object_object_add(sb_obj, "symbols", symbols);
|
||||
json_object_object_add(sb_obj, "symbol", symbol);
|
||||
json_object_object_add(sb_obj, "input_type", json_object_new_string("keyboard"));
|
||||
|
||||
ipc_event_binding(sb_obj);
|
||||
|
|
Loading…
Reference in a new issue