[gnome-shell/wip/carlosg/osk-updates: 3/27] keyboard: Add generic handling for key actions
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/carlosg/osk-updates: 3/27] keyboard: Add generic handling for key actions
- Date: Mon, 25 Jul 2022 22:08:49 +0000 (UTC)
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]