keyboard: Add/document "leftOffset" optional property on OSK keys

This optional property defines the offset the a key should have
relative to the previous key (on its left) or the start of the
column if it is the first key. If this property is not
present, the key will be placed with no relative offset.

This for example allows keymaps to explicitly define the padding
of the rows that are not "full" relative to other rows, without
guesswork in the code. It is used for this purpose in the
keymaps/levels/rows that needed it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3162>
This commit is contained in:
Carlos Garnacho 2024-01-26 13:07:00 +01:00
parent a93858b862
commit d1aa2acef1
61 changed files with 216 additions and 43 deletions

View File

@ -55,6 +55,12 @@ it has the following structure:
- keyval (String): Hexadecimal keyval to emit as
emulated key presses. Committed strings are
preferred.
- leftOffset (Double): If set, the left offset of
this key, relative to the key immediately to the
left, or the start of the row. If not set, the key
will be implicitly located at the right of the
previous key in the row. Multiples of 0.5 are
accepted.
- width (Double): Relative width of the key in the
row. 1 is for a square key. Multiples of 0.5 are
accepted.

View File

@ -121,6 +121,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"ա"
]
@ -384,6 +385,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"Ա"
]
@ -604,6 +606,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -868,6 +871,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -1048,4 +1052,4 @@
],
"locale": "hy",
"name": "Armenian"
}
}

View File

@ -151,6 +151,7 @@
],
[
{
"leftOffset": 1,
"strings": [
"ذ"
]
@ -335,6 +336,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -603,6 +605,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -790,4 +793,4 @@
],
"locale": "ar",
"name": "Arabic"
}
}

View File

@ -81,6 +81,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"ä",
@ -322,6 +323,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Ä",
@ -560,6 +562,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -808,6 +811,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -603,6 +603,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -851,6 +852,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -538,6 +538,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -786,6 +787,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -548,6 +548,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -796,6 +797,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -962,4 +964,4 @@
],
"locale": "be",
"name": "Belarusian"
}
}

View File

@ -96,6 +96,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"à",
@ -352,6 +353,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"À",
@ -590,6 +592,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -838,6 +841,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -81,6 +81,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"ä",
@ -322,6 +323,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Ä",
@ -560,6 +562,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -808,6 +811,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -81,6 +81,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"ä",
@ -322,6 +323,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Ä",
@ -560,6 +562,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -808,6 +811,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -96,6 +96,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"á",
@ -359,6 +360,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Á",
@ -604,6 +606,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -852,6 +855,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -81,6 +81,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"ä",
@ -322,6 +323,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Ä",
@ -560,6 +562,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -808,6 +811,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -594,6 +594,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -842,6 +843,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -670,6 +670,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -918,6 +919,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -706,6 +706,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -954,6 +955,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -594,6 +594,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -843,6 +844,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -592,6 +592,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -843,6 +844,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -574,6 +574,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -822,6 +823,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -608,6 +608,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -856,6 +857,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -66,6 +66,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"ა",
"ჺ"
@ -284,6 +285,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A"
]
@ -509,6 +511,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -757,6 +760,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -72,6 +72,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"α",
"ά"
@ -294,6 +295,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"Α",
"Ά"
@ -522,6 +524,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -770,6 +773,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -66,6 +66,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a"
]
@ -288,6 +289,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A"
]
@ -522,6 +524,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -770,6 +773,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -91,6 +91,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"á",
@ -337,6 +338,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Á",
@ -570,6 +572,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -818,6 +821,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -63,6 +63,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a"
]
@ -273,6 +274,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A"
]
@ -498,6 +500,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -746,6 +749,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -125,6 +125,7 @@
],
[
{
"leftOffset": 1,
"strings": [
"ז",
"ז׳"
@ -298,6 +299,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -547,6 +549,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -715,4 +718,4 @@
],
"locale": "he",
"name": "Hebrew"
}
}

View File

@ -326,6 +326,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -575,6 +576,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -568,6 +568,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -817,6 +818,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -151,6 +151,7 @@
],
[
{
"leftOffset": 1,
"strings": [
"ذ"
]
@ -335,6 +336,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"٬",
"@"
@ -606,6 +608,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -794,4 +797,4 @@
],
"locale": "fa",
"name": "Persian"
}
}

View File

@ -92,6 +92,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"á",
@ -340,6 +341,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Á",
@ -574,6 +576,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -822,6 +825,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -90,6 +90,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"à",
@ -336,6 +337,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"À",
@ -570,6 +572,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -818,6 +821,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -86,6 +86,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"à",
@ -331,6 +332,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"À",
@ -568,6 +570,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -816,6 +819,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -554,6 +554,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -802,6 +803,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -968,4 +970,4 @@
],
"locale": "ky",
"name": "Kirghiz"
}
}

View File

@ -399,6 +399,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -648,6 +649,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -74,6 +74,7 @@
[
{
"label": "ㅁ",
"leftOffset": 0.5,
"strings": [
"a"
]
@ -135,6 +136,7 @@
[
{
"label": "ㅋ",
"leftOffset": 1,
"strings": [
"z"
]
@ -303,6 +305,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -551,6 +554,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -389,6 +389,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -638,6 +639,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -592,6 +592,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -843,6 +844,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -102,6 +102,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"ą",
@ -382,6 +383,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Ą",
@ -638,6 +640,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -886,6 +889,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -101,6 +101,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"ā",
@ -380,6 +381,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Ā",
@ -636,6 +638,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -884,6 +887,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -548,6 +548,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -796,6 +797,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -962,4 +964,4 @@
],
"locale": "mk",
"name": "Macedonian"
}
}

View File

@ -552,6 +552,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -801,6 +802,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -968,4 +970,4 @@
],
"locale": "mn",
"name": "Mongolian"
}
}

View File

@ -63,6 +63,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a"
]
@ -273,6 +274,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A"
]
@ -498,6 +500,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -746,6 +749,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -91,6 +91,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"á",
@ -339,6 +340,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Á",
@ -574,6 +576,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -822,6 +825,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -594,6 +594,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -842,6 +843,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -63,6 +63,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a"
]
@ -273,6 +274,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A"
]
@ -498,6 +500,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -746,6 +749,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -78,6 +78,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"ą",
@ -324,6 +325,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Ą",
@ -570,6 +572,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -818,6 +821,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -90,6 +90,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"á",
@ -338,6 +339,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Á",
@ -574,6 +576,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -822,6 +825,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -70,6 +70,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"â",
@ -300,6 +301,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Â",
@ -538,6 +540,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -786,6 +789,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -548,6 +548,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -796,6 +797,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -962,4 +964,4 @@
],
"locale": "sr",
"name": "Serbian"
}
}

View File

@ -548,6 +548,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -796,6 +797,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -962,4 +964,4 @@
],
"locale": "ru",
"name": "Russian"
}
}

View File

@ -628,6 +628,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -876,6 +877,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -63,6 +63,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a"
]
@ -278,6 +279,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A"
]
@ -508,6 +510,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -756,6 +759,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -101,6 +101,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"á",
@ -381,6 +382,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Á",
@ -638,6 +640,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -886,6 +889,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -150,6 +150,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"ฟ"
]
@ -464,6 +465,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"ฤ"
]
@ -716,6 +718,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -965,6 +968,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -1132,4 +1136,4 @@
],
"locale": "th",
"name": "Thai"
}
}

View File

@ -83,6 +83,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"â"
@ -322,6 +323,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Â"
@ -556,6 +558,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -804,6 +807,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -550,6 +550,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -799,6 +800,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]
@ -966,4 +968,4 @@
],
"locale": "uk",
"name": "Ukrainian"
}
}

View File

@ -86,6 +86,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"à",
@ -330,6 +331,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"À",
@ -566,6 +568,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -814,6 +817,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"€"
]

View File

@ -626,6 +626,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -874,6 +875,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -86,6 +86,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"à",
@ -330,6 +331,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"À",
@ -566,6 +568,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -814,6 +817,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -112,6 +112,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"à",
@ -389,6 +390,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"À",
@ -632,6 +634,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -881,6 +884,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -94,6 +94,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"a",
"á",
@ -345,6 +346,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"A",
"Á",
@ -580,6 +582,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"@"
]
@ -828,6 +831,7 @@
],
[
{
"leftOffset": 0.5,
"strings": [
"£"
]

View File

@ -113,10 +113,10 @@ class KeyContainer extends St.Widget {
this._rows.push(row);
}
appendKey(key, width = 1, height = 1) {
let keyInfo = {
appendKey(key, width = 1, height = 1, leftOffset = 0) {
const keyInfo = {
key,
left: this._currentCol,
left: this._currentCol + leftOffset,
top: this._currentRow,
width,
height,
@ -126,37 +126,19 @@ class KeyContainer extends St.Widget {
row.keys.push(keyInfo);
row.width += width;
this._currentCol += width;
this._currentCol += leftOffset + width;
this._maxCols = Math.max(this._currentCol, this._maxCols);
}
layoutButtons() {
let nCol = 0, nRow = 0;
for (let i = 0; i < this._rows.length; i++) {
let row = this._rows[i];
/* When starting a new row, see if we need some padding */
if (nCol === 0) {
let diff = this._maxCols - row.width;
if (diff >= 1)
nCol = diff * KEY_SIZE / 2;
else
nCol = diff * KEY_SIZE;
}
for (let j = 0; j < row.keys.length; j++) {
let keyInfo = row.keys[j];
let width = keyInfo.width * KEY_SIZE;
let height = keyInfo.height * KEY_SIZE;
this._gridLayout.attach(keyInfo.key, nCol, nRow, width, height);
nCol += width;
}
nRow += KEY_SIZE;
nCol = 0;
}
this._rows.forEach(row => {
row.keys.forEach(keyInfo => {
const {left, top, width, height} = keyInfo;
this._gridLayout.attach(keyInfo.key,
left * KEY_SIZE, top * KEY_SIZE,
width * KEY_SIZE, height * KEY_SIZE);
});
});
}
getRatio() {
@ -1582,7 +1564,7 @@ export const Keyboard = GObject.registerClass({
if (key.action || key.keyval)
button.keyButton.add_style_class_name('default-key');
layout.appendKey(button, key.width);
layout.appendKey(button, key.width, 1, key.leftOffset);
}
}