Krolyxon
Commit f7a6646

Branches

Refs →

nsxivf7a6646

Nicer key handling, does not fix problems

Author
Bert
Date
2011-01-30 20:46 +0100
Parent
03bfe10
Commit
f7a66469e6cb524ec66e82ef5beaf5d97d505c34

+27 −42

1 file changed

  1. M main.c +27 −42
M main.c View
@@ -136,79 +136,60 @@ void cleanup() {
136136
137137 void on_keypress(XEvent *ev) {
138138 char key;
139− KeySym keysym;
139+ KeySym ksym;
140140 int changed;
141141
142142 if (!ev)
143143 return;
144144
145− XLookupString(&ev->xkey, &key, 1, &keysym, NULL);
145+ XLookupString(&ev->xkey, &key, 1, &ksym, NULL);
146146 changed = 0;
147147
148− switch (keysym) {
148+ switch (ksym) {
149149 case XK_Escape:
150150 cleanup();
151151 exit(2);
152− case XK_space:
153− key = 'n';
154− break;
155− case XK_BackSpace:
156− key = 'p';
157− break;
158− case XK_Left:
159− key = 'h';
160− break;
161− case XK_Down:
162− key = 'j';
163− break;
164− case XK_Up:
165− key = 'k';
166− break;
167− case XK_Right:
168− key = 'l';
169− break;
170− }
171−
172− switch (key) {
173− case 'q':
152+ case XK_q:
174153 cleanup();
175154 exit(0);
176155
177156 /* navigate image list */
178− case 'n':
157+ case XK_n:
158+ case XK_space:
179159 if (fileidx + 1 < filecnt) {
180160 img_load(&img, filenames[++fileidx]);
181161 changed = 1;
182162 }
183163 break;
184− case 'p':
164+ case XK_p:
165+ case XK_BackSpace:
185166 if (fileidx > 0) {
186167 img_load(&img, filenames[--fileidx]);
187168 changed = 1;
188169 }
189170 break;
190− case '[':
171+ case XK_bracketleft:
191172 if (fileidx != 0) {
192173 fileidx = MAX(0, fileidx - 10);
193174 img_load(&img, filenames[fileidx]);
194175 changed = 1;
195176 }
196177 break;
197− case ']':
178+ case XK_bracketright:
198179 if (fileidx != filecnt - 1) {
199180 fileidx = MIN(fileidx + 10, filecnt - 1);
200181 img_load(&img, filenames[fileidx]);
201182 changed = 1;
202183 }
203184 break;
204− case 'g':
185+ case XK_g:
205186 if (fileidx != 0) {
206187 fileidx = 0;
207188 img_load(&img, filenames[fileidx]);
208189 changed = 1;
209190 }
210191 break;
211− case 'G':
192+ case XK_G:
212193 if (fileidx != filecnt - 1) {
213194 fileidx = filecnt - 1;
214195 img_load(&img, filenames[fileidx]);
@@ -217,43 +198,47 @@ void on_keypress(XEvent *ev) {
217198 break;
218199
219200 /* zooming */
220− case '+':
221− case '=':
201+ case XK_plus:
202+ case XK_equal:
222203 changed = img_zoom_in(&img);
223204 break;
224− case '-':
205+ case XK_minus:
225206 changed = img_zoom_out(&img);
226207 break;
227208
228209 /* panning */
229− case 'h':
210+ case XK_h:
211+ case XK_Left:
230212 changed = img_pan(&img, &win, PAN_LEFT);
231213 break;
232− case 'j':
214+ case XK_j:
215+ case XK_Down:
233216 changed = img_pan(&img, &win, PAN_DOWN);
234217 break;
235− case 'k':
218+ case XK_k:
219+ case XK_Up:
236220 changed = img_pan(&img, &win, PAN_UP);
237221 break;
238− case 'l':
222+ case XK_l:
223+ case XK_Right:
239224 changed = img_pan(&img, &win, PAN_RIGHT);
240225 break;
241226
242227 /* rotation */
243− case '<':
228+ case XK_less:
244229 changed = img_rotate_left(&img, &win);
245230 break;
246− case '>':
231+ case XK_greater:
247232 changed = img_rotate_right(&img, &win);
248233 break;
249234
250235 /* control window */
251− case 'f':
236+ case XK_f:
252237 win_toggle_fullscreen(&win);
253238 break;
254239
255240 /* miscellaneous */
256− case 'a':
241+ case XK_a:
257242 changed = img_toggle_antialias(&img);
258243 break;
259244 }