From 226222b11d676384803180a25b004056f2b3eb78 Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 10:39:41 +0200 Subject: [PATCH 01/16] Create pl.layout (Polski Programisty / Polish Programmer) Initial version --- app/src/main/assets/keymaps/pl.layout | 48 +++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 app/src/main/assets/keymaps/pl.layout diff --git a/app/src/main/assets/keymaps/pl.layout b/app/src/main/assets/keymaps/pl.layout new file mode 100644 index 00000000..a341da0d --- /dev/null +++ b/app/src/main/assets/keymaps/pl.layout @@ -0,0 +1,48 @@ +ą 10 00 +ć 1B 00 +ę 1F 00 +ł 21 00 +ń 1D 00 +ó 18 00 +ś 1C 00 +ź 1E 00 +ż 20 00 +Ą 10 02 +Ć 1B 02 +Ę 1F 02 +Ł 21 02 +Ń 1D 02 +Ó 18 02 +Ś 1C 02 +Ź 1E 02 +Ż 20 02 +` 35 00 +- 2D 00 += 2E 00 +[ 2F 00 +] 30 00 +; 33 00 +' 34 00 +, 36 00 +. 37 00 +/ 38 00 +~ 35 02 +_ 2D 02 ++ 2E 02 +{ 2F 02 +} 30 02 +: 33 02 +" 34 02 +< 36 02 +> 37 02 +? 38 02 +@ 1F 02 +# 32 02 +$ 21 02 +% 22 02 +^ 23 02 +& 24 02 +* 25 02 +( 26 02 +) 27 02 +| 31 02 From ace0e84d515a3d7af6d65f4652a0d158d792c0ac Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 10:40:50 +0200 Subject: [PATCH 02/16] Create pl_214 (Polski 214 - Polish 214) Initial version --- app/src/main/assets/keymaps/pl_214 | 53 ++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 app/src/main/assets/keymaps/pl_214 diff --git a/app/src/main/assets/keymaps/pl_214 b/app/src/main/assets/keymaps/pl_214 new file mode 100644 index 00000000..dca3833c --- /dev/null +++ b/app/src/main/assets/keymaps/pl_214 @@ -0,0 +1,53 @@ +ą 1E 00 +ć 1F 00 +ę 20 00 +ł 21 00 +ń 22 00 +ó 23 00 +ś 24 00 +ź 25 00 +ż 26 00 + +Ą 1E 02 +Ć 1F 02 +Ę 20 02 +Ł 21 02 +Ń 22 02 +Ó 23 02 +Ś 24 02 +Ź 25 02 +Ż 26 02 + +- 2D 00 += 2E 00 +[ 2F 00 +] 30 00 +\ 31 00 +; 33 00 +' 34 00 +` 35 00 +, 36 00 +. 37 00 +/ 38 00 + +! 1E 02 +@ 1F 02 +# 20 02 +$ 21 02 +% 22 02 +^ 23 02 +& 24 02 +* 25 02 +( 26 02 +) 27 02 +_ 2D 02 ++ 2E 02 +{ 2F 02 +} 30 02 +| 31 02 +: 33 02 +" 34 02 +~ 35 02 +< 36 02 +> 37 02 +? 38 02 From 86b3950e25fe15f0127032788135fdaf64cb8a20 Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 10:42:31 +0200 Subject: [PATCH 03/16] Rename pl_214 to pl_214.layout added extension to name --- app/src/main/assets/keymaps/{pl_214 => pl_214.layout} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename app/src/main/assets/keymaps/{pl_214 => pl_214.layout} (100%) diff --git a/app/src/main/assets/keymaps/pl_214 b/app/src/main/assets/keymaps/pl_214.layout similarity index 100% rename from app/src/main/assets/keymaps/pl_214 rename to app/src/main/assets/keymaps/pl_214.layout From 9224efd8dcf221de96fde24f57d66753d47b023a Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 10:45:12 +0200 Subject: [PATCH 04/16] Update pl.layout added comment in the file + divisions in text --- app/src/main/assets/keymaps/pl.layout | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/assets/keymaps/pl.layout b/app/src/main/assets/keymaps/pl.layout index a341da0d..b4dac96e 100644 --- a/app/src/main/assets/keymaps/pl.layout +++ b/app/src/main/assets/keymaps/pl.layout @@ -1,3 +1,5 @@ +## Keymap overlay for a Polish Programmer keyboard + ą 10 00 ć 1B 00 ę 1F 00 @@ -7,6 +9,7 @@ ś 1C 00 ź 1E 00 ż 20 00 + Ą 10 02 Ć 1B 02 Ę 1F 02 @@ -16,6 +19,7 @@ Ś 1C 02 Ź 1E 02 Ż 20 02 + ` 35 00 - 2D 00 = 2E 00 @@ -26,6 +30,7 @@ , 36 00 . 37 00 / 38 00 + ~ 35 02 _ 2D 02 + 2E 02 From c44a5b4d72ee48fbd21ea91f161290a4f034bced Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 10:45:50 +0200 Subject: [PATCH 05/16] Update pl_214.layout added commentline --- app/src/main/assets/keymaps/pl_214.layout | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/assets/keymaps/pl_214.layout b/app/src/main/assets/keymaps/pl_214.layout index dca3833c..3ff6631b 100644 --- a/app/src/main/assets/keymaps/pl_214.layout +++ b/app/src/main/assets/keymaps/pl_214.layout @@ -1,3 +1,5 @@ +## Keymap overlay for a Polish 214 keyboard + ą 1E 00 ć 1F 00 ę 20 00 From c7bcc9cc6f6a5306110a251d0228bfb93aec7c2d Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 11:20:56 +0200 Subject: [PATCH 06/16] Update KeyTranslator.kt - Added F13-F24 keys Added unused function keys for special usage F1-F12 are binded in many Windows apps - also in Explorer Now You can write an external app that can recognize this keys as a triggers (StartKey -> Barcode -> StopKey), without any unexpected interactions with the system. --- .../dev/fabik/bluetoothhid/bt/KeyTranslator.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/src/main/java/dev/fabik/bluetoothhid/bt/KeyTranslator.kt b/app/src/main/java/dev/fabik/bluetoothhid/bt/KeyTranslator.kt index 12a7a2af..28a065d9 100644 --- a/app/src/main/java/dev/fabik/bluetoothhid/bt/KeyTranslator.kt +++ b/app/src/main/java/dev/fabik/bluetoothhid/bt/KeyTranslator.kt @@ -73,6 +73,24 @@ class KeyTranslator(context: Context) { staticTemplates["DOWN"] = Key(0, 0x51) staticTemplates["UP"] = Key(0, 0x52) +// winlin97: added unused function keys for special usage +// F1-F12 are binded in many Windows apps - also in Explorer +// Now You can write an external app that can recognize this keys +// as a triggers (StartKey -> Barcode -> StopKey), +// without any unexpected interactions with the system. + staticTemplates["F13"] = Key(0, 0x68) + staticTemplates["F14"] = Key(0, 0x69) + staticTemplates["F15"] = Key(0, 0x6a) + staticTemplates["F16"] = Key(0, 0x6b) + staticTemplates["F17"] = Key(0, 0x6c) + staticTemplates["F18"] = Key(0, 0x6d) + staticTemplates["F19"] = Key(0, 0x6e) + staticTemplates["F20"] = Key(0, 0x6f) + staticTemplates["F21"] = Key(0, 0x70) + staticTemplates["F22"] = Key(0, 0x71) + staticTemplates["F23"] = Key(0, 0x72) + staticTemplates["F24"] = Key(0, 0x73) + val dateFormat = DateFormat.getDateInstance(DateFormat.SHORT) val timeFormat = DateFormat.getTimeInstance() From e41a3637329420db130d728f5a51b0c749530db8 Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 11:23:48 +0200 Subject: [PATCH 07/16] Delete app/src/main/assets/keymaps/pl_214.layout unused in most of Poland --- app/src/main/assets/keymaps/pl_214.layout | 55 ----------------------- 1 file changed, 55 deletions(-) delete mode 100644 app/src/main/assets/keymaps/pl_214.layout diff --git a/app/src/main/assets/keymaps/pl_214.layout b/app/src/main/assets/keymaps/pl_214.layout deleted file mode 100644 index 3ff6631b..00000000 --- a/app/src/main/assets/keymaps/pl_214.layout +++ /dev/null @@ -1,55 +0,0 @@ -## Keymap overlay for a Polish 214 keyboard - -ą 1E 00 -ć 1F 00 -ę 20 00 -ł 21 00 -ń 22 00 -ó 23 00 -ś 24 00 -ź 25 00 -ż 26 00 - -Ą 1E 02 -Ć 1F 02 -Ę 20 02 -Ł 21 02 -Ń 22 02 -Ó 23 02 -Ś 24 02 -Ź 25 02 -Ż 26 02 - -- 2D 00 -= 2E 00 -[ 2F 00 -] 30 00 -\ 31 00 -; 33 00 -' 34 00 -` 35 00 -, 36 00 -. 37 00 -/ 38 00 - -! 1E 02 -@ 1F 02 -# 20 02 -$ 21 02 -% 22 02 -^ 23 02 -& 24 02 -* 25 02 -( 26 02 -) 27 02 -_ 2D 02 -+ 2E 02 -{ 2F 02 -} 30 02 -| 31 02 -: 33 02 -" 34 02 -~ 35 02 -< 36 02 -> 37 02 -? 38 02 From 249ad1cc075fdcad5d17c9fca9fd70659a2307fb Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 11:36:53 +0200 Subject: [PATCH 08/16] Update pl.layout checking " " to not avoid problems with charmap reading From 3be6bb874c56f5abd14ab15599d2486f320c930f Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 11:44:21 +0200 Subject: [PATCH 09/16] Update strings.xml added Polish Programmer option --- app/src/main/res/values/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 30e1ed41..73e0712d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -243,6 +243,7 @@ Spanish (ES) Italian (IT) Turkish Q (TR) + Polish Programmer (PL) Box @@ -260,4 +261,4 @@ Export %1$d item Export %1$d items - \ No newline at end of file + From bfd4f6b686785501654791ceba22a2741efc2a6c Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 11:45:52 +0200 Subject: [PATCH 10/16] Update strings.xml Added Polish Programmer --- app/src/main/res/values-de-rDE/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 7fdef20a..093b688f 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -157,6 +157,7 @@ Spanisch (ES) Italienisch (IT) Türkisch Q (TR) + Polnische Programmierer (PL) Box @@ -257,4 +258,4 @@ Ersetzt Templates aus dem Code-Wert (Benötigt benutzerdefiniertes Template) Fehler bei der Verbindung mit dem Gerät! Starte service neu… Entwicklermodus - \ No newline at end of file + From 8a9f895ece3599c7541879252d592af4213a4004 Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 11:46:45 +0200 Subject: [PATCH 11/16] Update strings.xml Added Polish Programmer --- app/src/main/res/values-pl/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 48868be3..29acd231 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -244,6 +244,7 @@ Hiszpański (ES) Włoski (IT) Turecki Q (TR) + Polski Programisty (PL) Ramka From 8808d3a836a9e86cbcf02eff05a15a0b70f16933 Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 11:54:33 +0200 Subject: [PATCH 12/16] Update BluetoothController.kt Added option to select polish language keymap --- .../main/java/dev/fabik/bluetoothhid/bt/BluetoothController.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/dev/fabik/bluetoothhid/bt/BluetoothController.kt b/app/src/main/java/dev/fabik/bluetoothhid/bt/BluetoothController.kt index 94fdc09c..816aded3 100644 --- a/app/src/main/java/dev/fabik/bluetoothhid/bt/BluetoothController.kt +++ b/app/src/main/java/dev/fabik/bluetoothhid/bt/BluetoothController.kt @@ -295,6 +295,7 @@ class BluetoothController(var context: Context) { 4 -> "es" 5 -> "it" 6 -> "tr" + 7 -> "pl" else -> "us" }, template, From f5333168ec344fadef647917dc43aadd81ab75b7 Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 18:08:52 +0200 Subject: [PATCH 13/16] Update strings.xml added possible keys F1-F24 in custom string --- app/src/main/res/values-de-rDE/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 093b688f..fa2ac6e8 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -192,7 +192,7 @@ Eigenes Template Erlaubt ein eigenes Template festzulegen - Stellen Sie sicher, dass \'Extra Tasten\' auf \'Benutzerdefiniert\' eingestellt ist. Spezielle Platzhalter: {CODE}, {CODE_B64}, {CODE_HEX}, {F1–12}, {ENTER}, {ESC}, {TAB}, {BKSP}, {DATE}, {TIME}, {LEFT}, {RIGHT}, {UP}, {DOWN} (code ist erforderlich)\n + Stellen Sie sicher, dass \'Extra Tasten\' auf \'Benutzerdefiniert\' eingestellt ist. Spezielle Platzhalter: {CODE}, {CODE_B64}, {CODE_HEX}, {F1–24}, {ENTER}, {ESC}, {TAB}, {BKSP}, {DATE}, {TIME}, {LEFT}, {RIGHT}, {UP}, {DOWN} (code ist erforderlich)\n Kombinationen können mit den folgenen Zeichen verwendet werden:\n \t^: Shift\n \t+: Ctrl\n From 7738edf19d988d87017a0c036e9d67263cee26cd Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 18:10:42 +0200 Subject: [PATCH 14/16] Update strings.xml added F1-F24 option --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 73e0712d..0a46e13e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -137,7 +137,7 @@ Custom template Allows you to set a custom template - Make sure to set \'Extra keys\' to \'Custom\'. Special placeholders: {CODE}, {CODE_B64}, {CODE_HEX}, {F1–12}, {ENTER}, {ESC}, {TAB}, {BKSP}, {DATE}, {TIME}, {LEFT}, {RIGHT}, {UP}, {DOWN} (code is required)\n + Make sure to set \'Extra keys\' to \'Custom\'. Special placeholders: {CODE}, {CODE_B64}, {CODE_HEX}, {F1–24}, {ENTER}, {ESC}, {TAB}, {BKSP}, {DATE}, {TIME}, {LEFT}, {RIGHT}, {UP}, {DOWN} (code is required)\n Modifiers can be set by prepending the following chars:\n \t^: Shift\n \t+: Ctrl\n From 02697c9e65a74f337e14b20920717210413e6987 Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 18:48:14 +0200 Subject: [PATCH 15/16] Update strings.xml Updated some minor bugs (text enters to the interface elements like icons) Added F1-F24 in custom tempelate --- app/src/main/res/values-pl/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 29acd231..c0a12df6 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -23,13 +23,13 @@ Określ kształt ramki Cały kod w ramce Kody kreskowe muszą być w pełni widoczne w obszarze ramki - Częstotliwość skanowania + Częstość skanowania Interwał, w którym analizowany jest obraz. Wyższa częstotliwość = wyższe wykorzystanie procesora. - Rozdzielczość skanowania + Rozdzielczość skanera Rozdzielczość analizowanego obrazu. Wyższa rozdzielczość = dłuższy czas analizy. Auto-wysyłanie Automatycznie wysyłaj wszystkie wykryte kody - Extra klawisze + Ekstra klawisze Określa, który klawisz ma być dołączany na końcu każdego wysyłanego tekstu Dźwięk skanowania Odtwórz dźwięk podczas skanowania kodu @@ -138,7 +138,7 @@ Własny szablon Umożliwia ustawienie niestandardowego szablonu - Upewnij się, że ustawiłeś \'Ekstra klawisze\' na \'Własny szablon\'. Specjalne znaczniki: {CODE}, {CODE_B64}, {CODE_HEX}, {F1–12}, {ENTER}, {ESC}, {TAB}, {BKSP}, {DATE}, {TIME}, {LEFT}, {RIGHT}, {UP}, {DOWN} (znacznik CODE jest wymagany)\n + Upewnij się, że ustawiłeś \'Ekstra klawisze\' na \'Własny szablon\'. Specjalne znaczniki: {CODE}, {CODE_B64}, {CODE_HEX}, {F1–24}, {ENTER}, {ESC}, {TAB}, {BKSP}, {DATE}, {TIME}, {LEFT}, {RIGHT}, {UP}, {DOWN} (znacznik CODE jest wymagany)\n Modyfikatory mogą być ustawione poprzez dodanie następujących znaków:\n \t^: Shift\n \t+: Ctrl\n @@ -203,10 +203,10 @@ Prostokątna (Kody kreskowe) - Najszybsze - Szybkie (100ms) - Normalne (500ms) - Wolne (1s) + Najszybciej + Szybko (100ms) + Normalnie (500ms) + Wolno (1s) SD (480P) From 1d79f1ab150279cc42df4bf0a9dce3a07f99fd44 Mon Sep 17 00:00:00 2001 From: Marcin Golesz Date: Sat, 12 Oct 2024 21:07:18 +0200 Subject: [PATCH 16/16] Update pl.layout Major changes made in the layout, because in the first time I don't understand properly the whole idea and the program wasn't working good, so because of it: Added a little instruction how to do your own keymaps --- app/src/main/assets/keymaps/pl.layout | 115 +++++++++++++++++--------- 1 file changed, 77 insertions(+), 38 deletions(-) diff --git a/app/src/main/assets/keymaps/pl.layout b/app/src/main/assets/keymaps/pl.layout index b4dac96e..62495302 100644 --- a/app/src/main/assets/keymaps/pl.layout +++ b/app/src/main/assets/keymaps/pl.layout @@ -1,48 +1,85 @@ ## Keymap overlay for a Polish Programmer keyboard -ą 10 00 -ć 1B 00 -ę 1F 00 -ł 21 00 -ń 1D 00 -ó 18 00 -ś 1C 00 -ź 1E 00 -ż 20 00 +## ------------------------- +## SOME USEFUL INFORMATIONS +## ------------------------- +## ... for everyone who, just like me (winlin97), had no idea how it works, and want to make a custom keyboard layout. +## ------------------------- +## The PC (thanks to the HID interface) see this application just like the physical keyboard. +## Application does not know the actual layout of the keyboard in the system. +## We must to call the language-appropriate characters just as if we were typing them on a physical keyboard with this layout. +## ------------------------- +## This file contains a table of key mapping. +## Column order in the table: CHAR <-SPACE-> HID_KEY_SCANCODE <-SPACE-> MODIFIERS +## ------------------------- +## <-SPACE-> is only a representation for spacebar (" " char), which is used by the program to separate individual values from every line in the table. +## ------------------------- +## CHAR is just the letter, number or character, which we have to send to the computer. +## ------------------------- +## HID_KEY_SCANCODE is a byte value, which corresponds to every key on the keyboard. +## Firstly you can look at "base.layout" file to see what scancode is e.g. for "numbers and letters" +## Important: "base.layout" is used with every custom layout. We don't have to add the chars to our table that this file already contains. +## More scancodes -> https://source.android.com/docs/core/interaction/input/keyboard-devices#hid-keyboard-and-keypad-page-0x07 +## ------------------------- +## MODIFIERS such as LCTRL, LSHIFT, LALT, etc. can be combined using the “or” (|) bit operation. +## The modifier value is stored using 1 byte [8 bits] - that allows to combine modifiers, setting the corresponding bits to 1. +## Each modifier corresponds to one bit in the byte, so no bits overlap. +## 00: none [bit: 0000 0000] // DEFAULT VALUE - all modifiers is off +## 01: LCTRL [bit: 0000 0001] +## 02: LSHIFT [bit: 0000 0010] +## 04: LALT [bit: 0000 0100] +## 08: LMETA [bit: 0000 1000] +## 10: RCTRL [bit: 0001 0000] +## 20: RSHIFT [bit: 0010 0000] +## 40: RALT [bit: 0100 0000] // "ALTGR" in polish programmers layout -> https://kbdlayout.info/KBDPL1/ +## 80: RMETA [bit: 1000 0000] +## So, to get RALT and LSHIFT in the same time we have: 0x40 | 0x02 -> [bit: 0100 0010] -> 0x42 +## ------------------------- +## More info -> https://source.android.com/docs/core/interaction/input/keyboard-devices +## ------------------------- -Ą 10 02 -Ć 1B 02 -Ę 1F 02 -Ł 21 02 -Ń 1D 02 -Ó 18 02 -Ś 1C 02 -Ź 1E 02 -Ż 20 02 +## START OF THE RIGHT TABLE: +ą 04 40 +ć 06 40 +ę 08 40 +ł 0F 40 +ń 11 40 +ó 12 40 +ś 16 40 +ź 1B 40 +ż 1D 40 -` 35 00 -- 2D 00 -= 2E 00 -[ 2F 00 -] 30 00 -; 33 00 -' 34 00 -, 36 00 -. 37 00 -/ 38 00 +Ą 04 42 +Ć 06 42 +Ę 08 42 +Ł 0F 42 +Ń 11 42 +Ó 12 42 +Ś 16 42 +Ź 1B 42 +Ż 1D 42 -~ 35 02 -_ 2D 02 -+ 2E 02 -{ 2F 02 -} 30 02 -: 33 02 -" 34 02 +| 31 02 +? 38 02 < 36 02 > 37 02 -? 38 02 +: 33 02 +" 34 02 +{ 2F 02 +} 30 02 + +\ 31 00 +/ 38 00 +, 36 00 +. 37 00 +; 33 00 +' 34 00 +[ 2F 00 +] 30 00 + +! 1E 02 @ 1F 02 -# 32 02 +# 20 02 $ 21 02 % 22 02 ^ 23 02 @@ -50,4 +87,6 @@ $ 21 02 * 25 02 ( 26 02 ) 27 02 -| 31 02 +_ 2D 02 ++ 2E 02 +~ 35 02