[gnome-games] display-view: Translate keyval for shortcuts



commit a378f4b80154e78222341692edda419d046f20b2
Author: Yetizone <andreii lisita gmail com>
Date:   Mon Aug 12 14:50:58 2019 +0300

    display-view: Translate keyval for shortcuts
    
    This way, shortcuts can work independently of the current keyboard layout.

 src/ui/display-view.vala | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/src/ui/display-view.vala b/src/ui/display-view.vala
index aa410863..6cbe1410 100644
--- a/src/ui/display-view.vala
+++ b/src/ui/display-view.vala
@@ -97,7 +97,12 @@ private class Games.DisplayView : Object, UiView {
                if (box.on_key_press_event (event))
                        return true;
 
-               if ((event.keyval == Gdk.Key.f || event.keyval == Gdk.Key.F) &&
+               uint keyval;
+               var keymap = Gdk.Keymap.get_for_display (window.get_display ());
+               keymap.translate_keyboard_state (event.hardware_keycode, event.state,
+                                                event.group, out keyval, null, null, null);
+
+               if ((keyval == Gdk.Key.f || keyval == Gdk.Key.F) &&
                    (event.state & default_modifiers) == Gdk.ModifierType.CONTROL_MASK &&
                    header_bar.can_fullscreen && !savestates_list_state.is_revealed) {
                        is_fullscreen = !is_fullscreen;
@@ -106,7 +111,7 @@ private class Games.DisplayView : Object, UiView {
                        return true;
                }
 
-               if (event.keyval == Gdk.Key.F11 && header_bar.can_fullscreen &&
+               if (keyval == Gdk.Key.F11 && header_bar.can_fullscreen &&
                    !savestates_list_state.is_revealed) {
                        is_fullscreen = !is_fullscreen;
                        settings.set_boolean ("fullscreen", is_fullscreen);
@@ -114,7 +119,7 @@ private class Games.DisplayView : Object, UiView {
                        return true;
                }
 
-               if (event.keyval == Gdk.Key.Escape && header_bar.can_fullscreen) {
+               if (keyval == Gdk.Key.Escape && header_bar.can_fullscreen) {
                        is_fullscreen = false;
                        settings.set_boolean ("fullscreen", false);
 
@@ -122,8 +127,8 @@ private class Games.DisplayView : Object, UiView {
                }
 
                if (((event.state & default_modifiers) == Gdk.ModifierType.MOD1_MASK) &&
-                   (((window.get_direction () == Gtk.TextDirection.LTR) && event.keyval == Gdk.Key.Left) ||
-                    ((window.get_direction () == Gtk.TextDirection.RTL) && event.keyval == Gdk.Key.Right))) {
+                   (((window.get_direction () == Gtk.TextDirection.LTR) && keyval == Gdk.Key.Left) ||
+                    ((window.get_direction () == Gtk.TextDirection.RTL) && keyval == Gdk.Key.Right))) {
                        on_display_back ();
 
                        return true;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]