[gnome-shell/wip/carlosg/osk-updates: 3/27] keyboard: Add generic handling for key actions




commit 13cb0ad02bd904b70a4907dc6a128e1405463bce
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Apr 14 21:09:27 2022 +0200

    keyboard: Add generic handling for key actions
    
    These actions are defined in the JSON files themselves, allowing
    us to migrate away from the sets of pre/post default keys, and fold
    them into the JSON files for fuller control on layout and appearance.
    
    As a first migration step, handle the relevant actions in the buttons
    created from the JSON files, so we can port these.

 js/ui/keyboard.js | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)
---
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index bc4c02c0d6..2e02c2d515 100644
--- a/js/ui/keyboard.js
+++ b/js/ui/keyboard.js
@@ -1561,6 +1561,32 @@ var Keyboard = GObject.registerClass({
                 if (!this._latched)
                     this._setActiveLayer(0);
             });
+            button.connect('pressed', () => {
+                if (key.action === 'levelSwitch') {
+                    this._setActiveLayer(key.level);
+                    this._setLatched (
+                        key.level === 1 &&
+                        key.iconName === 'keyboard-caps-lock-symbolic');
+                }
+            });
+            button.connect('released', () => {
+                if (key.action === 'hide')
+                    this.close();
+                else if (key.action === 'languageMenu')
+                    this._popupLanguageMenu(button);
+                else if (key.action === 'emoji')
+                    this._toggleEmoji();
+            });
+
+            if (key.action === 'levelSwitch' &&
+                key.iconName === 'keyboard-shift-symbolic') {
+                layout.shiftKeys.push(button);
+                if (key.level === 1) {
+                    button.connect('long-press', () => {
+                        this._setLatched(true);
+                    });
+                }
+            }
 
             if (key.action || key.keyval)
                 button.keyButton.add_style_class_name('default-key');
@@ -1569,6 +1595,11 @@ var Keyboard = GObject.registerClass({
         }
     }
 
+    _setLatched(latched) {
+        this._latched = latched;
+        this._setCurrentLevelLatched(this._currentPage, this._latched);
+    }
+
     _popupLanguageMenu(keyActor) {
         if (this._languagePopup)
             this._languagePopup.destroy();


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