Handle setting keymap in examples more securely

This commit is contained in:
random human 2018-09-02 21:16:24 +05:30
parent 7bc2657984
commit 7105864e13
No known key found for this signature in database
GPG Key ID: 73E5A60444CC77A3
7 changed files with 58 additions and 16 deletions

View File

@ -239,15 +239,21 @@ void new_input_notify(struct wl_listener *listener, void *data) {
wlr_log(WLR_ERROR, "Failed to create XKB context"); wlr_log(WLR_ERROR, "Failed to create XKB context");
exit(1); exit(1);
} }
wlr_keyboard_set_keymap(device->keyboard, xkb_map_new_from_names(context, struct xkb_keymap *keymap = xkb_map_new_from_names(context, &rules,
&rules, XKB_KEYMAP_COMPILE_NO_FLAGS)); XKB_KEYMAP_COMPILE_NO_FLAGS);
if (!keymap) {
wlr_log(WLR_ERROR, "Failed to create XKB keymap");
exit(1);
}
wlr_keyboard_set_keymap(device->keyboard, keymap);
xkb_keymap_unref(keymap);
xkb_context_unref(context); xkb_context_unref(context);
break; break;
case WLR_INPUT_DEVICE_POINTER:; case WLR_INPUT_DEVICE_POINTER:;
struct sample_cursor *cursor = calloc(1, sizeof(struct sample_cursor)); struct sample_cursor *cursor = calloc(1, sizeof(struct sample_cursor));
struct sample_pointer *pointer = calloc(1, sizeof(struct sample_pointer)); struct sample_pointer *pointer = calloc(1, sizeof(struct sample_pointer));
pointer->device = device; pointer->device = device;
cursor->sample = sample; cursor->sample = sample;
cursor->device = device; cursor->device = device;
cursor->cursor = wlr_cursor_create(); cursor->cursor = wlr_cursor_create();

View File

@ -239,8 +239,14 @@ void new_input_notify(struct wl_listener *listener, void *data) {
wlr_log(WLR_ERROR, "Failed to create XKB context"); wlr_log(WLR_ERROR, "Failed to create XKB context");
exit(1); exit(1);
} }
wlr_keyboard_set_keymap(device->keyboard, xkb_map_new_from_names(context, struct xkb_keymap *keymap = xkb_map_new_from_names(context, &rules,
&rules, XKB_KEYMAP_COMPILE_NO_FLAGS)); XKB_KEYMAP_COMPILE_NO_FLAGS);
if (!keymap) {
wlr_log(WLR_ERROR, "Failed to create XKB keymap");
exit(1);
}
wlr_keyboard_set_keymap(device->keyboard, keymap);
xkb_keymap_unref(keymap);
xkb_context_unref(context); xkb_context_unref(context);
break; break;
default: default:

View File

@ -304,8 +304,14 @@ void new_input_notify(struct wl_listener *listener, void *data) {
wlr_log(WLR_ERROR, "Failed to create XKB context"); wlr_log(WLR_ERROR, "Failed to create XKB context");
exit(1); exit(1);
} }
wlr_keyboard_set_keymap(device->keyboard, xkb_map_new_from_names(context, struct xkb_keymap *keymap = xkb_map_new_from_names(context, &rules,
&rules, XKB_KEYMAP_COMPILE_NO_FLAGS)); XKB_KEYMAP_COMPILE_NO_FLAGS);
if (!keymap) {
wlr_log(WLR_ERROR, "Failed to create XKB keymap");
exit(1);
}
wlr_keyboard_set_keymap(device->keyboard, keymap);
xkb_keymap_unref(keymap);
xkb_context_unref(context); xkb_context_unref(context);
break; break;
default: default:

View File

@ -188,8 +188,14 @@ void new_input_notify(struct wl_listener *listener, void *data) {
wlr_log(WLR_ERROR, "Failed to create XKB context"); wlr_log(WLR_ERROR, "Failed to create XKB context");
exit(1); exit(1);
} }
wlr_keyboard_set_keymap(device->keyboard, xkb_map_new_from_names(context, struct xkb_keymap *keymap = xkb_map_new_from_names(context, &rules,
&rules, XKB_KEYMAP_COMPILE_NO_FLAGS)); XKB_KEYMAP_COMPILE_NO_FLAGS);
if (!keymap) {
wlr_log(WLR_ERROR, "Failed to create XKB keymap");
exit(1);
}
wlr_keyboard_set_keymap(device->keyboard, keymap);
xkb_keymap_unref(keymap);
xkb_context_unref(context); xkb_context_unref(context);
break; break;
default: default:

View File

@ -141,8 +141,14 @@ void new_input_notify(struct wl_listener *listener, void *data) {
wlr_log(WLR_ERROR, "Failed to create XKB context"); wlr_log(WLR_ERROR, "Failed to create XKB context");
exit(1); exit(1);
} }
wlr_keyboard_set_keymap(device->keyboard, xkb_map_new_from_names(context, struct xkb_keymap *keymap = xkb_map_new_from_names(context, &rules,
&rules, XKB_KEYMAP_COMPILE_NO_FLAGS)); XKB_KEYMAP_COMPILE_NO_FLAGS);
if (!keymap) {
wlr_log(WLR_ERROR, "Failed to create XKB keymap");
exit(1);
}
wlr_keyboard_set_keymap(device->keyboard, keymap);
xkb_keymap_unref(keymap);
xkb_context_unref(context); xkb_context_unref(context);
break; break;
default: default:

View File

@ -297,8 +297,14 @@ void new_input_notify(struct wl_listener *listener, void *data) {
wlr_log(WLR_ERROR, "Failed to create XKB context"); wlr_log(WLR_ERROR, "Failed to create XKB context");
exit(1); exit(1);
} }
wlr_keyboard_set_keymap(device->keyboard, xkb_map_new_from_names(context, struct xkb_keymap *keymap = xkb_map_new_from_names(context, &rules,
&rules, XKB_KEYMAP_COMPILE_NO_FLAGS)); XKB_KEYMAP_COMPILE_NO_FLAGS);
if (!keymap) {
wlr_log(WLR_ERROR, "Failed to create XKB keymap");
exit(1);
}
wlr_keyboard_set_keymap(device->keyboard, keymap);
xkb_keymap_unref(keymap);
xkb_context_unref(context); xkb_context_unref(context);
break; break;
case WLR_INPUT_DEVICE_TABLET_PAD:; case WLR_INPUT_DEVICE_TABLET_PAD:;

View File

@ -210,8 +210,14 @@ void new_input_notify(struct wl_listener *listener, void *data) {
wlr_log(WLR_ERROR, "Failed to create XKB context"); wlr_log(WLR_ERROR, "Failed to create XKB context");
exit(1); exit(1);
} }
wlr_keyboard_set_keymap(device->keyboard, xkb_map_new_from_names(context, struct xkb_keymap *keymap = xkb_map_new_from_names(context, &rules,
&rules, XKB_KEYMAP_COMPILE_NO_FLAGS)); XKB_KEYMAP_COMPILE_NO_FLAGS);
if (!keymap) {
wlr_log(WLR_ERROR, "Failed to create XKB keymap");
exit(1);
}
wlr_keyboard_set_keymap(device->keyboard, keymap);
xkb_keymap_unref(keymap);
xkb_context_unref(context); xkb_context_unref(context);
break; break;
case WLR_INPUT_DEVICE_TOUCH:; case WLR_INPUT_DEVICE_TOUCH:;