/*
 * Keymap for russian keyboard. 
 * Modified by Roman V. Ignatov <ignatov@minix3.ru>
 * Charset: cp866
 */
 
u16_t keymap[NR_SCAN_CODES * MAP_COLS] = {

/* scan-code		!Shift	Shift	Alt1	Alt2	Alt+Sh	Ctrl	*/
/* ==================================================================== */
/* 00 - none	*/	0,	0,	0,	0,	0,	0,	
/* 01 - ESC	*/	C('['),	C('['),	CA('['),CA('['),CA('['),C('['),
/* 02 - '1'	*/	'1',	'!',	'1',	A('1'),	'!',	C('A'),
/* 03 - '2'	*/	'2',	'@',	'2',	A('2'),	'"',	C('@'),
/* 04 - '3'	*/	'3',	'#',	'3',	A('3'),	'N',	C('C'),
/* 05 - '4'	*/	'4',	'$',	'4',	A('4'),	';',	C('D'),
/* 06 - '5'	*/	'5',	'%',	'5',	A('5'),	'%',	C('E'),
/* 07 - '6'	*/	'6',	'^',	'6',	A('6'),	':',	C('^'),
/* 08 - '7'	*/	'7',	'&',	'7',	A('7'),	 '?',	C('G'),
/* 09 - '8'	*/	'8',	'*',	'8',	A('8'),	'*',	C('H'),
/* 10 - '9'	*/	'9',	'(',	'9',	A('9'),	'(',	C('I'),
/* 11 - '0'	*/	'0',	')',	'0',	A('0'),	')',	C('@'),
/* 12 - '-'	*/	'-',	'_',	'-',	A('-'),	'_',	C('_'),
/* 13 - '='	*/	'=',	'+',	'=',	A('='),	'+',	C('@'),
/* 14 - BS	*/	C('H'),	C('H'),	C('H'), CA('H'), C('H'),0177,	
/* 15 - TAB	*/	C('I'),	C('I'),	C('I'), CA('I'),C('I'), C('I'),
/* 16 - 'q'	*/	L('q'),	'Q',	A(169),	A('q'),	A(137),	C('Q'),
/* 17 - 'w'	*/	L('w'),	'W',	A(230),	A('w'),	A(150),	C('W'),
/* 18 - 'e'	*/	L('e'),	'E',	A(227),	A('e'),	A(147),	C('E'),
/* 19 - 'r'	*/	L('r'),	'R',	A(170),	A('r'),	A(138),	C('R'),
/* 20 - 't'	*/	L('t'),	'T',	A(165),	A('t'),	A(133),	C('T'),
/* 21 - 'y'	*/	L('y'),	'Y',	A(173),	A('y'),	A(141),	C('Y'),
/* 22 - 'u'	*/	L('u'),	'U',	A(163),	A('u'),	A(131),	C('U'),
/* 23 - 'i'	*/	L('i'),	'I',	A(232),	A('i'),	A(152),	C('I'),
/* 24 - 'o'	*/	L('o'),	'O',	A(233),	A('o'),	A(153),	C('O'),
/* 25 - 'p'	*/	L('p'),	'P',	A(167),	A('p'),	A(135),	C('P'),
/* 26 - '['	*/	'[',	'{',	A(229),	A('['),	A(149),	C('['),
/* 27 - ']'	*/	']',	'}',	A(234),	A(']'),	A(154),	C(']'),
/* 28 - CR/LF	*/	C('M'),	C('M'),	C('M'), CA('M'), C('M') ,C('J'),
/* 29 - Ctrl	*/	CTRL,	CTRL,	CTRL,	CTRL,	CTRL,	CTRL,
/* 30 - 'a'	*/	L('a'),	'A',	A(228),	A('a'),	A(148),	C('A'),
/* 31 - 's'	*/	L('s'),	'S',	A(235),	A('s'),	A(155),	C('S'),
/* 32 - 'd'	*/	L('d'),	'D',	A(162),	A('d'),	A(130),	C('D'),
/* 33 - 'f'	*/	L('f'),	'F',	A(160), A('f'), A(128), C('F'),
/* 34 - 'g'	*/	L('g'),	'G',	A(175),	A('g'),	A(143),	C('G'),
/* 35 - 'h'	*/	L('h'),	'H',	A(224),	A('h'),	A(144),	C('H'),
/* 36 - 'j'	*/	L('j'),	'J',	A(174),	A('j'),	A(142),	C('J'),
/* 37 - 'k'	*/	L('k'),	'K',	A(171),	A('k'),	A(139),	C('K'),
/* 38 - 'l'	*/	L('l'),	'L',	A(164),	A('l'),	A(132),	C('L'),
/* 39 - ';'	*/	';',	':',	A(166),	A(';'),	A(134),	C('@'),
/* 40 - '\''	*/	'\'',	'"',	A(237), A('\''),A(157),	C('@'),
/* 41 - '`'	*/	'`',	'~',	A(241),	A('`'),	A(240),	C('@'),
/* 42 - l. SHIFT*/	SHIFT,	SHIFT,	SHIFT,	SHIFT,	SHIFT,	SHIFT,
/* 43 - '\\'	*/	'\\',	'|',	'\\',   A('\\'), '|',	C('\\'),
/* 44 - 'z'	*/	L('z'),	'Z',	A(239),	A('z'),	A(159),	C('Z'),
/* 45 - 'x'	*/	L('x'),	'X',	A(231),	A('x'),	A(151),	C('X'),
/* 46 - 'c'	*/	L('c'),	'C',	A(225),	A('c'),	A(145),	C('C'),
/* 47 - 'v'	*/	L('v'),	'V',	A(172),	A('v'),	A(140),	C('V'),
/* 48 - 'b'	*/	L('b'),	'B',	A(168),	A('b'),	A(136),	C('B'),
/* 49 - 'n'	*/	L('n'),	'N',	A(226),	A('n'),	A(146),	C('N'),
/* 50 - 'm'	*/	L('m'),	'M',	A(236),	A('m'),	A(156),	C('M'),
/* 51 - ','	*/	',',	'<',	A(161),	A(','),	A(129),	C('@'),
/* 52 - '.'	*/	'.',	'>',	A(238),	A('.'),	A(158),	C('@'),
/* 53 - '/'	*/	'/',	'?',	'.',	A('/'),	  ',',	C('@'),
/* 54 - r. SHIFT*/	SHIFT,	SHIFT,	SHIFT,	SHIFT,	SHIFT,	SHIFT,
/* 55 - '*'	*/	'*',	'*',	'*',	A('*'), '*',	C('@'),
/* 56 - ALT	*/	ALT,	ALT,	ALT,	ALT,	ALT,	ALT,
/* 57 - ' '	*/	' ',	' ',	' ',	A(' '),	' ',	C('@'),
/* 58 - CapsLck	*/	CALOCK,	CALOCK,	CALOCK,	CALOCK,	CALOCK,	CALOCK,
/* 59 - F1	*/	F1,	SF1,	F1,	AF1,	SF1,	CF1,
/* 60 - F2	*/	F2,	SF2,	F2,	AF2,	SF2,	CF2,
/* 61 - F3	*/	F3,	SF3,	F3,	AF3,	SF3,	CF3,
/* 62 - F4	*/	F4,	SF4,	F4,	AF4,	SF4,	CF4,
/* 63 - F5	*/	F5,	SF5,	F5,	AF5,	SF5,	CF5,
/* 64 - F6	*/	F6,	SF6,	F6,	AF6,	SF6,	CF6,
/* 65 - F7	*/	F7,	SF7,	F7,	AF7,	SF7,	CF7,
/* 66 - F8	*/	F8,	SF8,	F8,	AF8,	SF8,	CF8,
/* 67 - F9	*/	F9,	SF9,	F9,	AF9,	SF9,	CF9,
/* 68 - F10	*/	F10,	SF10,	F10,	AF10,	SF10,	CF10,
/* 69 - NumLock	*/	NLOCK,	NLOCK,	NLOCK,	NLOCK,	NLOCK,	NLOCK,
/* 70 - ScrLock */	SLOCK,	SLOCK,	SLOCK,	SLOCK,	SLOCK,	SLOCK,
/* 71 - Home	*/	HOME,	'7',	HOME,	AHOME,	'7',	CHOME,	
/* 72 - CurUp	*/	UP,	'8',	UP,	AUP,	'8',	CUP,
/* 73 - PgUp	*/	PGUP,	'9',	PGUP,	APGUP,	'9',	CPGUP,
/* 74 - '-'	*/	NMIN,	'-',	NMIN,	ANMIN,	'-',	CNMIN,
/* 75 - Left	*/	LEFT,	'4',	LEFT,	ALEFT,	'4',	CLEFT,
/* 76 - MID	*/	MID,	'5',	MID,	AMID,	'5',	CMID,
/* 77 - Right	*/	RIGHT,	'6',	RIGHT,	ARIGHT,	'6',	CRIGHT,
/* 78 - '+'	*/	PLUS,	'+',	PLUS,	APLUS,	'+',	CPLUS,
/* 79 - End	*/	END,	'1',	END,	AEND,	'1',	CEND,
/* 80 - Down	*/	DOWN,	'2',	DOWN,	ADOWN,	'2',	CDOWN,
/* 81 - PgDown	*/	PGDN,	'3',	PGDN,	APGDN,	'3',	CPGDN,
/* 82 - Insert	*/	INSRT,	'0',	INSRT,	AINSRT,	'0',	CINSRT,
/* 83 - Delete	*/	0177,	'.',	0177,   A(0177),'.',	0177,
/* 84 - Enter	*/	C('M'),	C('M'),	C('M'), CA('M'), C('M'),C('J'),
/* 85 - ???	*/	0,	0,	0,	0,	0,	0,
/* 86 - ???	*/	'<',	'>',	'<',	A('|'),	'>',	C('@'),
/* 87 - F11	*/	F11,	SF11,	F11,	AF11,	SF11,	CF11,
/* 88 - F12	*/	F12,	SF12,	F12,	AF12,	SF12,	CF12,
/* 89 - ???	*/	0,	0,	0,	0,	0,	0,
/* 90 - ???	*/	0,	0,	0,	0,	0,	0,
/* 91 - ???	*/	0,	0,	0,	0,	0,	0,
/* 92 - ???	*/	0,	0,	0,	0,	0,	0,
/* 93 - ???	*/	0,	0,	0,	0,	0,	0,
/* 94 - ???	*/	0,	0,	0,	0,	0,	0,
/* 95 - ???	*/	0,	0,	0,	0,	0,	0,
/* 96 - EXT_KEY	*/	EXTKEY,	EXTKEY,	EXTKEY,	EXTKEY,	EXTKEY,	EXTKEY,
/* 97 - ???	*/	0,	0,	0,	0,	0,	0,
/* 98 - ???	*/	0,	0,	0,	0,	0,	0,
/* 99 - ???	*/	0,	0,	0,	0,	0,	0,
/*100 - ???	*/	0,	0,	0,	0,	0,	0,
/*101 - ???	*/	0,	0,	0,	0,	0,	0,
/*102 - ???	*/	0,	0,	0,	0,	0,	0,
/*103 - ???	*/	0,	0,	0,	0,	0,	0,
/*104 - ???	*/	0,	0,	0,	0,	0,	0,
/*105 - ???	*/	0,	0,	0,	0,	0,	0,
/*106 - ???	*/	0,	0,	0,	0,	0,	0,
/*107 - ???	*/	0,	0,	0,	0,	0,	0,
/*108 - ???	*/	0,	0,	0,	0,	0,	0,
/*109 - ???	*/	0,	0,	0,	0,	0,	0,
/*110 - ???	*/	0,	0,	0,	0,	0,	0,
/*111 - ???	*/	0,	0,	0,	0,	0,	0,
/*112 - ???	*/	0,	0,	0,	0,	0,	0,
/*113 - ???	*/	0,	0,	0,	0,	0,	0,
/*114 - ???	*/	0,	0,	0,	0,	0,	0,
/*115 - ???	*/	0,	0,	0,	0,	0,	0,
/*116 - ???	*/	0,	0,	0,	0,	0,	0,
/*117 - ???	*/	0,	0,	0,	0,	0,	0,
/*118 - ???	*/	0,	0,	0,	0,	0,	0,
/*119 - ???	*/	0,	0,	0,	0,	0,	0,
/*120 - ???	*/	0,	0,	0,	0,	0,	0,
/*121 - ???	*/	0,	0,	0,	0,	0,	0,
/*122 - ???	*/	0,	0,	0,	0,	0,	0,
/*123 - ???	*/	0,	0,	0,	0,	0,	0,
/*124 - ???	*/	0,	0,	0,	0,	0,	0,
/*125 - ???	*/	0,	0,	0,	0,	0,	0,
/*126 - ???	*/	0,	0,	0,	0,	0,	0,
/*127 - ???	*/	0,	0,	0,	0,	0,	0
};
