@@ -350,6 +350,153 @@ void GTKWindow::EndBatchedSizeUpdate(
350
350
}
351
351
}
352
352
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
+
353
500
bool GTKWindow::HandleMouse (GdkEvent* event,
354
501
WindowDestructionReceiver& destruction_receiver) {
355
502
MouseEvent::Button button = MouseEvent::Button ::kNone ;
@@ -433,7 +580,7 @@ bool GTKWindow::HandleKeyboard(
433
580
bool super_pressed = modifiers & GDK_SUPER_MASK;
434
581
uint32_t key_char = gdk_keyval_to_unicode (event->keyval );
435
582
// 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 ,
437
584
event->type == GDK_KEY_RELEASE, shift_pressed, ctrl_pressed,
438
585
alt_pressed, super_pressed);
439
586
switch (event->type ) {
0 commit comments