]> git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/blame - music_sampler.kv
Move from pygame to sounddevice for sound handling
[perso/Immae/Projets/Python/MusicSampler.git] / music_sampler.kv
CommitLineData
8612c5f8 1#:import math math
bb69f62e 2#:import h helpers
8612c5f8
IB
3
4<Key>:
5 pad_col_sep: 0 if not self.pad_cols else self.parent.pad_x
6 pad_cols: False
7
8 y: (self.parent.top-self.parent.y) - (self.row) * self.parent.key_size - (self.row - 1) * self.parent.key_sep
9 x: (self.col - 1) * self.parent.key_size + int(self.col - 1) * self.parent.key_sep + self.pad_col_sep
10 size_hint: None, None
11 line_color: 120/255, 120/255, 120/255, 1
12 enabled: True
13 line_width: 2
14 row: 1
15 col: 0
16 key_code: 0
17 key_sym: ""
18 key_width: 1
19 key_height: 1
20 width: self.key_width * (self.parent.key_size + self.parent.key_sep) - self.parent.key_sep
21 height: self.key_height * (self.parent.key_size + self.parent.key_sep) - self.parent.key_sep
22 canvas.before:
23 Color:
24 rgba: self.color
25 RoundedRectangle:
26 pos: self.x, self.y
27 size: self.size
28 canvas:
29 Color:
30 rgba: self.line_color
31 Line:
32 rounded_rectangle: self.x + self.line_width, self.y + self.line_width, self.width - 2 * self.line_width, self.height - 2 * self.line_width, 10
33 width: self.line_width
34 Label:
35 id: key_label
bb69f62e 36 font_name: h.path() + "fonts/Ubuntu-B.ttf"
8612c5f8
IB
37 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size))
38 color: 0, 0, 0, 1
39 text: self.parent.key_sym
40 text_size: self.parent.width,self.font_size
41 shorten: True
42 shorten_from: "right"
43 split_str: ""
44 center_x: self.parent.x + self.texture_size[0] /2 + 5
45 center_y: self.parent.y + self.parent.height - self.texture_size[1] /2 - 5
46 Label:
47 id: key_description_title
bb69f62e 48 font_name: h.path() + "fonts/Ubuntu-Regular.ttf"
8612c5f8
IB
49 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size / 2))
50 color: 0, 0, 0, 1
51 text: self.parent.description_title
52 text_size: self.parent.width - 2*self.parent.line_width, self.font_size
53 halign: "right"
54 valign: "middle"
55 center_x: self.parent.x + self.texture_size[0] /2
56 center_y: self.parent.y + self.parent.height - self.texture_size[1] /2 - 5
57 Label:
58 id: key_description
bb69f62e 59 font_name: h.path() + "fonts/Ubuntu-Regular.ttf"
8612c5f8
IB
60 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size / 2))
61 color: 0, 0, 0, 1
62 text: "\n".join(self.parent.description)
63 text_size: 2 * self.parent.width,self.parent.height - key_label.font_size
64 halign: "left"
65 valign: "middle"
66 pos: self.parent.x + 2 * self.parent.line_width + 2, self.parent.y
67 size_hint: None, None
68 size: 2 * self.parent.width - 2 * self.parent.line_width, self.parent.height - key_label.font_size
69
70<Screen>:
4b2d79ca
IB
71 canvas:
72 Color:
73 rgba: 229/255, 228/255, 226/255, 1
74 Rectangle:
75 pos: 0, 0
76 size: self.width, self.height
77
8612c5f8
IB
78 key_size: int( (3 * self.width - 16) / 56)
79 key_sep: int( self.key_size / 24)
80 key_pad_sep: int( self.key_size / 7) + 1
81
82 border: (self.width - self.key_size * 18 - self.key_sep * 16 - self.key_pad_sep)/ 2
83
84 mapping_height: self.key_size * 6 + self.key_sep * 5
85 mapping_width: self.key_size * 18 + self.key_sep * 16 + self.key_pad_sep
86 mapping_x: self.border
87 mapping_y: self.top - self.mapping_height - self.border
65ec4d2a
IB
88
89 key_list_width: 4 * (mock_ubuntu_regular.width or 0)
90 key_list_height: self.height - self.mapping_height - 3 * self.border
91 key_list_x: (self.action_list_width or 0) + 2 * self.border
92 key_list_y: self.border
93
8612c5f8 94 action_list_height: self.height - self.mapping_height - 3 * self.border
65ec4d2a 95 action_list_width: 3 * self.width / 4 - self.key_list_width - self.border
8612c5f8
IB
96 action_list_x: self.border
97 action_list_y: self.border
65ec4d2a 98
8612c5f8
IB
99 play_list_height: self.action_list_height
100 play_list_width: self.width - self.action_list_width - 3* self.border
101 play_list_y: self.border
65ec4d2a 102 play_list_x: self.action_list_width + self.key_list_width + 3 * self.border
8612c5f8 103
8601cdd8
IB
104 min_height: min(mock_symbola.height, mock_ubuntu_regular.height, mock_ubuntu_bold.height)
105 symbola_line_height: self.min_height / max(mock_symbola.height,1)
106 ubuntu_regular_line_height: self.min_height / max(mock_ubuntu_regular.height,1)
107 ubuntu_bold_line_height: self.min_height / max(mock_ubuntu_bold.height,1)
108 Label:
109 id: mock_symbola
110 font_name: h.path() + "fonts/Symbola.ttf"
111 font_size: math.ceil(2 * math.sqrt(self.parent.key_size or 10))
112 color: 0, 0, 0, 0
113 text: "A"
114 text_size: None, None
115 size_hint: None, None
116 size: self.texture_size
117 Label:
118 id: mock_ubuntu_regular
119 font_name: h.path() + "fonts/Ubuntu-Regular.ttf"
120 font_size: math.ceil(2 * math.sqrt(self.parent.key_size or 10))
121 color: 0, 0, 0, 0
122 text: "A"
123 text_size: None, None
124 size_hint: None, None
125 size: self.texture_size
126 Label:
127 id: mock_ubuntu_bold
128 font_name: h.path() + "fonts/Ubuntu-B.ttf"
129 font_size: math.ceil(2 * math.sqrt(self.parent.key_size or 10))
130 color: 0, 0, 0, 0
131 text: "A"
132 text_size: None, None
133 size_hint: None, None
134 size: self.texture_size
135
8612c5f8
IB
136 Mapping:
137 id: Mapping
138 pos: self.parent.mapping_x, self.parent.mapping_y
139 size: self.parent.mapping_width, self.parent.mapping_height
140
141 key_size: self.parent.key_size
142 key_sep: self.parent.key_sep
143 key_pad_sep: self.parent.key_pad_sep
144 pad_x: self.key_size * 15 + 14 * self.key_sep + self.key_pad_sep
145 ActionList:
146 id: ActionList
147 pos: self.parent.action_list_x, self.parent.action_list_y
148 size: self.parent.action_list_width, self.parent.action_list_height
65ec4d2a
IB
149 KeyList:
150 id: KeyList
151 pos: self.parent.key_list_x, self.parent.key_list_y
152 size: self.parent.key_list_width, self.parent.key_list_height
8612c5f8
IB
153 PlayList:
154 id: PlayList
155 pos: self.parent.play_list_x, self.parent.play_list_y
156 size: self.parent.play_list_width, self.parent.play_list_height
157
65ec4d2a
IB
158<KeyList>:
159 size_hint: None, None
160 canvas:
161 Color:
162 rgba: 250./255, 250./255, 250./255, 1
163 Rectangle:
164 pos: 0, 0
165 size: self.width, self.height
166 Label:
167 id: key_list_first
168 font_name: h.path() + "fonts/Ubuntu-B.ttf"
169 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
170 color: 0, 0, 0, 1
171 text: self.parent.first_key
172 text_size: None, None
173 valign: "top"
98ff4305 174 halign: "center"
65ec4d2a
IB
175 size_hint: None, None
176 size: self.parent.width, self.texture_size[1]
177 pos: 0, self.parent.height - self.height
178 Label:
179 id: key_list_second
180 font_name: h.path() + "fonts/Ubuntu-Regular.ttf"
181 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
182 color: 0, 0, 0, 1
183 text: self.parent.second_key
184 text_size: None, None
185 valign: "top"
98ff4305 186 halign: "center"
65ec4d2a
IB
187 size_hint: None, None
188 size: self.parent.width, self.texture_size[1]
189 pos: 0, self.parent.height - key_list_first.height - self.height
190 Label:
191 id: key_list_third
192 font_name: h.path() + "fonts/Ubuntu-Regular.ttf"
193 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
194 color: 0, 0, 0, 0.75
195 text: self.parent.third_key
196 text_size: None, None
197 valign: "top"
98ff4305 198 halign: "center"
65ec4d2a
IB
199 size_hint: None, None
200 size: self.parent.width, self.texture_size[1]
201 pos: 0, self.parent.height - key_list_first.height - key_list_second.height - self.height
202 Label:
203 id: key_list_rest
204 font_name: h.path() + "fonts/Ubuntu-Regular.ttf"
205 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
206 color: 0, 0, 0, 0.5
207 text: "\n".join(self.parent.keylist[3:])
208 text_size: None, None
209 valign: "top"
98ff4305 210 halign: "center"
65ec4d2a
IB
211 size_hint: None, None
212 size: self.parent.width, self.texture_size[1]
213 pos: 0, self.parent.height - key_list_first.height - key_list_second.height - key_list_third.height - self.height
214
8612c5f8
IB
215<ActionList>:
216 size_hint: None, None
217 canvas:
218 Color:
219 rgba: 250./255, 250./255, 250./255, 1
220 Rectangle:
221 pos: 0, 0
222 size: self.width, self.height
7910d58d 223
8612c5f8
IB
224 Label:
225 id: action_list_title
bb69f62e 226 font_name: h.path() + "fonts/Ubuntu-B.ttf"
8612c5f8
IB
227 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
228 color: 0, 0, 0, 1
229 text: self.parent.action_title
230 text_size: None, self.parent.height
231 halign: "left"
232 valign: "top"
233 size_hint: None, None
234 size: self.texture_size[0], self.parent.height
235 Label:
236 id: action_list_icons
bb69f62e 237 font_name: h.path() + "fonts/Symbola.ttf"
8612c5f8 238 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
8601cdd8 239 line_height: self.parent.parent.symbola_line_height or 1
8612c5f8
IB
240 color: 0, 0, 0, 1
241 text: "\n".join(map(lambda x: x[0], self.parent.action_list))
242 text_size: None, self.parent.height
243 halign: "left"
244 valign: "top"
245 size_hint: None, None
246 size: self.texture_size[0], self.parent.height - 3 * self.line_height * self.font_size
247 Label:
248 id: action_list_names
bb69f62e 249 font_name: h.path() + "fonts/Ubuntu-Regular.ttf"
8612c5f8 250 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
8601cdd8 251 line_height: self.parent.parent.ubuntu_regular_line_height or 1
8612c5f8
IB
252 color: 0, 0, 0, 1
253 text: "\n".join(map(lambda x: x[1], self.parent.action_list))
254 text_size: None, self.parent.height
255 halign: "left"
256 valign: "top"
257 size_hint: None, None
258 pos: 15, self.y
259 size: self.texture_size[0], self.parent.height - 3 * self.line_height * self.font_size
260
261<PlayList>:
262 size_hint: None, None
263 canvas:
264 Color:
265 rgba: 250./255, 250./255, 250./255, 1
266 Rectangle:
267 pos: 0, 0
268 size: self.width, self.height
7910d58d 269
8612c5f8
IB
270 Label:
271 id: playlist_icons
bb69f62e 272 font_name: h.path() + "fonts/Symbola.ttf"
8612c5f8 273 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
8601cdd8 274 line_height: self.parent.parent.symbola_line_height or 1
8612c5f8
IB
275 color: 0, 0, 0, 1
276 text: "\n".join(map(lambda x: x[0], self.parent.playlist))
277 text_size: None, self.parent.height
278 halign: "left"
279 valign: "top"
280 size_hint: None, None
281 size: self.texture_size[0], self.parent.height
282 Label:
283 id: playlist_names
bb69f62e 284 font_name: h.path() + "fonts/Ubuntu-Regular.ttf" # FIXME: Mettre en gras quand c'est en cours
8601cdd8 285 line_height: self.parent.parent.ubuntu_regular_line_height or 1
8612c5f8
IB
286 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
287 color: 0, 0, 0, 1
288 text: "\n".join(map(lambda x: x[1], self.parent.playlist))
289 text_size: None, self.parent.height
290 halign: "left"
291 valign: "top"
292 size_hint: None, None
293 pos: 15, self.y
294 size: self.texture_size[0], self.parent.height
98ff4305
IB
295 Label:
296 id: playlist_times
297 font_name: h.path() + "fonts/Ubuntu-Regular.ttf"
298 line_height: self.parent.parent.ubuntu_regular_line_height or 1
299 font_size: math.ceil(2 * math.sqrt(self.parent.parent.key_size or 10))
300 color: 0, 0, 0, 1
301 text: "\n".join(map(lambda x: x[2], self.parent.playlist))
302 text_size: None, self.parent.height
303 halign: "left"
304 valign: "top"
305 size_hint: None, None
306 pos: self.parent.width - 3 * self.width / 2 - 2 * (self.parent.parent.border or 0), self.y
307 size: self.texture_size[0], self.parent.height
8612c5f8
IB
308
309<Mapping>:
310 size_hint: None, None
311 key_size: 48
312 key_sep: 2
313 key_pad_sep: 7
314 pad_x: 755
315 canvas:
316 Color:
317 rgba: 250./255, 250./255, 250./255, 1
318 Rectangle:
319 pos: 0, 0
320 size: self.width, self.height
30d8796f
IB
321 Color:
322 rgba: self.ready_color
323 Ellipse:
324 pos: self.width - self.key_size / 2, self.height - self.key_size /2
325 size: self.key_size / 3, self.key_size / 3
8612c5f8
IB
326 Key:
327 id: Key_27
328 key_code: 27
329 key_sym: "ESC"
330 row: 1
331 col: 1
332 Key:
333 id: Key_282
334 key_code: 282
335 key_sym: "F1"
336 row: 1
337 col: 3
338 Key:
339 id: Key_283
340 key_code: 283
341 key_sym: "F2"
342 row: 1
343 col: 4
344 Key:
345 id: Key_284
346 key_code: 284
347 key_sym: "F3"
348 row: 1
349 col: 5
350 Key:
351 id: Key_285
352 key_code: 285
353 key_sym: "F4"
354 row: 1
355 col: 6
356
357 Key:
358 id: Key_286
359 key_code: 286
360 key_sym: "F5"
361 row: 1
362 col: 7.5
363 Key:
364 id: Key_287
365 key_code: 287
366 key_sym: "F6"
367 row: 1
368 col: 8.5
369 Key:
370 id: Key_288
371 key_code: 288
372 key_sym: "F7"
373 row: 1
374 col: 9.5
375 Key:
376 id: Key_289
377 key_code: 289
378 key_sym: "F8"
379 row: 1
380 col: 10.5
381
382 Key:
383 id: Key_290
384 key_code: 290
385 key_sym: "F9"
386 row: 1
387 col: 12
388 Key:
389 id: Key_291
390 key_code: 291
391 key_sym: "F10"
392 row: 1
393 col: 13
394 Key:
395 id: Key_292
396 key_code: 292
397 key_sym: "F11"
398 row: 1
399 col: 14
400 Key:
401 id: Key_293
402 key_code: 293
403 key_sym: "F12"
404 row: 1
405 col: 15
406
407 Key:
408 id: Key_178
409 key_code: 178
410 key_sym: "²"
411 row: 2
412 col: 1
413 Key:
414 id: Key_38
415 key_code: 38
416 key_sym: "&"
417 row: 2
418 col: 2
419 Key:
420 id: Key_233
421 key_code: 233
422 key_sym: "é"
423 row: 2
424 col: 3
425 Key:
426 id: Key_34
427 key_code: 34
428 key_sym: '"'
429 row: 2
430 col: 4
431 Key:
432 id: Key_39
433 key_code: 39
434 key_sym: "'"
435 row: 2
436 col: 5
437 Key:
438 id: Key_40
439 key_code: 40
440 key_sym: "("
441 row: 2
442 col: 6
443 Key:
444 id: Key_45
445 key_code: 45
446 key_sym: "-"
447 row: 2
448 col: 7
449 Key:
450 id: Key_232
451 key_code: 232
452 key_sym: "è"
453 row: 2
454 col: 8
455 Key:
456 id: Key_95
457 key_code: 95
458 key_sym: "_"
459 row: 2
460 col: 9
461 Key:
462 id: Key_231
463 key_code: 231
464 key_sym: "ç"
465 row: 2
466 col: 10
467 Key:
468 id: Key_224
469 key_code: 224
470 key_sym: "à"
471 row: 2
472 col: 11
473 Key:
474 id: Key_41
475 key_code: 41
476 key_sym: ")"
477 row: 2
478 col: 12
479 Key:
480 id: Key_61
481 key_code: 61
482 key_sym: "="
483 row: 2
484 col: 13
485 Key:
486 id: Key_8
487 key_code: 8
488 key_sym: "<-"
489 row: 2
490 col: 14
491 key_width: 2
492 Key:
493 id: Key_9
494 key_code: 9
495 key_sym: "tab"
496 row: 3
497 col: 1
498 key_width: 1.48
499 Key:
500 id: Key_97
501 key_code: 97
502 key_sym: "a"
503 row: 3
504 col: 2.5
505 Key:
506 id: Key_122
507 key_code: 122
508 key_sym: "z"
509 row: 3
510 col: 3.5
511 Key:
512 id: Key_101
513 key_code: 101
514 key_sym: "e"
515 row: 3
516 col: 4.5
517 Key:
518 id: Key_114
519 key_code: 114
520 key_sym: "r"
521 row: 3
522 col: 5.5
523 Key:
524 id: Key_116
525 key_code: 116
526 key_sym: "t"
527 row: 3
528 col: 6.5
529 Key:
530 id: Key_121
531 key_code: 121
532 key_sym: "y"
533 row: 3
534 col: 7.5
535 Key:
536 id: Key_117
537 key_code: 117
538 key_sym: "u"
539 row: 3
540 col: 8.5
541 Key:
542 id: Key_105
543 key_code: 105
544 key_sym: "i"
545 row: 3
546 col: 9.5
547 Key:
548 id: Key_111
549 key_code: 111
550 key_sym: "o"
551 row: 3
552 col: 10.5
553 Key:
554 id: Key_112
555 key_code: 112
556 key_sym: "p"
557 row: 3
558 col: 11.5
559 Key:
560 id: Key_94
561 key_code: 94
562 key_sym: "^"
563 row: 3
564 col: 12.5
565 Key:
566 id: Key_36
567 key_code: 36
568 key_sym: "$"
569 row: 3
570 col: 13.5
571 Key:
572 id: Key_13
573 key_code: 13
574 key_sym: "Enter"
575 row: 4
576 col: 14.8
577 key_width: 1.23
578 key_height: 2
579 Key:
580 id: Key_301
581 key_code: 301
582 key_sym: "CAPS"
583 row: 4
584 col: 1
585 key_width: 1.75
586 line_width: 1
587 enabled: False
588
589 Key:
590 id: Key_113
591 key_code: 113
592 key_sym: "q"
593 row: 4
594 col: 2.8
595 Key:
596 id: Key_115
597 key_code: 115
598 key_sym: "s"
599 row: 4
600 col: 3.8
601 Key:
602 id: Key_100
603 key_code: 100
604 key_sym: "d"
605 row: 4
606 col: 4.8
607 Key:
608 id: Key_102
609 key_code: 102
610 key_sym: "f"
611 row: 4
612 col: 5.8
613 Key:
614 id: Key_103
615 key_code: 103
616 key_sym: "g"
617 row: 4
618 col: 6.8
619 Key:
620 id: Key_104
621 key_code: 104
622 key_sym: "h"
623 row: 4
624 col: 7.8
625 Key:
626 id: Key_106
627 key_code: 106
628 key_sym: "j"
629 row: 4
630 col: 8.8
631 Key:
632 id: Key_107
633 key_code: 107
634 key_sym: "k"
635 row: 4
636 col: 9.8
637 Key:
638 id: Key_108
639 key_code: 108
640 key_sym: "l"
641 row: 4
642 col: 10.8
643 Key:
644 id: Key_109
645 key_code: 109
646 key_sym: "m"
647 row: 4
648 col: 11.8
649 Key:
650 id: Key_249
651 key_code: 249
652 key_sym: "ù"
653 row: 4
654 col: 12.8
655 Key:
656 id: Key_42
657 key_code: 42
658 key_sym: "*"
659 row: 4
660 col: 13.8
661 Key:
662 id: Key_304
663 key_code: 304
664 key_sym: "LShift"
665 row: 5
666 col: 1
667 key_width: 1.3
668 line_width: 1
669 enabled: False
670 Key:
671 id: Key_60
672 key_code: 60
673 key_sym: "<"
674 row: 5
675 col: 2.3
676 Key:
677 id: Key_119
678 key_code: 119
679 key_sym: "w"
680 row: 5
681 col: 3.3
682 Key:
683 id: Key_120
684 key_code: 120
685 key_sym: "x"
686 row: 5
687 col: 4.3
688 Key:
689 id: Key_99
690 key_code: 99
691 key_sym: "c"
692 row: 5
693 col: 5.3
694 Key:
695 id: Key_118
696 key_code: 118
697 key_sym: "v"
698 row: 5
699 col: 6.3
700 Key:
701 id: Key_98
702 key_code: 98
703 key_sym: "b"
704 row: 5
705 col: 7.3
706 Key:
707 id: Key_110
708 key_code: 110
709 key_sym: "n"
710 row: 5
711 col: 8.3
712 Key:
713 id: Key_44
714 key_code: 44
715 key_sym: ","
716 row: 5
717 col: 9.3
718 Key:
719 id: Key_59
720 key_code: 59
721 key_sym: ";"
722 row: 5
723 col: 10.3
724 Key:
725 id: Key_58
726 key_code: 58
727 key_sym: ":"
728 row: 5
729 col: 11.3
730 Key:
731 id: Key_33
732 key_code: 33
733 key_sym: "!"
734 row: 5
735 col: 12.3
736 Key:
737 id: Key_303
738 key_code: 303
739 key_sym: "RShift"
740 row: 5
741 col: 13.3
742 key_width: 2.7
743 line_width: 1
744 enabled: False
745 Key:
746 id: Key_306
747 key_code: 306
748 key_sym: "LCtrl"
749 row: 6
750 col: 1
751 key_width: 1.3
752 line_width: 1
753 enabled: False
754 Key:
755 id: Key_311
756 key_code: 311
757 key_sym: "LSuper"
758 row: 6
759 col: 3.3
760 line_width: 1
761 enabled: False
762 Key:
763 id: Key_308
764 key_code: 308
765 key_sym: "LAlt"
766 row: 6
767 col: 4.3
768 line_width: 1
769 enabled: False
770 Key:
771 id: Key_32
772 key_code: 32
773 key_sym: "Espace"
774 row: 6
775 col: 5.3
776 key_width: 5
777 Key:
778 id: Key_313
779 key_code: 313
780 key_sym: "AltGr"
781 row: 6
782 col: 10.3
783 line_width: 1
784 enabled: False
785 Key:
786 id: Key_314
787 key_code: 314
788 key_sym: "Compose"
789 row: 6
790 col: 11.3
791 line_width: 1
792 enabled: False
793 Key:
794 id: Key_305
795 key_code: 305
796 key_sym: "RCtrl"
797 row: 6
798 col: 12.3
799 key_width: 1.3
800 line_width: 1
801 enabled: False
802
803
804 Key:
805 id: Key_277
806 key_code: 277
807 key_sym: "ins"
808 row: 2
809 col: 1
810 pad_cols: True
811 Key:
812 id: Key_278
813 key_code: 278
814 key_sym: "home"
815 row: 2
816 col: 2
817 pad_cols: True
818 Key:
819 id: Key_280
820 key_code: 280
821 key_sym: "pg_u"
822 row: 2
823 col: 3
824 pad_cols: True
825 Key:
826 id: Key_127
827 key_code: 127
828 key_sym: "del"
829 row: 3
830 col: 1
831 pad_cols: True
832 Key:
833 id: Key_279
834 key_code: 279
835 key_sym: "end"
836 row: 3
837 col: 2
838 pad_cols: True
839 Key:
840 id: Key_281
841 key_code: 281
842 key_sym: "pg_d"
843 row: 3
844 col: 3
845 pad_cols: True
846 Key:
847 id: Key_273
848 key_code: 273
849 key_sym: "up"
850 row: 5
851 col: 2
852 pad_cols: True
853 Key:
854 id: Key_274
855 key_code: 274
856 key_sym: "down"
857 row: 6
858 col: 2
859 pad_cols: True
860 Key:
861 id: Key_276
862 key_code: 276
863 key_sym: "left"
864 row: 6
865 col: 1
866 pad_cols: True
867 Key:
868 id: Key_275
869 key_code: 275
870 key_sym: "right"
871 row: 6
872 col: 3
873 pad_cols: True