Update to new libxkbcommon API
We no longer depend on xproto, we use xkbcommon keycodes now. Yay!
This commit is contained in:
+1
-3
@@ -35,8 +35,6 @@
|
|||||||
|
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
|
||||||
#include <X11/keysym.h>
|
|
||||||
|
|
||||||
struct clickdot {
|
struct clickdot {
|
||||||
struct display *display;
|
struct display *display;
|
||||||
struct window *window;
|
struct window *window;
|
||||||
@@ -190,7 +188,7 @@ key_handler(struct window *window, struct input *input, uint32_t time,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
switch (sym) {
|
switch (sym) {
|
||||||
case XK_Escape:
|
case XKB_KEY_Escape:
|
||||||
display_exit(clickdot->display);
|
display_exit(clickdot->display);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-7
@@ -33,8 +33,6 @@
|
|||||||
|
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
|
||||||
#include <X11/keysym.h>
|
|
||||||
|
|
||||||
struct spring {
|
struct spring {
|
||||||
double current;
|
double current;
|
||||||
double target;
|
double target;
|
||||||
@@ -158,35 +156,35 @@ key_handler(struct window *window, struct input *input, uint32_t time,
|
|||||||
resizor->height.target = allocation.height;
|
resizor->height.target = allocation.height;
|
||||||
|
|
||||||
switch (sym) {
|
switch (sym) {
|
||||||
case XK_Up:
|
case XKB_KEY_Up:
|
||||||
if (allocation.height < 400)
|
if (allocation.height < 400)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
resizor->height.target = allocation.height - 200;
|
resizor->height.target = allocation.height - 200;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XK_Down:
|
case XKB_KEY_Down:
|
||||||
if (allocation.height > 1000)
|
if (allocation.height > 1000)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
resizor->height.target = allocation.height + 200;
|
resizor->height.target = allocation.height + 200;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XK_Left:
|
case XKB_KEY_Left:
|
||||||
if (allocation.width < 400)
|
if (allocation.width < 400)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
resizor->width.target = allocation.width - 200;
|
resizor->width.target = allocation.width - 200;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XK_Right:
|
case XKB_KEY_Right:
|
||||||
if (allocation.width > 1000)
|
if (allocation.width > 1000)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
resizor->width.target = allocation.width + 200;
|
resizor->width.target = allocation.width + 200;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XK_Escape:
|
case XKB_KEY_Escape:
|
||||||
display_exit(resizor->display);
|
display_exit(resizor->display);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
+54
-56
@@ -34,8 +34,6 @@
|
|||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <sys/epoll.h>
|
#include <sys/epoll.h>
|
||||||
|
|
||||||
#include <X11/keysym.h>
|
|
||||||
|
|
||||||
#include <wayland-client.h>
|
#include <wayland-client.h>
|
||||||
|
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
@@ -241,28 +239,28 @@ struct key_map {
|
|||||||
typedef struct key_map *keyboard_mode;
|
typedef struct key_map *keyboard_mode;
|
||||||
|
|
||||||
static struct key_map KM_NORMAL[] = {
|
static struct key_map KM_NORMAL[] = {
|
||||||
{XK_Left, 1, '[', 'D'},
|
{ XKB_KEY_Left, 1, '[', 'D' },
|
||||||
{XK_Right, 1, '[', 'C'},
|
{ XKB_KEY_Right, 1, '[', 'C' },
|
||||||
{XK_Up, 1, '[', 'A'},
|
{ XKB_KEY_Up, 1, '[', 'A' },
|
||||||
{XK_Down, 1, '[', 'B'},
|
{ XKB_KEY_Down, 1, '[', 'B' },
|
||||||
{XK_Home, 1, '[', 'H'},
|
{ XKB_KEY_Home, 1, '[', 'H' },
|
||||||
{XK_End, 1, '[', 'F'},
|
{ XKB_KEY_End, 1, '[', 'F' },
|
||||||
{0, 0, 0, 0}
|
{ 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
static struct key_map KM_APPLICATION[] = {
|
static struct key_map KM_APPLICATION[] = {
|
||||||
{XK_Left, 1, 'O', 'D'},
|
{ XKB_KEY_Left, 1, 'O', 'D' },
|
||||||
{XK_Right, 1, 'O', 'C'},
|
{ XKB_KEY_Right, 1, 'O', 'C' },
|
||||||
{XK_Up, 1, 'O', 'A'},
|
{ XKB_KEY_Up, 1, 'O', 'A' },
|
||||||
{XK_Down, 1, 'O', 'B'},
|
{ XKB_KEY_Down, 1, 'O', 'B' },
|
||||||
{XK_Home, 1, 'O', 'H'},
|
{ XKB_KEY_Home, 1, 'O', 'H' },
|
||||||
{XK_End, 1, 'O', 'F'},
|
{ XKB_KEY_End, 1, 'O', 'F' },
|
||||||
{XK_KP_Enter, 1, 'O', 'M'},
|
{ XKB_KEY_KP_Enter, 1, 'O', 'M' },
|
||||||
{XK_KP_Multiply, 1, 'O', 'j'},
|
{ XKB_KEY_KP_Multiply, 1, 'O', 'j' },
|
||||||
{XK_KP_Add, 1, 'O', 'k'},
|
{ XKB_KEY_KP_Add, 1, 'O', 'k' },
|
||||||
{XK_KP_Separator, 1, 'O', 'l'},
|
{ XKB_KEY_KP_Separator, 1, 'O', 'l' },
|
||||||
{XK_KP_Subtract, 1, 'O', 'm'},
|
{ XKB_KEY_KP_Subtract, 1, 'O', 'm' },
|
||||||
{XK_KP_Divide, 1, 'O', 'o'},
|
{ XKB_KEY_KP_Divide, 1, 'O', 'o' },
|
||||||
{0, 0, 0, 0}
|
{ 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@@ -2045,10 +2043,10 @@ handle_bound_key(struct terminal *terminal,
|
|||||||
struct input *input, uint32_t sym, uint32_t time)
|
struct input *input, uint32_t sym, uint32_t time)
|
||||||
{
|
{
|
||||||
switch (sym) {
|
switch (sym) {
|
||||||
case XK_X:
|
case XKB_KEY_X:
|
||||||
/* Cut selection; terminal doesn't do cut, fall
|
/* Cut selection; terminal doesn't do cut, fall
|
||||||
* through to copy. */
|
* through to copy. */
|
||||||
case XK_C:
|
case XKB_KEY_C:
|
||||||
terminal->selection =
|
terminal->selection =
|
||||||
display_create_data_source(terminal->display);
|
display_create_data_source(terminal->display);
|
||||||
wl_data_source_offer(terminal->selection,
|
wl_data_source_offer(terminal->selection,
|
||||||
@@ -2057,7 +2055,7 @@ handle_bound_key(struct terminal *terminal,
|
|||||||
&data_source_listener, terminal);
|
&data_source_listener, terminal);
|
||||||
input_set_selection(input, terminal->selection, time);
|
input_set_selection(input, terminal->selection, time);
|
||||||
return 1;
|
return 1;
|
||||||
case XK_V:
|
case XKB_KEY_V:
|
||||||
input_receive_selection_data_to_fd(input,
|
input_receive_selection_data_to_fd(input,
|
||||||
"text/plain;charset=utf-8",
|
"text/plain;charset=utf-8",
|
||||||
terminal->master);
|
terminal->master);
|
||||||
@@ -2084,25 +2082,25 @@ key_handler(struct window *window, struct input *input, uint32_t time,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
switch (sym) {
|
switch (sym) {
|
||||||
case XK_F11:
|
case XKB_KEY_F11:
|
||||||
if (!state)
|
if (!state)
|
||||||
break;
|
break;
|
||||||
terminal->fullscreen ^= 1;
|
terminal->fullscreen ^= 1;
|
||||||
window_set_fullscreen(window, terminal->fullscreen);
|
window_set_fullscreen(window, terminal->fullscreen);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XK_BackSpace:
|
case XKB_KEY_BackSpace:
|
||||||
case XK_Tab:
|
case XKB_KEY_Tab:
|
||||||
case XK_Linefeed:
|
case XKB_KEY_Linefeed:
|
||||||
case XK_Clear:
|
case XKB_KEY_Clear:
|
||||||
case XK_Pause:
|
case XKB_KEY_Pause:
|
||||||
case XK_Scroll_Lock:
|
case XKB_KEY_Scroll_Lock:
|
||||||
case XK_Sys_Req:
|
case XKB_KEY_Sys_Req:
|
||||||
case XK_Escape:
|
case XKB_KEY_Escape:
|
||||||
ch[len++] = sym & 0x7f;
|
ch[len++] = sym & 0x7f;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XK_Return:
|
case XKB_KEY_Return:
|
||||||
if (terminal->mode & MODE_LF_NEWLINE) {
|
if (terminal->mode & MODE_LF_NEWLINE) {
|
||||||
ch[len++] = 0x0D;
|
ch[len++] = 0x0D;
|
||||||
ch[len++] = 0x0A;
|
ch[len++] = 0x0A;
|
||||||
@@ -2111,61 +2109,61 @@ key_handler(struct window *window, struct input *input, uint32_t time,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XK_Shift_L:
|
case XKB_KEY_Shift_L:
|
||||||
case XK_Shift_R:
|
case XKB_KEY_Shift_R:
|
||||||
case XK_Control_L:
|
case XKB_KEY_Control_L:
|
||||||
case XK_Control_R:
|
case XKB_KEY_Control_R:
|
||||||
case XK_Alt_L:
|
case XKB_KEY_Alt_L:
|
||||||
case XK_Alt_R:
|
case XKB_KEY_Alt_R:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XK_Insert:
|
case XKB_KEY_Insert:
|
||||||
len = function_key_response('[', 2, modifiers, '~', ch);
|
len = function_key_response('[', 2, modifiers, '~', ch);
|
||||||
break;
|
break;
|
||||||
case XK_Delete:
|
case XKB_KEY_Delete:
|
||||||
if (terminal->mode & MODE_DELETE_SENDS_DEL) {
|
if (terminal->mode & MODE_DELETE_SENDS_DEL) {
|
||||||
ch[len++] = '\x04';
|
ch[len++] = '\x04';
|
||||||
} else {
|
} else {
|
||||||
len = function_key_response('[', 3, modifiers, '~', ch);
|
len = function_key_response('[', 3, modifiers, '~', ch);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case XK_Page_Up:
|
case XKB_KEY_Page_Up:
|
||||||
len = function_key_response('[', 5, modifiers, '~', ch);
|
len = function_key_response('[', 5, modifiers, '~', ch);
|
||||||
break;
|
break;
|
||||||
case XK_Page_Down:
|
case XKB_KEY_Page_Down:
|
||||||
len = function_key_response('[', 6, modifiers, '~', ch);
|
len = function_key_response('[', 6, modifiers, '~', ch);
|
||||||
break;
|
break;
|
||||||
case XK_F1:
|
case XKB_KEY_F1:
|
||||||
len = function_key_response('O', 1, modifiers, 'P', ch);
|
len = function_key_response('O', 1, modifiers, 'P', ch);
|
||||||
break;
|
break;
|
||||||
case XK_F2:
|
case XKB_KEY_F2:
|
||||||
len = function_key_response('O', 1, modifiers, 'Q', ch);
|
len = function_key_response('O', 1, modifiers, 'Q', ch);
|
||||||
break;
|
break;
|
||||||
case XK_F3:
|
case XKB_KEY_F3:
|
||||||
len = function_key_response('O', 1, modifiers, 'R', ch);
|
len = function_key_response('O', 1, modifiers, 'R', ch);
|
||||||
break;
|
break;
|
||||||
case XK_F4:
|
case XKB_KEY_F4:
|
||||||
len = function_key_response('O', 1, modifiers, 'S', ch);
|
len = function_key_response('O', 1, modifiers, 'S', ch);
|
||||||
break;
|
break;
|
||||||
case XK_F5:
|
case XKB_KEY_F5:
|
||||||
len = function_key_response('[', 15, modifiers, '~', ch);
|
len = function_key_response('[', 15, modifiers, '~', ch);
|
||||||
break;
|
break;
|
||||||
case XK_F6:
|
case XKB_KEY_F6:
|
||||||
len = function_key_response('[', 17, modifiers, '~', ch);
|
len = function_key_response('[', 17, modifiers, '~', ch);
|
||||||
break;
|
break;
|
||||||
case XK_F7:
|
case XKB_KEY_F7:
|
||||||
len = function_key_response('[', 18, modifiers, '~', ch);
|
len = function_key_response('[', 18, modifiers, '~', ch);
|
||||||
break;
|
break;
|
||||||
case XK_F8:
|
case XKB_KEY_F8:
|
||||||
len = function_key_response('[', 19, modifiers, '~', ch);
|
len = function_key_response('[', 19, modifiers, '~', ch);
|
||||||
break;
|
break;
|
||||||
case XK_F9:
|
case XKB_KEY_F9:
|
||||||
len = function_key_response('[', 20, modifiers, '~', ch);
|
len = function_key_response('[', 20, modifiers, '~', ch);
|
||||||
break;
|
break;
|
||||||
case XK_F10:
|
case XKB_KEY_F10:
|
||||||
len = function_key_response('[', 21, modifiers, '~', ch);
|
len = function_key_response('[', 21, modifiers, '~', ch);
|
||||||
break;
|
break;
|
||||||
case XK_F12:
|
case XKB_KEY_F12:
|
||||||
len = function_key_response('[', 24, modifiers, '~', ch);
|
len = function_key_response('[', 24, modifiers, '~', ch);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
+4
-7
@@ -56,8 +56,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <xkbcommon/xkbcommon.h>
|
#include <xkbcommon/xkbcommon.h>
|
||||||
#include <X11/keysym.h>
|
|
||||||
#include <X11/X.h>
|
|
||||||
#include <X11/Xcursor/Xcursor.h>
|
#include <X11/Xcursor/Xcursor.h>
|
||||||
|
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
@@ -1833,7 +1831,7 @@ input_handle_key(void *data, struct wl_input_device *input_device,
|
|||||||
xkb_state_update_key(d->xkb.state, code,
|
xkb_state_update_key(d->xkb.state, code,
|
||||||
state ? XKB_KEY_DOWN : XKB_KEY_UP);
|
state ? XKB_KEY_DOWN : XKB_KEY_UP);
|
||||||
|
|
||||||
mask = xkb_state_serialise_mods(d->xkb.state,
|
mask = xkb_state_serialize_mods(d->xkb.state,
|
||||||
XKB_STATE_DEPRESSED |
|
XKB_STATE_DEPRESSED |
|
||||||
XKB_STATE_LATCHED);
|
XKB_STATE_LATCHED);
|
||||||
input->modifiers = 0;
|
input->modifiers = 0;
|
||||||
@@ -1844,7 +1842,7 @@ input_handle_key(void *data, struct wl_input_device *input_device,
|
|||||||
if (mask & input->display->xkb.shift_mask)
|
if (mask & input->display->xkb.shift_mask)
|
||||||
input->modifiers |= MOD_SHIFT_MASK;
|
input->modifiers |= MOD_SHIFT_MASK;
|
||||||
|
|
||||||
if (num_syms == 1 && syms[0] == XK_F5 &&
|
if (num_syms == 1 && syms[0] == XKB_KEY_F5 &&
|
||||||
input->modifiers == MOD_ALT_MASK) {
|
input->modifiers == MOD_ALT_MASK) {
|
||||||
if (state)
|
if (state)
|
||||||
window_set_maximized(window,
|
window_set_maximized(window,
|
||||||
@@ -3121,14 +3119,13 @@ init_xkb(struct display *d)
|
|||||||
d->xkb.names.variant = (char *) option_xkb_variant;
|
d->xkb.names.variant = (char *) option_xkb_variant;
|
||||||
d->xkb.names.options = (char *) option_xkb_options;
|
d->xkb.names.options = (char *) option_xkb_options;
|
||||||
|
|
||||||
d->xkb.context = xkb_context_new();
|
d->xkb.context = xkb_context_new(0);
|
||||||
if (!d->xkb.context) {
|
if (!d->xkb.context) {
|
||||||
fprintf(stderr, "Failed to create XKB context\n");
|
fprintf(stderr, "Failed to create XKB context\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
d->xkb.keymap =
|
d->xkb.keymap = xkb_map_new_from_names(d->xkb.context, &d->xkb.names, 0);
|
||||||
xkb_map_new_from_names(d->xkb.context, &d->xkb.names);
|
|
||||||
if (!d->xkb.keymap) {
|
if (!d->xkb.keymap) {
|
||||||
fprintf(stderr, "Failed to compile keymap\n");
|
fprintf(stderr, "Failed to compile keymap\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|||||||
@@ -737,7 +737,7 @@ x11_compositor_get_keymap(struct x11_compositor *c)
|
|||||||
length_part = strlen(value_part); \
|
length_part = strlen(value_part); \
|
||||||
if (value_part + length_part > (value_all + length_all) && \
|
if (value_part + length_part > (value_all + length_all) && \
|
||||||
length_part > 0 && c->base.xkb_info.names.to == NULL) { \
|
length_part > 0 && c->base.xkb_info.names.to == NULL) { \
|
||||||
free(c->base.xkb_info.names.to); \
|
free((char *) c->base.xkb_info.names.to); \
|
||||||
c->base.xkb_info.names.to = strdup(value_part); \
|
c->base.xkb_info.names.to = strdup(value_part); \
|
||||||
} \
|
} \
|
||||||
value_part += length_part + 1;
|
value_part += length_part + 1;
|
||||||
|
|||||||
+7
-7
@@ -2614,7 +2614,7 @@ weston_compositor_shutdown(struct weston_compositor *ec)
|
|||||||
static int weston_compositor_xkb_init(struct weston_compositor *ec,
|
static int weston_compositor_xkb_init(struct weston_compositor *ec,
|
||||||
struct xkb_rule_names *names)
|
struct xkb_rule_names *names)
|
||||||
{
|
{
|
||||||
ec->xkb_info.context = xkb_context_new();
|
ec->xkb_info.context = xkb_context_new(0);
|
||||||
if (ec->xkb_info.context == NULL) {
|
if (ec->xkb_info.context == NULL) {
|
||||||
fprintf(stderr, "failed to create XKB context\n");
|
fprintf(stderr, "failed to create XKB context\n");
|
||||||
return -1;
|
return -1;
|
||||||
@@ -2629,7 +2629,7 @@ static int weston_compositor_xkb_init(struct weston_compositor *ec,
|
|||||||
ec->xkb_info.names.layout = strdup("us");
|
ec->xkb_info.names.layout = strdup("us");
|
||||||
|
|
||||||
ec->xkb_info.keymap = xkb_map_new_from_names(ec->xkb_info.context,
|
ec->xkb_info.keymap = xkb_map_new_from_names(ec->xkb_info.context,
|
||||||
&ec->xkb_info.names);
|
&ec->xkb_info.names, 0);
|
||||||
if (ec->xkb_info.keymap == NULL) {
|
if (ec->xkb_info.keymap == NULL) {
|
||||||
fprintf(stderr, "failed to compile XKB keymap\n");
|
fprintf(stderr, "failed to compile XKB keymap\n");
|
||||||
return -1;
|
return -1;
|
||||||
@@ -2650,11 +2650,11 @@ static void weston_compositor_xkb_destroy(struct weston_compositor *ec)
|
|||||||
xkb_map_unref(ec->xkb_info.keymap);
|
xkb_map_unref(ec->xkb_info.keymap);
|
||||||
xkb_context_unref(ec->xkb_info.context);
|
xkb_context_unref(ec->xkb_info.context);
|
||||||
|
|
||||||
free(ec->xkb_info.names.rules);
|
free((char *) ec->xkb_info.names.rules);
|
||||||
free(ec->xkb_info.names.model);
|
free((char *) ec->xkb_info.names.model);
|
||||||
free(ec->xkb_info.names.layout);
|
free((char *) ec->xkb_info.names.layout);
|
||||||
free(ec->xkb_info.names.variant);
|
free((char *) ec->xkb_info.names.variant);
|
||||||
free(ec->xkb_info.names.options);
|
free((char *) ec->xkb_info.names.options);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int on_term_signal(int signal_number, void *data)
|
static int on_term_signal(int signal_number, void *data)
|
||||||
|
|||||||
Reference in New Issue
Block a user