/*
 * Character mapping for HD44780 devices by Mark Haemmerling <mail@markh.de>.
 *
 * Translates ISO 8859-1 to any HD44780 charset.
 *
 * Charmap selector (C) 2006 Pillon Matteo <matteo.pillon@email.it>
 *
 * This file is released under the GNU General Public License.
 * Refer to the COPYING file distributed with this package.
 */

/*
 * HD44780 table
 *
 * Initial table taken from lcd.o Linux kernel driver by
 * Nils Faerber <nilsf@users.sourceforge.net>. Thanks!
 *
 * HD44780 charset reference: http://markh.de/hd44780-charset.png
 *
 * The following translations are being performed:
 * - map umlaut accent characters to the corresponding umlaut characters
 * - map other accent characters to the characters without accents
 * - map beta (=sharp s), micro and Yen
 *
 * Alternative mappings:
 * - #112 ("p") -> #240 (large "p"),  orig. mapped -> #112
 * - #113 ("q") -> #241 (large "q"),  orig. mapped -> #113
 *
 * HD44780 misses backslash
 *
 */

const unsigned char HD44780_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,  47,  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 */
        160,  33, 236, 237, 164,  92, 124, 167,
         34, 169, 170, 171, 172, 173, 174, 175,
        223, 177, 178, 179,  39, 249, 247, 165,
         44, 185, 186, 187, 188, 189, 190,  63,
        /* #192 */
         65,  65,  65,  65, 225,  65,  65,  67,
         69,  69,  69,  69,  73,  73,  73,  73,
         68,  78,  79,  79,  79,  79, 239, 120,
         48,  85,  85,  85, 245,  89, 240, 226,
        /* #224 */
         97,  97,  97,  97, 225,  97,  97,  99,
        101, 101, 101, 101, 105, 105, 105, 105,
        111, 110, 111, 111, 111, 111, 239, 253,
         48, 117, 117, 117, 245, 121, 240, 255
};

/*
 * Electronic Assembly's KS0073 based LCDs table
 * http://www.lcd-module.de/eng/pdf/doma/dip204-4e.pdf
 *
 * This map is more similar to a ISO-8859-15, but with fractions from
 * ISO-8859-1 (0xBC, 0xBD).
 *
 * ~ (126) is mapped to right arrow, even though it exists, for
 * compatibility with some clients. 127 is left arrow.
 *
 * There's no backtick, substituded with '.
 *
 * | is substituted with another similar charachter as the code is
 * used by some serial drivers.
 *
 * Charset of the display offers a nice set of icons, they are mapped
 * from 128 to 159. I mapped these intervals to, in order: 16-28,
 * 140-151, 180-182, 187, 207, 222, 224.
 *
 * (C) 2006 Pillon Matteo <matteo.pillon@email.it>
 *
 */

const unsigned char EA_KS0073_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, 250, 251, 252,  29, 196,
        /* #96 */
         39,  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, 253, 218, 255, 223, 225,
        /* #128 */
         16,  17,  18,  19,  20,  21,  22,  23,
         24,  25,  26,  27,  28, 140, 141, 142,
        143, 144, 145, 146, 147, 148, 149, 150,
        151, 180, 181, 182, 187, 207, 222, 224,
        /* #160 */
        160,  64, 177, 161,  36, 163, 243,  95,
        248,  67, 170,  20, 172, 173,  82, 175,
        128, 140, 130, 131, 249, 143, 182, 221,
        244, 129, 128,  21, 139, 138, 190,  96,
        /* #192 */
        174, 226, 174, 174,  91, 174, 188, 169,
        197, 191, 198,  69,  73,  73,  73,  73,
         68,  93, 168, 228, 236,  79,  92, 120,
        171, 238, 229, 238,  94, 230, 178, 190,
        /* #224 */
        127, 231, 175, 175, 123, 175, 189, 200,
        164, 165, 199, 101, 167, 232, 105, 105,
        111, 125, 168, 233, 237, 111, 124,  58,
        172, 166, 234, 239, 126, 235, 178, 255
};

/*
 * Character mapping by Frank Jepsen <vdr_at_jepsennet.de>.
 *
 */

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
};

#define MAX_CHARMAP_NAME_LENGHT 16

struct charmap {
        char name[MAX_CHARMAP_NAME_LENGHT];
        const unsigned char *charmap;
};

const struct charmap available_charmaps[] = {
	{ "hd44780_default", HD44780_charmap     },
	{ "ea_ks0073",       EA_KS0073_charmap   },
	{ "sed1278f_0b",     SED1278F_0B_charmap }
};


syntax highlighted by Code2HTML, v. 0.9.1