keyboard: Use extended US keyboard for terminal mode

If the input hint is "terminal", use the extended keyboard.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2278>
This commit is contained in:
Carlos Garnacho
2022-04-22 21:16:52 +02:00
committed by Florian Müllner
parent 8874f2c248
commit c0a75faf89
2 changed files with 30 additions and 2 deletions

View File

@ -13,6 +13,7 @@ var HIDE_PANEL_TIME = 50;
var InputMethod = GObject.registerClass({
Signals: {
'surrounding-text-set': {},
'terminal-mode-changed': {},
},
}, class InputMethod extends Clutter.InputMethod {
_init() {
@ -25,6 +26,7 @@ var InputMethod = GObject.registerClass({
this._preeditAnchor = 0;
this._preeditVisible = false;
this._hidePanelId = 0;
this.terminalMode = false;
this._ibus = IBus.Bus.new_async();
this._ibus.connect('connected', this._onConnected.bind(this));
this._ibus.connect('disconnected', this._clear.bind(this));
@ -208,6 +210,7 @@ var InputMethod = GObject.registerClass({
this._surroundingText = null;
this._surroundingTextCursor = null;
this._preeditStr = null;
this._setTerminalMode(false);
}
vfunc_set_cursor_location(rect) {
@ -271,11 +274,21 @@ var InputMethod = GObject.registerClass({
else if (purpose == Clutter.InputContentPurpose.PASSWORD)
ibusPurpose = IBus.InputPurpose.PASSWORD;
this._setTerminalMode(
purpose === Clutter.InputContentPurpose.TERMINAL);
this._purpose = ibusPurpose;
if (this._context)
this._context.set_content_type(this._purpose, this._hints);
}
_setTerminalMode(terminalMode) {
if (this.terminalMode !== terminalMode) {
this.terminalMode = terminalMode;
this.emit('terminal-mode-changed');
}
}
vfunc_filter_key_event(event) {
if (!this._context)
return false;