diff --git a/main.c b/main.c index ef32324..1c103ac 100644 --- a/main.c +++ b/main.c @@ -136,79 +136,60 @@ void cleanup() { void on_keypress(XEvent *ev) { char key; - KeySym keysym; + KeySym ksym; int changed; if (!ev) return; - XLookupString(&ev->xkey, &key, 1, &keysym, NULL); + XLookupString(&ev->xkey, &key, 1, &ksym, NULL); changed = 0; - switch (keysym) { + switch (ksym) { case XK_Escape: cleanup(); exit(2); - case XK_space: - key = 'n'; - break; - case XK_BackSpace: - key = 'p'; - break; - case XK_Left: - key = 'h'; - break; - case XK_Down: - key = 'j'; - break; - case XK_Up: - key = 'k'; - break; - case XK_Right: - key = 'l'; - break; - } - - switch (key) { - case 'q': + case XK_q: cleanup(); exit(0); /* navigate image list */ - case 'n': + case XK_n: + case XK_space: if (fileidx + 1 < filecnt) { img_load(&img, filenames[++fileidx]); changed = 1; } break; - case 'p': + case XK_p: + case XK_BackSpace: if (fileidx > 0) { img_load(&img, filenames[--fileidx]); changed = 1; } break; - case '[': + case XK_bracketleft: if (fileidx != 0) { fileidx = MAX(0, fileidx - 10); img_load(&img, filenames[fileidx]); changed = 1; } break; - case ']': + case XK_bracketright: if (fileidx != filecnt - 1) { fileidx = MIN(fileidx + 10, filecnt - 1); img_load(&img, filenames[fileidx]); changed = 1; } break; - case 'g': + case XK_g: if (fileidx != 0) { fileidx = 0; img_load(&img, filenames[fileidx]); changed = 1; } break; - case 'G': + case XK_G: if (fileidx != filecnt - 1) { fileidx = filecnt - 1; img_load(&img, filenames[fileidx]); @@ -217,43 +198,47 @@ void on_keypress(XEvent *ev) { break; /* zooming */ - case '+': - case '=': + case XK_plus: + case XK_equal: changed = img_zoom_in(&img); break; - case '-': + case XK_minus: changed = img_zoom_out(&img); break; /* panning */ - case 'h': + case XK_h: + case XK_Left: changed = img_pan(&img, &win, PAN_LEFT); break; - case 'j': + case XK_j: + case XK_Down: changed = img_pan(&img, &win, PAN_DOWN); break; - case 'k': + case XK_k: + case XK_Up: changed = img_pan(&img, &win, PAN_UP); break; - case 'l': + case XK_l: + case XK_Right: changed = img_pan(&img, &win, PAN_RIGHT); break; /* rotation */ - case '<': + case XK_less: changed = img_rotate_left(&img, &win); break; - case '>': + case XK_greater: changed = img_rotate_right(&img, &win); break; /* control window */ - case 'f': + case XK_f: win_toggle_fullscreen(&win); break; /* miscellaneous */ - case 'a': + case XK_a: changed = img_toggle_antialias(&img); break; }