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

FILE_LICENCE ( PUBLIC_DOMAIN );

#include <ipxe/keymap.h>

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

/** "sg" AltGr remapping */
static struct keymap_key sg_altgr[] = {
	{ 0x22, 0x7b },	/* '"' => '{' */
	{ 0x26, 0x7c },	/* '&' => '|' */
	{ 0x27, 0x7b },	/* '\'' => '{' */
	{ 0x2b, 0x7e },	/* '+' => '~' */
	{ 0x32, 0x40 },	/* '2' => '@' */
	{ 0x33, 0x23 },	/* '3' => '#' */
	{ 0x37, 0x7c },	/* '7' => '|' */
	{ 0x3d, 0x7e },	/* '=' => '~' */
	{ 0x5c, 0x7d },	/* '\\' => '}' */
	{ 0x7b, 0x5b },	/* '{' => '[' */
	{ 0x7c, 0x7d },	/* '|' => '}' */
	{ 0x7d, 0x5d },	/* '}' => ']' */
	{ 0xfc, 0x5c },	/* Pseudo-'|' => '\\' */
	{ 0, 0 }
};

/** "sg" keyboard map */
struct keymap sg_keymap __keymap = {
	.name = "sg",
	.basic = sg_basic,
	.altgr = sg_altgr,
};
