[wiki] [sites] tabbed patches: added "keycode" patch || Quentin Rameau

From: <git_AT_suckless.org>
Date: Sun, 26 Jan 2014 19:30:03 +0100

commit 3b39a9b574bb804396b4e975ebcac529bcbe454d
Author: Quentin Rameau <quinq_AT_quinq.eu.org>
Date: Sun Jan 26 19:28:36 2014 +0100

    tabbed patches: added "keycode" patch

diff --git a/tools.suckless.org/tabbed/patches/keycode.md b/tools.suckless.org/tabbed/patches/keycode.md
new file mode 100644
index 0000000..24abb44
--- /dev/null
+++ b/tools.suckless.org/tabbed/patches/keycode.md
_AT_@ -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_AT_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
new file mode 100644
index 0000000..dc25000
--- /dev/null
+++ b/tools.suckless.org/tabbed/patches/tabbed-0.6-keycode.diff
_AT_@ -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
+_AT_@ -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
+_AT_@ -57,7 +57,7 @@ typedef union {
+
+ typedef struct {
+ unsigned int mod;
+- KeySym keysym;
++ KeyCode keycode;
+ void (*func)(const Arg *);
+ const Arg arg;
+ } Key;
+_AT_@ -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));
+_AT_@ -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;
+
+_AT_@ -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);
+ }
+ }
+
Received on Sun Jan 26 2014 - 19:30:03 CET

This archive was generated by hypermail 2.3.0 : Thu Jun 18 2015 - 17:38:11 CEST