mirror of git://git.suckless.org/dmenu
add Mod1Mask keybindings
This commit is contained in:
parent
6664e4233f
commit
b95fb20269
88
dmenu.1
88
dmenu.1
|
@ -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
19
dmenu.c
|
@ -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))
|
||||||
|
|
Loading…
Reference in New Issue