add Mod1Mask keybindings

This commit is contained in:
Connor Lane Smith 2012-01-01 20:32:40 +01:00
parent 6664e4233f
commit b95fb20269
2 changed files with 88 additions and 19 deletions

88
dmenu.1
View file

@ -33,7 +33,7 @@ matching the tokens in the input.
.B dmenu_run .B dmenu_run
is a script used by is a script used by
.IR dwm (1) .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 .SH OPTIONS
.TP .TP
.B \-b .B \-b
@ -73,28 +73,90 @@ defines the selected foreground color.
.B \-v .B \-v
prints version information to stdout, then exits. prints version information to stdout, then exits.
.SH USAGE .SH USAGE
dmenu is completely controlled by the keyboard. Besides standard Unix line dmenu is completely controlled by the keyboard. Items are selected using the
editing and item selection (arrow keys, page up/down, home and end), the arrow keys, page up, page down, home, and end.
following keys are recognized:
.TP .TP
.B Tab (Ctrl\-i) .B Tab
Copy the selected item to the input field. Copy the selected item to the input field.
.TP .TP
.B Return (Ctrl\-j) .B Return
Confirm selection. Prints the selected item to stdout and exits, returning Confirm selection. Prints the selected item to stdout and exits, returning
success. success.
.TP .TP
.B Shift\-Return (Ctrl\-Shift\-j) .B Shift\-Return
Confirm input. Prints the input text to stdout and exits, returning success. Confirm input. Prints the input text to stdout and exits, returning success.
.TP .TP
.B Escape (Ctrl\-c) .B Escape
Exit without selecting an item, returning failure. Exit without selecting an item, returning failure.
.TP .TP
.B Ctrl\-y C\-a
Paste the primary X selection into the input field. Home
.TP .TP
.B Ctrl-Shift-y C\-b
Paste the X clipboard into the input field. 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 .SH SEE ALSO
.IR dwm (1), .IR dwm (1),
.IR lsx (1) .IR stest (1)

19
dmenu.c
View file

@ -243,11 +243,8 @@ keypress(XKeyEvent *ev) {
len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status); len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status);
if(status == XBufferOverflow) if(status == XBufferOverflow)
return; return;
if(ev->state & ControlMask) { if(ev->state & ControlMask)
KeySym lower, upper; switch(ksym) {
XConvertCase(ksym, &lower, &upper);
switch(lower) {
case XK_a: ksym = XK_Home; break; case XK_a: ksym = XK_Home; break;
case XK_b: ksym = XK_Left; break; case XK_b: ksym = XK_Left; break;
case XK_c: ksym = XK_Escape; break; case XK_c: ksym = XK_Escape; break;
@ -281,7 +278,17 @@ keypress(XKeyEvent *ev) {
default: default:
return; 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) { switch(ksym) {
default: default:
if(!iscntrl(*buf)) if(!iscntrl(*buf))