sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 77e72c8bc0bc1d076981110e79dc22ee194e690e
parent 2b266c64de2ef059eebd5e45c604b0772d9bf8b0
Author: Quentin Rameau <quinq@fifth.space>
Date:   Sun,  3 Jan 2016 15:59:29 +0100

tabbed: update keycode patch

Diffstat:
Mtools.suckless.org/tabbed/patches/keycode.md | 7++++---
Atools.suckless.org/tabbed/patches/tabbed-keycode-20160103-eb0ff62.patch | 110+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 114 insertions(+), 3 deletions(-)

diff --git a/tools.suckless.org/tabbed/patches/keycode.md b/tools.suckless.org/tabbed/patches/keycode.md @@ -1,12 +1,13 @@ Keycode -======== +======= With this patch, handling key input is done with keycodes instead of keysyms. -This way, input is keyboard layout independant (adapt config.h to your keyboard using for exemple xev). +This way, input is keyboard layout independant (adapt config.h to your keyboard using for example xev). Download -------- * [tabbed-0.6-keycode.diff](tabbed-0.6-keycode.diff) +* [tabbed-keycode-20160103-eb0ff62.patch](tabbed-keycode-20160103-eb0ff62.patch) Author ------ -* Quentin Rameau <quinq@quinq.eu.org> +* Quentin Rameau <quinq@fifth.space> diff --git a/tools.suckless.org/tabbed/patches/tabbed-keycode-20160103-eb0ff62.patch b/tools.suckless.org/tabbed/patches/tabbed-keycode-20160103-eb0ff62.patch @@ -0,0 +1,110 @@ +diff --git a/config.def.h b/config.def.h +index 587ce73..7d7e67f 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -35,31 +35,32 @@ static Bool npisrelative = False; + #define MODKEY ControlMask + static Key keys[] = { + /* modifier key function argument */ +- { MODKEY|ShiftMask, XK_Return, focusonce, { 0 } }, +- { MODKEY|ShiftMask, XK_Return, spawn, { 0 } }, +- { MODKEY, XK_t, spawn, SETPROP("_TABBED_SELECT_TAB") }, ++ { MODKEY|ShiftMask, 36, focusonce, { 0 } }, ++ { MODKEY|ShiftMask, 36, spawn, { 0 } }, ++ { MODKEY, 28, spawn, SETPROP("_TABBED_SELECT_TAB") }, + +- { MODKEY|ShiftMask, XK_l, rotate, { .i = +1 } }, +- { MODKEY|ShiftMask, XK_h, rotate, { .i = -1 } }, +- { MODKEY|ShiftMask, XK_j, movetab, { .i = -1 } }, +- { MODKEY|ShiftMask, XK_k, movetab, { .i = +1 } }, +- { MODKEY, XK_Tab, rotate, { .i = 0 } }, ++ { MODKEY|ShiftMask, 46, rotate, { .i = +1 } }, ++ { MODKEY|ShiftMask, 43, rotate, { .i = -1 } }, ++ { MODKEY|ShiftMask, 44, movetab, { .i = -1 } }, ++ { MODKEY|ShiftMask, 45, movetab, { .i = +1 } }, ++ { MODKEY, 23, rotate, { .i = 0 } }, + +- { MODKEY, XK_1, move, { .i = 0 } }, +- { MODKEY, XK_2, move, { .i = 1 } }, +- { MODKEY, XK_3, move, { .i = 2 } }, +- { MODKEY, XK_4, move, { .i = 3 } }, +- { MODKEY, XK_5, move, { .i = 4 } }, +- { MODKEY, XK_6, move, { .i = 5 } }, +- { MODKEY, XK_7, move, { .i = 6 } }, +- { MODKEY, XK_8, move, { .i = 7 } }, +- { MODKEY, XK_9, move, { .i = 8 } }, +- { MODKEY, XK_0, move, { .i = 9 } }, + +- { MODKEY, XK_q, killclient, { 0 } }, ++ { MODKEY, 10, move, { .i = 0 } }, ++ { MODKEY, 11, move, { .i = 1 } }, ++ { MODKEY, 12, move, { .i = 2 } }, ++ { MODKEY, 13, move, { .i = 3 } }, ++ { MODKEY, 14, move, { .i = 4 } }, ++ { MODKEY, 15, move, { .i = 5 } }, ++ { MODKEY, 16, move, { .i = 6 } }, ++ { MODKEY, 17, move, { .i = 7 } }, ++ { MODKEY, 18, move, { .i = 8 } }, ++ { MODKEY, 19, move, { .i = 9 } }, + +- { MODKEY, XK_u, focusurgent, { 0 } }, +- { MODKEY|ShiftMask, XK_u, toggle, { .v = (void*) &urgentswitch } }, ++ { MODKEY, 24, killclient, { 0 } }, + +- { 0, XK_F11, fullscreen, { 0 } }, ++ { MODKEY, 30, focusurgent, { .v = NULL } }, ++ { MODKEY|ShiftMask, 30, toggle, { .v = (void*) &urgentswitch } }, ++ ++ { 0, 95, fullscreen, { 0 } }, + }; +diff --git a/tabbed.c b/tabbed.c +index 5f035c0..c5ed4a3 100644 +--- a/tabbed.c ++++ b/tabbed.c +@@ -57,7 +57,7 @@ typedef union { + + typedef struct { + unsigned int mod; +- KeySym keysym; ++ KeyCode keycode; + void (*func)(const Arg *); + const Arg arg; + } Key; +@@ -680,11 +680,9 @@ keypress(const XEvent *e) + { + const XKeyEvent *ev = &e->xkey; + unsigned int i; +- KeySym keysym; + +- keysym = XkbKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0, 0); + for (i = 0; i < LENGTH(keys); i++) { +- if (keysym == keys[i].keysym && ++ if (ev->keycode == keys[i].keycode && + CLEANMASK(keys[i].mod) == CLEANMASK(ev->state) && + keys[i].func) + keys[i].func(&(keys[i].arg)); +@@ -721,7 +719,6 @@ manage(Window w) + int i, j, nextpos; + unsigned int modifiers[] = { 0, LockMask, numlockmask, + numlockmask | LockMask }; +- KeyCode code; + Client *c; + XEvent e; + +@@ -732,12 +729,10 @@ manage(Window w) + XSync(dpy, False); + + for (i = 0; i < LENGTH(keys); i++) { +- if ((code = XKeysymToKeycode(dpy, keys[i].keysym))) { +- for (j = 0; j < LENGTH(modifiers); j++) { +- XGrabKey(dpy, code, keys[i].mod | +- modifiers[j], w, True, +- GrabModeAsync, GrabModeAsync); +- } ++ for (j = 0; j < LENGTH(modifiers); ++j) { ++ XGrabKey(dpy, keys[i].keycode, ++ keys[i].mod | modifiers[j], w, ++ True, GrabModeAsync, GrabModeAsync); + } + } +