@roku-sdk/components 0.0.0-stage → 2.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/BREAKING_CHANGES.md +84 -0
  2. package/LICENSE +21 -0
  3. package/README.md +19 -2
  4. package/core-jsx.d.ts +53 -0
  5. package/eslint.config.mjs +3 -0
  6. package/jsx.d.ts +273 -0
  7. package/package.json +85 -3
  8. package/src/__tests__/container.test.tsx +150 -0
  9. package/src/__tests__/effect-gradient-validation.test.tsx +133 -0
  10. package/src/__tests__/glyphs.test.ts +202 -0
  11. package/src/__tests__/modal-boundary-export.test.ts +12 -0
  12. package/src/__tests__/native-modal.test.tsx +224 -0
  13. package/src/__tests__/tween-release.test.tsx +125 -0
  14. package/src/__tests__/tween-stops-shape.test.tsx +165 -0
  15. package/src/__tests__/tween-without-compat.test.tsx +64 -0
  16. package/src/__tests__/tween.test.tsx +195 -0
  17. package/src/blended-busy-spinner.props.ts +37 -0
  18. package/src/blended-busy-spinner.tsx +13 -0
  19. package/src/bounding-tracker.props.ts +18 -0
  20. package/src/bounding-tracker.tsx +13 -0
  21. package/src/button-row.tsx +126 -0
  22. package/src/channel-store.props.ts +425 -0
  23. package/src/channel-store.tsx +76 -0
  24. package/src/container.tsx +130 -0
  25. package/src/core/jsx-runtime.ts +39 -0
  26. package/src/focusable-group.props.ts +8 -0
  27. package/src/focusable-group.tsx +17 -0
  28. package/src/focusable.props.ts +14 -0
  29. package/src/focusable.tsx +17 -0
  30. package/src/glyphs.ts +116 -0
  31. package/src/helpers/index.tsx +4 -0
  32. package/src/helpers/resolution-context.tsx +68 -0
  33. package/src/helpers/scale-for-device-resolution.ts +31 -0
  34. package/src/index.tsx +70 -0
  35. package/src/jsx-props.ts +87 -0
  36. package/src/kdfs.d.ts +14 -0
  37. package/src/kdfs.ts +15 -0
  38. package/src/key-handler.props.ts +33 -0
  39. package/src/key-handler.tsx +24 -0
  40. package/src/modal-dialog.props.ts +38 -0
  41. package/src/modal-dialog.tsx +41 -0
  42. package/src/retain-asset.ts +24 -0
  43. package/src/sg-intrinsics.json +1153 -0
  44. package/src/sg-nodes/__tests__/__snapshots__/font.test.tsx.snap +13 -0
  45. package/src/sg-nodes/__tests__/__snapshots__/prop-forwarding.test.tsx.snap +4409 -0
  46. package/src/sg-nodes/__tests__/core-props.test.ts +301 -0
  47. package/src/sg-nodes/__tests__/font.test.tsx +141 -0
  48. package/src/sg-nodes/__tests__/imperative-methods.test.ts +276 -0
  49. package/src/sg-nodes/__tests__/prop-forwarding.test.tsx +1049 -0
  50. package/src/sg-nodes/__tests__/solid-integration.test.tsx +719 -0
  51. package/src/sg-nodes/animated-image.props.ts +64 -0
  52. package/src/sg-nodes/animated-image.tsx +23 -0
  53. package/src/sg-nodes/animation.props.ts +292 -0
  54. package/src/sg-nodes/animation.tsx +190 -0
  55. package/src/sg-nodes/array-grid.ts +602 -0
  56. package/src/sg-nodes/audio.props.ts +302 -0
  57. package/src/sg-nodes/audio.tsx +57 -0
  58. package/src/sg-nodes/busy-spinner.props.ts +59 -0
  59. package/src/sg-nodes/busy-spinner.tsx +84 -0
  60. package/src/sg-nodes/button-group.props.ts +141 -0
  61. package/src/sg-nodes/button-group.tsx +30 -0
  62. package/src/sg-nodes/button.props.ts +119 -0
  63. package/src/sg-nodes/button.tsx +31 -0
  64. package/src/sg-nodes/check-list.props.ts +71 -0
  65. package/src/sg-nodes/check-list.tsx +55 -0
  66. package/src/sg-nodes/content-node.props.ts +1316 -0
  67. package/src/sg-nodes/content-node.tsx +153 -0
  68. package/src/sg-nodes/core-props.ts +197 -0
  69. package/src/sg-nodes/custom-keyboard.props.ts +108 -0
  70. package/src/sg-nodes/custom-keyboard.tsx +48 -0
  71. package/src/sg-nodes/dialog.props.ts +159 -0
  72. package/src/sg-nodes/dialog.tsx +36 -0
  73. package/src/sg-nodes/dynamic-key-grid.props.ts +22 -0
  74. package/src/sg-nodes/dynamic-key-grid.tsx +16 -0
  75. package/src/sg-nodes/dynamic-keyboard.props.ts +30 -0
  76. package/src/sg-nodes/dynamic-keyboard.tsx +18 -0
  77. package/src/sg-nodes/dynamic-mini-keyboard.props.ts +22 -0
  78. package/src/sg-nodes/dynamic-mini-keyboard.tsx +18 -0
  79. package/src/sg-nodes/dynamic-pinpad.props.ts +57 -0
  80. package/src/sg-nodes/dynamic-pinpad.tsx +18 -0
  81. package/src/sg-nodes/effect.props.ts +119 -0
  82. package/src/sg-nodes/effect.tsx +167 -0
  83. package/src/sg-nodes/font.props.ts +45 -0
  84. package/src/sg-nodes/font.tsx +80 -0
  85. package/src/sg-nodes/group.props.ts +105 -0
  86. package/src/sg-nodes/group.tsx +30 -0
  87. package/src/sg-nodes/label-list.props.ts +86 -0
  88. package/src/sg-nodes/label-list.tsx +64 -0
  89. package/src/sg-nodes/label.props.ts +207 -0
  90. package/src/sg-nodes/label.tsx +56 -0
  91. package/src/sg-nodes/layout-group.props.ts +69 -0
  92. package/src/sg-nodes/layout-group.tsx +75 -0
  93. package/src/sg-nodes/list-panel.props.ts +103 -0
  94. package/src/sg-nodes/list-panel.tsx +49 -0
  95. package/src/sg-nodes/markup-grid.props.ts +78 -0
  96. package/src/sg-nodes/markup-grid.tsx +38 -0
  97. package/src/sg-nodes/markup-list.props.ts +66 -0
  98. package/src/sg-nodes/markup-list.tsx +38 -0
  99. package/src/sg-nodes/mask-group.props.ts +78 -0
  100. package/src/sg-nodes/mask-group.tsx +59 -0
  101. package/src/sg-nodes/media-playback-methods.ts +20 -0
  102. package/src/sg-nodes/node.ts +77 -0
  103. package/src/sg-nodes/overhang.props.ts +169 -0
  104. package/src/sg-nodes/overhang.tsx +29 -0
  105. package/src/sg-nodes/panel-set.props.ts +71 -0
  106. package/src/sg-nodes/panel-set.tsx +53 -0
  107. package/src/sg-nodes/panel.props.ts +176 -0
  108. package/src/sg-nodes/panel.tsx +56 -0
  109. package/src/sg-nodes/poster-grid.props.ts +277 -0
  110. package/src/sg-nodes/poster-grid.tsx +45 -0
  111. package/src/sg-nodes/poster.props.ts +125 -0
  112. package/src/sg-nodes/poster.tsx +44 -0
  113. package/src/sg-nodes/radio-button-list.props.ts +59 -0
  114. package/src/sg-nodes/radio-button-list.tsx +68 -0
  115. package/src/sg-nodes/rectangle.props.ts +29 -0
  116. package/src/sg-nodes/rectangle.tsx +27 -0
  117. package/src/sg-nodes/row-list.props.ts +288 -0
  118. package/src/sg-nodes/row-list.tsx +47 -0
  119. package/src/sg-nodes/scene.props.ts +65 -0
  120. package/src/sg-nodes/scene.tsx +15 -0
  121. package/src/sg-nodes/scrollable-text.props.ts +133 -0
  122. package/src/sg-nodes/scrollable-text.tsx +64 -0
  123. package/src/sg-nodes/scrolling-label.props.ts +106 -0
  124. package/src/sg-nodes/scrolling-label.tsx +42 -0
  125. package/src/sg-nodes/simple-label.props.ts +156 -0
  126. package/src/sg-nodes/simple-label.tsx +59 -0
  127. package/src/sg-nodes/sound-effect.props.ts +130 -0
  128. package/src/sg-nodes/sound-effect.tsx +65 -0
  129. package/src/sg-nodes/standard-dialog.props.ts +520 -0
  130. package/src/sg-nodes/standard-dialog.tsx +428 -0
  131. package/src/sg-nodes/standard-keyboard-dialog.props.ts +84 -0
  132. package/src/sg-nodes/standard-keyboard-dialog.tsx +58 -0
  133. package/src/sg-nodes/standard-message-dialog.props.ts +56 -0
  134. package/src/sg-nodes/standard-message-dialog.tsx +47 -0
  135. package/src/sg-nodes/standard-pinpad-dialog.props.ts +64 -0
  136. package/src/sg-nodes/standard-pinpad-dialog.tsx +44 -0
  137. package/src/sg-nodes/standard-progress-dialog.props.ts +30 -0
  138. package/src/sg-nodes/standard-progress-dialog.tsx +40 -0
  139. package/src/sg-nodes/target-group.props.ts +278 -0
  140. package/src/sg-nodes/target-group.tsx +63 -0
  141. package/src/sg-nodes/target-list.props.ts +128 -0
  142. package/src/sg-nodes/target-list.tsx +66 -0
  143. package/src/sg-nodes/target-set.props.ts +63 -0
  144. package/src/sg-nodes/target-set.tsx +42 -0
  145. package/src/sg-nodes/time-grid.props.ts +646 -0
  146. package/src/sg-nodes/time-grid.tsx +87 -0
  147. package/src/sg-nodes/tween.props.ts +115 -0
  148. package/src/sg-nodes/types.ts +150 -0
  149. package/src/sg-nodes/video.props.ts +642 -0
  150. package/src/sg-nodes/video.tsx +75 -0
  151. package/src/sg-nodes/voice-text-edit-box.props.ts +91 -0
  152. package/src/sg-nodes/voice-text-edit-box.tsx +15 -0
  153. package/src/sg-nodes/zoom-row-list.props.ts +416 -0
  154. package/src/sg-nodes/zoom-row-list.tsx +42 -0
  155. package/src/standard-dialog-next/__tests__/standard-dialog-next.test.tsx +186 -0
  156. package/src/standard-dialog-next/index.ts +5 -0
  157. package/src/standard-dialog-next/standard-dialog-next.props.ts +80 -0
  158. package/src/standard-dialog-next/standard-dialog-next.tsx +326 -0
  159. package/src/test-helpers/tween-test-setup.ts +78 -0
  160. package/src/tween.tsx +173 -0
  161. package/src/types.ts +8 -0
  162. package/src/xml-components/blended-busy-spinner/BlendedBusySpinner.brs +13 -0
  163. package/src/xml-components/blended-busy-spinner/BlendedBusySpinner.xml +10 -0
  164. package/src/xml-components/blended-busy-spinner/BlendedBusySpinner.xml.d.ts +42 -0
  165. package/src/xml-components/bounding-tracker/BoundingTracker.brs +26 -0
  166. package/src/xml-components/bounding-tracker/BoundingTracker.xml +14 -0
  167. package/src/xml-components/bounding-tracker/BoundingTracker.xml.d.ts +42 -0
  168. package/src/xml-components/channel-store/channelStoreExt.brs +159 -0
  169. package/src/xml-components/channel-store/channelStoreExt.xml +29 -0
  170. package/src/xml-components/channel-store/channelStoreExt.xml.d.ts +57 -0
  171. package/src/xml-components/focus/focusable-group.brs +251 -0
  172. package/src/xml-components/focus/focusable-group.xml +15 -0
  173. package/src/xml-components/focus/focusable-group.xml.d.ts +42 -0
  174. package/src/xml-components/focus/focusable.xml +18 -0
  175. package/src/xml-components/focus/focusable.xml.d.ts +48 -0
  176. package/src/xml-components/keyboards/CustomAddressKDF.keyboard.json +547 -0
  177. package/src/xml-components/keyboards/CustomKeyboard.brs +322 -0
  178. package/src/xml-components/keyboards/CustomKeyboard.xml +45 -0
  179. package/src/xml-components/keyboards/CustomKeyboard.xml.d.ts +73 -0
  180. package/src/xml-components/keyboards/KeyGridExt.xml +4 -0
  181. package/src/xml-components/keyboards/KeyGridExt.xml.d.ts +37 -0
  182. package/src/xml-components/keyboards/KeyboardExt.xml +4 -0
  183. package/src/xml-components/keyboards/KeyboardExt.xml.d.ts +37 -0
  184. package/src/xml-components/keyboards/MOPPinPadCustomKDF.keyboard.json +151 -0
  185. package/src/xml-components/keyboards/MiniKeyboardExt.xml +4 -0
  186. package/src/xml-components/keyboards/MiniKeyboardExt.xml.d.ts +37 -0
  187. package/src/xml-components/keyboards/PhonePadCustomKDF.keyboard.json +42 -0
  188. package/src/xml-components/keyboards/PinPadExt.brs +102 -0
  189. package/src/xml-components/keyboards/PinPadExt.xml +17 -0
  190. package/src/xml-components/keyboards/PinPadExt.xml.d.ts +49 -0
  191. package/src/xml-components/keyboards/WifiCustomKDF.keyboard.json +1242 -0
  192. package/src/xml-components/keyhandler/KeyHandler.brs +30 -0
  193. package/src/xml-components/keyhandler/KeyHandler.xml +16 -0
  194. package/src/xml-components/keyhandler/KeyHandler.xml.d.ts +45 -0
  195. package/src/xml-components/managed-list-panel/ManagedListPanel.brs +137 -0
  196. package/src/xml-components/managed-list-panel/ManagedListPanel.xml +10 -0
  197. package/src/xml-components/managed-list-panel/ManagedListPanel.xml.d.ts +37 -0
  198. package/src/xml-components/modal/Modal.brs +105 -0
  199. package/src/xml-components/modal/Modal.xml +22 -0
  200. package/src/xml-components/modal/Modal.xml.d.ts +54 -0
  201. package/src/xml-components/modal/StandardDialogExt.xml +10 -0
  202. package/src/xml-components/modal/StandardDialogExt.xml.d.ts +37 -0
  203. package/src/xml-components/modal/StandardKeyboardDialogExt.xml +10 -0
  204. package/src/xml-components/modal/StandardKeyboardDialogExt.xml.d.ts +37 -0
  205. package/src/xml-components/modal/StandardMessageDialogExt.xml +10 -0
  206. package/src/xml-components/modal/StandardMessageDialogExt.xml.d.ts +37 -0
  207. package/src/xml-components/modal/StandardPinPadDialogExt.xml +10 -0
  208. package/src/xml-components/modal/StandardPinPadDialogExt.xml.d.ts +37 -0
  209. package/src/xml-components/modal/StandardProgressDialogExt.xml +10 -0
  210. package/src/xml-components/modal/StandardProgressDialogExt.xml.d.ts +37 -0
  211. package/src/xml-components/modal/tests/Modal.test.brs +195 -0
  212. package/tsconfig.json +10 -0
@@ -0,0 +1,547 @@
1
+ {
2
+ "keyboardWidthFHD": 540,
3
+ "keyboardHeightFHD": 360,
4
+
5
+ "keyboardWidthHD": 360,
6
+ "keyboardHeightHD": 240,
7
+ "sections": [
8
+ {
9
+ "grids": [
10
+ {
11
+ "modes": "nameFullUpper",
12
+ "rows": [
13
+ {
14
+ "keys": [
15
+ { "label": "1" },
16
+ { "label": "2" },
17
+ { "label": "3" },
18
+ { "label": "4" },
19
+ { "label": "5" },
20
+ { "label": "6" },
21
+ { "label": "7" },
22
+ { "label": "8" },
23
+ { "label": "9" }
24
+ ]
25
+ },
26
+ {
27
+ "keys": [
28
+ { "label": "0" },
29
+ { "label": "A" },
30
+ { "label": "B" },
31
+ { "label": "C" },
32
+ { "label": "D" },
33
+ { "label": "E" },
34
+ { "label": "F" },
35
+ { "label": "G" },
36
+ { "label": "H" }
37
+ ]
38
+ },
39
+ {
40
+ "keys": [
41
+ { "label": "I" },
42
+ { "label": "J" },
43
+ { "label": "K" },
44
+ { "label": "L" },
45
+ { "label": "M" },
46
+ { "label": "N" },
47
+ { "label": "O" },
48
+ { "label": "P" },
49
+ { "label": "Q" }
50
+ ]
51
+ },
52
+ {
53
+ "keys": [
54
+ { "label": "R" },
55
+ { "label": "S" },
56
+ { "label": "T" },
57
+ { "label": "U" },
58
+ { "label": "V" },
59
+ { "label": "W" },
60
+ { "label": "X" },
61
+ { "label": "Y" },
62
+ { "label": "Z" }
63
+ ]
64
+ },
65
+ {
66
+ "keys": [
67
+ {
68
+ "icon": "theme:KeyboardClearOnBitmap",
69
+ "focusIcon": "theme:KeyboardClearOffBitmap",
70
+ "strOut": "clear"
71
+ },
72
+ {
73
+ "label": "Aa",
74
+ "strOut": "ChangeCase"
75
+ },
76
+ {
77
+ "icon": "theme:KeyboardSpaceOnBitmap",
78
+ "focusIcon": "theme:KeyboardSpaceOffBitmap",
79
+ "strOut": "Space"
80
+ },
81
+ {
82
+ "icon": "theme:KeyboardDeleteOnBitmap",
83
+ "focusIcon": "theme:KeyboardDeleteOffBitmap",
84
+ "strOut": "backspace"
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ "keys": [{ "label": "Prev", "disabled": 1 }, { "label": "Next" }]
90
+ }
91
+ ]
92
+ },
93
+ {
94
+ "modes": "nameFullLower",
95
+ "rows": [
96
+ {
97
+ "keys": [
98
+ { "label": "1" },
99
+ { "label": "2" },
100
+ { "label": "3" },
101
+ { "label": "4" },
102
+ { "label": "5" },
103
+ { "label": "6" },
104
+ { "label": "7" },
105
+ { "label": "8" },
106
+ { "label": "9" }
107
+ ]
108
+ },
109
+ {
110
+ "keys": [
111
+ { "label": "0" },
112
+ { "label": "a" },
113
+ { "label": "b" },
114
+ { "label": "c" },
115
+ { "label": "d" },
116
+ { "label": "e" },
117
+ { "label": "f" },
118
+ { "label": "g" },
119
+ { "label": "h" }
120
+ ]
121
+ },
122
+ {
123
+ "keys": [
124
+ { "label": "i" },
125
+ { "label": "j" },
126
+ { "label": "k" },
127
+ { "label": "l" },
128
+ { "label": "m" },
129
+ { "label": "n" },
130
+ { "label": "o" },
131
+ { "label": "p" },
132
+ { "label": "q" }
133
+ ]
134
+ },
135
+ {
136
+ "keys": [
137
+ { "label": "r" },
138
+ { "label": "s" },
139
+ { "label": "t" },
140
+ { "label": "u" },
141
+ { "label": "v" },
142
+ { "label": "w" },
143
+ { "label": "x" },
144
+ { "label": "y" },
145
+ { "label": "z" }
146
+ ]
147
+ },
148
+ {
149
+ "keys": [
150
+ {
151
+ "icon": "theme:KeyboardClearOnBitmap",
152
+ "focusIcon": "theme:KeyboardClearOffBitmap",
153
+ "strOut": "Clear"
154
+ },
155
+ {
156
+ "label": "Aa",
157
+ "strOut": "ChangeCase"
158
+ },
159
+ {
160
+ "icon": "theme:KeyboardSpaceOnBitmap",
161
+ "focusIcon": "theme:KeyboardSpaceOffBitmap",
162
+ "strOut": "Space"
163
+ },
164
+ {
165
+ "icon": "theme:KeyboardDeleteOnBitmap",
166
+ "focusIcon": "theme:KeyboardDeleteOffBitmap",
167
+ "strOut": "backspace"
168
+ }
169
+ ]
170
+ },
171
+ {
172
+ "keys": [{ "label": "Prev", "disabled": 1 }, { "label": "Next" }]
173
+ }
174
+ ]
175
+ },
176
+ {
177
+ "modes": "zip",
178
+ "gridHeightFHD": 360,
179
+ "gridHeightHD": 240,
180
+ "rows": [
181
+ {
182
+ "keys": [{ "label": "1" }, { "label": "2" }, { "label": "3" }]
183
+ },
184
+ {
185
+ "keys": [{ "label": "4" }, { "label": "5" }, { "label": "6" }]
186
+ },
187
+ {
188
+ "keys": [{ "label": "7" }, { "label": "8" }, { "label": "9" }]
189
+ },
190
+ {
191
+ "keys": [
192
+ {
193
+ "icon": "theme:KeyboardDeleteOnBitmap",
194
+ "focusIcon": "theme:KeyboardDeleteOffBitmap",
195
+ "strOut": "backspace"
196
+ },
197
+ {
198
+ "label": "0"
199
+ },
200
+ {
201
+ "icon": "theme:KeyboardClearOnBitmap",
202
+ "focusIcon": "theme:KeyboardClearOffBitmap",
203
+ "strOut": "Clear"
204
+ }
205
+ ]
206
+ },
207
+ {
208
+ "keys": [{ "label": "Prev" }, { "label": "Next" }]
209
+ }
210
+ ]
211
+ },
212
+ {
213
+ "modes": "streetFullUpper",
214
+ "rows": [
215
+ {
216
+ "keys": [
217
+ { "label": "1" },
218
+ { "label": "2" },
219
+ { "label": "3" },
220
+ { "label": "4" },
221
+ { "label": "5" },
222
+ { "label": "6" },
223
+ { "label": "7" },
224
+ { "label": "8" },
225
+ { "label": "9" }
226
+ ]
227
+ },
228
+ {
229
+ "keys": [
230
+ { "label": "0" },
231
+ { "label": "A" },
232
+ { "label": "B" },
233
+ { "label": "C" },
234
+ { "label": "D" },
235
+ { "label": "E" },
236
+ { "label": "F" },
237
+ { "label": "G" },
238
+ { "label": "H" }
239
+ ]
240
+ },
241
+ {
242
+ "keys": [
243
+ { "label": "I" },
244
+ { "label": "J" },
245
+ { "label": "K" },
246
+ { "label": "L" },
247
+ { "label": "M" },
248
+ { "label": "N" },
249
+ { "label": "O" },
250
+ { "label": "P" },
251
+ { "label": "Q" }
252
+ ]
253
+ },
254
+ {
255
+ "keys": [
256
+ { "label": "R" },
257
+ { "label": "S" },
258
+ { "label": "T" },
259
+ { "label": "U" },
260
+ { "label": "V" },
261
+ { "label": "W" },
262
+ { "label": "X" },
263
+ { "label": "Y" },
264
+ { "label": "Z" }
265
+ ]
266
+ },
267
+ {
268
+ "keys": [
269
+ {
270
+ "icon": "theme:KeyboardClearOnBitmap",
271
+ "focusIcon": "theme:KeyboardClearOffBitmap",
272
+ "strOut": "clear"
273
+ },
274
+ {
275
+ "label": "Aa",
276
+ "strOut": "ChangeCase"
277
+ },
278
+ {
279
+ "icon": "theme:KeyboardSpaceOnBitmap",
280
+ "focusIcon": "theme:KeyboardSpaceOffBitmap",
281
+ "strOut": "Space"
282
+ },
283
+ {
284
+ "icon": "theme:KeyboardDeleteOnBitmap",
285
+ "focusIcon": "theme:KeyboardDeleteOffBitmap",
286
+ "strOut": "backspace"
287
+ }
288
+ ]
289
+ },
290
+ {
291
+ "keys": [{ "label": "Prev" }, { "label": "Next" }]
292
+ }
293
+ ]
294
+ },
295
+ {
296
+ "modes": "streetFullLower",
297
+ "rows": [
298
+ {
299
+ "keys": [
300
+ { "label": "1" },
301
+ { "label": "2" },
302
+ { "label": "3" },
303
+ { "label": "4" },
304
+ { "label": "5" },
305
+ { "label": "6" },
306
+ { "label": "7" },
307
+ { "label": "8" },
308
+ { "label": "9" }
309
+ ]
310
+ },
311
+ {
312
+ "keys": [
313
+ { "label": "0" },
314
+ { "label": "a" },
315
+ { "label": "b" },
316
+ { "label": "c" },
317
+ { "label": "d" },
318
+ { "label": "e" },
319
+ { "label": "f" },
320
+ { "label": "g" },
321
+ { "label": "h" }
322
+ ]
323
+ },
324
+ {
325
+ "keys": [
326
+ { "label": "i" },
327
+ { "label": "j" },
328
+ { "label": "k" },
329
+ { "label": "l" },
330
+ { "label": "m" },
331
+ { "label": "n" },
332
+ { "label": "o" },
333
+ { "label": "p" },
334
+ { "label": "q" }
335
+ ]
336
+ },
337
+ {
338
+ "keys": [
339
+ { "label": "r" },
340
+ { "label": "s" },
341
+ { "label": "t" },
342
+ { "label": "u" },
343
+ { "label": "v" },
344
+ { "label": "w" },
345
+ { "label": "x" },
346
+ { "label": "y" },
347
+ { "label": "z" }
348
+ ]
349
+ },
350
+ {
351
+ "keys": [
352
+ {
353
+ "icon": "theme:KeyboardClearOnBitmap",
354
+ "focusIcon": "theme:KeyboardClearOffBitmap",
355
+ "strOut": "Clear"
356
+ },
357
+ {
358
+ "label": "Aa",
359
+ "strOut": "ChangeCase"
360
+ },
361
+ {
362
+ "icon": "theme:KeyboardSpaceOnBitmap",
363
+ "focusIcon": "theme:KeyboardSpaceOffBitmap",
364
+ "strOut": "Space"
365
+ },
366
+ {
367
+ "icon": "theme:KeyboardDeleteOnBitmap",
368
+ "focusIcon": "theme:KeyboardDeleteOffBitmap",
369
+ "strOut": "backspace"
370
+ }
371
+ ]
372
+ },
373
+ {
374
+ "keys": [{ "label": "Prev" }, { "label": "Next" }]
375
+ }
376
+ ]
377
+ },
378
+ {
379
+ "modes": "aptFullUpper",
380
+ "rows": [
381
+ {
382
+ "keys": [
383
+ { "label": "1" },
384
+ { "label": "2" },
385
+ { "label": "3" },
386
+ { "label": "4" },
387
+ { "label": "5" },
388
+ { "label": "6" },
389
+ { "label": "7" },
390
+ { "label": "8" },
391
+ { "label": "9" }
392
+ ]
393
+ },
394
+ {
395
+ "keys": [
396
+ { "label": "0" },
397
+ { "label": "A" },
398
+ { "label": "B" },
399
+ { "label": "C" },
400
+ { "label": "D" },
401
+ { "label": "E" },
402
+ { "label": "F" },
403
+ { "label": "G" },
404
+ { "label": "H" }
405
+ ]
406
+ },
407
+ {
408
+ "keys": [
409
+ { "label": "I" },
410
+ { "label": "J" },
411
+ { "label": "K" },
412
+ { "label": "L" },
413
+ { "label": "M" },
414
+ { "label": "N" },
415
+ { "label": "O" },
416
+ { "label": "P" },
417
+ { "label": "Q" }
418
+ ]
419
+ },
420
+ {
421
+ "keys": [
422
+ { "label": "R" },
423
+ { "label": "S" },
424
+ { "label": "T" },
425
+ { "label": "U" },
426
+ { "label": "V" },
427
+ { "label": "W" },
428
+ { "label": "X" },
429
+ { "label": "Y" },
430
+ { "label": "Z" }
431
+ ]
432
+ },
433
+ {
434
+ "keys": [
435
+ {
436
+ "icon": "theme:KeyboardClearOnBitmap",
437
+ "focusIcon": "theme:KeyboardClearOffBitmap",
438
+ "strOut": "clear"
439
+ },
440
+ {
441
+ "label": "Aa",
442
+ "strOut": "ChangeCase"
443
+ },
444
+ {
445
+ "icon": "theme:KeyboardSpaceOnBitmap",
446
+ "focusIcon": "theme:KeyboardSpaceOffBitmap",
447
+ "strOut": "Space"
448
+ },
449
+ {
450
+ "icon": "theme:KeyboardDeleteOnBitmap",
451
+ "focusIcon": "theme:KeyboardDeleteOffBitmap",
452
+ "strOut": "backspace"
453
+ }
454
+ ]
455
+ },
456
+ {
457
+ "keys": [{ "label": "Prev" }, { "label": "Next" }]
458
+ }
459
+ ]
460
+ },
461
+ {
462
+ "modes": "aptFullLower",
463
+ "rows": [
464
+ {
465
+ "keys": [
466
+ { "label": "1" },
467
+ { "label": "2" },
468
+ { "label": "3" },
469
+ { "label": "4" },
470
+ { "label": "5" },
471
+ { "label": "6" },
472
+ { "label": "7" },
473
+ { "label": "8" },
474
+ { "label": "9" }
475
+ ]
476
+ },
477
+ {
478
+ "keys": [
479
+ { "label": "0" },
480
+ { "label": "a" },
481
+ { "label": "b" },
482
+ { "label": "c" },
483
+ { "label": "d" },
484
+ { "label": "e" },
485
+ { "label": "f" },
486
+ { "label": "g" },
487
+ { "label": "h" }
488
+ ]
489
+ },
490
+ {
491
+ "keys": [
492
+ { "label": "i" },
493
+ { "label": "j" },
494
+ { "label": "k" },
495
+ { "label": "l" },
496
+ { "label": "m" },
497
+ { "label": "n" },
498
+ { "label": "o" },
499
+ { "label": "p" },
500
+ { "label": "q" }
501
+ ]
502
+ },
503
+ {
504
+ "keys": [
505
+ { "label": "r" },
506
+ { "label": "s" },
507
+ { "label": "t" },
508
+ { "label": "u" },
509
+ { "label": "v" },
510
+ { "label": "w" },
511
+ { "label": "x" },
512
+ { "label": "y" },
513
+ { "label": "z" }
514
+ ]
515
+ },
516
+ {
517
+ "keys": [
518
+ {
519
+ "icon": "theme:KeyboardClearOnBitmap",
520
+ "focusIcon": "theme:KeyboardClearOffBitmap",
521
+ "strOut": "Clear"
522
+ },
523
+ {
524
+ "label": "Aa",
525
+ "strOut": "ChangeCase"
526
+ },
527
+ {
528
+ "icon": "theme:KeyboardSpaceOnBitmap",
529
+ "focusIcon": "theme:KeyboardSpaceOffBitmap",
530
+ "strOut": "Space"
531
+ },
532
+ {
533
+ "icon": "theme:KeyboardDeleteOnBitmap",
534
+ "focusIcon": "theme:KeyboardDeleteOffBitmap",
535
+ "strOut": "backspace"
536
+ }
537
+ ]
538
+ },
539
+ {
540
+ "keys": [{ "label": "Prev" }, { "label": "Next" }]
541
+ }
542
+ ]
543
+ }
544
+ ]
545
+ }
546
+ ]
547
+ }