tadd Mod1Mask keybindings - dmenu - Dmenu fork with xft fonts.
 (HTM) git clone git://r-36.net/dmenu
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit b95fb20269f55c9fe649d971c53efb8040d3ceea
 (DIR) parent 6664e4233faa3d6b677a24196e9af4ac5b1920fd
 (HTM) Author: Connor Lane Smith <cls@lubutu.com>
       Date:   Sun,  1 Jan 2012 20:32:40 +0100
       
       add Mod1Mask keybindings
       Diffstat:
         dmenu.1                             |      88 ++++++++++++++++++++++++++-----
         dmenu.c                             |      19 +++++++++++++------
       
       2 files changed, 88 insertions(+), 19 deletions(-)
       ---
 (DIR) diff --git a/dmenu.1 b/dmenu.1
       t@@ -33,7 +33,7 @@ matching the tokens in the input.
        .B dmenu_run
        is a script used by
        .IR dwm (1)
       -which lists programs in the user's $PATH and executes the selected item.
       +which lists programs in the user's $PATH and runs the result in their $SHELL.
        .SH OPTIONS
        .TP
        .B \-b
       t@@ -73,28 +73,90 @@ defines the selected foreground color.
        .B \-v
        prints version information to stdout, then exits.
        .SH USAGE
       -dmenu is completely controlled by the keyboard.  Besides standard Unix line
       -editing and item selection (arrow keys, page up/down, home and end), the
       -following keys are recognized:
       +dmenu is completely controlled by the keyboard.  Items are selected using the
       +arrow keys, page up, page down, home, and end.
        .TP
       -.B Tab (Ctrl\-i)
       +.B Tab
        Copy the selected item to the input field.
        .TP
       -.B Return (Ctrl\-j)
       +.B Return
        Confirm selection.  Prints the selected item to stdout and exits, returning
        success.
        .TP
       -.B Shift\-Return (Ctrl\-Shift\-j)
       +.B Shift\-Return
        Confirm input.  Prints the input text to stdout and exits, returning success.
        .TP
       -.B Escape (Ctrl\-c)
       +.B Escape
        Exit without selecting an item, returning failure.
        .TP
       -.B Ctrl\-y
       -Paste the primary X selection into the input field.
       +C\-a
       +Home
        .TP
       -.B Ctrl-Shift-y
       -Paste the X clipboard into the input field.
       +C\-b
       +Left
       +.TP
       +C\-c
       +Escape
       +.TP
       +C\-d
       +Delete
       +.TP
       +C\-e
       +End
       +.TP
       +C\-f
       +Right
       +.TP
       +C\-h
       +Backspace
       +.TP
       +C\-i
       +Tab
       +.TP
       +C\-j
       +Return
       +.TP
       +C\-k
       +Delete line right
       +.TP
       +C\-m
       +Return
       +.TP
       +C\-n
       +Down
       +.TP
       +C\-p
       +Up
       +.TP
       +C\-u
       +Delete line left
       +.TP
       +C\-w
       +Delete word left
       +.TP
       +C\-y
       +Paste from primary X selection
       +.TP
       +C\-Y
       +Paste from X clipboard
       +.TP
       +M\-g
       +Home
       +.TP
       +M\-G
       +End
       +.TP
       +M\-h
       +Page up
       +.TP
       +M\-j
       +Up
       +.TP
       +M\-k
       +Down
       +.TP
       +M\-l
       +Page down
        .SH SEE ALSO
        .IR dwm (1),
       -.IR lsx (1)
       +.IR stest (1)
 (DIR) diff --git a/dmenu.c b/dmenu.c
       t@@ -243,11 +243,8 @@ keypress(XKeyEvent *ev) {
                len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status);
                if(status == XBufferOverflow)
                        return;
       -        if(ev->state & ControlMask) {
       -                KeySym lower, upper;
       -
       -                XConvertCase(ksym, &lower, &upper);
       -                switch(lower) {
       +        if(ev->state & ControlMask)
       +                switch(ksym) {
                        case XK_a: ksym = XK_Home;      break;
                        case XK_b: ksym = XK_Left;      break;
                        case XK_c: ksym = XK_Escape;    break;
       t@@ -281,7 +278,17 @@ keypress(XKeyEvent *ev) {
                        default:
                                return;
                        }
       -        }
       +        else if(ev->state & Mod1Mask)
       +                switch(ksym) {
       +                case XK_g: ksym = XK_Home;  break;
       +                case XK_G: ksym = XK_End;   break;
       +                case XK_h: ksym = XK_Prior; break;
       +                case XK_j: ksym = XK_Up;    break;
       +                case XK_k: ksym = XK_Down;  break;
       +                case XK_l: ksym = XK_Next;  break;
       +                default:
       +                        return;
       +                }
                switch(ksym) {
                default:
                        if(!iscntrl(*buf))