diff --git a/data/gnome-shell-osk-layouts.gresource.xml b/data/gnome-shell-osk-layouts.gresource.xml
index b5112919c..efaf47491 100644
--- a/data/gnome-shell-osk-layouts.gresource.xml
+++ b/data/gnome-shell-osk-layouts.gresource.xml
@@ -12,6 +12,7 @@
ch+fr.json
cz.json
de.json
+ digits.json
dk.json
ee.json
epo.json
diff --git a/data/osk-layouts/digits.json b/data/osk-layouts/digits.json
new file mode 100644
index 000000000..83ac43215
--- /dev/null
+++ b/data/osk-layouts/digits.json
@@ -0,0 +1,83 @@
+{
+ "levels": [
+ {
+ "level": "",
+ "mode": "default",
+ "rows": [
+ [
+ {
+ "strings": [
+ "7"
+ ]
+ },
+ {
+ "strings": [
+ "8"
+ ]
+ },
+ {
+ "strings": [
+ "9"
+ ]
+ },
+ {
+ "action": "delete",
+ "iconName": "edit-clear-symbolic"
+ }
+ ],
+ [
+ {
+ "strings": [
+ "4"
+ ]
+ },
+ {
+ "strings": [
+ "5"
+ ]
+ },
+ {
+ "strings": [
+ "6"
+ ]
+ },
+ {
+ "iconName": "keyboard-enter-symbolic",
+ "keyval": "0xff0d",
+ "height": 2
+ }
+ ],
+ [
+ {
+ "strings": [
+ "1"
+ ]
+ },
+ {
+ "strings": [
+ "2"
+ ]
+ },
+ {
+ "strings": [
+ "3"
+ ]
+ }
+ ],
+ [
+ {
+ "width": 3,
+ "strings": [
+ "0"
+ ]
+ },
+ {
+ "action": "hide",
+ "iconName": "keyboard-hide-symbolic"
+ }
+ ]
+ ]
+ }
+ ],
+ "name": "Digits"
+}
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index a3629f78d..8f460bb52 100644
--- a/js/ui/keyboard.js
+++ b/js/ui/keyboard.js
@@ -1084,63 +1084,6 @@ const EmojiSelection = GObject.registerClass({
}
});
-const Keypad = GObject.registerClass({
- Signals: {
- 'keyval': {param_types: [GObject.TYPE_UINT]},
- },
-}, class Keypad extends AspectContainer {
- _init() {
- let keys = [
- {label: '1', keyval: Clutter.KEY_1, left: 0, top: 0},
- {label: '2', keyval: Clutter.KEY_2, left: 1, top: 0},
- {label: '3', keyval: Clutter.KEY_3, left: 2, top: 0},
- {label: '4', keyval: Clutter.KEY_4, left: 0, top: 1},
- {label: '5', keyval: Clutter.KEY_5, left: 1, top: 1},
- {label: '6', keyval: Clutter.KEY_6, left: 2, top: 1},
- {label: '7', keyval: Clutter.KEY_7, left: 0, top: 2},
- {label: '8', keyval: Clutter.KEY_8, left: 1, top: 2},
- {label: '9', keyval: Clutter.KEY_9, left: 2, top: 2},
- {label: '0', keyval: Clutter.KEY_0, left: 1, top: 3},
- {keyval: Clutter.KEY_BackSpace, icon: 'edit-clear-symbolic', left: 3, top: 0},
- {keyval: Clutter.KEY_Return, extraClassName: 'enter-key', icon: 'keyboard-enter-symbolic', left: 3, top: 1, height: 2},
- ];
-
- super._init({
- layout_manager: new Clutter.BinLayout(),
- x_expand: true,
- y_expand: true,
- });
-
- const gridLayout = new Clutter.GridLayout({
- orientation: Clutter.Orientation.HORIZONTAL,
- column_homogeneous: true,
- row_homogeneous: true,
- });
- this._box = new St.Widget({layout_manager: gridLayout, x_expand: true, y_expand: true});
- this.add_child(this._box);
-
- for (let i = 0; i < keys.length; i++) {
- let cur = keys[i];
- let key = new Key({
- label: cur.label,
- iconName: cur.icon,
- });
-
- if (keys[i].extraClassName)
- key.keyButton.add_style_class_name(cur.extraClassName);
-
- let w, h;
- w = cur.width || 1;
- h = cur.height || 1;
- gridLayout.attach(key, cur.left, cur.top, w, h);
-
- key.connect('released', () => {
- this.emit('keyval', cur.keyval);
- });
- }
- }
-});
-
export class KeyboardManager extends Signals.EventEmitter {
constructor() {
super();
@@ -1390,15 +1333,6 @@ export const Keyboard = GObject.registerClass({
this._emojiSelection.hide();
this._aspectContainer.add_child(this._emojiSelection);
- this._keypad = new Keypad();
- this._keypad.connectObject('keyval', (_keypad, keyval) => {
- this._keyboardController.keyvalPress(keyval);
- this._keyboardController.keyvalRelease(keyval);
- }, this);
- this._aspectContainer.add_child(this._keypad);
- this._keypad.hide();
- this._keypadVisible = false;
-
this._updateKeys();
this._keyboardController.connectObject(
@@ -1460,7 +1394,7 @@ export const Keyboard = GObject.registerClass({
if (purpose === Clutter.InputContentPurpose.DIGITS ||
purpose === Clutter.InputContentPurpose.NUMBER ||
purpose === Clutter.InputContentPurpose.PHONE) {
- this._onKeypadVisible(null, true);
+ keyboardModel = new KeyboardModel('digits');
} else {
let groups = [groupName];
if (groupName.includes('+'))
@@ -1480,8 +1414,6 @@ export const Keyboard = GObject.registerClass({
if (!keyboardModel)
return;
-
- this._onKeypadVisible(null, false);
}
let levels = keyboardModel.getLevels();
@@ -1753,7 +1685,7 @@ export const Keyboard = GObject.registerClass({
_updateCurrentPageVisible() {
if (this._currentPage)
- this._currentPage.visible = !this._emojiActive && !this._keypadVisible;
+ this._currentPage.visible = !this._emojiActive;
}
_setEmojiActive(active) {
@@ -1825,15 +1757,6 @@ export const Keyboard = GObject.registerClass({
this._onGroupChanged();
}
- _onKeypadVisible(controller, visible) {
- if (visible === this._keypadVisible)
- return;
-
- this._keypadVisible = visible;
- this._keypad.visible = this._keypadVisible;
- this._updateCurrentPageVisible();
- }
-
_onEmojiKeyVisible(controller, visible) {
if (visible === this._emojiKeyVisible)
return;