Coverage for pyilper/pilcharconv.py: 81%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1#!/usr/bin/python3
2# -*- coding: utf-8 -*-
3# pilcharconv for Linux
4#
5# (c) 2015 Joachim Siebold
6#
7# This program is free software; you can redistribute it and/or
8# modify it under the terms of the GNU General Public License
9# as published by the Free Software Foundation; either version 2
10# of the License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20#
21# character conversion ---------------------------------------
22#
23# Changelog
24#
25# 19.02.2016 jsi:
26# - added stringconv function
27# 16.09.2017 jsi:
28# - HP Roman 8 character conversion code table implemented. Use control pictures for
29# C0 control codes.
30# - renamed stringconv to barrrconv. Added stringconv.
31# 27.12.2018 jsi
32# - added HP2225 charset
33# 16.01.2019 jsi
34# - refactoring: use list of lists for code tables to speed up access
35# - added HP-75 charset
36# - added icharconv function
37# 25.01.2019 jsi
38# - various bug fixes in the HP-75 and HP-71 character table
39# 11.02.2019 jsi
40# - fix in HP-75 character set
41#
43#
44# Note: if the order of character sets is changed mind to alter the
45# CHAR_ATTRIB look up table in pilqterm. All character sets
46# which are not user configurable must be ranked at last
47#
48CHARSET_HP71=0
49CHARSET_HP41=1
50CHARSET_HP75=2
51CHARSET_ROMAN8=3
52CHARSET_HP2225=4
53#
54# do not use the HP2555 character set in menus it is only used internally
55#
56charsets= [ "HP-71", "HP-41", "HP-75", "ROMAN-8" ]
58convert_to_unicode= [
59# map hp-71 character set to unicode
60[
61 ' ', # 0
62 '°', # 1
63 'x', # 2
64 '\u2190' , # 3
65 '\u03B1' , # 4
66 '\u03B2' , # 5
67 '\u0393' , # 6
68 '\u2618' , # bell!
69 chr(8),
70 '\u03C3' ,
71 chr(10),
72 '\u03BB' ,
73 '\u03Bc' ,
74 chr(13),
75 '\u03C4' ,
76 '\u03A6' ,
77 '\u03B8' ,
78 '\u03A9' ,
79 '\u03B4' ,
80 '\u03B5' ,
81 '\u03C0',
82 'Ä' ,
83 'ä' ,
84 'Ö' ,
85 'ö' ,
86 'Ü' ,
87 'ü',
88 chr(27),
89 '\u03A3' ,
90 '\u2260' ,
91 '£',
92 '\u25AF' ,
93 ' ' ,
94 '!' ,
95 '"' ,
96 '#' ,
97 '$' ,
98 '%' ,
99 '&' ,
100 '\'' ,
101 '(' ,
102 ')' ,
103 '*' ,
104 '+' ,
105 ',' ,
106 '-' ,
107 '.' ,
108 '/' ,
109 '0' ,
110 '1' ,
111 '2' ,
112 '3' ,
113 '4' ,
114 '5' ,
115 '6' ,
116 '7' ,
117 '8' ,
118 '9' ,
119 ':' ,
120 ';' ,
121 '<' ,
122 '=' ,
123 '>' ,
124 '?' ,
125 '@' ,
126 'A' ,
127 'B' ,
128 'C' ,
129 'D' ,
130 'E' ,
131 'F' ,
132 'G' ,
133 'H' ,
134 'I' ,
135 'J' ,
136 'K' ,
137 'L' ,
138 'M' ,
139 'N' ,
140 'O' ,
141 'P' ,
142 'Q' ,
143 'R' ,
144 'S' ,
145 'T' ,
146 'U' ,
147 'V' ,
148 'W' ,
149 'X' ,
150 'Y' ,
151 'Z' ,
152 '[' ,
153 '\\' ,
154 ']' ,
155 '^' ,
156 '_' ,
157 '\'' ,
158 'a' ,
159 'b' ,
160 'c' ,
161 'd' ,
162 'e' ,
163 'f' ,
164 'g' ,
165 'h' ,
166 'i' ,
167 'j' ,
168 'k' ,
169 'l' ,
170 'm' ,
171 'n' ,
172 'o' ,
173 'p' ,
174 'q' ,
175 'r' ,
176 's' ,
177 't' ,
178 'u' ,
179 'v' ,
180 'w' ,
181 'x' ,
182 'y' ,
183 'z' ,
184 '{' ,
185 '|' ,
186 '}' ,
187 '~' ,
188 '\u251C' ,
189 ' ', # 128
190 '°', # 129
191 'x', # 130
192 '\u2190' , # 131
193 '\u03B1' , # 132
194 '\u03B2' , # 133
195 '\u0393' , # 134
196 '\u2618' , # 135
197 '\u2408' , # 136 carriage return digraph
198 '\u03C3' , # 137
199 '\u240A' , # 138 line feed digraph
200 '\u03BB' , # 139
201 '\u03Bc' , # 140
202 '\u21B5' , # 141 downwards arrow
203 '\u03C4' ,
204 '\u03A6' ,
205 '\u03B8' ,
206 '\u03A9' ,
207 '\u03B4' ,
208 '\u03B5' ,
209 '\u03C0',
210 'Ä' ,
211 'ä' ,
212 'Ö' ,
213 'ö' ,
214 'Ü' ,
215 'ü',
216 '\u25AF' ,
217 '\u03A3' ,
218 '\u2260' ,
219 '£',
220 '\u25AF' ,
221 ' ' ,
222 '!' ,
223 '"' ,
224 '#' ,
225 '$' ,
226 '%' ,
227 '&' ,
228 '\'' ,
229 '(' ,
230 ')' ,
231 '*' ,
232 '+' ,
233 ',' ,
234 '-' ,
235 '.' ,
236 '/' ,
237 '0' ,
238 '1' ,
239 '2' ,
240 '3' ,
241 '4' ,
242 '5' ,
243 '6' ,
244 '7' ,
245 '8' ,
246 '9' ,
247 ':' ,
248 ';' ,
249 '<' ,
250 '=' ,
251 '>' ,
252 '?' ,
253 '@' ,
254 'A' ,
255 'B' ,
256 'C' ,
257 'D' ,
258 'E' ,
259 'F' ,
260 'G' ,
261 'H' ,
262 'I' ,
263 'J' ,
264 'K' ,
265 'L' ,
266 'M' ,
267 'N' ,
268 'O' ,
269 'P' ,
270 'Q' ,
271 'R' ,
272 'S' ,
273 'T' ,
274 'U' ,
275 'V' ,
276 'W' ,
277 'X' ,
278 'Y' ,
279 'Z' ,
280 '[' ,
281 '\\' ,
282 ']' ,
283 '^' ,
284 '_' ,
285 '\'' ,
286 'a' ,
287 'b' ,
288 'c' ,
289 'd' ,
290 'e' ,
291 'f' ,
292 'g' ,
293 'h' ,
294 'i' ,
295 'j' ,
296 'k' ,
297 'l' ,
298 'm' ,
299 'n' ,
300 'o' ,
301 'p' ,
302 'q' ,
303 'r' ,
304 's' ,
305 't' ,
306 'u' ,
307 'v' ,
308 'w' ,
309 'x' ,
310 'y' ,
311 'z' ,
312 '{' ,
313 '|' ,
314 '}' ,
315 '~' ,
316 '\u251C'
317],
318# map HP-41 character code to unicode
319[
320 '\u25C6',
321 '\u03F0',
322 'x',
323 '\u2190' ,
324 '\u03B1' ,
325 '\u03B2' ,
326 '\u03B3' ,
327 '\u2193' ,
328 '\u03B4',
329 '\u03A3' ,
330 chr(10),
331 '\u03BB' ,
332 '\u03Bc' ,
333 chr(13),
334 '\u03C4' ,
335 '\u03A6' ,
336 '\u03B8' ,
337 '\u03A9' ,
338 '\u03B4' ,
339 '\u00C5' ,
340 '\u00E5',
341 'Ä' ,
342 'ä' ,
343 'Ö' ,
344 'ö' ,
345 'Ü' ,
346 'ü',
347 '\u00C6',
348 '\u00E6' ,
349 '\u2260' ,
350 '£',
351 '\u25AF' ,
352 ' ' ,
353 '!' ,
354 '"' ,
355 '#' ,
356 '$' ,
357 '%' ,
358 '&' ,
359 '\'' ,
360 '(' ,
361 ')' ,
362 '*' ,
363 '+' ,
364 ',' ,
365 '-' ,
366 '.' ,
367 '/' ,
368 '0' ,
369 '1' ,
370 '2' ,
371 '3' ,
372 '4' ,
373 '5' ,
374 '6' ,
375 '7' ,
376 '8' ,
377 '9' ,
378 ':' ,
379 ';' ,
380 '<' ,
381 '=' ,
382 '>' ,
383 '?' ,
384 '@' ,
385 'A' ,
386 'B' ,
387 'C' ,
388 'D' ,
389 'E' ,
390 'F' ,
391 'G' ,
392 'H' ,
393 'I' ,
394 'J' ,
395 'K' ,
396 'L' ,
397 'M' ,
398 'N' ,
399 'O' ,
400 'P' ,
401 'Q' ,
402 'R' ,
403 'S' ,
404 'T' ,
405 'U' ,
406 'V' ,
407 'W' ,
408 'X' ,
409 'Y' ,
410 'Z' ,
411 '[' ,
412 '\\' ,
413 ']' ,
414 '\u2191' ,
415 '_' ,
416 '\\' ,
417 'a' ,
418 'b' ,
419 'c' ,
420 'd' ,
421 'e' ,
422 'f' ,
423 'g' ,
424 'h' ,
425 'i' ,
426 'j' ,
427 'k' ,
428 'l' ,
429 'm' ,
430 'n' ,
431 'o' ,
432 'p' ,
433 'q' ,
434 'r' ,
435 's' ,
436 't' ,
437 'u' ,
438 'v' ,
439 'w' ,
440 'x' ,
441 'y' ,
442 'z' ,
443 '\u03C0' ,
444 '\u2280' ,
445 '\u2190' ,
446 '\u03A3' ,
447 '\u251C' ,
448 '\u25C6',
449 '\u03F0',
450 'x',
451 '\u2190' ,
452 '\u03B1' ,
453 '\u03B2' ,
454 '\u03B3' ,
455 '\u2193' ,
456 '\u03B4',
457 '\u03A3' ,
458 chr(10),
459 '\u03BB' ,
460 '\u03Bc' ,
461 chr(13),
462 '\u03C4' ,
463 '\u03A6' ,
464 '\u03B8' ,
465 '\u03A9' ,
466 '\u03B4' ,
467 '\u00C5' ,
468 '\u00E5',
469 'Ä' ,
470 'ä' ,
471 'Ö' ,
472 'ö' ,
473 'Ü' ,
474 'ü',
475 '\u00C6',
476 '\u00E6' ,
477 '\u2260' ,
478 '£',
479 '\u25AF' ,
480 ' ' ,
481 '!' ,
482 '"' ,
483 '#' ,
484 '$' ,
485 '%' ,
486 '&' ,
487 '\'' ,
488 '(' ,
489 ')' ,
490 '*' ,
491 '+' ,
492 ',' ,
493 '-' ,
494 '.' ,
495 '/' ,
496 '0' ,
497 '1' ,
498 '2' ,
499 '3' ,
500 '4' ,
501 '5' ,
502 '6' ,
503 '7' ,
504 '8' ,
505 '9' ,
506 ':' ,
507 ';' ,
508 '<' ,
509 '=' ,
510 '>' ,
511 '?' ,
512 '@' ,
513 'A' ,
514 'B' ,
515 'C' ,
516 'D' ,
517 'E' ,
518 'F' ,
519 'G' ,
520 'H' ,
521 'I' ,
522 'J' ,
523 'K' ,
524 'L' ,
525 'M' ,
526 'N' ,
527 'O' ,
528 'P' ,
529 'Q' ,
530 'R' ,
531 'S' ,
532 'T' ,
533 'U' ,
534 'V' ,
535 'W' ,
536 'X' ,
537 'Y' ,
538 'Z' ,
539 '[' ,
540 '\\' ,
541 ']' ,
542 '^' ,
543 '_' ,
544 '\'' ,
545 'a' ,
546 'b' ,
547 'c' ,
548 'd' ,
549 'e' ,
550 'f' ,
551 'g' ,
552 'h' ,
553 'i' ,
554 'j' ,
555 'k' ,
556 'l' ,
557 'm' ,
558 'n' ,
559 'o' ,
560 'p' ,
561 'q' ,
562 'r' ,
563 's' ,
564 't' ,
565 'u' ,
566 'v' ,
567 'w' ,
568 'x' ,
569 'y' ,
570 'z' ,
571 '{' ,
572 '|' ,
573 '}' ,
574 '~' ,
575 '\u251C'
576],
577# map HP-75 character set to unicode
578 [
579 '\u0394', # 0
580 '°', # 1
581 'x', # 2
582 '\u2190' , # 3
583 '\u03B1' , # 4
584 '\u03B2' , # 5
585 '\u0393' , # 6 capital gamma
586 '\u2618' , # bell!
587 chr(8),
588 '\u03C3' , # 9
589 chr(10),
590 '\u03BB' ,
591 '\u03Bc' ,
592 chr(13),
593 '\u03C4' ,
594 '\u03A6' ,
595 '\u03B8' ,
596 '\u03A9' ,
597 '\u03B4' ,
598 '\u03B5' ,
599 '\u03C0',
600 'Ä' ,
601 'ä' ,
602 'Ö' ,
603 'ö' ,
604 'Ü' ,
605 'ü',
606 chr(27),
607 '\u03A3' ,
608 '\u2260' ,
609 '£',
610 '\u25AF' ,
611 ' ' ,
612 '!' ,
613 '"' ,
614 '#' ,
615 '$' ,
616 '%' ,
617 '&' ,
618 '\'' ,
619 '(' ,
620 ')' ,
621 '*' ,
622 '+' ,
623 ',' ,
624 '-' ,
625 '.' ,
626 '/' ,
627 '0' ,
628 '1' ,
629 '2' ,
630 '3' ,
631 '4' ,
632 '5' ,
633 '6' ,
634 '7' ,
635 '8' ,
636 '9' ,
637 ':' ,
638 ';' ,
639 '<' ,
640 '=' ,
641 '>' ,
642 '?' ,
643 '@' ,
644 'A' ,
645 'B' ,
646 'C' ,
647 'D' ,
648 'E' ,
649 'F' ,
650 'G' ,
651 'H' ,
652 'I' ,
653 'J' ,
654 'K' ,
655 'L' ,
656 'M' ,
657 'N' ,
658 'O' ,
659 'P' ,
660 'Q' ,
661 'R' ,
662 'S' ,
663 'T' ,
664 'U' ,
665 'V' ,
666 'W' ,
667 'X' ,
668 'Y' ,
669 'Z' ,
670 '[' ,
671 '\\' ,
672 ']' ,
673 '^' ,
674 '_' ,
675 '\'' ,
676 'a' ,
677 'b' ,
678 'c' ,
679 'd' ,
680 'e' ,
681 'f' ,
682 'g' ,
683 'h' ,
684 'i' ,
685 'j' ,
686 'k' ,
687 'l' ,
688 'm' ,
689 'n' ,
690 'o' ,
691 'p' ,
692 'q' ,
693 'r' ,
694 's' ,
695 't' ,
696 'u' ,
697 'v' ,
698 'w' ,
699 'x' ,
700 'y' ,
701 'z' ,
702 '{' ,
703 '|' ,
704 '}' ,
705 '~' ,
706 '\u251C' , # 127, append
707 '\u0394', # 128
708 '°', # 129
709 'x', # 130
710 '\u2190' , # 131
711 '\u03B1' , # 132
712 '\u03B2' , # 133
713 '\u0393' , # 134, capital gamma
714 '\u2618' , # 135
715 '~' , # 136
716 '\u03C3' , # 137
717 '\u251C' , # 138
718 '\u03BB' , # 139
719 '\u03Bc' , # 140
720 '\u25AF' , # 141
721 '\u03C4' , # 142
722 '\u03A6' , # 143
723 '\u03B8' , # 144
724 '\u03C9' , # 145
725 '\u03B4' , # 146
726 '\u03B5' , # 147
727 '\u03C0', # 148
728 'Ä' ,
729 'ä' ,
730 'Ö' ,
731 'ö' ,
732 'Ü' ,
733 'ü',
734 '\u241B' ,
735 '\u03A3' ,
736 '\u2260' ,
737 '£',
738 '\u25AF' ,
739 ' ' ,
740 '!' ,
741 '"' ,
742 '#' ,
743 '$' ,
744 '%' ,
745 '&' ,
746 '\'' ,
747 '(' ,
748 ')' ,
749 '*' ,
750 '+' ,
751 ',' ,
752 '-' ,
753 '.' ,
754 '/' ,
755 '0' ,
756 '1' ,
757 '2' ,
758 '3' ,
759 '4' ,
760 '5' ,
761 '6' ,
762 '7' ,
763 '8' ,
764 '9' ,
765 ':' ,
766 ';' ,
767 '<' ,
768 '=' ,
769 '>' ,
770 '?' ,
771 '@' ,
772 'A' ,
773 'B' ,
774 'C' ,
775 'D' ,
776 'E' ,
777 'F' ,
778 'G' ,
779 'H' ,
780 'I' ,
781 'J' ,
782 'K' ,
783 'L' ,
784 'M' ,
785 'N' ,
786 'O' ,
787 'P' ,
788 'Q' ,
789 'R' ,
790 'S' ,
791 'T' ,
792 'U' ,
793 'V' ,
794 'W' ,
795 'X' ,
796 'Y' ,
797 'Z' ,
798 '[' ,
799 '\\' ,
800 ']' ,
801 '^' ,
802 '_' ,
803 '\'' ,
804 'a' ,
805 'b' ,
806 'c' ,
807 'd' ,
808 'e' ,
809 'f' ,
810 'g' ,
811 'h' ,
812 'i' ,
813 'j' ,
814 'k' ,
815 'l' ,
816 'm' ,
817 'n' ,
818 'o' ,
819 'p' ,
820 'q' ,
821 'r' ,
822 's' ,
823 't' ,
824 'u' ,
825 'v' ,
826 'w' ,
827 'x' ,
828 'y' ,
829 'z' ,
830 '{' ,
831 '|' ,
832 '}' ,
833 '~' ,
834 '\u251C' # 255
835],
836# map ROMAN-8 to unicode
837[
838 '\u2400',
839 '\u2401',
840 '\u2402',
841 '\u2403',
842 '\u2404',
843 '\u2405',
844 '\u2406',
845 '\u2407',
846 chr(8), # BS
847 '\u2409',
848 chr(10), # LF
849 '\u240B',
850 '\u240C',
851 chr(13), # CR
852 '\u240E' ,
853 '\u240F' ,
854 '\u2410' ,
855 '\u2411' ,
856 '\u2412' ,
857 '\u2413' ,
858 '\u2414',
859 '\u2415' ,
860 '\u2416' ,
861 '\u2417' ,
862 '\u2418' ,
863 '\u2419' ,
864 '\u241A',
865 '\u241B',
866 '\u241C' ,
867 '\u241D' ,
868 '\u241E',
869 '\u241F' ,
870 ' ' ,
871 '!' ,
872 '"' ,
873 '#' ,
874 '$' ,
875 '%' ,
876 '&' ,
877 '\'' ,
878 '(' ,
879 ')' ,
880 '*' ,
881 '+' ,
882 ',' ,
883 '-' ,
884 '.' ,
885 '/' ,
886 '0' ,
887 '1' ,
888 '2' ,
889 '3' ,
890 '4' ,
891 '5' ,
892 '6' ,
893 '7' ,
894 '8' ,
895 '9' ,
896 ':' ,
897 ';' ,
898 '<' ,
899 '=' ,
900 '>' ,
901 '?' ,
902 '@' ,
903 'A' ,
904 'B' ,
905 'C' ,
906 'D' ,
907 'E' ,
908 'F' ,
909 'G' ,
910 'H' ,
911 'I' ,
912 'J' ,
913 'K' ,
914 'L' ,
915 'M' ,
916 'N' ,
917 'O' ,
918 'P' ,
919 'Q' ,
920 'R' ,
921 'S' ,
922 'T' ,
923 'U' ,
924 'V' ,
925 'W' ,
926 'X' ,
927 'Y' ,
928 'Z' ,
929 '[' ,
930 '\\' ,
931 ']' ,
932 '^' ,
933 '_' ,
934 '`' ,
935 'a' ,
936 'b' ,
937 'c' ,
938 'd' ,
939 'e' ,
940 'f' ,
941 'g' ,
942 'h' ,
943 'i' ,
944 'j' ,
945 'k' ,
946 'l' ,
947 'm' ,
948 'n' ,
949 'o' ,
950 'p' ,
951 'q' ,
952 'r' ,
953 's' ,
954 't' ,
955 'u' ,
956 'v' ,
957 'w' ,
958 'x' ,
959 'y' ,
960 'z' ,
961 '{' ,
962 '|' ,
963 '}' ,
964 '~' ,
965 chr(127) , # DEL
966 '\u2426', # undefined
967 '\u2426', # undefined
968 '\u2426',
969 '\u2426' ,
970 '\u2426' ,
971 '\u2426' ,
972 '\u2426' ,
973 '\u2426' ,
974 '\u2426',
975 '\u2426' ,
976 '\u2426',
977 '\u2426' ,
978 '\u2426' ,
979 '\u2426',
980 '\u2426' ,
981 '\u2426' ,
982 '\u2426' ,
983 '\u2426' ,
984 '\u2426' ,
985 '\u2426' ,
986 '\u2426',
987 '\u2426' ,
988 '\u2426' ,
989 '\u2426' ,
990 '\u2426' ,
991 '\u2426' ,
992 '\u2426' ,
993 '\u2426' ,
994 '\u2426' ,
995 '\u2426' ,
996 '\u2426' ,
997 '\u2426' ,
998 '\u2423' , # NBSP
999 '\u00C0' ,
1000 '\u00C2' ,
1001 '\u00C8' ,
1002 '\u00CA' ,
1003 '\u00CB' ,
1004 '\u00CE' ,
1005 '\u00CF' ,
1006 '\u00B4' ,
1007 '\u0060' ,
1008 '\u02C6' ,
1009 '\u00A8' ,
1010 '\u02DC' ,
1011 '\u00D9' ,
1012 '\u00DB' ,
1013 '\u20A4' ,
1014 '\u203E' ,
1015 '\u00DD' ,
1016 '\u00FD' ,
1017 '\u02DA' ,
1018 '\u00C7' ,
1019 '\u00E7' ,
1020 '\u00D1' ,
1021 '\u00F1' ,
1022 '\u00A1' ,
1023 '\u00BF' ,
1024 '\u00A4' ,
1025 '\u00A3' ,
1026 '\u00A5' ,
1027 '\u00A7' ,
1028 '\u0192' ,
1029 '\u00A2' ,
1030 '\u00E2' ,
1031 '\u00EA' ,
1032 '\u00F4' ,
1033 '\u00FB' ,
1034 '\u00E1' ,
1035 '\u00E9' ,
1036 '\u00F3' ,
1037 '\u00FA' ,
1038 '\u00E0' ,
1039 '\u00E8' ,
1040 '\u00F2' ,
1041 '\u00F9' ,
1042 '\u00E4' ,
1043 '\u00EB' ,
1044 '\u00F6' ,
1045 '\u00FC' ,
1046 '\u00C5' ,
1047 '\u00EE' ,
1048 '\u00D8' ,
1049 '\u00C6' ,
1050 '\u00E5' ,
1051 '\u00ED' ,
1052 '\u00F8' ,
1053 '\u00E6' ,
1054 '\u00C4' ,
1055 '\u00EC' ,
1056 '\u00D6' ,
1057 '\u00DC' ,
1058 '\u00C9' ,
1059 '\u00EF' ,
1060 '\u00DF' ,
1061 '\u00D4' ,
1062 '\u00C1' ,
1063 '\u00C3' ,
1064 '\u00E3' ,
1065 '\u00D0' ,
1066 '\u00F0' ,
1067 '\u00CD' ,
1068 '\u00CC' ,
1069 '\u00D3' ,
1070 '\u00D2' ,
1071 '\u00D5' ,
1072 '\u00F5' ,
1073 '\u0160' ,
1074 '\u0161' ,
1075 '\u00DA' ,
1076 '\u0178' ,
1077 '\u00FF' ,
1078 '\u00DE' ,
1079 '\u00FE' ,
1080 '\u00B7' ,
1081 '\u00B5' ,
1082 '\u00B6' ,
1083 '\u00BE' ,
1084 '\u002D' ,
1085 '\u00BC' ,
1086 '\u00BD' ,
1087 '\u00AA' ,
1088 '\u00BA' ,
1089 '\u00AB' ,
1090 '\u25A0' ,
1091 '\u00BB' ,
1092 '\u00B1' ,
1093 '\u2426'
1094],
1095# - map HP2225 charset to unicode
1096# - bs, cr, lf and del are printable unicode symbols
1097# - character 0x80-0x9f are the same as 0x00-0x1f
1098#
1099[
1100 '\u2400',
1101 '\u2401',
1102 '\u2402',
1103 '\u2403',
1104 '\u2404',
1105 '\u2405',
1106 '\u2406',
1107 '\u2407',
1108 '\u2408',
1109 '\u2409',
1110 '\u240A',
1111 '\u240B',
1112 '\u240C',
1113 '\u240D',
1114 '\u240E' ,
1115 '\u240F' ,
1116 '\u2410' ,
1117 '\u2411' ,
1118 '\u2412' ,
1119 '\u2413' ,
1120 '\u2414',
1121 '\u2415' ,
1122 '\u2416' ,
1123 '\u2417' ,
1124 '\u2418' ,
1125 '\u2419' ,
1126 '\u241A',
1127 '\u241B',
1128 '\u241C' ,
1129 '\u241D' ,
1130 '\u241E',
1131 '\u241F' ,
1132 ' ' ,
1133 '!' ,
1134 '"' ,
1135 '#' ,
1136 '$' ,
1137 '%' ,
1138 '&' ,
1139 '\'' ,
1140 '(' ,
1141 ')' ,
1142 '*' ,
1143 '+' ,
1144 ',' ,
1145 '-' ,
1146 '.' ,
1147 '/' ,
1148 '0' ,
1149 '1' ,
1150 '2' ,
1151 '3' ,
1152 '4' ,
1153 '5' ,
1154 '6' ,
1155 '7' ,
1156 '8' ,
1157 '9' ,
1158 ':' ,
1159 ';' ,
1160 '<' ,
1161 '=' ,
1162 '>' ,
1163 '?' ,
1164 '@' ,
1165 'A' ,
1166 'B' ,
1167 'C' ,
1168 'D' ,
1169 'E' ,
1170 'F' ,
1171 'G' ,
1172 'H' ,
1173 'I' ,
1174 'J' ,
1175 'K' ,
1176 'L' ,
1177 'M' ,
1178 'N' ,
1179 'O' ,
1180 'P' ,
1181 'Q' ,
1182 'R' ,
1183 'S' ,
1184 'T' ,
1185 'U' ,
1186 'V' ,
1187 'W' ,
1188 'X' ,
1189 'Y' ,
1190 'Z' ,
1191 '[' ,
1192 '\\' ,
1193 ']' ,
1194 '^' ,
1195 '_' ,
1196 '`' ,
1197 'a' ,
1198 'b' ,
1199 'c' ,
1200 'd' ,
1201 'e' ,
1202 'f' ,
1203 'g' ,
1204 'h' ,
1205 'i' ,
1206 'j' ,
1207 'k' ,
1208 'l' ,
1209 'm' ,
1210 'n' ,
1211 'o' ,
1212 'p' ,
1213 'q' ,
1214 'r' ,
1215 's' ,
1216 't' ,
1217 'u' ,
1218 'v' ,
1219 'w' ,
1220 'x' ,
1221 'y' ,
1222 'z' ,
1223 '{' ,
1224 '|' ,
1225 '}' ,
1226 '~' ,
1227 '\u2421',
1228 '\u2400',
1229 '\u2401',
1230 '\u2402',
1231 '\u2403',
1232 '\u2404',
1233 '\u2405',
1234 '\u2406',
1235 '\u2407',
1236 '\u2408',
1237 '\u2409',
1238 '\u240A',
1239 '\u240B',
1240 '\u240C',
1241 '\u240D',
1242 '\u240E' ,
1243 '\u240F' ,
1244 '\u2410' ,
1245 '\u2411' ,
1246 '\u2412' ,
1247 '\u2413' ,
1248 '\u2414',
1249 '\u2415' ,
1250 '\u2416' ,
1251 '\u2417' ,
1252 '\u2418' ,
1253 '\u2419' ,
1254 '\u241A',
1255 '\u241B',
1256 '\u241C' ,
1257 '\u241D' ,
1258 '\u241E',
1259 '\u241F' ,
1260 '\u2423' , # NBSP
1261 '\u00C0' ,
1262 '\u00C2' ,
1263 '\u00C8' ,
1264 '\u00CA' ,
1265 '\u00CB' ,
1266 '\u00CE' ,
1267 '\u00CF' ,
1268 '\u00B4' ,
1269 '\u0060' ,
1270 '\u02C6' ,
1271 '\u00A8' ,
1272 '\u02DC' ,
1273 '\u00D9' ,
1274 '\u00DB' ,
1275 '\u20A4' ,
1276 '\u203E' ,
1277 '\u00DD' ,
1278 '\u00FD' ,
1279 '\u02DA' ,
1280 '\u00C7' ,
1281 '\u00E7' ,
1282 '\u00D1' ,
1283 '\u00F1' ,
1284 '\u00A1' ,
1285 '\u00BF' ,
1286 '\u00A4' ,
1287 '\u00A3' ,
1288 '\u00A5' ,
1289 '\u00A7' ,
1290 '\u0192' ,
1291 '\u00A2' ,
1292 '\u00E2' ,
1293 '\u00EA' ,
1294 '\u00F4' ,
1295 '\u00FB' ,
1296 '\u00E1' ,
1297 '\u00E9' ,
1298 '\u00F3' ,
1299 '\u00FA' ,
1300 '\u00E0' ,
1301 '\u00E8' ,
1302 '\u00F2' ,
1303 '\u00F9' ,
1304 '\u00E4' ,
1305 '\u00EB' ,
1306 '\u00F6' ,
1307 '\u00FC' ,
1308 '\u00C5' ,
1309 '\u00EE' ,
1310 '\u00D8' ,
1311 '\u00C6' ,
1312 '\u00E5' ,
1313 '\u00ED' ,
1314 '\u00F8' ,
1315 '\u00E6' ,
1316 '\u00C4' ,
1317 '\u00EC' ,
1318 '\u00D6' ,
1319 '\u00DC' ,
1320 '\u00C9' ,
1321 '\u00EF' ,
1322 '\u00DF' ,
1323 '\u00D4' ,
1324 '\u00C1' ,
1325 '\u00C3' ,
1326 '\u00E3' ,
1327 '\u00D0' ,
1328 '\u00F0' ,
1329 '\u00CD' ,
1330 '\u00CC' ,
1331 '\u00D3' ,
1332 '\u00D2' ,
1333 '\u00D5' ,
1334 '\u00F5' ,
1335 '\u0160' ,
1336 '\u0161' ,
1337 '\u00DA' ,
1338 '\u0178' ,
1339 '\u00FF' ,
1340 '\u00DE' ,
1341 '\u00FE' ,
1342 '\u00B7' ,
1343 '\u00B5' ,
1344 '\u00B6' ,
1345 '\u00BE' ,
1346 '\u002D' ,
1347 '\u00BC' ,
1348 '\u00BD' ,
1349 '\u00AA' ,
1350 '\u00BA' ,
1351 '\u00AB' ,
1352 '\u25A0' ,
1353 '\u00BB' ,
1354 '\u00B1' ,
1355 '\u2426'
1356]
1357]
1358#
1359# convert single character
1360#
1361def charconv(s, charset):
1362 return convert_to_unicode[charset][ord(s)]
1363#
1364# convert an integer character code
1365#
1366def icharconv(i, charset):
1367 return convert_to_unicode[charset][i]
1368#
1369# convert a bytearray to a string
1370#
1371def barrconv(barr, charset):
1372 slist= []
1373 for c in barr:
1374 slist.append(convert_to_unicode[charset][c])
1375 return "".join(slist)
1376#
1377# convert a string
1378#
1379def stringconv(string, charset):
1380 slist= []
1381 for c in string:
1382 slist.append(convert_to_unicode[charset][ord(c)])
1383 return "".join(slist)