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