@@ -350,6 +350,153 @@ void GTKWindow::EndBatchedSizeUpdate(
350350 }
351351}
352352
353+ VirtualKey GTKWindow::TranslateVirtualKey (guint keyval) {
354+ switch (keyval) {
355+ case GDK_KEY_a:
356+ return VirtualKey::kA ;
357+ case GDK_KEY_A:
358+ return VirtualKey::kA ;
359+ case GDK_KEY_b:
360+ return VirtualKey::kB ;
361+ case GDK_KEY_B:
362+ return VirtualKey::kB ;
363+ case GDK_KEY_c:
364+ return VirtualKey::kC ;
365+ case GDK_KEY_C:
366+ return VirtualKey::kC ;
367+ case GDK_KEY_d:
368+ return VirtualKey::kD ;
369+ case GDK_KEY_D:
370+ return VirtualKey::kD ;
371+ case GDK_KEY_e:
372+ return VirtualKey::kE ;
373+ case GDK_KEY_E:
374+ return VirtualKey::kE ;
375+ case GDK_KEY_f:
376+ return VirtualKey::kF ;
377+ case GDK_KEY_F:
378+ return VirtualKey::kF ;
379+ case GDK_KEY_g:
380+ return VirtualKey::kG ;
381+ case GDK_KEY_G:
382+ return VirtualKey::kG ;
383+ case GDK_KEY_h:
384+ return VirtualKey::kH ;
385+ case GDK_KEY_H:
386+ return VirtualKey::kH ;
387+ case GDK_KEY_i:
388+ return VirtualKey::kI ;
389+ case GDK_KEY_I:
390+ return VirtualKey::kI ;
391+ case GDK_KEY_j:
392+ return VirtualKey::kJ ;
393+ case GDK_KEY_J:
394+ return VirtualKey::kJ ;
395+ case GDK_KEY_k:
396+ return VirtualKey::kK ;
397+ case GDK_KEY_K:
398+ return VirtualKey::kK ;
399+ case GDK_KEY_l:
400+ return VirtualKey::kL ;
401+ case GDK_KEY_L:
402+ return VirtualKey::kL ;
403+ case GDK_KEY_m:
404+ return VirtualKey::kM ;
405+ case GDK_KEY_M:
406+ return VirtualKey::kM ;
407+ case GDK_KEY_n:
408+ return VirtualKey::kN ;
409+ case GDK_KEY_N:
410+ return VirtualKey::kN ;
411+ case GDK_KEY_o:
412+ return VirtualKey::kO ;
413+ case GDK_KEY_O:
414+ return VirtualKey::kO ;
415+ case GDK_KEY_p:
416+ return VirtualKey::kP ;
417+ case GDK_KEY_P:
418+ return VirtualKey::kP ;
419+ case GDK_KEY_q:
420+ return VirtualKey::kQ ;
421+ case GDK_KEY_Q:
422+ return VirtualKey::kQ ;
423+ case GDK_KEY_r:
424+ return VirtualKey::kR ;
425+ case GDK_KEY_R:
426+ return VirtualKey::kR ;
427+ case GDK_KEY_s:
428+ return VirtualKey::kS ;
429+ case GDK_KEY_S:
430+ return VirtualKey::kS ;
431+ case GDK_KEY_t:
432+ return VirtualKey::kT ;
433+ case GDK_KEY_T:
434+ return VirtualKey::kT ;
435+ case GDK_KEY_u:
436+ return VirtualKey::kU ;
437+ case GDK_KEY_U:
438+ return VirtualKey::kU ;
439+ case GDK_KEY_v:
440+ return VirtualKey::kV ;
441+ case GDK_KEY_V:
442+ return VirtualKey::kV ;
443+ case GDK_KEY_w:
444+ return VirtualKey::kW ;
445+ case GDK_KEY_W:
446+ return VirtualKey::kW ;
447+ case GDK_KEY_x:
448+ return VirtualKey::kX ;
449+ case GDK_KEY_X:
450+ return VirtualKey::kX ;
451+ case GDK_KEY_y:
452+ return VirtualKey::kY ;
453+ case GDK_KEY_Y:
454+ return VirtualKey::kY ;
455+ case GDK_KEY_z:
456+ return VirtualKey::kZ ;
457+ case GDK_KEY_Z:
458+ return VirtualKey::kZ ;
459+ case GDK_KEY_0:
460+ return VirtualKey::k0;
461+ case GDK_KEY_1:
462+ return VirtualKey::k1;
463+ case GDK_KEY_2:
464+ return VirtualKey::k2;
465+ case GDK_KEY_3:
466+ return VirtualKey::k3;
467+ case GDK_KEY_4:
468+ return VirtualKey::k4;
469+ case GDK_KEY_5:
470+ return VirtualKey::k5;
471+ case GDK_KEY_6:
472+ return VirtualKey::k6;
473+ case GDK_KEY_7:
474+ return VirtualKey::k7;
475+ case GDK_KEY_8:
476+ return VirtualKey::k8;
477+ case GDK_KEY_9:
478+ return VirtualKey::k9;
479+ case GDK_KEY_semicolon:
480+ return VirtualKey::kOem1 ;
481+ case GDK_KEY_apostrophe:
482+ return VirtualKey::kOem7 ;
483+ case GDK_KEY_comma:
484+ return VirtualKey::kOemComma ;
485+ case GDK_KEY_period:
486+ return VirtualKey::kOemPeriod ;
487+ case GDK_KEY_uparrow:
488+ return VirtualKey::kUp ;
489+ case GDK_KEY_downarrow:
490+ return VirtualKey::kDown ;
491+ case GDK_KEY_leftarrow:
492+ return VirtualKey::kLeft ;
493+ case GDK_KEY_rightarrow:
494+ return VirtualKey::kRight ;
495+ default :
496+ return VirtualKey (keyval);
497+ }
498+ }
499+
353500bool GTKWindow::HandleMouse (GdkEvent* event,
354501 WindowDestructionReceiver& destruction_receiver) {
355502 MouseEvent::Button button = MouseEvent::Button::kNone ;
@@ -433,7 +580,7 @@ bool GTKWindow::HandleKeyboard(
433580 bool super_pressed = modifiers & GDK_SUPER_MASK;
434581 uint32_t key_char = gdk_keyval_to_unicode (event->keyval );
435582 // TODO(Triang3l): event->hardware_keycode to VirtualKey translation.
436- KeyEvent e (this , VirtualKey (event->hardware_keycode ), 1 ,
583+ KeyEvent e (this , TranslateVirtualKey (event->keyval ), 1 ,
437584 event->type == GDK_KEY_RELEASE, shift_pressed, ctrl_pressed,
438585 alt_pressed, super_pressed);
439586 switch (event->type ) {
0 commit comments