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

FILE_LICENCE ( PUBLIC_DOMAIN );

#include <ipxe/keymap.h>

/** "de" basic remapping */
static struct keymap_key de_basic[] = {
	{ 0x19, 0x1a },	/* Ctrl-Y => Ctrl-Z */
	{ 0x1a, 0x19 },	/* Ctrl-Z => Ctrl-Y */
	{ 0x1c, 0x23 },	/* 0x1c => '#' */
	{ 0x1d, 0x1e },	/* 0x1d => 0x1e */
	{ 0x1e, 0x36 },	/* 0x1e => '6' */
	{ 0x26, 0x2f },	/* '&' => '/' */
	{ 0x28, 0x29 },	/* '(' => ')' */
	{ 0x29, 0x3d },	/* ')' => '=' */
	{ 0x2a, 0x28 },	/* '*' => '(' */
	{ 0x2b, 0x60 },	/* '+' => '`' */
	{ 0x2f, 0x2d },	/* '/' => '-' */
	{ 0x3c, 0x3b },	/* '<' => ';' */
	{ 0x3e, 0x3a },	/* '>' => ':' */
	{ 0x3f, 0x5f },	/* '?' => '_' */
	{ 0x40, 0x22 },	/* '@' => '"' */
	{ 0x59, 0x5a },	/* 'Y' => 'Z' */
	{ 0x5a, 0x59 },	/* 'Z' => 'Y' */
	{ 0x5c, 0x23 },	/* '\\' => '#' */
	{ 0x5d, 0x2b },	/* ']' => '+' */
	{ 0x5e, 0x26 },	/* '^' => '&' */
	{ 0x5f, 0x3f },	/* '_' => '?' */
	{ 0x60, 0x5e },	/* '`' => '^' */
	{ 0x79, 0x7a },	/* 'y' => 'z' */
	{ 0x7a, 0x79 },	/* 'z' => 'y' */
	{ 0x7c, 0x27 },	/* '|' => '\'' */
	{ 0x7d, 0x2a },	/* '}' => '*' */
	{ 0xdc, 0x3c },	/* Pseudo-'\\' => '<' */
	{ 0xfc, 0x3e },	/* Pseudo-'|' => '>' */
	{ 0, 0 }
};

/** "de" AltGr remapping */
static struct keymap_key de_altgr[] = {
	{ 0x26, 0x7b },	/* '&' => '{' */
	{ 0x28, 0x5d },	/* '(' => ']' */
	{ 0x29, 0x7d },	/* ')' => '}' */
	{ 0x2a, 0x5b },	/* '*' => '[' */
	{ 0x2d, 0x5c },	/* '-' => '\\' */
	{ 0x30, 0x7d },	/* '0' => '}' */
	{ 0x37, 0x7b },	/* '7' => '{' */
	{ 0x38, 0x5b },	/* '8' => '[' */
	{ 0x39, 0x5d },	/* '9' => ']' */
	{ 0x3a, 0x7e },	/* ':' => '~' */
	{ 0x3b, 0x7e },	/* ';' => '~' */
	{ 0x51, 0x40 },	/* 'Q' => '@' */
	{ 0x5d, 0x7e },	/* ']' => '~' */
	{ 0x5f, 0x5c },	/* '_' => '\\' */
	{ 0x71, 0x40 },	/* 'q' => '@' */
	{ 0x7c, 0x7e },	/* '|' => '~' */
	{ 0x7d, 0x7e },	/* '}' => '~' */
	{ 0xdc, 0x7c },	/* Pseudo-'\\' => '|' */
	{ 0, 0 }
};

/** "de" keyboard map */
struct keymap de_keymap __keymap = {
	.name = "de",
	.basic = de_basic,
	.altgr = de_altgr,
};
