Change-Id: If881ec130833c7e7e62caa3d31e350a531f5bc8e Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-on: http://review.coreboot.org/12398 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
		
			
				
	
	
		
			204 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			204 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Public Domain Curses */
 | ||
| 
 | ||
| /* $Id: compose.h,v 1.3 2008/07/14 04:24:52 wmcbrine Exp $ */
 | ||
| 
 | ||
| /* Tables and variables for the built-in compose key system. This file
 | ||
|    is not included when PDCurses is built with XIM support. */
 | ||
| 
 | ||
| #define MAX_COMPOSE_CHARS 14
 | ||
| #define MAX_COMPOSE_PRE 60
 | ||
| 
 | ||
| static const char *compose_chars =
 | ||
|     "`'~^,/\"AaPpSs!?0123CcRr-_<>Xx.=Yy |EeIiOoUu+NnLlgDd:*TtMmVv";
 | ||
| 
 | ||
| /*
 | ||
|    ` :  À  È  Ì  Ò  Ù  à  è  ì  ò  ù
 | ||
|    ' :  ´  Á  É  Í  Ó  Ú  Ý  á  é  í  ó  ú  ý  ´
 | ||
|    ~ :  Ã  Ñ  Õ  ã  ñ  õ
 | ||
|    ^ :  Â  Ê  Î  Ô  Û  â  ê  î  ô  û  °  ¹  ²  ³
 | ||
|    , :  ¸  Ç  ç  ¸
 | ||
|    / :  Ø  ø  µ  µ
 | ||
|    " :  ¨  Ä  Ë  Ï  Ö  Ü  ä  ë  ï  ö  ü  ÿ  ¨
 | ||
|    A :  Æ  À  Á  Ã  Â  Å  Å  Ã  Â  ª
 | ||
|    a :  æ  à  á  ã  â  å  å  ã  â  ª
 | ||
|    P :  Þ  ¶  ¶
 | ||
|    p :  þ  ¶  ¶
 | ||
|    S :  §  §  §  º  ª
 | ||
|    s :  ß  §  ª  ¹  ²  ³  º  §
 | ||
|    ! :  ¡  ¡
 | ||
|    ? :  ¿  ¿
 | ||
|    0 :  °  °
 | ||
|    1 :  ¹  ½  ¼  ¹
 | ||
|    2 :  ²  ²
 | ||
|    3 :  ³  ¾  ³
 | ||
|    C :  ©  Ç  ¢  ¢
 | ||
|    c :  ¢  ©  ç  ¢  ¢
 | ||
|    R :  ®
 | ||
|    r :  ®
 | ||
|    - :    ±  ¬    ¯  ÷
 | ||
|    _ :  ¯  ¯
 | ||
|    < :  «
 | ||
|    > :  «
 | ||
|    X :  ¤  ×
 | ||
|    x :  ×  ¤  ×
 | ||
|    . :  ·  ·  ·
 | ||
|    = :  ¥  ¥
 | ||
|    Y :  ¥  Ý  ¥
 | ||
|    y :  ¥  ý  ÿ  ¥  ¥
 | ||
|      :
 | ||
|    | :  ¦  ¢  ¦  Þ  þ  ¦  £
 | ||
|    E :  È  É  Ê  Ë  Ê
 | ||
|    e :  è  é  ê  ë  ê
 | ||
|    I :  Ì  Í  Î  Ï  Î
 | ||
|    i :  ì  í  î  ï  î
 | ||
|    O :  Ò  Ó  Ô  Õ  Ö  Ø  ©  ®  Õ  Ô  Å  å
 | ||
|    o :  °  Å  å  ¤  õ  ò  ó  ô  õ  ö  ø  ô  º
 | ||
|    U :  Ù  Ú  Û  Ü  Û
 | ||
|    u :  ù  ú  û  ü  µ  û
 | ||
|    + :  ±
 | ||
|    N :  Ñ  Ñ  ¬
 | ||
|    n :  ñ  ñ  ¬
 | ||
|    L :  £  £  £
 | ||
|    l :  £  £  £
 | ||
|    g :  ¤
 | ||
|    D :  °  Ð
 | ||
|    d :  °  ð
 | ||
|    : :  ÷
 | ||
|    * :  µ  µ  å  Å
 | ||
|    T :  Þ
 | ||
|    t :  þ
 | ||
|    M :  ×
 | ||
|    m :  ×
 | ||
|    V :  ¦
 | ||
|    v :  ¦
 | ||
| */
 | ||
| 
 | ||
| static const char compose_lookups[MAX_COMPOSE_PRE][MAX_COMPOSE_CHARS] =
 | ||
| {
 | ||
| /* ` */ {'A','E','I','O','U','a','e','i','o','u',  0,  0,  0,  0},
 | ||
| /* ' */ {' ','A','E','I','O','U','Y','a','e','i','o','u','y', 39},
 | ||
| /* ~ */ {'A','N','O','a','n','o',  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* ^ */ {'A','E','I','O','U','a','e','i','o','u','0','1','2','3'},
 | ||
| /* , */ {' ','C','c',',',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* / */ {'O','o','u','U',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* " */ {' ','A','E','I','O','U','a','e','i','o','u','y','\"', 0},
 | ||
| /* A */ {'E','`', 39,'~','^','"','o','*','-','>','_',  0,  0,  0},
 | ||
| /* a */ {'e','`', 39,'~','^','"','o','*','-','>','_',  0,  0,  0},
 | ||
| /* P */ {' ','G','!',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* p */ {' ','g','!',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* S */ {'S','!','O','0','A',  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* s */ {'s','!','a','1','2','3','0','o',  0,  0,  0,  0,  0,  0},
 | ||
| /* ! */ {' ','!',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* ? */ {' ','?',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* 0 */ {'^','*',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* 1 */ {' ','2','4','^',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* 2 */ {' ','^',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* 3 */ {' ','4','^',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* C */ {'O',',','$','|',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* c */ {'|','o',',','/','$',  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* R */ {'O',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* r */ {'o',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* - */ {' ','+',',','-','^',':',  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* _ */ {'_','^',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* < */ {'<',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* > */ {'>',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* X */ {'O','X',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* x */ {' ','o','x',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* . */ {' ','^','.',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* = */ {'Y','y',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* Y */ {'=', 39,'-',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* y */ {'=', 39,'"','$','-',  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /*   */ {' ',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* | */ {' ','c','|','P','p','^','-',  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* E */ {'`', 39,'^','"','>',  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* e */ {'`', 39,'^','"','>',  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* I */ {'`', 39,'^','"','>',  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* i */ {'`', 39,'^','"','>',  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* O */ {'`', 39,'^','~','"','/','C','R','-','>','A','a',  0,  0},
 | ||
| /* o */ {' ','A','a','x','-','`', 39,'^','~','"','/','>','_',  0},
 | ||
| /* U */ {'`', 39,'^','"','>',  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* u */ {'`', 39,'^','"',' ','>',  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* + */ {'-',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* N */ {'~','-','O',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* n */ {'~','-','o',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* L */ {'$','=','-',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* l */ {'$','=','-',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* g */ {'$',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* D */ {'E','-',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* d */ {'e','-',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* : */ {'-',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* * */ {'m','M','a','A',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* T */ {'H',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* t */ {'h',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* M */ {'U',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* m */ {'u',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* V */ {'B',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* v */ {'b',  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| };
 | ||
| 
 | ||
| static const unsigned char compose_keys[MAX_COMPOSE_PRE][MAX_COMPOSE_CHARS] =
 | ||
| {
 | ||
| /* ` */ {192,200,204,210,217,224,232,236,242,249,  0,  0,  0,  0},
 | ||
| /* ' */ {180,193,201,205,211,218,221,225,233,237,243,250,253,180},
 | ||
| /* ~ */ {195,209,213,227,241,245,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* ^ */ {194,202,206,212,219,226,234,238,244,251,176,185,178,179},
 | ||
| /* , */ {184,199,231,184,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* / */ {216,248,181,181,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* " */ {168,196,203,207,214,220,228,235,239,246,252,255,168,  0},
 | ||
| /* A */ {198,192,193,195,194,196,197,197,195,194,170,  0,  0,  0},
 | ||
| /* a */ {230,224,225,227,226,228,229,229,227,226,170,  0,  0,  0},
 | ||
| /* P */ {222,182,182,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* p */ {254,182,182,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* S */ {167,167,167,186,170,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* s */ {223,167,170,185,178,179,186,167,  0,  0,  0,  0,  0,  0},
 | ||
| /* ! */ {161,161,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* ? */ {191,191,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* 0 */ {176,176,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* 1 */ {185,189,188,185,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* 2 */ {178,178,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* 3 */ {179,190,179,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* C */ {169,199,162,162,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* c */ {162,169,231,162,162,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* R */ {174,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* r */ {174,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* - */ {173,177,172,173,175,247,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* _ */ {175,175,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* < */ {171,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* > */ {187,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* X */ {164,215,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* x */ {215,164,215,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* . */ {183,183,183,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* = */ {165,165,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* Y */ {165,221,165,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* y */ {165,253,255,165,165,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /*   */ {160,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* | */ {166,162,166,222,254,166,163,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* E */ {200,201,202,203,202,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* e */ {232,233,234,235,234,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* I */ {204,205,206,207,206,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* i */ {236,237,238,239,238,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* O */ {210,211,212,213,214,216,169,174,213,212,197,229,  0,  0},
 | ||
| /* o */ {176,197,229,164,245,242,243,244,245,246,248,244,186,  0},
 | ||
| /* U */ {217,218,219,220,219,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* u */ {249,250,251,252,181,251,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* + */ {177,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* N */ {209,209,172,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* n */ {241,241,172,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* L */ {163,163,163,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* l */ {163,163,163,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* g */ {164,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* D */ {176,208,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* d */ {176,240,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* : */ {247,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* * */ {181,181,229,197,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* T */ {222,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* t */ {254,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* M */ {215,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* u */ {215,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* V */ {166,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| /* v */ {166,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
 | ||
| };
 | ||
| 
 | ||
| static KeySym compose_key = 0;
 | ||
| static int compose_mask = 0;
 |