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

FILE_LICENCE ( PUBLIC_DOMAIN );

#include <ipxe/keymap.h>

/** "es" basic remapping */
static struct keymap_key es_basic[] = {
	{ 0x1c, 0x1d },	/* 0x1c => 0x1d */
	{ 0x1e, 0x36 },	/* 0x1e => '6' */
	{ 0x26, 0x2f },	/* '&' => '/' */
	{ 0x28, 0x29 },	/* '(' => ')' */
	{ 0x29, 0x3d },	/* ')' => '=' */
	{ 0x2a, 0x28 },	/* '*' => '(' */
	{ 0x2d, 0x27 },	/* '-' => '\'' */
	{ 0x2f, 0x2d },	/* '/' => '-' */
	{ 0x3c, 0x3b },	/* '<' => ';' */
	{ 0x3e, 0x3a },	/* '>' => ':' */
	{ 0x3f, 0x5f },	/* '?' => '_' */
	{ 0x40, 0x22 },	/* '@' => '"' */
	{ 0x5b, 0x60 },	/* '[' => '`' */
	{ 0x5d, 0x2b },	/* ']' => '+' */
	{ 0x5e, 0x26 },	/* '^' => '&' */
	{ 0x5f, 0x3f },	/* '_' => '?' */
	{ 0x7b, 0x5e },	/* '{' => '^' */
	{ 0x7d, 0x2a },	/* '}' => '*' */
	{ 0xdc, 0x3c },	/* Pseudo-'\\' => '<' */
	{ 0xfc, 0x3e },	/* Pseudo-'|' => '>' */
	{ 0, 0 }
};

/** "es" AltGr remapping */
static struct keymap_key es_altgr[] = {
	{ 0x21, 0x7c },	/* '!' => '|' */
	{ 0x22, 0x7b },	/* '"' => '{' */
	{ 0x26, 0x7b },	/* '&' => '{' */
	{ 0x27, 0x7b },	/* '\'' => '{' */
	{ 0x28, 0x5d },	/* '(' => ']' */
	{ 0x29, 0x7d },	/* ')' => '}' */
	{ 0x2a, 0x5b },	/* '*' => '[' */
	{ 0x2b, 0x7e },	/* '+' => '~' */
	{ 0x2d, 0x5c },	/* '-' => '\\' */
	{ 0x30, 0x7d },	/* '0' => '}' */
	{ 0x31, 0x7c },	/* '1' => '|' */
	{ 0x32, 0x40 },	/* '2' => '@' */
	{ 0x33, 0x23 },	/* '3' => '#' */
	{ 0x34, 0x7e },	/* '4' => '~' */
	{ 0x37, 0x7b },	/* '7' => '{' */
	{ 0x38, 0x5b },	/* '8' => '[' */
	{ 0x39, 0x5d },	/* '9' => ']' */
	{ 0x3a, 0x7e },	/* ':' => '~' */
	{ 0x3b, 0x7e },	/* ';' => '~' */
	{ 0x3d, 0x7e },	/* '=' => '~' */
	{ 0x51, 0x40 },	/* 'Q' => '@' */
	{ 0x5c, 0x7d },	/* '\\' => '}' */
	{ 0x5f, 0x5c },	/* '_' => '\\' */
	{ 0x60, 0x5c },	/* '`' => '\\' */
	{ 0x71, 0x40 },	/* 'q' => '@' */
	{ 0x7b, 0x5b },	/* '{' => '[' */
	{ 0x7c, 0x7e },	/* '|' => '~' */
	{ 0x7e, 0x5c },	/* '~' => '\\' */
	{ 0xdc, 0x7c },	/* Pseudo-'\\' => '|' */
	{ 0, 0 }
};

/** "es" keyboard map */
struct keymap es_keymap __keymap = {
	.name = "es",
	.basic = es_basic,
	.altgr = es_altgr,
};
