diff --git a/LCDd.conf b/LCDd.conf index ce8de51..ac19ce6 100644 --- a/LCDd.conf +++ b/LCDd.conf @@ -470,8 +470,9 @@ Size=20x4 #ExtendedMode=yes # Character map to to map ISO-8859-1 to the LCD's character set -# [default: hd44780_default; legal: hd44780_default, ea_ks0073, sed1278f_0b ] -Charmap=hd44780_default +# [default: hd44780_default; legal: hd44780_default, hd44780_euro, +# ea_ks0073, sed1278f_0b ] +CharMap=hd44780_default # If your display is slow and cannot keep up with the flow of data from # LCDd, garbage can appear on the LCDd. Set this delay factor to 2 or 4 diff --git a/server/drivers/hd44780-charmap.h b/server/drivers/hd44780-charmap.h index e0f2163..e3b27c7 100644 --- a/server/drivers/hd44780-charmap.h +++ b/server/drivers/hd44780-charmap.h @@ -62,7 +62,7 @@ const unsigned char HD44780_charmap[] = { /* #160 */ 160, 33, 236, 237, 164, 92, 124, 167, 34, 169, 170, 171, 172, 173, 174, 175, - 223, 177, 178, 179, 39, 249, 247, 165, + 223, 177, 178, 179, 39, 228, 247, 165, 44, 185, 186, 187, 188, 189, 190, 63, /* #192 */ 65, 65, 65, 65, 225, 65, 65, 67, @@ -76,6 +76,57 @@ const unsigned char HD44780_charmap[] = { 48, 117, 117, 117, 245, 121, 240, 255 }; +/* + * Table for HD44780 controller with ROM mask supporting + * the european charset (ROM code A02). + * + * Replacements: + * 160 => 32, 168 => 34, 180 => 39, 184 => 44 + */ +const unsigned char HD44780_euro_charmap[] = { + /* #0 */ + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + /* #32 */ + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + /* #64 */ + 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, + /* #96 */ + 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, + /* #128 */ + 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, + /* #160 */ + 32, 161, 162, 163, 164, 165, 166, 167, + 34, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 39, 181, 182, 183, + 44, 185, 186, 187, 188, 189, 190, 191, + /* #192 */ + 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, + /* #224 */ + 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 245, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255 +}; + + /* * Electronic Assembly's KS0073 based LCDs table * http://www.lcd-module.de/eng/pdf/doma/dip204-4e.pdf @@ -148,262 +199,46 @@ const unsigned char EA_KS0073_charmap[] = { */ const unsigned char SED1278F_0B_charmap[] = { - /* 0 ( '^@') */ 0, - /* 1 ( '^A') */ 1, - /* 2 ( '^B') */ 2, - /* 3 ( '^C') */ 3, - /* 4 ( '^D') */ 4, - /* 5 ( '^E') */ 5, - /* 6 ( '^F') */ 6, - /* 7 ( '^G') */ 7, - /* 8 ( '^H') */ 8, - /* 9 ( '' ) */ 32, - /* 10 ( '' ) */ 32, - /* 11 ( '^K') */ 32, - /* 12 ( '^L') */ 32, - /* 13 ( '^M') */ 32, - /* 14 ( '^N') */ 14, - /* 15 ( '^O') */ 15, - /* 16 ( '^P') */ 16, - /* 17 ( '^Q') */ 17, - /* 18 ( '^R') */ 18, - /* 19 ( '^S') */ 19, - /* 20 ( '^T') */ 20, - /* 21 ( '^U') */ 21, - /* 22 ( '^V') */ 22, - /* 23 ( '^W') */ 23, - /* 24 ( '^X') */ 24, - /* 25 ( '^Y') */ 25, - /* 26 ( '^Z') */ 26, - /* 27 ( '^[') */ 27, - /* 28 ( '^\') */ 28, - /* 29 ( '^]') */ 29, - /* 30 ( '^^') */ 30, - /* 31 ( '^_') */ 31, - /* 32 ( ' ' ) */ 32, - /* 33 ( '!' ) */ 33, - /* 34 ( '"' ) */ 39, - /* 35 ( '#' ) */ 35, - /* 36 ( '$' ) */ 36, - /* 37 ( '%' ) */ 37, - /* 38 ( '&' ) */ 38, - /* 39 ( ''' ) */ 39, - /* 40 ( '(' ) */ 40, - /* 41 ( ')' ) */ 41, - /* 42 ( '*' ) */ 42, - /* 43 ( '+' ) */ 43, - /* 44 ( ',' ) */ 44, - /* 45 ( '-' ) */ 45, - /* 46 ( '.' ) */ 46, - /* 47 ( '/' ) */ 47, - /* 48 ( '0' ) */ 48, - /* 49 ( '1' ) */ 49, - /* 50 ( '2' ) */ 50, - /* 51 ( '3' ) */ 51, - /* 52 ( '4' ) */ 52, - /* 53 ( '5' ) */ 53, - /* 54 ( '6' ) */ 54, - /* 55 ( '7' ) */ 55, - /* 56 ( '8' ) */ 56, - /* 57 ( '9' ) */ 57, - /* 58 ( ':' ) */ 58, - /* 59 ( ';' ) */ 59, - /* 60 ( '<' ) */ 60, - /* 61 ( '=' ) */ 61, - /* 62 ( '>' ) */ 62, - /* 63 ( '?' ) */ 63, - /* 64 ( '@' ) */ 64, - /* 65 ( 'A' ) */ 65, - /* 66 ( 'B' ) */ 66, - /* 67 ( 'C' ) */ 67, - /* 68 ( 'D' ) */ 68, - /* 69 ( 'E' ) */ 69, - /* 70 ( 'F' ) */ 70, - /* 71 ( 'G' ) */ 71, - /* 72 ( 'H' ) */ 72, - /* 73 ( 'I' ) */ 73, - /* 74 ( 'J' ) */ 74, - /* 75 ( 'K' ) */ 75, - /* 76 ( 'L' ) */ 76, - /* 77 ( 'M' ) */ 77, - /* 78 ( 'N' ) */ 78, - /* 79 ( 'O' ) */ 79, - /* 80 ( 'P' ) */ 80, - /* 81 ( 'Q' ) */ 81, - /* 82 ( 'R' ) */ 82, - /* 83 ( 'S' ) */ 83, - /* 84 ( 'T' ) */ 84, - /* 85 ( 'U' ) */ 85, - /* 86 ( 'V' ) */ 86, - /* 87 ( 'W' ) */ 87, - /* 88 ( 'X' ) */ 88, - /* 89 ( 'Y' ) */ 89, - /* 90 ( 'Z' ) */ 90, - /* 91 ( '[' ) */ 91, - /* 92 ( '\' ) */ 92, - /* 93 ( ']' ) */ 93, - /* 94 ( '^' ) */ 94, - /* 95 ( '_' ) */ 95, - /* 96 ( '`' ) */ 96, - /* 97 ( 'a' ) */ 97, - /* 98 ( 'b' ) */ 98, - /* 99 ( 'c' ) */ 99, - /* 100 ( 'd' ) */ 100, - /* 101 ( 'e' ) */ 101, - /* 102 ( 'f' ) */ 102, - /* 103 ( 'g' ) */ 103, - /* 104 ( 'h' ) */ 104, - /* 105 ( 'i' ) */ 105, - /* 106 ( 'j' ) */ 106, - /* 107 ( 'k' ) */ 107, - /* 108 ( 'l' ) */ 108, - /* 109 ( 'm' ) */ 109, - /* 110 ( 'n' ) */ 110, - /* 111 ( 'o' ) */ 111, - /* 112 ( 'p' ) */ 112, - /* 113 ( 'q' ) */ 113, - /* 114 ( 'r' ) */ 114, - /* 115 ( 's' ) */ 115, - /* 116 ( 't' ) */ 116, - /* 117 ( 'u' ) */ 117, - /* 118 ( 'v' ) */ 118, - /* 119 ( 'w' ) */ 119, - /* 120 ( 'x' ) */ 120, - /* 121 ( 'y' ) */ 121, - /* 122 ( 'z' ) */ 122, - /* 123 ( '{' ) */ 123, - /* 124 ( '|' ) */ 124, - /* 125 ( '}' ) */ 125, - /* 126 ( '~' ) */ 126, - /* 127 ( '^?') */ 127, - /* 128 ( '~@') */ 64, - /* 129 ( '~A') */ 65, - /* 130 ( '~B') */ 66, - /* 131 ( '~C') */ 67, - /* 132 ( '~D') */ 68, - /* 133 ( '~E') */ 69, - /* 134 ( '~F') */ 70, - /* 135 ( '~G') */ 71, - /* 136 ( '~H') */ 72, - /* 137 ( '~I') */ 73, - /* 138 ( '~J') */ 74, - /* 139 ( '~K') */ 75, - /* 140 ( '~L') */ 76, - /* 141 ( '~M') */ 77, - /* 142 ( '~N') */ 78, - /* 143 ( '~O') */ 79, - /* 144 ( '~P') */ 80, - /* 145 ( '~Q') */ 81, - /* 146 ( '~R') */ 82, - /* 147 ( '~S') */ 83, - /* 148 ( '~T') */ 84, - /* 149 ( '~U') */ 85, - /* 150 ( '~V') */ 86, - /* 151 ( '~W') */ 87, - /* 152 ( '~X') */ 88, - /* 153 ( '~Y') */ 89, - /* 154 ( '~Z') */ 90, - /* 155 ( '~[') */ 91, - /* 156 ( '~\') */ 92, - /* 157 ( '~]') */ 93, - /* 158 ( '~^') */ 94, - /* 159 ( '~_') */ 95, - /* 160 ( '| ') */ 124, - /* 161 ( '¡' ) */ 169, - /* 162 ( '¢' ) */ 164, - /* 163 ( '£' ) */ 166, - /* 164 ( '¤' ) */ 175, - /* 165 ( '¥' ) */ 166, - /* 166 ( '¦' ) */ 124, - /* 167 ( '§' ) */ 210, - /* 168 ( '¨' ) */ 177, - /* 169 ( '©' ) */ 207, - /* 170 ( 'ª' ) */ 178, - /* 171 ( '«' ) */ 187, - /* 172 ( '¬' ) */ 44, - /* 173 ( '­' ) */ 44, - /* 174 ( '®' ) */ 206, - /* 175 ( '¯' ) */ 191, - /* 176 ( '°' ) */ 178, - /* 177 ( '±' ) */ 16, - /* 178 ( '²' ) */ 30, - /* 179 ( '³' ) */ 31, - /* 180 ( '´' ) */ 180, - /* 181 ( 'µ' ) */ 234, - /* 182 ( '¶' ) */ 211, - /* 183 ( '·' ) */ 205, - /* 184 ( '¸' ) */ 44, - /* 185 ( '¹' ) */ 180, - /* 186 ( 'º' ) */ 178, - /* 187 ( '»' ) */ 188, - /* 188 ( '¼' ) */ 182, - /* 189 ( '½' ) */ 181, - /* 190 ( '¾' ) */ 245, - /* 191 ( '¿' ) */ 159, - /* 192 ( 'À' ) */ 65, - /* 193 ( 'Á' ) */ 65, - /* 194 ( 'Â' ) */ 65, - /* 195 ( 'Ã' ) */ 170, - /* 196 ( 'Ä' ) */ 142, - /* 197 ( 'Å' ) */ 143, - /* 198 ( 'Æ' ) */ 146, - /* 199 ( 'Ç' ) */ 128, - /* 200 ( 'È' ) */ 69, - /* 201 ( 'É' ) */ 144, - /* 202 ( 'Ê' ) */ 69, - /* 203 ( 'Ë' ) */ 69, - /* 204 ( 'Ì' ) */ 73, - /* 205 ( 'Í' ) */ 73, - /* 206 ( 'Î' ) */ 73, - /* 207 ( 'Ï' ) */ 73, - /* 208 ( 'Ð' ) */ 245, - /* 209 ( 'Ñ' ) */ 156, - /* 210 ( 'Ò' ) */ 79, - /* 211 ( 'Ó' ) */ 79, - /* 212 ( 'Ô' ) */ 79, - /* 213 ( 'Õ' ) */ 172, - /* 214 ( 'Ö' ) */ 153, - /* 215 ( '×' ) */ 183, - /* 216 ( 'Ø' ) */ 174, - /* 217 ( 'Ù' ) */ 85, - /* 218 ( 'Ú' ) */ 85, - /* 219 ( 'Û' ) */ 85, - /* 220 ( 'Ü' ) */ 154, - /* 221 ( 'Ý' ) */ 89, - /* 222 ( 'Þ' ) */ 220, - /* 223 ( 'ß' ) */ 224, - /* 224 ( 'à' ) */ 133, - /* 225 ( 'á' ) */ 160, - /* 226 ( 'â' ) */ 131, - /* 227 ( 'ã' ) */ 171, - /* 228 ( 'ä' ) */ 132, - /* 229 ( 'å' ) */ 134, - /* 230 ( 'æ' ) */ 145, - /* 231 ( 'ç' ) */ 135, - /* 232 ( 'è' ) */ 138, - /* 233 ( 'é' ) */ 130, - /* 234 ( 'ê' ) */ 136, - /* 235 ( 'ë' ) */ 137, - /* 236 ( 'ì' ) */ 141, - /* 237 ( 'í' ) */ 161, - /* 238 ( 'î' ) */ 140, - /* 239 ( 'ï' ) */ 139, - /* 240 ( 'ð' ) */ 32, - /* 241 ( 'ñ' ) */ 155, - /* 242 ( 'ò' ) */ 149, - /* 243 ( 'ó' ) */ 162, - /* 244 ( 'ô' ) */ 147, - /* 245 ( 'õ' ) */ 173, - /* 246 ( 'ö' ) */ 148, - /* 247 ( '÷' ) */ 184, - /* 248 ( 'ø' ) */ 175, - /* 249 ( 'ù' ) */ 151, - /* 250 ( 'ú' ) */ 163, - /* 251 ( 'û' ) */ 150, - /* 252 ( 'ü' ) */ 129, - /* 253 ( 'ý' ) */ 121, - /* 254 ( 'þ' ) */ 32, - /* 255 ( 'ÿ' ) */ 253 + /* #0 */ + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 32, 32, 32, 32, 32, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, + /* #32 */ + 32, 33, 39, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, + /* #64 */ + 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, + /* #96 */ + 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, + /* #128 */ + 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, + /* #160 */ + 124, 169, 164, 166, 175, 166, 124, 210, + 177, 207, 178, 187, 44, 44, 206, 191, + 178, 16, 30, 31, 180, 234, 211, 205, + 44, 180, 178, 188, 182, 181, 245, 159, + /* #192 */ + 65, 65, 65, 170, 142, 143, 146, 128, + 69, 144, 69, 69, 73, 73, 73, 73, + 245, 156, 79, 79, 79, 172, 153, 183, + 174, 85, 85, 85, 154, 89, 220, 224, + /* #224 */ + 133, 160, 131, 171, 132, 134, 145, 135, + 138, 130, 136, 137, 141, 161, 140, 139, + 32, 155, 149, 162, 147, 173, 148, 184, + 175, 151, 163, 150, 129, 121, 32, 253 }; #define MAX_CHARMAP_NAME_LENGTH 16 @@ -414,7 +249,8 @@ struct charmap { }; const struct charmap available_charmaps[] = { - { "hd44780_default", HD44780_charmap }, - { "ea_ks0073", EA_KS0073_charmap }, - { "sed1278f_0b", SED1278F_0B_charmap } + { "hd44780_default", HD44780_charmap }, + { "hd44780_euro", HD44780_euro_charmap }, + { "ea_ks0073", EA_KS0073_charmap }, + { "sed1278f_0b", SED1278F_0B_charmap } }; diff --git a/server/menuscreens.c b/server/menuscreens.c index 02cf428..c43afcc 100644 --- a/server/menuscreens.c +++ b/server/menuscreens.c @@ -465,6 +465,25 @@ void menuscreen_create_menu(void) #ifdef LCDPROC_TESTMENUS MenuItem *test_item; Menu *test_menu; + + char testiso[] = { + 'D', 'e', 'm', 'o', '\t', + /* #160 */ + 160, 161, 162, 163, 164, 165, 166, 167, '\t', + 168, 169, 170, 171, 172, 173, 174, 175, '\t', + 176, 177, 178, 179, 180, 181, 182, 183, '\t', + 184, 185, 186, 187, 188, 189, 190, 191, '\t', + /* #192 */ + 192, 193, 194, 195, 196, 197, 198, 199, '\t', + 200, 201, 202, 203, 204, 205, 206, 207, '\t', + 208, 209, 210, 211, 212, 213, 214, 215, '\t', + 216, 217, 218, 219, 220, 221, 222, 223, '\t', + /* #224 */ + 224, 225, 226, 227, 228, 229, 230, 231, '\t', + 232, 233, 234, 245, 236, 237, 238, 239, '\t', + 240, 241, 242, 243, 244, 245, 246, 247, '\t', + 248, 249, 250, 251, 252, 253, 254, 255, '\0' + }; #endif /*LCDPROC_TESTMENUS*/ debug(RPT_DEBUG, "%s()", __FUNCTION__); @@ -564,6 +583,9 @@ void menuscreen_create_menu(void) menu_add_item(test_menu, test_item); test_item = menuitem_create_ip("", NULL, "IPv6", NULL, 1, "1080:0:0:0:8:800:200C:417A"); menu_add_item(test_menu, test_item); + + test_item = menuitem_create_ring("", NULL, "Charset", NULL, testiso, 0); + menu_add_item(test_menu, test_item); #endif /*LCDPROC_TESTMENUS*/ }