tabbed-keycode-0.6.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       tabbed-keycode-0.6.diff (4750B)
       ---
            1 diff --git a/config.def.h b/config.def.h
            2 index ceda9f7..272074a 100644
            3 --- a/config.def.h
            4 +++ b/config.def.h
            5 @@ -29,30 +29,30 @@ static Bool npisrelative  = False;
            6  
            7  #define MODKEY ControlMask
            8  static Key keys[] = { \
            9 -        /* modifier                     key        function        argument */
           10 -        { MODKEY|ShiftMask,             XK_Return, focusonce,      { 0 } },
           11 -        { MODKEY|ShiftMask,             XK_Return, spawn,          { 0 } },
           12 -        { MODKEY,                       XK_t,      spawn,          SETPROP("_TABBED_SELECT_TAB") },
           13 -
           14 -        { MODKEY|ShiftMask,             XK_l,      rotate,         { .i = +1 } },
           15 -        { MODKEY|ShiftMask,             XK_h,      rotate,         { .i = -1 } },
           16 -        { MODKEY|ShiftMask,             XK_j,      movetab,        { .i = -1 } },
           17 -        { MODKEY|ShiftMask,             XK_k,      movetab,        { .i = +1 } },
           18 -        { MODKEY,                       XK_Tab,    rotate,         { .i = 0 } },
           19 -
           20 -        { MODKEY,                       XK_1,      move,           { .i = 0 } },
           21 -        { MODKEY,                       XK_2,      move,           { .i = 1 } },
           22 -        { MODKEY,                       XK_3,      move,           { .i = 2 } },
           23 -        { MODKEY,                       XK_4,      move,           { .i = 3 } },
           24 -        { MODKEY,                       XK_5,      move,           { .i = 4 } },
           25 -        { MODKEY,                       XK_6,      move,           { .i = 5 } },
           26 -        { MODKEY,                       XK_7,      move,           { .i = 6 } },
           27 -        { MODKEY,                       XK_8,      move,           { .i = 7 } },
           28 -        { MODKEY,                       XK_9,      move,           { .i = 8 } },
           29 -        { MODKEY,                       XK_0,      move,           { .i = 9 } },
           30 -
           31 -        { MODKEY,                       XK_q,      killclient,     { 0 } },
           32 -
           33 -        { 0,                            XK_F11,    fullscreen,     { 0 } },
           34 +        /* modifier                  key    function        argument */
           35 +        { MODKEY|ShiftMask,          36,    focusonce,      { 0 } },      // Return
           36 +        { MODKEY|ShiftMask,          36,    spawn,          { 0 } },      // Return
           37 +        { MODKEY,                    44,    spawn,          SETPROP("_TABBED_SELECT_TAB") }, // t
           38 +
           39 +        { MODKEY|ShiftMask,          46,   rotate,         { .i = +1 } }, // l
           40 +        { MODKEY|ShiftMask,          43,   rotate,         { .i = -1 } }, // h
           41 +        { MODKEY|ShiftMask,          44,   movetab,        { .i = -1 } }, // j
           42 +        { MODKEY|ShiftMask,          45,   movetab,        { .i = +1 } }, // k
           43 +        { MODKEY,                    23,   rotate,         { .i = 0 } },  // Tab
           44 +
           45 +        { MODKEY,                    10,   move,           { .i = 0 } },  // 1
           46 +        { MODKEY,                    11,   move,           { .i = 1 } },  // 2
           47 +        { MODKEY,                    12,   move,           { .i = 2 } },  // 3
           48 +        { MODKEY,                    13,   move,           { .i = 3 } },  // 4
           49 +        { MODKEY,                    14,   move,           { .i = 4 } },  // 5
           50 +        { MODKEY,                    15,   move,           { .i = 5 } },  // 6
           51 +        { MODKEY,                    16,   move,           { .i = 6 } },  // 7
           52 +        { MODKEY,                    17,   move,           { .i = 7 } },  // 8
           53 +        { MODKEY,                    18,   move,           { .i = 8 } },  // 9
           54 +        { MODKEY,                    19,   move,           { .i = 9 } },  // 0
           55 +
           56 +        { MODKEY,                    24,   killclient,     { 0 } },       // q
           57 +
           58 +        { 0,                         95,   fullscreen,     { 0 } },       // F11
           59  };
           60  
           61 diff --git a/tabbed.c b/tabbed.c
           62 index d30206b..15d6572 100644
           63 --- a/tabbed.c
           64 +++ b/tabbed.c
           65 @@ -57,7 +57,7 @@ typedef union {
           66  
           67  typedef struct {
           68          unsigned int mod;
           69 -        KeySym keysym;
           70 +        KeyCode keycode;
           71          void (*func)(const Arg *);
           72          const Arg arg;
           73  } Key;
           74 @@ -644,11 +644,9 @@ void
           75  keypress(const XEvent *e) {
           76          const XKeyEvent *ev = &e->xkey;
           77          unsigned int i;
           78 -        KeySym keysym;
           79  
           80 -        keysym = XkbKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0, 0);
           81          for(i = 0; i < LENGTH(keys); i++) {
           82 -                if(keysym == keys[i].keysym
           83 +                if(ev->keycode == keys[i].keycode
           84                                  && CLEANMASK(keys[i].mod) == CLEANMASK(ev->state)
           85                                  && keys[i].func) {
           86                          keys[i].func(&(keys[i].arg));
           87 @@ -684,7 +682,6 @@ manage(Window w) {
           88                  int i, j, nextpos;
           89                  unsigned int modifiers[] = { 0, LockMask, numlockmask,
           90                          numlockmask|LockMask };
           91 -                KeyCode code;
           92                  Client *c;
           93                  XEvent e;
           94  
           95 @@ -695,13 +692,11 @@ manage(Window w) {
           96                  XSync(dpy, False);
           97  
           98                  for(i = 0; i < LENGTH(keys); i++) {
           99 -                        if((code = XKeysymToKeycode(dpy, keys[i].keysym))) {
          100 -                                for(j = 0; j < LENGTH(modifiers); j++) {
          101 -                                        XGrabKey(dpy, code, keys[i].mod
          102 -                                                        | modifiers[j], w,
          103 -                                                 True, GrabModeAsync,
          104 -                                                 GrabModeAsync);
          105 -                                }
          106 +                        for(j = 0; j < LENGTH(modifiers); j++) {
          107 +                                XGrabKey(dpy, keys[i].keycode, keys[i].mod
          108 +                                                | modifiers[j], w,
          109 +                                         True, GrabModeAsync,
          110 +                                         GrabModeAsync);
          111                          }
          112                  }
          113