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. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2278>
This commit is contained in:
parent
5b950d7db1
commit
5d0c49f0e0
@ -1548,6 +1548,33 @@ var Keyboard = GObject.registerClass({
|
|||||||
if (!this._latched)
|
if (!this._latched)
|
||||||
this._setActiveLayer(0);
|
this._setActiveLayer(0);
|
||||||
});
|
});
|
||||||
|
if (key.action !== null) {
|
||||||
|
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)
|
if (key.action || key.keyval)
|
||||||
button.keyButton.add_style_class_name('default-key');
|
button.keyButton.add_style_class_name('default-key');
|
||||||
@ -1556,6 +1583,11 @@ var Keyboard = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_setLatched(latched) {
|
||||||
|
this._latched = latched;
|
||||||
|
this._setCurrentLevelLatched(this._currentPage, this._latched);
|
||||||
|
}
|
||||||
|
|
||||||
_popupLanguageMenu(keyActor) {
|
_popupLanguageMenu(keyActor) {
|
||||||
if (this._languagePopup)
|
if (this._languagePopup)
|
||||||
this._languagePopup.destroy();
|
this._languagePopup.destroy();
|
||||||
|
Loading…
Reference in New Issue
Block a user