New mappings: ctrl-[hjkl], pan image one window width/height
This commit is contained in:
parent
ea23115af4
commit
a6100373c1
2
Makefile
2
Makefile
|
@ -1,6 +1,6 @@
|
||||||
all: sxiv
|
all: sxiv
|
||||||
|
|
||||||
VERSION=git-20110529
|
VERSION=git-20110603
|
||||||
|
|
||||||
CC?=gcc
|
CC?=gcc
|
||||||
DESTDIR?=
|
DESTDIR?=
|
||||||
|
|
|
@ -69,6 +69,8 @@ thumbnail mode are denoted via brackets:
|
||||||
h,j,k,l Pan image [move selection] left/down/up/right
|
h,j,k,l Pan image [move selection] left/down/up/right
|
||||||
(also with arrow keys)
|
(also with arrow keys)
|
||||||
H,J,K,L Pan to left/bottom/top/right image edge
|
H,J,K,L Pan to left/bottom/top/right image edge
|
||||||
|
Ctrl-h,j,k,l Pan image one window width/height left/down/up/right
|
||||||
|
(also with Ctrl-arrow keys)
|
||||||
|
|
||||||
<,> Rotate image (counter-)clockwise by 90 degrees
|
<,> Rotate image (counter-)clockwise by 90 degrees
|
||||||
|
|
||||||
|
|
10
image.c
10
image.c
|
@ -275,19 +275,19 @@ int img_move(img_t *img, win_t *win, int dx, int dy) {
|
||||||
return ox != img->x || oy != img->y;
|
return ox != img->x || oy != img->y;
|
||||||
}
|
}
|
||||||
|
|
||||||
int img_pan(img_t *img, win_t *win, pandir_t dir) {
|
int img_pan(img_t *img, win_t *win, pandir_t dir, int page) {
|
||||||
if (!img || !img->im || !win)
|
if (!img || !img->im || !win)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
switch (dir) {
|
switch (dir) {
|
||||||
case PAN_LEFT:
|
case PAN_LEFT:
|
||||||
return img_move(img, win, win->w / 5, 0);
|
return img_move(img, win, win->w / (page ? 1 : 5), 0);
|
||||||
case PAN_RIGHT:
|
case PAN_RIGHT:
|
||||||
return img_move(img, win, win->w / 5 * -1, 0);
|
return img_move(img, win, win->w / (page ? 1 : 5) * -1, 0);
|
||||||
case PAN_UP:
|
case PAN_UP:
|
||||||
return img_move(img, win, 0, win->h / 5);
|
return img_move(img, win, 0, win->h / (page ? 1 : 5));
|
||||||
case PAN_DOWN:
|
case PAN_DOWN:
|
||||||
return img_move(img, win, 0, win->h / 5 * -1);
|
return img_move(img, win, 0, win->h / (page ? 1 : 5) * -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
2
image.h
2
image.h
|
@ -68,7 +68,7 @@ int img_zoom_in(img_t*, win_t*);
|
||||||
int img_zoom_out(img_t*, win_t*);
|
int img_zoom_out(img_t*, win_t*);
|
||||||
|
|
||||||
int img_move(img_t*, win_t*, int, int);
|
int img_move(img_t*, win_t*, int, int);
|
||||||
int img_pan(img_t*, win_t*, pandir_t);
|
int img_pan(img_t*, win_t*, pandir_t, int);
|
||||||
int img_pan_edge(img_t*, win_t*, pandir_t);
|
int img_pan_edge(img_t*, win_t*, pandir_t);
|
||||||
|
|
||||||
void img_rotate_left(img_t*, win_t*);
|
void img_rotate_left(img_t*, win_t*);
|
||||||
|
|
31
main.c
31
main.c
|
@ -357,17 +357,18 @@ void on_keypress(XKeyEvent *kev) {
|
||||||
unsigned int w, h;
|
unsigned int w, h;
|
||||||
char key;
|
char key;
|
||||||
KeySym ksym;
|
KeySym ksym;
|
||||||
int changed;
|
int changed, ctrl;
|
||||||
|
|
||||||
if (!kev)
|
if (!kev)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
XLookupString(kev, &key, 1, &ksym, NULL);
|
XLookupString(kev, &key, 1, &ksym, NULL);
|
||||||
changed = 0;
|
changed = 0;
|
||||||
|
ctrl = CLEANMASK(kev->state) & ControlMask;
|
||||||
|
|
||||||
#if EXT_COMMANDS
|
#if EXT_COMMANDS
|
||||||
/* external commands from commands.h */
|
/* external commands from commands.h */
|
||||||
if (CLEANMASK(kev->state) & ControlMask) {
|
if (ctrl) {
|
||||||
for (x = 0; x < LEN(commands); ++x) {
|
for (x = 0; x < LEN(commands); ++x) {
|
||||||
if (commands[x].ksym == ksym) {
|
if (commands[x].ksym == ksym) {
|
||||||
win_set_cursor(&win, CURSOR_WATCH);
|
win_set_cursor(&win, CURSOR_WATCH);
|
||||||
|
@ -446,19 +447,25 @@ void on_keypress(XKeyEvent *kev) {
|
||||||
/* panning */
|
/* panning */
|
||||||
case XK_h:
|
case XK_h:
|
||||||
case XK_Left:
|
case XK_Left:
|
||||||
changed = img_pan(&img, &win, PAN_LEFT);
|
changed = img_pan(&img, &win, PAN_LEFT, ctrl);
|
||||||
break;
|
break;
|
||||||
case XK_j:
|
case XK_j:
|
||||||
case XK_Down:
|
case XK_Down:
|
||||||
changed = img_pan(&img, &win, PAN_DOWN);
|
changed = img_pan(&img, &win, PAN_DOWN, ctrl);
|
||||||
break;
|
break;
|
||||||
case XK_k:
|
case XK_k:
|
||||||
case XK_Up:
|
case XK_Up:
|
||||||
changed = img_pan(&img, &win, PAN_UP);
|
changed = img_pan(&img, &win, PAN_UP, ctrl);
|
||||||
break;
|
break;
|
||||||
case XK_l:
|
case XK_l:
|
||||||
case XK_Right:
|
case XK_Right:
|
||||||
changed = img_pan(&img, &win, PAN_RIGHT);
|
changed = img_pan(&img, &win, PAN_RIGHT, ctrl);
|
||||||
|
break;
|
||||||
|
case XK_Prior:
|
||||||
|
changed = img_pan(&img, &win, PAN_UP, 1);
|
||||||
|
break;
|
||||||
|
case XK_Next:
|
||||||
|
changed = img_pan(&img, &win, PAN_DOWN, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case XK_H:
|
case XK_H:
|
||||||
|
@ -632,23 +639,23 @@ void on_buttonpress(XButtonEvent *bev) {
|
||||||
if (mask == ControlMask)
|
if (mask == ControlMask)
|
||||||
changed = img_zoom_in(&img, &win);
|
changed = img_zoom_in(&img, &win);
|
||||||
else if (mask == ShiftMask)
|
else if (mask == ShiftMask)
|
||||||
changed = img_pan(&img, &win, PAN_LEFT);
|
changed = img_pan(&img, &win, PAN_LEFT, 0);
|
||||||
else
|
else
|
||||||
changed = img_pan(&img, &win, PAN_UP);
|
changed = img_pan(&img, &win, PAN_UP, 0);
|
||||||
break;
|
break;
|
||||||
case Button5:
|
case Button5:
|
||||||
if (mask == ControlMask)
|
if (mask == ControlMask)
|
||||||
changed = img_zoom_out(&img, &win);
|
changed = img_zoom_out(&img, &win);
|
||||||
else if (mask == ShiftMask)
|
else if (mask == ShiftMask)
|
||||||
changed = img_pan(&img, &win, PAN_RIGHT);
|
changed = img_pan(&img, &win, PAN_RIGHT, 0);
|
||||||
else
|
else
|
||||||
changed = img_pan(&img, &win, PAN_DOWN);
|
changed = img_pan(&img, &win, PAN_DOWN, 0);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
changed = img_pan(&img, &win, PAN_LEFT);
|
changed = img_pan(&img, &win, PAN_LEFT, 0);
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
changed = img_pan(&img, &win, PAN_RIGHT);
|
changed = img_pan(&img, &win, PAN_RIGHT, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
20
sxiv.1
20
sxiv.1
|
@ -138,17 +138,29 @@ Pan image [move selection] up.
|
||||||
.BR l ", " Right
|
.BR l ", " Right
|
||||||
Pan image [move selection] right.
|
Pan image [move selection] right.
|
||||||
.TP
|
.TP
|
||||||
.BR H
|
.B H
|
||||||
Pan to left image edge.
|
Pan to left image edge.
|
||||||
.TP
|
.TP
|
||||||
.BR J
|
.B J
|
||||||
Pan to bottom image edge.
|
Pan to bottom image edge.
|
||||||
.TP
|
.TP
|
||||||
.BR K
|
.B K
|
||||||
Pan to top image edge.
|
Pan to top image edge.
|
||||||
.TP
|
.TP
|
||||||
.BR L
|
.B L
|
||||||
Pan to right image edge.
|
Pan to right image edge.
|
||||||
|
.TP
|
||||||
|
.BR Ctrl-h ", " Ctrl-Left
|
||||||
|
Pan image one window width left.
|
||||||
|
.TP
|
||||||
|
.BR Ctrl-j ", " Ctrl-Down ", " PageDn
|
||||||
|
Pan image one window height down.
|
||||||
|
.TP
|
||||||
|
.BR Ctrl-k ", " Ctrl-Up ", " PageUp
|
||||||
|
Pan image one window height up.
|
||||||
|
.TP
|
||||||
|
.BR Ctrl-l ", " Ctrl-Right
|
||||||
|
Pan image one window width right.
|
||||||
.SS Rotation
|
.SS Rotation
|
||||||
.TP
|
.TP
|
||||||
.B <
|
.B <
|
||||||
|
|
Loading…
Reference in New Issue