Krolyxon
Commit f554cdf

Branches

Refs →

nsxivf554cdf

Made key mappings mode-dependent

Author
Bert
Date
2011-02-17 15:08 +0100
Parent
ac747c3
Commit
f554cdf60ea3808b88053077dc5dae83e427732c

+111 −105

1 file changed

  1. M main.c +111 −105
M main.c View
@@ -284,6 +284,117 @@ void on_keypress(XKeyEvent *kev) {
284284 XLookupString(kev, &key, 1, &ksym, NULL);
285285 changed = 0;
286286
287+ if (mode == MODE_NORMAL) {
288+ switch (ksym) {
289+ /* navigate image list */
290+ case XK_n:
291+ case XK_space:
292+ if (fileidx + 1 < filecnt) {
293+ ++fileidx;
294+ changed = load_image();
295+ }
296+ break;
297+ case XK_p:
298+ case XK_BackSpace:
299+ if (fileidx > 0) {
300+ --fileidx;
301+ changed = load_image();
302+ }
303+ break;
304+ case XK_bracketleft:
305+ if (fileidx != 0) {
306+ fileidx = MAX(0, fileidx - 10);
307+ changed = load_image();
308+ }
309+ break;
310+ case XK_bracketright:
311+ if (fileidx != filecnt - 1) {
312+ fileidx = MIN(fileidx + 10, filecnt - 1);
313+ changed = load_image();
314+ }
315+ break;
316+ case XK_g:
317+ if (fileidx != 0) {
318+ fileidx = 0;
319+ changed = load_image();
320+ }
321+ break;
322+ case XK_G:
323+ if (fileidx != filecnt - 1) {
324+ fileidx = filecnt - 1;
325+ changed = load_image();
326+ }
327+ break;
328+
329+ /* zooming */
330+ case XK_plus:
331+ case XK_equal:
332+ changed = img_zoom_in(&img);
333+ break;
334+ case XK_minus:
335+ changed = img_zoom_out(&img);
336+ break;
337+ case XK_0:
338+ changed = img_zoom(&img, 1.0);
339+ break;
340+ case XK_w:
341+ if ((changed = img_fit_win(&img, &win)))
342+ img_center(&img, &win);
343+ break;
344+
345+ /* panning */
346+ case XK_h:
347+ case XK_Left:
348+ changed = img_pan(&img, &win, PAN_LEFT);
349+ break;
350+ case XK_j:
351+ case XK_Down:
352+ changed = img_pan(&img, &win, PAN_DOWN);
353+ break;
354+ case XK_k:
355+ case XK_Up:
356+ changed = img_pan(&img, &win, PAN_UP);
357+ break;
358+ case XK_l:
359+ case XK_Right:
360+ changed = img_pan(&img, &win, PAN_RIGHT);
361+ break;
362+
363+ /* rotation */
364+ case XK_less:
365+ img_rotate_left(&img, &win);
366+ changed = 1;
367+ break;
368+ case XK_greater:
369+ img_rotate_right(&img, &win);
370+ changed = 1;
371+ break;
372+
373+ /* control window */
374+ case XK_W:
375+ x = win.x + img.x;
376+ y = win.y + img.y;
377+ w = img.w * img.zoom;
378+ h = img.h * img.zoom;
379+ if ((changed = win_moveresize(&win, x, y, w, h))) {
380+ img.x = x - win.x;
381+ img.y = y - win.y;
382+ }
383+ break;
384+
385+ /* miscellaneous */
386+ case XK_a:
387+ img_toggle_antialias(&img);
388+ changed = 1;
389+ break;
390+ case XK_r:
391+ changed = load_image();
392+ break;
393+ }
394+ } else {
395+ }
396+
397+ /* common key mappings */
287398 switch (ksym) {
288399 case XK_Escape:
289400 cleanup();
@@ -291,115 +402,10 @@ void on_keypress(XKeyEvent *kev) {
291402 case XK_q:
292403 cleanup();
293404 exit(0);
294−
295− /* navigate image list */
296− case XK_n:
297− case XK_space:
298− if (fileidx + 1 < filecnt) {
299− ++fileidx;
300− changed = load_image();
301− }
302− break;
303− case XK_p:
304− case XK_BackSpace:
305− if (fileidx > 0) {
306− --fileidx;
307− changed = load_image();
308− }
309− break;
310− case XK_bracketleft:
311− if (fileidx != 0) {
312− fileidx = MAX(0, fileidx - 10);
313− changed = load_image();
314− }
315− break;
316− case XK_bracketright:
317− if (fileidx != filecnt - 1) {
318− fileidx = MIN(fileidx + 10, filecnt - 1);
319− changed = load_image();
320− }
321− break;
322− case XK_g:
323− if (fileidx != 0) {
324− fileidx = 0;
325− changed = load_image();
326− }
327− break;
328− case XK_G:
329− if (fileidx != filecnt - 1) {
330− fileidx = filecnt - 1;
331− changed = load_image();
332− }
333− break;
334−
335− /* zooming */
336− case XK_plus:
337− case XK_equal:
338− changed = img_zoom_in(&img);
339− break;
340− case XK_minus:
341− changed = img_zoom_out(&img);
342− break;
343− case XK_0:
344− changed = img_zoom(&img, 1.0);
345− break;
346− case XK_w:
347− if ((changed = img_fit_win(&img, &win)))
348− img_center(&img, &win);
349− break;
350−
351− /* panning */
352− case XK_h:
353− case XK_Left:
354− changed = img_pan(&img, &win, PAN_LEFT);
355− break;
356− case XK_j:
357− case XK_Down:
358− changed = img_pan(&img, &win, PAN_DOWN);
359− break;
360− case XK_k:
361− case XK_Up:
362− changed = img_pan(&img, &win, PAN_UP);
363− break;
364− case XK_l:
365− case XK_Right:
366− changed = img_pan(&img, &win, PAN_RIGHT);
367− break;
368−
369− /* rotation */
370− case XK_less:
371− img_rotate_left(&img, &win);
372− changed = 1;
373− break;
374− case XK_greater:
375− img_rotate_right(&img, &win);
376− changed = 1;
377− break;
378−
379− /* control window */
380405 case XK_f:
381406 win_toggle_fullscreen(&win);
382407 /* render on next configurenotify */
383408 break;
384− case XK_W:
385− x = win.x + img.x;
386− y = win.y + img.y;
387− w = img.w * img.zoom;
388− h = img.h * img.zoom;
389− if ((changed = win_moveresize(&win, x, y, w, h))) {
390− img.x = x - win.x;
391− img.y = y - win.y;
392− }
393− break;
394−
395− /* miscellaneous */
396− case XK_a:
397− img_toggle_antialias(&img);
398− changed = 1;
399− break;
400− case XK_r:
401− changed = load_image();
402− break;
403409 }
404410
405411 if (changed)