sites

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

commit 3b39a9b574bb804396b4e975ebcac529bcbe454d
parent a35e7f3fa04c875a8c0bf8d011f4c434099fea94
Author: Quentin Rameau <quinq@quinq.eu.org>
Date:   Sun, 26 Jan 2014 19:28:36 +0100

tabbed patches: added "keycode" patch

Diffstat:
Atools.suckless.org/tabbed/patches/keycode.md | 12++++++++++++
Atools.suckless.org/tabbed/patches/tabbed-0.6-keycode.diff | 111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 123 insertions(+), 0 deletions(-)

diff --git a/tools.suckless.org/tabbed/patches/keycode.md b/tools.suckless.org/tabbed/patches/keycode.md @@ -0,0 +1,12 @@ +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). + +Download +-------- +* [tabbed-0.6-keycode.diff](tabbed-0.6-keycode.diff) + +Author +------ +* Quentin Rameau <quinq@quinq.eu.org> diff --git a/tools.suckless.org/tabbed/patches/tabbed-0.6-keycode.diff b/tools.suckless.org/tabbed/patches/tabbed-0.6-keycode.diff @@ -0,0 +1,111 @@ +diff --git a/config.def.h b/config.def.h +index ceda9f7..d3be61f 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -30,29 +30,29 @@ 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, 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, 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 } }, +- +- { 0, XK_F11, fullscreen, { 0 } }, ++ { MODKEY|ShiftMask, 36, focusonce, { 0 } }, ++ { MODKEY|ShiftMask, 36, spawn, { 0 } }, ++ { MODKEY, 44, spawn, SETPROP("_TABBED_SELECT_TAB") }, ++ ++ { MODKEY|ShiftMask, 32, rotate, { .i = +1 } }, ++ { MODKEY|ShiftMask, 60, rotate, { .i = -1 } }, ++ { MODKEY|ShiftMask, 33, movetab, { .i = -1 } }, ++ { MODKEY|ShiftMask, 56, movetab, { .i = +1 } }, ++ { MODKEY, 23, rotate, { .i = 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, 24, killclient, { 0 } }, ++ ++ { 0, 95, fullscreen, { 0 } }, + }; + +diff --git a/tabbed.c b/tabbed.c +index 93a213a..744fe4e 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; +@@ -644,11 +644,9 @@ void + 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)); +@@ -684,7 +682,6 @@ manage(Window w) { + int i, j, nextpos; + unsigned int modifiers[] = { 0, LockMask, numlockmask, + numlockmask|LockMask }; +- KeyCode code; + Client *c; + XEvent e; + +@@ -695,13 +692,11 @@ 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); + } + } +