Skip to content

Commit 5a54a9f

Browse files
authored
Merge pull request #949 from RobLoach/alt-function-keys
keys: Capture F1-F12, and ALT keys
2 parents b3b7de5 + 2b1b641 commit 5a54a9f

28 files changed

Lines changed: 705 additions & 3 deletions

File tree

demo/allegro5/nuklear_allegro5.h

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,10 +420,23 @@ nk_allegro5_handle_event(ALLEGRO_EVENT *ev)
420420
int down = ev->type == ALLEGRO_EVENT_KEY_DOWN;
421421

422422
/* do we need this? */
423-
if (kc == ALLEGRO_KEY_LSHIFT || kc == ALLEGRO_KEY_RSHIFT) nk_input_key(ctx, NK_KEY_SHIFT, down);
423+
if (kc == ALLEGRO_KEY_ALT || kc == ALLEGRO_KEY_ALTGR) nk_input_key(ctx, NK_KEY_ALT, down);
424+
else if (kc == ALLEGRO_KEY_LSHIFT || kc == ALLEGRO_KEY_RSHIFT) nk_input_key(ctx, NK_KEY_SHIFT, down);
424425
else if (kc == ALLEGRO_KEY_ESCAPE) nk_input_key(ctx, NK_KEY_TEXT_RESET_MODE, down);
425426
else if (kc == ALLEGRO_KEY_PGUP) nk_input_key(ctx, NK_KEY_SCROLL_UP, down);
426427
else if (kc == ALLEGRO_KEY_PGDN) nk_input_key(ctx, NK_KEY_SCROLL_DOWN, down);
428+
else if (kc == ALLEGRO_KEY_F1) nk_input_key(ctx, NK_KEY_F1, down);
429+
else if (kc == ALLEGRO_KEY_F2) nk_input_key(ctx, NK_KEY_F2, down);
430+
else if (kc == ALLEGRO_KEY_F3) nk_input_key(ctx, NK_KEY_F3, down);
431+
else if (kc == ALLEGRO_KEY_F4) nk_input_key(ctx, NK_KEY_F4, down);
432+
else if (kc == ALLEGRO_KEY_F5) nk_input_key(ctx, NK_KEY_F5, down);
433+
else if (kc == ALLEGRO_KEY_F6) nk_input_key(ctx, NK_KEY_F6, down);
434+
else if (kc == ALLEGRO_KEY_F7) nk_input_key(ctx, NK_KEY_F7, down);
435+
else if (kc == ALLEGRO_KEY_F8) nk_input_key(ctx, NK_KEY_F8, down);
436+
else if (kc == ALLEGRO_KEY_F9) nk_input_key(ctx, NK_KEY_F9, down);
437+
else if (kc == ALLEGRO_KEY_F10) nk_input_key(ctx, NK_KEY_F10, down);
438+
else if (kc == ALLEGRO_KEY_F11) nk_input_key(ctx, NK_KEY_F11, down);
439+
else if (kc == ALLEGRO_KEY_F12) nk_input_key(ctx, NK_KEY_F12, down);
427440
else if (kc == ALLEGRO_KEY_INSERT) {
428441
if (down) insert_toggle = !insert_toggle;
429442
if (insert_toggle) {

demo/d3d11/nuklear_d3d11.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,47 @@ nk_d3d11_handle_event(HWND wnd, UINT msg, WPARAM wparam, LPARAM lparam)
289289
nk_input_key(&d3d11.ctx, NK_KEY_TEXT_RESET_MODE, down);
290290
return 1;
291291

292+
case VK_MENU:
293+
nk_input_key(&d3d11.ctx, NK_KEY_ALT, down);
294+
return 1;
295+
296+
case VK_F1:
297+
nk_input_key(&d3d11.ctx, NK_KEY_F1, down);
298+
return 1;
299+
case VK_F2:
300+
nk_input_key(&d3d11.ctx, NK_KEY_F2, down);
301+
return 1;
302+
case VK_F3:
303+
nk_input_key(&d3d11.ctx, NK_KEY_F3, down);
304+
return 1;
305+
case VK_F4:
306+
nk_input_key(&d3d11.ctx, NK_KEY_F4, down);
307+
return 1;
308+
case VK_F5:
309+
nk_input_key(&d3d11.ctx, NK_KEY_F5, down);
310+
return 1;
311+
case VK_F6:
312+
nk_input_key(&d3d11.ctx, NK_KEY_F6, down);
313+
return 1;
314+
case VK_F7:
315+
nk_input_key(&d3d11.ctx, NK_KEY_F7, down);
316+
return 1;
317+
case VK_F8:
318+
nk_input_key(&d3d11.ctx, NK_KEY_F8, down);
319+
return 1;
320+
case VK_F9:
321+
nk_input_key(&d3d11.ctx, NK_KEY_F9, down);
322+
return 1;
323+
case VK_F10:
324+
nk_input_key(&d3d11.ctx, NK_KEY_F10, down);
325+
return 1;
326+
case VK_F11:
327+
nk_input_key(&d3d11.ctx, NK_KEY_F11, down);
328+
return 1;
329+
case VK_F12:
330+
nk_input_key(&d3d11.ctx, NK_KEY_F12, down);
331+
return 1;
332+
292333
case VK_INSERT:
293334
/* Only switch on release to avoid repeat issues
294335
* kind of confusing since we have to negate it but we're already

demo/d3d12/nuklear_d3d12.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,47 @@ nk_d3d12_handle_event(HWND wnd, UINT msg, WPARAM wparam, LPARAM lparam)
413413
nk_input_key(&d3d12.ctx, NK_KEY_TEXT_RESET_MODE, down);
414414
return 1;
415415

416+
case VK_MENU:
417+
nk_input_key(&d3d12.ctx, NK_KEY_ALT, down);
418+
return 1;
419+
420+
case VK_F1:
421+
nk_input_key(&d3d12.ctx, NK_KEY_F1, down);
422+
return 1;
423+
case VK_F2:
424+
nk_input_key(&d3d12.ctx, NK_KEY_F2, down);
425+
return 1;
426+
case VK_F3:
427+
nk_input_key(&d3d12.ctx, NK_KEY_F3, down);
428+
return 1;
429+
case VK_F4:
430+
nk_input_key(&d3d12.ctx, NK_KEY_F4, down);
431+
return 1;
432+
case VK_F5:
433+
nk_input_key(&d3d12.ctx, NK_KEY_F5, down);
434+
return 1;
435+
case VK_F6:
436+
nk_input_key(&d3d12.ctx, NK_KEY_F6, down);
437+
return 1;
438+
case VK_F7:
439+
nk_input_key(&d3d12.ctx, NK_KEY_F7, down);
440+
return 1;
441+
case VK_F8:
442+
nk_input_key(&d3d12.ctx, NK_KEY_F8, down);
443+
return 1;
444+
case VK_F9:
445+
nk_input_key(&d3d12.ctx, NK_KEY_F9, down);
446+
return 1;
447+
case VK_F10:
448+
nk_input_key(&d3d12.ctx, NK_KEY_F10, down);
449+
return 1;
450+
case VK_F11:
451+
nk_input_key(&d3d12.ctx, NK_KEY_F11, down);
452+
return 1;
453+
case VK_F12:
454+
nk_input_key(&d3d12.ctx, NK_KEY_F12, down);
455+
return 1;
456+
416457
case VK_INSERT:
417458
/* Only switch on release to avoid repeat issues
418459
* kind of confusing since we have to negate it but we're already

demo/d3d9/nuklear_d3d9.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,47 @@ nk_d3d9_handle_event(HWND wnd, UINT msg, WPARAM wparam, LPARAM lparam)
341341
nk_input_key(&d3d9.ctx, NK_KEY_TEXT_RESET_MODE, down);
342342
return 1;
343343

344+
case VK_MENU:
345+
nk_input_key(&d3d9.ctx, NK_KEY_ALT, down);
346+
return 1;
347+
348+
case VK_F1:
349+
nk_input_key(&d3d9.ctx, NK_KEY_F1, down);
350+
return 1;
351+
case VK_F2:
352+
nk_input_key(&d3d9.ctx, NK_KEY_F2, down);
353+
return 1;
354+
case VK_F3:
355+
nk_input_key(&d3d9.ctx, NK_KEY_F3, down);
356+
return 1;
357+
case VK_F4:
358+
nk_input_key(&d3d9.ctx, NK_KEY_F4, down);
359+
return 1;
360+
case VK_F5:
361+
nk_input_key(&d3d9.ctx, NK_KEY_F5, down);
362+
return 1;
363+
case VK_F6:
364+
nk_input_key(&d3d9.ctx, NK_KEY_F6, down);
365+
return 1;
366+
case VK_F7:
367+
nk_input_key(&d3d9.ctx, NK_KEY_F7, down);
368+
return 1;
369+
case VK_F8:
370+
nk_input_key(&d3d9.ctx, NK_KEY_F8, down);
371+
return 1;
372+
case VK_F9:
373+
nk_input_key(&d3d9.ctx, NK_KEY_F9, down);
374+
return 1;
375+
case VK_F10:
376+
nk_input_key(&d3d9.ctx, NK_KEY_F10, down);
377+
return 1;
378+
case VK_F11:
379+
nk_input_key(&d3d9.ctx, NK_KEY_F11, down);
380+
return 1;
381+
case VK_F12:
382+
nk_input_key(&d3d9.ctx, NK_KEY_F12, down);
383+
return 1;
384+
344385
case VK_INSERT:
345386
/* Only switch on release to avoid repeat issues
346387
* kind of confusing since we have to negate it but we're already

demo/gdi/nuklear_gdi.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,47 @@ nk_gdi_handle_event(HWND wnd, UINT msg, WPARAM wparam, LPARAM lparam)
783783
nk_input_key(&gdi.ctx, NK_KEY_TEXT_RESET_MODE, down);
784784
return 1;
785785

786+
case VK_MENU:
787+
nk_input_key(&gdi.ctx, NK_KEY_ALT, down);
788+
return 1;
789+
790+
case VK_F1:
791+
nk_input_key(&gdi.ctx, NK_KEY_F1, down);
792+
return 1;
793+
case VK_F2:
794+
nk_input_key(&gdi.ctx, NK_KEY_F2, down);
795+
return 1;
796+
case VK_F3:
797+
nk_input_key(&gdi.ctx, NK_KEY_F3, down);
798+
return 1;
799+
case VK_F4:
800+
nk_input_key(&gdi.ctx, NK_KEY_F4, down);
801+
return 1;
802+
case VK_F5:
803+
nk_input_key(&gdi.ctx, NK_KEY_F5, down);
804+
return 1;
805+
case VK_F6:
806+
nk_input_key(&gdi.ctx, NK_KEY_F6, down);
807+
return 1;
808+
case VK_F7:
809+
nk_input_key(&gdi.ctx, NK_KEY_F7, down);
810+
return 1;
811+
case VK_F8:
812+
nk_input_key(&gdi.ctx, NK_KEY_F8, down);
813+
return 1;
814+
case VK_F9:
815+
nk_input_key(&gdi.ctx, NK_KEY_F9, down);
816+
return 1;
817+
case VK_F10:
818+
nk_input_key(&gdi.ctx, NK_KEY_F10, down);
819+
return 1;
820+
case VK_F11:
821+
nk_input_key(&gdi.ctx, NK_KEY_F11, down);
822+
return 1;
823+
case VK_F12:
824+
nk_input_key(&gdi.ctx, NK_KEY_F12, down);
825+
return 1;
826+
786827
case VK_INSERT:
787828
/* Only switch on release to avoid repeat issues
788829
* kind of confusing since we have to negate it but we're already

demo/gdi_native_nuklear/nuklear_gdi.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -747,6 +747,47 @@ nk_gdi_handle_event(nk_gdi_ctx gdi, HWND wnd, UINT msg, WPARAM wparam, LPARAM lp
747747
nk_input_key(&gdi->ctx, NK_KEY_TEXT_RESET_MODE, down);
748748
return 1;
749749

750+
case VK_MENU:
751+
nk_input_key(&gdi->ctx, NK_KEY_ALT, down);
752+
return 1;
753+
754+
case VK_F1:
755+
nk_input_key(&gdi->ctx, NK_KEY_F1, down);
756+
return 1;
757+
case VK_F2:
758+
nk_input_key(&gdi->ctx, NK_KEY_F2, down);
759+
return 1;
760+
case VK_F3:
761+
nk_input_key(&gdi->ctx, NK_KEY_F3, down);
762+
return 1;
763+
case VK_F4:
764+
nk_input_key(&gdi->ctx, NK_KEY_F4, down);
765+
return 1;
766+
case VK_F5:
767+
nk_input_key(&gdi->ctx, NK_KEY_F5, down);
768+
return 1;
769+
case VK_F6:
770+
nk_input_key(&gdi->ctx, NK_KEY_F6, down);
771+
return 1;
772+
case VK_F7:
773+
nk_input_key(&gdi->ctx, NK_KEY_F7, down);
774+
return 1;
775+
case VK_F8:
776+
nk_input_key(&gdi->ctx, NK_KEY_F8, down);
777+
return 1;
778+
case VK_F9:
779+
nk_input_key(&gdi->ctx, NK_KEY_F9, down);
780+
return 1;
781+
case VK_F10:
782+
nk_input_key(&gdi->ctx, NK_KEY_F10, down);
783+
return 1;
784+
case VK_F11:
785+
nk_input_key(&gdi->ctx, NK_KEY_F11, down);
786+
return 1;
787+
case VK_F12:
788+
nk_input_key(&gdi->ctx, NK_KEY_F12, down);
789+
return 1;
790+
750791
case VK_INSERT:
751792
/* Only switch on release to avoid repeat issues
752793
* kind of confusing since we have to negate it but we're already

demo/gdip/nuklear_gdip.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -973,6 +973,47 @@ nk_gdip_handle_event(HWND wnd, UINT msg, WPARAM wparam, LPARAM lparam)
973973
nk_input_key(&gdip.ctx, NK_KEY_TEXT_RESET_MODE, down);
974974
return 1;
975975

976+
case VK_MENU:
977+
nk_input_key(&gdip.ctx, NK_KEY_ALT, down);
978+
return 1;
979+
980+
case VK_F1:
981+
nk_input_key(&gdip.ctx, NK_KEY_F1, down);
982+
return 1;
983+
case VK_F2:
984+
nk_input_key(&gdip.ctx, NK_KEY_F2, down);
985+
return 1;
986+
case VK_F3:
987+
nk_input_key(&gdip.ctx, NK_KEY_F3, down);
988+
return 1;
989+
case VK_F4:
990+
nk_input_key(&gdip.ctx, NK_KEY_F4, down);
991+
return 1;
992+
case VK_F5:
993+
nk_input_key(&gdip.ctx, NK_KEY_F5, down);
994+
return 1;
995+
case VK_F6:
996+
nk_input_key(&gdip.ctx, NK_KEY_F6, down);
997+
return 1;
998+
case VK_F7:
999+
nk_input_key(&gdip.ctx, NK_KEY_F7, down);
1000+
return 1;
1001+
case VK_F8:
1002+
nk_input_key(&gdip.ctx, NK_KEY_F8, down);
1003+
return 1;
1004+
case VK_F9:
1005+
nk_input_key(&gdip.ctx, NK_KEY_F9, down);
1006+
return 1;
1007+
case VK_F10:
1008+
nk_input_key(&gdip.ctx, NK_KEY_F10, down);
1009+
return 1;
1010+
case VK_F11:
1011+
nk_input_key(&gdip.ctx, NK_KEY_F11, down);
1012+
return 1;
1013+
case VK_F12:
1014+
nk_input_key(&gdip.ctx, NK_KEY_F12, down);
1015+
return 1;
1016+
9761017
case VK_INSERT:
9771018
/* Only switch on release to avoid repeat issues
9781019
* kind of confusing since we have to negate it but we're already

demo/glfw_opengl2/nuklear_glfw_gl2.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,22 @@ nk_glfw3_key_callback(GLFWwindow *win, int key, int scancode, int action, int mo
236236
case GLFW_KEY_RIGHT: glfw.key_events[NK_KEY_RIGHT] = a; break;
237237
case GLFW_KEY_ESCAPE: glfw.key_events[NK_KEY_TEXT_RESET_MODE] = a; break;
238238

239+
case GLFW_KEY_LEFT_ALT:
240+
case GLFW_KEY_RIGHT_ALT: glfw.key_events[NK_KEY_ALT] = a; break;
239241
case GLFW_KEY_PAGE_UP: glfw.key_events[NK_KEY_SCROLL_UP] = a; break;
240242
case GLFW_KEY_PAGE_DOWN: glfw.key_events[NK_KEY_SCROLL_DOWN] = a; break;
243+
case GLFW_KEY_F1: glfw.key_events[NK_KEY_F1] = a; break;
244+
case GLFW_KEY_F2: glfw.key_events[NK_KEY_F2] = a; break;
245+
case GLFW_KEY_F3: glfw.key_events[NK_KEY_F3] = a; break;
246+
case GLFW_KEY_F4: glfw.key_events[NK_KEY_F4] = a; break;
247+
case GLFW_KEY_F5: glfw.key_events[NK_KEY_F5] = a; break;
248+
case GLFW_KEY_F6: glfw.key_events[NK_KEY_F6] = a; break;
249+
case GLFW_KEY_F7: glfw.key_events[NK_KEY_F7] = a; break;
250+
case GLFW_KEY_F8: glfw.key_events[NK_KEY_F8] = a; break;
251+
case GLFW_KEY_F9: glfw.key_events[NK_KEY_F9] = a; break;
252+
case GLFW_KEY_F10: glfw.key_events[NK_KEY_F10] = a; break;
253+
case GLFW_KEY_F11: glfw.key_events[NK_KEY_F11] = a; break;
254+
case GLFW_KEY_F12: glfw.key_events[NK_KEY_F12] = a; break;
241255

242256
/* have to add all keys used for nuklear to get correct repeat behavior
243257
* NOTE these are scancodes so your custom layout won't matter unfortunately
@@ -407,8 +421,21 @@ nk_glfw3_new_frame(void)
407421
if (k_state[NK_KEY_BACKSPACE] >= 0) nk_input_key(ctx, NK_KEY_BACKSPACE, k_state[NK_KEY_BACKSPACE]);
408422
if (k_state[NK_KEY_UP] >= 0) nk_input_key(ctx, NK_KEY_UP, k_state[NK_KEY_UP]);
409423
if (k_state[NK_KEY_DOWN] >= 0) nk_input_key(ctx, NK_KEY_DOWN, k_state[NK_KEY_DOWN]);
424+
if (k_state[NK_KEY_ALT] >= 0) nk_input_key(ctx, NK_KEY_ALT, k_state[NK_KEY_ALT]);
410425
if (k_state[NK_KEY_SCROLL_UP] >= 0) nk_input_key(ctx, NK_KEY_SCROLL_UP, k_state[NK_KEY_SCROLL_UP]);
411426
if (k_state[NK_KEY_SCROLL_DOWN] >= 0) nk_input_key(ctx, NK_KEY_SCROLL_DOWN, k_state[NK_KEY_SCROLL_DOWN]);
427+
if (k_state[NK_KEY_F1] >= 0) nk_input_key(ctx, NK_KEY_F1, k_state[NK_KEY_F1]);
428+
if (k_state[NK_KEY_F2] >= 0) nk_input_key(ctx, NK_KEY_F2, k_state[NK_KEY_F2]);
429+
if (k_state[NK_KEY_F3] >= 0) nk_input_key(ctx, NK_KEY_F3, k_state[NK_KEY_F3]);
430+
if (k_state[NK_KEY_F4] >= 0) nk_input_key(ctx, NK_KEY_F4, k_state[NK_KEY_F4]);
431+
if (k_state[NK_KEY_F5] >= 0) nk_input_key(ctx, NK_KEY_F5, k_state[NK_KEY_F5]);
432+
if (k_state[NK_KEY_F6] >= 0) nk_input_key(ctx, NK_KEY_F6, k_state[NK_KEY_F6]);
433+
if (k_state[NK_KEY_F7] >= 0) nk_input_key(ctx, NK_KEY_F7, k_state[NK_KEY_F7]);
434+
if (k_state[NK_KEY_F8] >= 0) nk_input_key(ctx, NK_KEY_F8, k_state[NK_KEY_F8]);
435+
if (k_state[NK_KEY_F9] >= 0) nk_input_key(ctx, NK_KEY_F9, k_state[NK_KEY_F9]);
436+
if (k_state[NK_KEY_F10] >= 0) nk_input_key(ctx, NK_KEY_F10, k_state[NK_KEY_F10]);
437+
if (k_state[NK_KEY_F11] >= 0) nk_input_key(ctx, NK_KEY_F11, k_state[NK_KEY_F11]);
438+
if (k_state[NK_KEY_F12] >= 0) nk_input_key(ctx, NK_KEY_F12, k_state[NK_KEY_F12]);
412439

413440
if (k_state[NK_KEY_TEXT_INSERT_MODE] >= 0) nk_input_key(ctx, NK_KEY_TEXT_INSERT_MODE, k_state[NK_KEY_TEXT_INSERT_MODE]);
414441
if (k_state[NK_KEY_TEXT_REPLACE_MODE] >= 0) nk_input_key(ctx, NK_KEY_TEXT_REPLACE_MODE, k_state[NK_KEY_TEXT_REPLACE_MODE]);

0 commit comments

Comments
 (0)