+++ /dev/null
-
-/* Do not edit this file! It was automatically generated by   */
-/*    loadkeys --mktable defkeymap.map > defkeymap.c          */
-
-#include <linux/types.h>
-#include <linux/keyboard.h>
-#include <linux/kd.h>
-
-u_short plain_map[NR_KEYS] = {
-       0xf200, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106,
-       0xf107, 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf11b,
-       0xf11c, 0xf110, 0xf111, 0xf112, 0xf113, 0xf060, 0xf031, 0xf032,
-       0xf033, 0xf034, 0xf035, 0xf036, 0xf037, 0xf038, 0xf039, 0xf030,
-       0xf02d, 0xf03d, 0xf07f, 0xf114, 0xf115, 0xf116, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf009, 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74,
-       0xfb79, 0xfb75, 0xfb69, 0xfb6f, 0xfb70, 0xf05b, 0xf05d, 0xf201,
-       0xf117, 0xf118, 0xf119, 0xf307, 0xf308, 0xf309, 0xf30b, 0xf702,
-       0xf207, 0xfb61, 0xfb73, 0xfb64, 0xfb66, 0xfb67, 0xfb68, 0xfb6a,
-       0xfb6b, 0xfb6c, 0xf03b, 0xf027, 0xf05c, 0xf603, 0xf304, 0xf305,
-       0xf306, 0xf200, 0xf700, 0xf03e, 0xfb7a, 0xfb78, 0xfb63, 0xfb76,
-       0xfb62, 0xfb6e, 0xfb6d, 0xf02c, 0xf02e, 0xf02f, 0xf200, 0xf601,
-       0xf600, 0xf602, 0xf301, 0xf302, 0xf303, 0xf30e, 0xf200, 0xf703,
-       0xf020, 0xf200, 0xf200, 0xf300, 0xf310, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-};
-
-static u_short shift_map[NR_KEYS] = {
-       0xf200, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106,
-       0xf107, 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf203,
-       0xf11c, 0xf110, 0xf111, 0xf112, 0xf113, 0xf07e, 0xf021, 0xf040,
-       0xf023, 0xf024, 0xf025, 0xf05e, 0xf026, 0xf02a, 0xf028, 0xf029,
-       0xf05f, 0xf02b, 0xf07f, 0xf114, 0xf115, 0xf116, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf009, 0xfb51, 0xfb57, 0xfb45, 0xfb52, 0xfb54,
-       0xfb59, 0xfb55, 0xfb49, 0xfb4f, 0xfb50, 0xf07b, 0xf07d, 0xf201,
-       0xf117, 0xf20b, 0xf20a, 0xf307, 0xf308, 0xf309, 0xf30b, 0xf702,
-       0xf207, 0xfb41, 0xfb53, 0xfb44, 0xfb46, 0xfb47, 0xfb48, 0xfb4a,
-       0xfb4b, 0xfb4c, 0xf03a, 0xf022, 0xf07c, 0xf603, 0xf304, 0xf305,
-       0xf306, 0xf200, 0xf700, 0xf03c, 0xfb5a, 0xfb58, 0xfb43, 0xfb56,
-       0xfb42, 0xfb4e, 0xfb4d, 0xf03c, 0xf03e, 0xf03f, 0xf200, 0xf601,
-       0xf600, 0xf602, 0xf301, 0xf302, 0xf303, 0xf30e, 0xf200, 0xf703,
-       0xf020, 0xf200, 0xf200, 0xf300, 0xf310, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-};
-
-static u_short altgr_map[NR_KEYS] = {
-       0xf200, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106,
-       0xf107, 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf202,
-       0xf11c, 0xf110, 0xf111, 0xf112, 0xf113, 0xf200, 0xf200, 0xf040,
-       0xf200, 0xf024, 0xf200, 0xf200, 0xf07b, 0xf05b, 0xf05d, 0xf07d,
-       0xf05c, 0xf200, 0xf200, 0xf114, 0xf115, 0xf116, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xfb71, 0xfb77, 0xf918, 0xfb72, 0xfb74,
-       0xfb79, 0xfb75, 0xfb69, 0xfb6f, 0xfb70, 0xf200, 0xf07e, 0xf201,
-       0xf117, 0xf118, 0xf119, 0xf911, 0xf912, 0xf913, 0xf30b, 0xf702,
-       0xf207, 0xf914, 0xfb73, 0xf917, 0xf919, 0xfb67, 0xfb68, 0xfb6a,
-       0xfb6b, 0xfb6c, 0xf200, 0xf200, 0xf200, 0xf603, 0xf90e, 0xf90f,
-       0xf910, 0xf200, 0xf700, 0xf200, 0xfb7a, 0xfb78, 0xf916, 0xfb76,
-       0xf915, 0xfb6e, 0xfb6d, 0xf200, 0xf200, 0xf200, 0xf200, 0xf601,
-       0xf600, 0xf602, 0xf90b, 0xf90c, 0xf90d, 0xf30e, 0xf200, 0xf703,
-       0xf200, 0xf200, 0xf200, 0xf90a, 0xf310, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-};
-
-static u_short ctrl_map[NR_KEYS] = {
-       0xf200, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106,
-       0xf107, 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf204,
-       0xf11c, 0xf110, 0xf111, 0xf112, 0xf113, 0xf81b, 0xf200, 0xf000,
-       0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f, 0xf07f, 0xf200, 0xf200,
-       0xf01f, 0xf200, 0xf008, 0xf114, 0xf115, 0xf116, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf011, 0xf017, 0xf005, 0xf012, 0xf014,
-       0xf019, 0xf015, 0xf009, 0xf00f, 0xf010, 0xf01b, 0xf01d, 0xf201,
-       0xf117, 0xf118, 0xf119, 0xf307, 0xf308, 0xf309, 0xf30b, 0xf702,
-       0xf207, 0xf001, 0xf013, 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a,
-       0xf00b, 0xf00c, 0xf200, 0xf007, 0xf01c, 0xf603, 0xf304, 0xf305,
-       0xf306, 0xf200, 0xf700, 0xf200, 0xf01a, 0xf018, 0xf003, 0xf016,
-       0xf002, 0xf00e, 0xf00d, 0xf200, 0xf20e, 0xf07f, 0xf200, 0xf601,
-       0xf600, 0xf602, 0xf301, 0xf302, 0xf303, 0xf30e, 0xf200, 0xf703,
-       0xf000, 0xf200, 0xf200, 0xf300, 0xf310, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-};
-
-static u_short shift_ctrl_map[NR_KEYS] = {
-       0xf200, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106,
-       0xf107, 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf200,
-       0xf11c, 0xf110, 0xf111, 0xf112, 0xf113, 0xf200, 0xf200, 0xf000,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-       0xf01f, 0xf200, 0xf200, 0xf114, 0xf115, 0xf116, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf011, 0xf017, 0xf005, 0xf012, 0xf014,
-       0xf019, 0xf015, 0xf009, 0xf00f, 0xf010, 0xf200, 0xf200, 0xf201,
-       0xf117, 0xf118, 0xf119, 0xf307, 0xf308, 0xf309, 0xf30b, 0xf702,
-       0xf207, 0xf001, 0xf013, 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a,
-       0xf00b, 0xf00c, 0xf200, 0xf200, 0xf200, 0xf603, 0xf304, 0xf305,
-       0xf306, 0xf200, 0xf700, 0xf200, 0xf01a, 0xf018, 0xf003, 0xf016,
-       0xf002, 0xf00e, 0xf00d, 0xf200, 0xf200, 0xf200, 0xf200, 0xf601,
-       0xf600, 0xf602, 0xf301, 0xf302, 0xf303, 0xf30e, 0xf200, 0xf703,
-       0xf200, 0xf200, 0xf200, 0xf300, 0xf310, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-};
-
-static u_short alt_map[NR_KEYS] = {
-       0xf200, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504, 0xf505, 0xf506,
-       0xf507, 0xf508, 0xf509, 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf200,
-       0xf11c, 0xf510, 0xf511, 0xf512, 0xf513, 0xf01b, 0xf831, 0xf832,
-       0xf833, 0xf834, 0xf835, 0xf836, 0xf837, 0xf838, 0xf839, 0xf830,
-       0xf82d, 0xf83d, 0xf87f, 0xf114, 0xf115, 0xf116, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf809, 0xf871, 0xf877, 0xf865, 0xf872, 0xf874,
-       0xf879, 0xf875, 0xf869, 0xf86f, 0xf870, 0xf85b, 0xf85d, 0xf80d,
-       0xf117, 0xf118, 0xf119, 0xf907, 0xf908, 0xf909, 0xf30b, 0xf702,
-       0xf207, 0xf861, 0xf873, 0xf864, 0xf866, 0xf867, 0xf868, 0xf86a,
-       0xf86b, 0xf86c, 0xf83b, 0xf827, 0xf85c, 0xf603, 0xf904, 0xf905,
-       0xf906, 0xf200, 0xf700, 0xf200, 0xf87a, 0xf878, 0xf863, 0xf876,
-       0xf862, 0xf86e, 0xf86d, 0xf82c, 0xf82e, 0xf82f, 0xf200, 0xf210,
-       0xf600, 0xf211, 0xf901, 0xf902, 0xf903, 0xf30e, 0xf200, 0xf703,
-       0xf820, 0xf200, 0xf200, 0xf900, 0xf310, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-};
-
-static u_short ctrl_alt_map[NR_KEYS] = {
-       0xf200, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504, 0xf505, 0xf506,
-       0xf507, 0xf508, 0xf509, 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf200,
-       0xf11c, 0xf510, 0xf511, 0xf512, 0xf513, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf114, 0xf115, 0xf20c, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf811, 0xf817, 0xf805, 0xf812, 0xf814,
-       0xf819, 0xf815, 0xf809, 0xf80f, 0xf810, 0xf200, 0xf200, 0xf201,
-       0xf117, 0xf118, 0xf119, 0xf307, 0xf308, 0xf309, 0xf30b, 0xf702,
-       0xf207, 0xf801, 0xf813, 0xf804, 0xf806, 0xf807, 0xf808, 0xf80a,
-       0xf80b, 0xf80c, 0xf200, 0xf200, 0xf200, 0xf603, 0xf304, 0xf305,
-       0xf306, 0xf200, 0xf700, 0xf200, 0xf81a, 0xf818, 0xf803, 0xf816,
-       0xf802, 0xf80e, 0xf80d, 0xf200, 0xf200, 0xf200, 0xf200, 0xf601,
-       0xf600, 0xf602, 0xf301, 0xf302, 0xf303, 0xf30e, 0xf200, 0xf703,
-       0xf200, 0xf200, 0xf200, 0xf300, 0xf20c, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-       0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
-};
-
-ushort *key_maps[MAX_NR_KEYMAPS] = {
-       plain_map, shift_map, altgr_map, 0,
-       ctrl_map, shift_ctrl_map, 0, 0,
-       alt_map, 0, 0, 0,
-       ctrl_alt_map,   0
-};
-
-unsigned int keymap_count = 7;
-
-
-/*
- * Philosophy: most people do not define more strings, but they who do
- * often want quite a lot of string space. So, we statically allocate
- * the default and allocate dynamically in chunks of 512 bytes.
- */
-
-char func_buf[] = {
-       '\033', '[', '[', 'A', 0, 
-       '\033', '[', '[', 'B', 0, 
-       '\033', '[', '[', 'C', 0, 
-       '\033', '[', '[', 'D', 0, 
-       '\033', '[', '[', 'E', 0, 
-       '\033', '[', '1', '7', '~', 0, 
-       '\033', '[', '1', '8', '~', 0, 
-       '\033', '[', '1', '9', '~', 0, 
-       '\033', '[', '2', '0', '~', 0, 
-       '\033', '[', '2', '1', '~', 0, 
-       '\033', '[', '2', '3', '~', 0, 
-       '\033', '[', '2', '4', '~', 0, 
-       '\033', '[', '2', '5', '~', 0, 
-       '\033', '[', '2', '6', '~', 0, 
-       '\033', '[', '2', '8', '~', 0, 
-       '\033', '[', '2', '9', '~', 0, 
-       '\033', '[', '3', '1', '~', 0, 
-       '\033', '[', '3', '2', '~', 0, 
-       '\033', '[', '3', '3', '~', 0, 
-       '\033', '[', '3', '4', '~', 0, 
-       '\033', '[', '1', '~', 0, 
-       '\033', '[', '2', '~', 0, 
-       '\033', '[', '3', '~', 0, 
-       '\033', '[', '4', '~', 0, 
-       '\033', '[', '5', '~', 0, 
-       '\033', '[', '6', '~', 0, 
-       '\033', '[', 'M', 0, 
-       '\033', '[', 'P', 0, 
-};
-
-
-char *funcbufptr = func_buf;
-int funcbufsize = sizeof(func_buf);
-int funcbufleft = 0;          /* space left */
-
-char *func_table[MAX_NR_FUNC] = {
-       func_buf + 0,
-       func_buf + 5,
-       func_buf + 10,
-       func_buf + 15,
-       func_buf + 20,
-       func_buf + 25,
-       func_buf + 31,
-       func_buf + 37,
-       func_buf + 43,
-       func_buf + 49,
-       func_buf + 55,
-       func_buf + 61,
-       func_buf + 67,
-       func_buf + 73,
-       func_buf + 79,
-       func_buf + 85,
-       func_buf + 91,
-       func_buf + 97,
-       func_buf + 103,
-       func_buf + 109,
-       func_buf + 115,
-       func_buf + 120,
-       func_buf + 125,
-       func_buf + 130,
-       func_buf + 135,
-       func_buf + 140,
-       func_buf + 145,
-       0,
-       0,
-       func_buf + 149,
-       0,
-};
-
-struct kbdiacruc accent_table[MAX_DIACR] = {
-       {'`', 'A', 'À'},        {'`', 'a', 'à'},
-       {'\'', 'A', 'Á'},       {'\'', 'a', 'á'},
-       {'^', 'A', 'Â'},        {'^', 'a', 'â'},
-       {'~', 'A', 'Ã'},        {'~', 'a', 'ã'},
-       {'"', 'A', 'Ä'},        {'"', 'a', 'ä'},
-       {'O', 'A', 'Å'},        {'o', 'a', 'å'},
-       {'0', 'A', 'Å'},        {'0', 'a', 'å'},
-       {'A', 'A', 'Å'},        {'a', 'a', 'å'},
-       {'A', 'E', 'Æ'},        {'a', 'e', 'æ'},
-       {',', 'C', 'Ç'},        {',', 'c', 'ç'},
-       {'`', 'E', 'È'},        {'`', 'e', 'è'},
-       {'\'', 'E', 'É'},       {'\'', 'e', 'é'},
-       {'^', 'E', 'Ê'},        {'^', 'e', 'ê'},
-       {'"', 'E', 'Ë'},        {'"', 'e', 'ë'},
-       {'`', 'I', 'Ì'},        {'`', 'i', 'ì'},
-       {'\'', 'I', 'Í'},       {'\'', 'i', 'í'},
-       {'^', 'I', 'Î'},        {'^', 'i', 'î'},
-       {'"', 'I', 'Ï'},        {'"', 'i', 'ï'},
-       {'-', 'D', 'Ð'},        {'-', 'd', 'ð'},
-       {'~', 'N', 'Ñ'},        {'~', 'n', 'ñ'},
-       {'`', 'O', 'Ò'},        {'`', 'o', 'ò'},
-       {'\'', 'O', 'Ó'},       {'\'', 'o', 'ó'},
-       {'^', 'O', 'Ô'},        {'^', 'o', 'ô'},
-       {'~', 'O', 'Õ'},        {'~', 'o', 'õ'},
-       {'"', 'O', 'Ö'},        {'"', 'o', 'ö'},
-       {'/', 'O', 'Ø'},        {'/', 'o', 'ø'},
-       {'`', 'U', 'Ù'},        {'`', 'u', 'ù'},
-       {'\'', 'U', 'Ú'},       {'\'', 'u', 'ú'},
-       {'^', 'U', 'Û'},        {'^', 'u', 'û'},
-       {'"', 'U', 'Ü'},        {'"', 'u', 'ü'},
-       {'\'', 'Y', 'Ý'},       {'\'', 'y', 'ý'},
-       {'T', 'H', 'Þ'},        {'t', 'h', 'þ'},
-       {'s', 's', 'ß'},        {'"', 'y', 'ÿ'},
-       {'s', 'z', 'ß'},        {'i', 'j', 'ÿ'},
-};
-
-unsigned int accent_table_size = 68;
 
+++ /dev/null
-# Default kernel keymap. This uses 7 modifier combinations.
-keymaps 0-2,4-5,8,12
-# Change the above line into
-#      keymaps 0-2,4-6,8,12
-# in case you want the entries
-#      altgr   control keycode  83 = Boot
-#      altgr   control keycode 111 = Boot
-# below.
-#
-# In fact AltGr is used very little, and one more keymap can
-# be saved by mapping AltGr to Alt (and adapting a few entries):
-# keycode 100 = Alt
-#
-keycode   0x15 = grave         tilde
-       alt     keycode   0x15 = Escape
-       control keycode   0x15 = Meta_Escape
-keycode   0x16 = one              exclam
-       alt     keycode   0x16 = Meta_one
-keycode   0x17 = two              at               at
-       control keycode   0x17 = nul
-       shift   control keycode   0x17 = nul
-       alt     keycode   0x17 = Meta_two
-keycode   0x18 = three            numbersign
-       control keycode   0x18 = Escape
-       alt     keycode   0x18 = Meta_three
-keycode   0x19 = four             dollar           dollar
-       control keycode   0x19 = Control_backslash
-       alt     keycode   0x19 = Meta_four
-keycode   0x1a = five             percent
-       control keycode   0x1a = Control_bracketright
-       alt     keycode   0x1a = Meta_five
-keycode   0x1b = six              asciicircum
-       control keycode   0x1b = Control_asciicircum
-       alt     keycode   0x1b = Meta_six
-keycode   0x1c = seven            ampersand        braceleft
-       control keycode   0x1c = Control_underscore
-       alt     keycode   0x1c = Meta_seven
-keycode   0x1d = eight            asterisk         bracketleft
-       control keycode   0x1d = Delete
-       alt     keycode   0x1d = Meta_eight
-keycode  0x1e = nine             parenleft        bracketright
-       alt     keycode  0x1e = Meta_nine
-keycode  0x1f = zero             parenright       braceright
-       alt     keycode  0x1f = Meta_zero
-keycode  0x20 = minus            underscore       backslash
-       control keycode  0x20 = Control_underscore
-       shift   control keycode  0x20 = Control_underscore
-       alt     keycode  0x20 = Meta_minus
-keycode  0x21 = equal            plus
-       alt     keycode  0x21 = Meta_equal
-keycode  0x22 = Delete           Delete
-       control keycode  0x22 = BackSpace
-       alt     keycode  0x22 = Meta_Delete
-keycode  0x2a = Tab              Tab
-       alt     keycode  0x2a = Meta_Tab
-keycode  0x2b = q
-keycode  0x2c = w
-keycode  0x2d = e
-       altgr   keycode  0x2d = Hex_E
-keycode  0x2e = r
-keycode  0x2f = t
-keycode  0x30 = y
-keycode  0x31 = u
-keycode  0x32 = i
-keycode  0x33 = o
-keycode  0x34 = p
-keycode  0x35 = bracketleft      braceleft
-       control keycode  0x35 = Escape
-       alt     keycode  0x35 = Meta_bracketleft
-keycode  0x36 = bracketright     braceright       asciitilde
-       control keycode  0x36 = Control_bracketright
-       alt     keycode  0x36 = Meta_bracketright
-keycode  0x37 = Return
-       alt     keycode  0x37 = Meta_Control_m
-keycode  0x3f = Control
-keycode  0x41 = a
-       altgr   keycode  0x41 = Hex_A
-keycode  0x42 = s
-keycode  0x43 = d
-       altgr   keycode  0x43 = Hex_D
-keycode  0x44 = f
-       altgr   keycode  0x44 = Hex_F
-keycode  0x45 = g
-keycode  0x46 = h
-keycode  0x47 = j
-keycode  0x48 = k
-keycode  0x49 = l
-keycode  0x4a = semicolon        colon
-       alt     keycode  0x4a = Meta_semicolon
-keycode  0x4b = apostrophe       quotedbl
-       control keycode  0x4b = Control_g
-       alt     keycode  0x4b = Meta_apostrophe
-# keycode  41 = grave            asciitilde
-#      control keycode  41 = nul
-#      alt     keycode  41 = Meta_grave
-keycode  0x52 = Shift
-keycode  0x4c = backslash        bar
-       control keycode  0x4c = Control_backslash
-       alt     keycode  0x4c = Meta_backslash
-keycode  0x53 = greater        less
-keycode  0x54 = z
-keycode  0x55 = x
-keycode  0x56 = c
-       altgr   keycode  0x56 = Hex_C
-keycode  0x57 = v
-keycode  0x58 = b
-       altgr   keycode  0x58 = Hex_B
-keycode  0x59 = n
-keycode  0x5a = m
-keycode  0x5b = comma            less
-       alt     keycode  0x5b = Meta_comma
-keycode  0x5c = period           greater
-       control keycode  0x5c = Compose
-       alt     keycode  0x5c = Meta_period
-keycode  0x5d = slash            question
-       control keycode  0x5d = Delete
-       alt     keycode  0x5d = Meta_slash
-
-keycode  0x67 = Alt
-keycode  0x68 = space            space
-       control keycode  0x68 = nul
-       alt     keycode  0x68 = Meta_space
-keycode  0x40 = Caps_Lock
-keycode  0x01 = F1
-       control keycode  0x01 = F1
-       alt     keycode  0x01 = Console_1
-       control alt     keycode  0x01 = Console_1
-keycode  0x02 = F2
-       control keycode  0x02 = F2
-       alt     keycode  0x02 = Console_2
-       control alt     keycode  0x02 = Console_2
-keycode  0x03 = F3
-       control keycode  0x03 = F3
-       alt     keycode  0x03 = Console_3
-       control alt     keycode  0x03 = Console_3
-keycode  0x04 = F4
-       control keycode  0x04 = F4
-       alt     keycode  0x04 = Console_4
-       control alt     keycode  0x04 = Console_4
-keycode  0x05 = F5
-       control keycode  0x05 = F5
-       alt     keycode  0x05 = Console_5
-       control alt     keycode  0x05 = Console_5
-keycode  0x06 = F6
-       control keycode  0x06 = F6
-       alt     keycode  0x06 = Console_6
-       control alt     keycode  0x06 = Console_6
-keycode  0x07 = F7
-       control keycode  0x07 = F7
-       alt     keycode  0x07 = Console_7
-       control alt     keycode  0x07 = Console_7
-keycode  0x08 = F8
-       control keycode  0x08 = F8
-       alt     keycode  0x08 = Console_8
-       control alt     keycode  0x08 = Console_8
-keycode  0x09 = F9
-       control keycode  0x09 = F9
-       alt     keycode  0x09 = Console_9
-       control alt     keycode  0x09 = Console_9
-keycode  0x0a = F10
-       control keycode  0x0a = F10
-       alt     keycode  0x0a = Console_10
-       control alt     keycode  0x0a = Console_10
-keycode  0x0b = F11
-       control keycode  0x0b = F11
-       alt     keycode  0x0b = Console_11
-       control alt     keycode  0x0b = Console_11
-keycode  0x0c = F12
-       control keycode  0x0c = F12
-       alt     keycode  0x0c = Console_12
-       control alt     keycode  0x0c = Console_12
-keycode  0x0d = F13
-       control keycode  0x0d = F13
-       alt     keycode  0x0d = Console_13
-       control alt     keycode  0x0d = Console_13
-keycode  0x0e = F14
-       control keycode  0x0e = F14
-       alt     keycode  0x0e = Console_14
-       control alt     keycode  0x0e = Console_14
-
-keycode  0x11 = F17
-       control keycode  0x11 = F17
-       alt     keycode  0x11 = Console_17
-       control alt     keycode  0x11 = Console_17
-keycode  0x12 = F18
-       control keycode  0x12 = F18
-       alt     keycode  0x12 = Console_18
-       control alt     keycode  0x12 = Console_18
-keycode  0x13 = F19
-       control keycode  0x13 = F19
-       alt     keycode  0x13 = Console_19
-       control alt     keycode  0x13 = Console_19
-keycode  0x14 = F20
-       control keycode  0x14 = F20
-       alt     keycode  0x14 = Console_20
-       control alt     keycode  0x14 = Console_20
-
-
-keycode  0x3b = KP_7
-       alt     keycode  0x3b = Ascii_7
-       altgr   keycode  0x3b = Hex_7
-keycode  0x3c = KP_8
-       alt     keycode  0x3c = Ascii_8
-       altgr   keycode  0x3c = Hex_8
-keycode  0x3d = KP_9
-       alt     keycode  0x3d = Ascii_9
-       altgr   keycode  0x3d = Hex_9
-keycode  0x3e = KP_Subtract
-keycode  0x4e = KP_4
-       alt     keycode  0x4e = Ascii_4
-       altgr   keycode  0x4e = Hex_4
-keycode  0x4f = KP_5
-       alt     keycode  0x4f = Ascii_5
-       altgr   keycode  0x4f = Hex_5
-keycode  0x50 = KP_6
-       alt     keycode  0x50 = Ascii_6
-       altgr   keycode  0x50 = Hex_6
-keycode  0x62 = KP_1
-       alt     keycode  0x62 = Ascii_1
-       altgr   keycode  0x62 = Hex_1
-keycode  0x63 = KP_2
-       alt     keycode  0x63 = Ascii_2
-       altgr   keycode  0x63 = Hex_2
-keycode  0x64 = KP_3
-       alt     keycode  0x64 = Ascii_3
-       altgr   keycode  0x64 = Hex_3
-keycode  0x6b = KP_0
-       alt     keycode  0x6b = Ascii_0
-       altgr   keycode  0x6b = Hex_0
-keycode  0x6c = KP_Period
-#      altgr   control keycode  0x6c = Boot
-       control alt     keycode  0x6c = Boot
-keycode  0x65 = KP_Enter
-
-keycode  0x3f = Control
-
-# keycode 100 = AltGr
-
-keycode 0x23 = Find
-keycode 0x4d = Up
-keycode 0x39 = Prior
-       shift   keycode 0x39 = Scroll_Backward
-keycode 0x5f = Left
-       alt     keycode 0x5f = Decr_Console
-keycode 0x61 = Right
-       alt     keycode 0x61 = Incr_Console
-keycode 0x38 = Select
-keycode 0x60 = Down
-keycode 0x3a = Next
-       shift   keycode 0x3a = Scroll_Forward
-keycode 0x24 = Insert
-keycode 0x25 = Remove
-#      altgr   control keycode 0x25 = Boot
-       control alt     keycode 0x25 = Boot
-
-keycode 0x0f = Help      Show_Memory      Show_Registers
-       control keycode  0x0f = Show_State
-
-keycode 0x10 = Do
-
-string F1 = "\033[[A"
-string F2 = "\033[[B"
-string F3 = "\033[[C"
-string F4 = "\033[[D"
-string F5 = "\033[[E"
-string F6 = "\033[17~"
-string F7 = "\033[18~"
-string F8 = "\033[19~"
-string F9 = "\033[20~"
-string F10 = "\033[21~"
-string F11 = "\033[23~"
-string F12 = "\033[24~"
-string F13 = "\033[25~"
-string F14 = "\033[26~"
-string F15 = "\033[28~"
-string F16 = "\033[29~"
-string F17 = "\033[31~"
-string F18 = "\033[32~"
-string F19 = "\033[33~"
-string F20 = "\033[34~"
-string Find = "\033[1~"
-string Insert = "\033[2~"
-string Remove = "\033[3~"
-string Select = "\033[4~"
-string Prior = "\033[5~"
-string Next = "\033[6~"
-string Macro = "\033[M"
-string Pause = "\033[P"
-compose '`' 'A' to 'À'
-compose '`' 'a' to 'à'
-compose '\'' 'A' to 'Á'
-compose '\'' 'a' to 'á'
-compose '^' 'A' to 'Â'
-compose '^' 'a' to 'â'
-compose '~' 'A' to 'Ã'
-compose '~' 'a' to 'ã'
-compose '"' 'A' to 'Ä'
-compose '"' 'a' to 'ä'
-compose 'O' 'A' to 'Å'
-compose 'o' 'a' to 'å'
-compose '0' 'A' to 'Å'
-compose '0' 'a' to 'å'
-compose 'A' 'A' to 'Å'
-compose 'a' 'a' to 'å'
-compose 'A' 'E' to 'Æ'
-compose 'a' 'e' to 'æ'
-compose ',' 'C' to 'Ç'
-compose ',' 'c' to 'ç'
-compose '`' 'E' to 'È'
-compose '`' 'e' to 'è'
-compose '\'' 'E' to 'É'
-compose '\'' 'e' to 'é'
-compose '^' 'E' to 'Ê'
-compose '^' 'e' to 'ê'
-compose '"' 'E' to 'Ë'
-compose '"' 'e' to 'ë'
-compose '`' 'I' to 'Ì'
-compose '`' 'i' to 'ì'
-compose '\'' 'I' to 'Í'
-compose '\'' 'i' to 'í'
-compose '^' 'I' to 'Î'
-compose '^' 'i' to 'î'
-compose '"' 'I' to 'Ï'
-compose '"' 'i' to 'ï'
-compose '-' 'D' to 'Ð'
-compose '-' 'd' to 'ð'
-compose '~' 'N' to 'Ñ'
-compose '~' 'n' to 'ñ'
-compose '`' 'O' to 'Ò'
-compose '`' 'o' to 'ò'
-compose '\'' 'O' to 'Ó'
-compose '\'' 'o' to 'ó'
-compose '^' 'O' to 'Ô'
-compose '^' 'o' to 'ô'
-compose '~' 'O' to 'Õ'
-compose '~' 'o' to 'õ'
-compose '"' 'O' to 'Ö'
-compose '"' 'o' to 'ö'
-compose '/' 'O' to 'Ø'
-compose '/' 'o' to 'ø'
-compose '`' 'U' to 'Ù'
-compose '`' 'u' to 'ù'
-compose '\'' 'U' to 'Ú'
-compose '\'' 'u' to 'ú'
-compose '^' 'U' to 'Û'
-compose '^' 'u' to 'û'
-compose '"' 'U' to 'Ü'
-compose '"' 'u' to 'ü'
-compose '\'' 'Y' to 'Ý'
-compose '\'' 'y' to 'ý'
-compose 'T' 'H' to 'Þ'
-compose 't' 'h' to 'þ'
-compose 's' 's' to 'ß'
-compose '"' 'y' to 'ÿ'
-compose 's' 'z' to 'ß'
-compose 'i' 'j' to 'ÿ'
 
+++ /dev/null
-/*
- * Keyboard mappings for DEC LK201/401/501 keyboards
- *
- * 17.05.99 Michael Engel (engel@unix-ag.org)
- *
- * DEC US keyboards generate keycodes in the range 0x55 - 0xfb
- *
- * This conflicts with Linux scancode conventions which define
- * 0x00-0x7f as "normal" and 0x80-0xff as "shifted" scancodes, so we
- * have to remap the keycodes to 0x00-0x7f with the scancodeRemap
- * array. The generated scancode is simply the number of the key counted
- * from the left upper to the right lower corner of the keyboard ...
- *
- * These scancodes are then being remapped (I hope ;-)) with the
- * lk501*map[] arrays which define scancode -> Linux code mapping
- *
- * Oh man is this horrible ;-)
- *
- * Scancodes with dual labels exist for keyboards as follows:
- *
- * code:  left label          / right label
- *
- * 0x73:  LKx01, LK421        / LK443, LK444
- * 0x74:  LKx01, LK421        / LK443, LK444
- * 0x7c:  LKx01, LK421        / LK443, LK444
- * 0x8a:  LKx01, LK421        / LK443, LK444
- * 0x8b:  LKx01, LK421        / LK443, LK444
- * 0x8c:  LKx01, LK421        / LK443, LK444
- * 0x8d:  LKx01, LK421        / LK443, LK444
- * 0x8e:  LKx01, LK421        / LK443, LK444
- * 0x8f:  LKx01, LK421        / LK443, LK444
- * 0x9c:  LKx01, LK421        / LK443, LK444
- * 0xa1:  LKx01, LK421        / LK443, LK444
- * 0xa2:  LKx01, LK421        / LK443, LK444
- * 0xa3:  LKx01, LK421        / LK443, LK444
- * 0xa4:  LKx01, LK421        / LK443, LK444
- * 0xad:         LK421        / LK443, LK444
- * 0xc9:  LKx01, LK421, LK443 /        LK444
- * 0xf7:  LKx01,        LK443 /        LK444
- */
-
-unsigned char scancodeRemap[256] = {
-/* -----                                                               */
-/*  0 */ 0,            0,              0,              0,
-/* -----                                                               */
-/*  4 */ 0,            0,              0,              0,
-/* -----                                                               */
-/*  8 */ 0,            0,              0,              0,
-/* -----                                                               */
-/*  c */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 10 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 14 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 18 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 1c */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 20 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 24 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 28 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 2c */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 30 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 34 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 38 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 3c */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 40 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 44 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 48 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 4c */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 50 */ 0,            0,              0,              0,
-/* -----               ESC             F1              F2              */
-/* 54 */ 0,            0,              0x01,           0x02,
-/* ----- F3            F4              F5                              */
-/* 58 */ 0x03,         0x04,           0x05,           0,
-/* -----                                                               */
-/* 5c */ 0,            0,              0,              0,
-/* -----                                                               */
-/* 60 */ 0,            0,              0,              0,
-/* ----- F6            F7              F8              F9              */
-/* 64 */ 0x06,         0x07,           0x08,           0x09,
-/* ----- F10                                                           */
-/* 68 */ 0x0a,         0,              0,              0,
-/* -----                                                               */
-/* 6c */ 0,            0,              0,              0,
-/* -----               F11             F12             F13/PRNT SCRN   */
-/* 70 */ 0,            0x0b,           0x0c,           0x0d,
-/* ----- F14/SCRL LCK                                                  */
-/* 74 */ 0x0e,         0,              0,              0,
-/* -----                                                               */
-/* 78 */ 0,            0,              0,              0,
-/* ----- HELP/PAUSE    DO                                              */
-/* 7c */ 0x0f,         0x10,           0,              0,
-/* ----- F17           F18             F19             F20             */
-/* 80 */ 0x11,         0x12,           0x13,           0x14,
-/* -----                                                               */
-/* 84 */ 0,            0,              0,              0,
-/* -----                               FIND/INSERT     INSERT/HOME     */
-/* 88 */ 0,            0,              0x23,           0x24,
-/* ----- REMOVE/PG UP  SELECT/DELETE   PREVIOUS/END    NEXT/PG DN      */
-/* 8c */ 0x25,         0x38,           0x39,           0x3a,
-/* -----                               KP 0                            */
-/* 90 */ 0,            0,              0x6b,           0,
-/* ----- KP .          KP ENTER        KP 1            KP 2            */
-/* 94 */ 0x6c,         0x65,           0x62,           0x63,
-/* ----- KP 3          KP 4            KP 5            KP 6            */
-/* 98 */ 0x64,         0x4e,           0x4f,           0x50,
-/* ----- KP ,/KP +     KP 7            KP 8            KP 9            */
-/* 9c */ 0x51,         0x3b,           0x3c,           0x3d,
-/* ----- KP -          KP F1/NUM LCK   KP F2/KP /      KP F3/KP *      */
-/* a0 */ 0x3e,         0x26,           0x27,           0x28,
-/* ----- KP F4/KP -                                    LEFT            */
-/* a4 */ 0x29,         0,              0,              0x5f,
-/* ----- RIGHT         DOWN            UP              SHIFT Rt        */
-/* a8 */ 0x61,         0x60,           0x4d,           0x5e,
-/* ----- ALT           COMP Rt/CTRL Rt SHIFT           CONTROL         */
-/* ac */ 0,            0,              0x52,           0x3f,
-/* ----- CAPS          COMPOSE         ALT Rt                          */
-/* b0 */ 0x40,         0x67,           0,              0,
-/* -----                                                               */
-/* b4 */ 0,            0,              0,              0,
-/* -----                                                               */
-/* b8 */ 0,            0,              0,              0,
-/* ----- BKSP          RET             TAB             `               */
-/* bc */ 0x22,         0x37,           0x2a,           0x15,
-/* ----- 1             q               a               z               */
-/* c0 */ 0x16,         0x2b,           0x41,           0x54,
-/* -----               2               w               s               */
-/* c4 */ 0,            0x17,           0x2c,           0x42,
-/* ----- x             </\\                            3               */
-/* c8 */ 0x55,         0x53,           0,              0x18,
-/* ----- e             d               c                               */
-/* cc */ 0x2d,         0x43,           0x56,           0,
-/* ----- 4             r               f               v               */
-/* d0 */ 0x19,         0x2e,           0x44,           0x57,
-/* ----- SPACE                         5               t               */
-/* d4 */ 0x68,         0,              0x1a,           0x2f,
-/* ----- g             b                               6               */
-/* d8 */ 0x45,         0x58,           0,              0x1b,
-/* ----- y             h               n                               */
-/* dc */ 0x30,         0x46,           0x59,           0,
-/* ----- 7             u               j               m               */
-/* e0 */ 0x1c,         0x31,           0x47,           0x5a,
-/* -----               8               i               k               */
-/* e4 */ 0,            0x1d,           0x32,           0x48,
-/* ----- ,                             9               o               */
-/* e8 */ 0x5b,         0,              0x1e,           0x33,
-/* ----- l             .                               0               */
-/* ec */ 0x49,         0x5c,           0,              0x1f,
-/* ----- p                             ;               /               */
-/* f0 */ 0x34,         0,              0x4a,           0x5d,
-/* -----               =               ]               \\/\'           */
-/* f4 */ 0,            0x21,           0x36,           0x4c,
-/* -----               -               [               \'              */
-/* f8 */ 0,            0x20,           0x35,           0x4b,
-/* -----                                                               */
-/* fc */ 0,            0,              0,              0,
-};
-
 
+++ /dev/null
-/*
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 1999-2002 Harald Koerfgen <hkoerfg@web.de>
- * Copyright (C) 2001, 2002, 2003, 2004  Maciej W. Rozycki
- */
-
-
-#include <linux/errno.h>
-#include <linux/tty.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/kbd_ll.h>
-#include <linux/kbd_kern.h>
-#include <linux/vt_kern.h>
-
-#include <asm/keyboard.h>
-#include <asm/dec/tc.h>
-#include <asm/dec/machtype.h>
-#include <asm/dec/serial.h>
-
-#include "lk201.h"
-
-/*
- * Only handle DECstations that have an LK201 interface.
- * Maxine uses LK501 at the Access.Bus and various DECsystems
- * have no keyboard interface at all.
- */
-#define LK_IFACE       (mips_machtype == MACH_DS23100    || \
-                        mips_machtype == MACH_DS5000_200 || \
-                        mips_machtype == MACH_DS5000_1XX || \
-                        mips_machtype == MACH_DS5000_2X0)
-/*
- * These use the Z8530 SCC.  Others use the DZ11.
- */
-#define LK_IFACE_ZS    (mips_machtype == MACH_DS5000_1XX || \
-                        mips_machtype == MACH_DS5000_2X0)
-
-/* Simple translation table for the SysRq keys */
-
-#ifdef CONFIG_MAGIC_SYSRQ
-/*
- * Actually no translation at all, at least until we figure out
- * how to define SysRq for LK201 and friends. --macro
- */
-unsigned char lk201_sysrq_xlate[128];
-unsigned char *kbd_sysrq_xlate = lk201_sysrq_xlate;
-
-unsigned char kbd_sysrq_key = -1;
-#endif
-
-#define KEYB_LINE      3
-
-static int __init lk201_init(void *);
-static void __init lk201_info(void *);
-static void lk201_rx_char(unsigned char, unsigned char);
-
-static struct dec_serial_hook lk201_hook = {
-       .init_channel   = lk201_init,
-       .init_info      = lk201_info,
-       .rx_char        = NULL,
-       .poll_rx_char   = NULL,
-       .poll_tx_char   = NULL,
-       .cflags         = B4800 | CS8 | CSTOPB | CLOCAL,
-};
-
-/*
- * This is used during keyboard initialisation
- */
-static unsigned char lk201_reset_string[] = {
-       LK_CMD_SET_DEFAULTS,
-       LK_CMD_MODE(LK_MODE_RPT_DOWN, 1),
-       LK_CMD_MODE(LK_MODE_RPT_DOWN, 2),
-       LK_CMD_MODE(LK_MODE_RPT_DOWN, 3),
-       LK_CMD_MODE(LK_MODE_RPT_DOWN, 4),
-       LK_CMD_MODE(LK_MODE_DOWN_UP, 5),
-       LK_CMD_MODE(LK_MODE_DOWN_UP, 6),
-       LK_CMD_MODE(LK_MODE_RPT_DOWN, 7),
-       LK_CMD_MODE(LK_MODE_RPT_DOWN, 8),
-       LK_CMD_MODE(LK_MODE_RPT_DOWN, 9),
-       LK_CMD_MODE(LK_MODE_RPT_DOWN, 10),
-       LK_CMD_MODE(LK_MODE_RPT_DOWN, 11),
-       LK_CMD_MODE(LK_MODE_RPT_DOWN, 12),
-       LK_CMD_MODE(LK_MODE_DOWN, 13),
-       LK_CMD_MODE(LK_MODE_RPT_DOWN, 14),
-       LK_CMD_DIS_KEYCLK,
-       LK_CMD_ENB_BELL, LK_PARAM_VOLUME(4),
-};
-
-static void *lk201_handle;
-
-static int lk201_send(unsigned char ch)
-{
-       if (lk201_hook.poll_tx_char(lk201_handle, ch)) {
-               printk(KERN_ERR "lk201: transmit timeout\n");
-               return -EIO;
-       }
-       return 0;
-}
-
-static inline int lk201_get_id(void)
-{
-       return lk201_send(LK_CMD_REQ_ID);
-}
-
-static int lk201_reset(void)
-{
-       int i, r;
-
-       for (i = 0; i < sizeof(lk201_reset_string); i++) {
-               r = lk201_send(lk201_reset_string[i]);
-               if (r < 0)
-                       return r;
-       }
-       return 0;
-}
-
-static void lk201_report(unsigned char id[6])
-{
-       char *report = "lk201: keyboard attached, ";
-
-       switch (id[2]) {
-       case LK_STAT_PWRUP_OK:
-               printk(KERN_INFO "%sself-test OK\n", report);
-               break;
-       case LK_STAT_PWRUP_KDOWN:
-               /* The keyboard will resend the power-up ID
-                  after all keys are released, so we don't
-                  bother handling the error specially.  Still
-                  there may be a short-circuit inside.
-                */
-               printk(KERN_ERR "%skey down (stuck?), code: 0x%02x\n",
-                      report, id[3]);
-               break;
-       case LK_STAT_PWRUP_ERROR:
-               printk(KERN_ERR "%sself-test failure\n", report);
-               break;
-       default:
-               printk(KERN_ERR "%sunknown error: 0x%02x\n",
-                      report, id[2]);
-       }
-}
-
-static void lk201_id(unsigned char id[6])
-{
-       /*
-        * Report whether there is an LK201 or an LK401
-        * The LK401 has ALT keys...
-        */
-       switch (id[4]) {
-       case 1:
-               printk(KERN_INFO "lk201: LK201 detected\n");
-               break;
-       case 2:
-               printk(KERN_INFO "lk201: LK401 detected\n");
-               break;
-       case 3:
-               printk(KERN_INFO "lk201: LK443 detected\n");
-               break;
-       case 4:
-               printk(KERN_INFO "lk201: LK421 detected\n");
-               break;
-       default:
-               printk(KERN_WARNING
-                      "lk201: unknown keyboard detected, ID %d\n", id[4]);
-               printk(KERN_WARNING "lk201: ... please report to "
-                      "<linux-mips@linux-mips.org>\n");
-       }
-}
-
-#define DEFAULT_KEYB_REP_DELAY (250/5) /* [5ms] */
-#define DEFAULT_KEYB_REP_RATE  30      /* [cps] */
-
-static struct kbd_repeat kbdrate = {
-       DEFAULT_KEYB_REP_DELAY,
-       DEFAULT_KEYB_REP_RATE
-};
-
-static void parse_kbd_rate(struct kbd_repeat *r)
-{
-       if (r->delay <= 0)
-               r->delay = kbdrate.delay;
-       if (r->rate <= 0)
-               r->rate = kbdrate.rate;
-
-       if (r->delay < 5)
-               r->delay = 5;
-       if (r->delay > 630)
-               r->delay = 630;
-       if (r->rate < 12)
-               r->rate = 12;
-       if (r->rate > 127)
-               r->rate = 127;
-       if (r->rate == 125)
-               r->rate = 124;
-}
-
-static int write_kbd_rate(struct kbd_repeat *rep)
-{
-       int delay, rate;
-       int i;
-
-       delay = rep->delay / 5;
-       rate = rep->rate;
-       for (i = 0; i < 4; i++) {
-               if (lk201_hook.poll_tx_char(lk201_handle,
-                                           LK_CMD_RPT_RATE(i)))
-                       return 1;
-               if (lk201_hook.poll_tx_char(lk201_handle,
-                                           LK_PARAM_DELAY(delay)))
-                       return 1;
-               if (lk201_hook.poll_tx_char(lk201_handle,
-                                           LK_PARAM_RATE(rate)))
-                       return 1;
-       }
-       return 0;
-}
-
-static int lk201_kbd_rate(struct kbd_repeat *rep)
-{
-       if (rep == NULL)
-               return -EINVAL;
-
-       parse_kbd_rate(rep);
-
-       if (write_kbd_rate(rep)) {
-               memcpy(rep, &kbdrate, sizeof(struct kbd_repeat));
-               return -EIO;
-       }
-
-       memcpy(&kbdrate, rep, sizeof(struct kbd_repeat));
-
-       return 0;
-}
-
-static void lk201_kd_mksound(unsigned int hz, unsigned int ticks)
-{
-       if (!ticks)
-               return;
-
-       /*
-        * Can't set frequency and we "approximate"
-        * duration by volume. ;-)
-        */
-       ticks /= HZ / 32;
-       if (ticks > 7)
-               ticks = 7;
-       ticks = 7 - ticks;
-
-       if (lk201_hook.poll_tx_char(lk201_handle, LK_CMD_ENB_BELL))
-               return;
-       if (lk201_hook.poll_tx_char(lk201_handle, LK_PARAM_VOLUME(ticks)))
-               return;
-       if (lk201_hook.poll_tx_char(lk201_handle, LK_CMD_BELL))
-               return;
-}
-
-void kbd_leds(unsigned char leds)
-{
-       unsigned char l = 0;
-
-       if (!lk201_handle)              /* FIXME */
-               return;
-
-       /* FIXME -- Only Hold and Lock LEDs for now. --macro */
-       if (leds & LED_SCR)
-               l |= LK_LED_HOLD;
-       if (leds & LED_CAP)
-               l |= LK_LED_LOCK;
-
-       if (lk201_hook.poll_tx_char(lk201_handle, LK_CMD_LEDS_ON))
-               return;
-       if (lk201_hook.poll_tx_char(lk201_handle, LK_PARAM_LED_MASK(l)))
-               return;
-       if (lk201_hook.poll_tx_char(lk201_handle, LK_CMD_LEDS_OFF))
-               return;
-       if (lk201_hook.poll_tx_char(lk201_handle, LK_PARAM_LED_MASK(~l)))
-               return;
-}
-
-int kbd_setkeycode(unsigned int scancode, unsigned int keycode)
-{
-       return -EINVAL;
-}
-
-int kbd_getkeycode(unsigned int scancode)
-{
-       return -EINVAL;
-}
-
-int kbd_translate(unsigned char scancode, unsigned char *keycode,
-                 char raw_mode)
-{
-       *keycode = scancode;
-       return 1;
-}
-
-char kbd_unexpected_up(unsigned char keycode)
-{
-       return 0x80;
-}
-
-static void lk201_rx_char(unsigned char ch, unsigned char fl)
-{
-       static unsigned char id[6];
-       static int id_i;
-
-       static int shift_state = 0;
-       static int prev_scancode;
-       unsigned char c = scancodeRemap[ch];
-
-       if (fl != TTY_NORMAL && fl != TTY_OVERRUN) {
-               printk(KERN_ERR "lk201: keyboard receive error: 0x%02x\n", fl);
-               return;
-       }
-
-       /* Assume this is a power-up ID. */
-       if (ch == LK_STAT_PWRUP_ID && !id_i) {
-               id[id_i++] = ch;
-               return;
-       }
-
-       /* Handle the power-up sequence. */
-       if (id_i) {
-               id[id_i++] = ch;
-               if (id_i == 4) {
-                       /* OK, the power-up concluded. */
-                       lk201_report(id);
-                       if (id[2] == LK_STAT_PWRUP_OK)
-                               lk201_get_id();
-                       else {
-                               id_i = 0;
-                               printk(KERN_ERR "lk201: keyboard power-up "
-                                      "error, skipping initialization\n");
-                       }
-               } else if (id_i == 6) {
-                       /* We got the ID; report it and start operation. */
-                       id_i = 0;
-                       lk201_id(id);
-                       lk201_reset();
-               }
-               return;
-       }
-
-       /* Everything else is a scancode/status response. */
-       id_i = 0;
-       switch (ch) {
-       case LK_STAT_RESUME_ERR:
-       case LK_STAT_ERROR:
-       case LK_STAT_INHIBIT_ACK:
-       case LK_STAT_TEST_ACK:
-       case LK_STAT_MODE_KEYDOWN:
-       case LK_STAT_MODE_ACK:
-               break;
-       case LK_KEY_LOCK:
-               shift_state ^= LK_LOCK;
-               handle_scancode(c, (shift_state & LK_LOCK) ? 1 : 0);
-               break;
-       case LK_KEY_SHIFT:
-               shift_state ^= LK_SHIFT;
-               handle_scancode(c, (shift_state & LK_SHIFT) ? 1 : 0);
-               break;
-       case LK_KEY_CTRL:
-               shift_state ^= LK_CTRL;
-               handle_scancode(c, (shift_state & LK_CTRL) ? 1 : 0);
-               break;
-       case LK_KEY_COMP:
-               shift_state ^= LK_COMP;
-               handle_scancode(c, (shift_state & LK_COMP) ? 1 : 0);
-               break;
-       case LK_KEY_RELEASE:
-               if (shift_state & LK_SHIFT)
-                       handle_scancode(scancodeRemap[LK_KEY_SHIFT], 0);
-               if (shift_state & LK_CTRL)
-                       handle_scancode(scancodeRemap[LK_KEY_CTRL], 0);
-               if (shift_state & LK_COMP)
-                       handle_scancode(scancodeRemap[LK_KEY_COMP], 0);
-               if (shift_state & LK_LOCK)
-                       handle_scancode(scancodeRemap[LK_KEY_LOCK], 0);
-               shift_state = 0;
-               break;
-       case LK_KEY_REPEAT:
-               handle_scancode(prev_scancode, 1);
-               break;
-       default:
-               prev_scancode = c;
-               handle_scancode(c, 1);
-               break;
-       }
-       tasklet_schedule(&keyboard_tasklet);
-}
-
-static void __init lk201_info(void *handle)
-{
-}
-
-static int __init lk201_init(void *handle)
-{
-       /* First install handlers. */
-       lk201_handle = handle;
-       kbd_rate = lk201_kbd_rate;
-       kd_mksound = lk201_kd_mksound;
-
-       lk201_hook.rx_char = lk201_rx_char;
-
-       /* Then just issue a reset -- the handlers will do the rest. */
-       lk201_send(LK_CMD_POWER_UP);
-
-       return 0;
-}
-
-void __init kbd_init_hw(void)
-{
-       /* Maxine uses LK501 at the Access.Bus. */
-       if (!LK_IFACE)
-               return;
-
-       printk(KERN_INFO "lk201: DECstation LK keyboard driver v0.05.\n");
-
-       if (LK_IFACE_ZS) {
-               /*
-                * kbd_init_hw() is being called before
-                * rs_init() so just register the kbd hook
-                * and let zs_init do the rest :-)
-                */
-               if (!register_dec_serial_hook(KEYB_LINE, &lk201_hook))
-                       unregister_dec_serial_hook(KEYB_LINE);
-       } else {
-               /*
-                * TODO: modify dz.c to allow similar hooks
-                * for LK201 handling on DS2100, DS3100, and DS5000/200
-                */
-               printk(KERN_ERR "lk201: support for DZ11 not yet ready.\n");
-       }
-}