/** @file
 *
 * "hu" keyboard mapping
 *
 * This file is automatically generated; do not edit
 *
 */

FILE_LICENCE ( PUBLIC_DOMAIN );

#include <ipxe/keymap.h>

/** "hu" basic remapping */
static struct keymap_key hu_basic[] = {
	{ 0x19, 0x1a },	/* Ctrl-Y => Ctrl-Z */
	{ 0x1a, 0x19 },	/* Ctrl-Z => Ctrl-Y */
	{ 0x1e, 0x36 },	/* 0x1e => '6' */
	{ 0x21, 0x27 },	/* '!' => '\'' */
	{ 0x23, 0x2b },	/* '#' => '+' */
	{ 0x24, 0x21 },	/* '$' => '!' */
	{ 0x26, 0x3d },	/* '&' => '=' */
	{ 0x28, 0x29 },	/* '(' => ')' */
	{ 0x2a, 0x28 },	/* '*' => '(' */
	{ 0x2f, 0x2d },	/* '/' => '-' */
	{ 0x3c, 0x3f },	/* '<' => '?' */
	{ 0x3e, 0x3a },	/* '>' => ':' */
	{ 0x3f, 0x5f },	/* '?' => '_' */
	{ 0x40, 0x22 },	/* '@' => '"' */
	{ 0x59, 0x5a },	/* 'Y' => 'Z' */
	{ 0x5a, 0x59 },	/* 'Z' => 'Y' */
	{ 0x5e, 0x2f },	/* '^' => '/' */
	{ 0x60, 0x30 },	/* '`' => '0' */
	{ 0x79, 0x7a },	/* 'y' => 'z' */
	{ 0x7a, 0x79 },	/* 'z' => 'y' */
	{ 0, 0 }
};

/** "hu" AltGr remapping */
static struct keymap_key hu_altgr[] = {
	{ 0x21, 0x7e },	/* '!' => '~' */
	{ 0x23, 0x5e },	/* '#' => '^' */
	{ 0x24, 0x7e },	/* '$' => '~' */
	{ 0x26, 0x60 },	/* '&' => '`' */
	{ 0x29, 0x7e },	/* ')' => '~' */
	{ 0x2c, 0x3b },	/* ',' => ';' */
	{ 0x2e, 0x3e },	/* '.' => '>' */
	{ 0x2f, 0x2a },	/* '/' => '*' */
	{ 0x30, 0x7e },	/* '0' => '~' */
	{ 0x31, 0x7e },	/* '1' => '~' */
	{ 0x32, 0x5e },	/* '2' => '^' */
	{ 0x33, 0x5e },	/* '3' => '^' */
	{ 0x34, 0x7e },	/* '4' => '~' */
	{ 0x37, 0x60 },	/* '7' => '`' */
	{ 0x3a, 0x24 },	/* ':' => '$' */
	{ 0x3b, 0x24 },	/* ';' => '$' */
	{ 0x3c, 0x3b },	/* '<' => ';' */
	{ 0x40, 0x5e },	/* '@' => '^' */
	{ 0x42, 0x7b },	/* 'B' => '{' */
	{ 0x43, 0x26 },	/* 'C' => '&' */
	{ 0x46, 0x5b },	/* 'F' => '[' */
	{ 0x47, 0x5d },	/* 'G' => ']' */
	{ 0x4b, 0x26 },	/* 'K' => '&' */
	{ 0x4d, 0x3c },	/* 'M' => '<' */
	{ 0x51, 0x5c },	/* 'Q' => '\\' */
	{ 0x56, 0x40 },	/* 'V' => '@' */
	{ 0x57, 0x7c },	/* 'W' => '|' */
	{ 0x58, 0x3e },	/* 'X' => '>' */
	{ 0x5a, 0x3c },	/* 'Z' => '<' */
	{ 0x62, 0x7b },	/* 'b' => '{' */
	{ 0x63, 0x26 },	/* 'c' => '&' */
	{ 0x66, 0x5b },	/* 'f' => '[' */
	{ 0x67, 0x5d },	/* 'g' => ']' */
	{ 0x6d, 0x3c },	/* 'm' => '<' */
	{ 0x6e, 0x7d },	/* 'n' => '}' */
	{ 0x71, 0x5c },	/* 'q' => '\\' */
	{ 0x76, 0x40 },	/* 'v' => '@' */
	{ 0x77, 0x7c },	/* 'w' => '|' */
	{ 0x78, 0x23 },	/* 'x' => '#' */
	{ 0x7a, 0x3e },	/* 'z' => '>' */
	{ 0x7c, 0x7e },	/* '|' => '~' */
	{ 0xdc, 0x3c },	/* Pseudo-'\\' => '<' */
	{ 0xfc, 0x3e },	/* Pseudo-'|' => '>' */
	{ 0, 0 }
};

/** "hu" keyboard map */
struct keymap hu_keymap __keymap = {
	.name = "hu",
	.basic = hu_basic,
	.altgr = hu_altgr,
};
