diff options
Diffstat (limited to 'drivers/tc')
-rw-r--r-- | drivers/tc/.gitignore | 1 | ||||
-rw-r--r-- | drivers/tc/Makefile | 15 | ||||
-rw-r--r-- | drivers/tc/lk201-map.c_shipped | 265 | ||||
-rw-r--r-- | drivers/tc/lk201-map.map | 356 | ||||
-rw-r--r-- | drivers/tc/lk201-remap.c | 172 | ||||
-rw-r--r-- | drivers/tc/lk201.c | 439 | ||||
-rw-r--r-- | drivers/tc/lk201.h | 125 |
7 files changed, 0 insertions, 1373 deletions
diff --git a/drivers/tc/.gitignore b/drivers/tc/.gitignore deleted file mode 100644 index acc0e1e..0000000 --- a/drivers/tc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -lk201-map.c diff --git a/drivers/tc/Makefile b/drivers/tc/Makefile index c899246..623b210 100644 --- a/drivers/tc/Makefile +++ b/drivers/tc/Makefile @@ -5,18 +5,3 @@ # Object file lists. obj-$(CONFIG_TC) += tc.o tc-driver.o -obj-$(CONFIG_VT) += lk201.o lk201-map.o lk201-remap.o - -$(obj)/lk201-map.o: $(obj)/lk201-map.c - -# Uncomment if you're changing the keymap and have an appropriate -# loadkeys version for the map. By default, we'll use the shipped -# versions. -# GENERATE_KEYMAP := 1 - -ifdef GENERATE_KEYMAP - -$(obj)/lk201-map.c: $(obj)/%.c: $(src)/%.map - loadkeys --mktable $< > $@ - -endif diff --git a/drivers/tc/lk201-map.c_shipped b/drivers/tc/lk201-map.c_shipped deleted file mode 100644 index 4d2aba5..0000000 --- a/drivers/tc/lk201-map.c_shipped +++ /dev/null @@ -1,265 +0,0 @@ - -/* 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; diff --git a/drivers/tc/lk201-map.map b/drivers/tc/lk201-map.map deleted file mode 100644 index 2c636b4..0000000 --- a/drivers/tc/lk201-map.map +++ /dev/null @@ -1,356 +0,0 @@ -# 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 'ÿ' diff --git a/drivers/tc/lk201-remap.c b/drivers/tc/lk201-remap.c deleted file mode 100644 index d39098c..0000000 --- a/drivers/tc/lk201-remap.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * 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, -}; - diff --git a/drivers/tc/lk201.c b/drivers/tc/lk201.c deleted file mode 100644 index a90c255..0000000 --- a/drivers/tc/lk201.c +++ /dev/null @@ -1,439 +0,0 @@ -/* - * - * 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"); - } -} diff --git a/drivers/tc/lk201.h b/drivers/tc/lk201.h deleted file mode 100644 index 99f3203..0000000 --- a/drivers/tc/lk201.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Commands to the keyboard processor - */ - -#define LK_PARAM 0x80 /* start/end parameter list */ - -#define LK_CMD_RESUME 0x8b /* resume transmission to the host */ -#define LK_CMD_INHIBIT 0x89 /* stop transmission to the host */ -#define LK_CMD_LEDS_ON 0x13 /* light LEDs */ - /* 1st param: led bitmask */ -#define LK_CMD_LEDS_OFF 0x11 /* turn off LEDs */ - /* 1st param: led bitmask */ -#define LK_CMD_DIS_KEYCLK 0x99 /* disable the keyclick */ -#define LK_CMD_ENB_KEYCLK 0x1b /* enable the keyclick */ - /* 1st param: volume */ -#define LK_CMD_DIS_CTLCLK 0xb9 /* disable the Ctrl keyclick */ -#define LK_CMD_ENB_CTLCLK 0xbb /* enable the Ctrl keyclick */ -#define LK_CMD_SOUND_CLK 0x9f /* emit a keyclick */ -#define LK_CMD_DIS_BELL 0xa1 /* disable the bell */ -#define LK_CMD_ENB_BELL 0x23 /* enable the bell */ - /* 1st param: volume */ -#define LK_CMD_BELL 0xa7 /* emit a bell */ -#define LK_CMD_TMP_NORPT 0xd1 /* disable typematic */ - /* for the currently pressed key */ -#define LK_CMD_ENB_RPT 0xe3 /* enable typematic */ - /* for RPT_DOWN groups */ -#define LK_CMD_DIS_RPT 0xe1 /* disable typematic */ - /* for RPT_DOWN groups */ -#define LK_CMD_RPT_TO_DOWN 0xd9 /* set RPT_DOWN groups to DOWN */ -#define LK_CMD_REQ_ID 0xab /* request the keyboard ID */ -#define LK_CMD_POWER_UP 0xfd /* init power-up sequence */ -#define LK_CMD_TEST_MODE 0xcb /* enter the factory test mode */ -#define LK_CMD_TEST_EXIT 0x80 /* exit the factory test mode */ -#define LK_CMD_SET_DEFAULTS 0xd3 /* set power-up defaults */ - -#define LK_CMD_MODE(m,div) (LK_PARAM|(((div)&0xf)<<3)|(((m)&0x3)<<1)) - /* select the repeat mode */ - /* for the selected key group */ -#define LK_CMD_MODE_AR(m,div) ((((div)&0xf)<<3)|(((m)&0x3)<<1)) - /* select the repeat mode */ - /* and the repeat register */ - /* for the selected key group */ - /* 1st param: register number */ -#define LK_CMD_RPT_RATE(r) (0x78|(((r)&0x3)<<1)) - /* set the delay and repeat rate */ - /* for the selected repeat register */ - /* 1st param: initial delay */ - /* 2nd param: repeat rate */ - -/* there are 4 leds, represent them in the low 4 bits of a byte */ -#define LK_PARAM_LED_MASK(ledbmap) (LK_PARAM|((ledbmap)&0xf)) -#define LK_LED_WAIT 0x1 /* Wait LED */ -#define LK_LED_COMP 0x2 /* Compose LED */ -#define LK_LED_LOCK 0x4 /* Lock LED */ -#define LK_LED_HOLD 0x8 /* Hold Screen LED */ - -/* max volume is 0, lowest is 0x7 */ -#define LK_PARAM_VOLUME(v) (LK_PARAM|((v)&0x7)) - -/* mode set command details, div is a key group number */ -#define LK_MODE_DOWN 0x0 /* make only */ -#define LK_MODE_RPT_DOWN 0x1 /* make and typematic */ -#define LK_MODE_DOWN_UP 0x3 /* make and release */ - -/* there are 4 repeat registers */ -#define LK_PARAM_AR(r) (LK_PARAM|((v)&0x3)) - -/* - * Mappings between key groups and keycodes are as follows: - * - * 1: 0xbf - 0xff -- alphanumeric, - * 2: 0x91 - 0xa5 -- numeric keypad, - * 3: 0xbc -- Backspace, - * 4: 0xbd - 0xbe -- Tab, Return, - * 5: 0xb0 - 0xb2 -- Lock, Compose Character, - * 6: 0xad - 0xaf -- Ctrl, Shift, - * 7: 0xa6 - 0xa8 -- Left Arrow, Right Arrow, - * 8: 0xa9 - 0xac -- Up Arrow, Down Arrow, Right Shift, - * 9: 0x88 - 0x90 -- editor keypad, - * 10: 0x56 - 0x62 -- F1 - F5, - * 11: 0x63 - 0x6e -- F6 - F10, - * 12: 0x6f - 0x7a -- F11 - F14, - * 13: 0x7b - 0x7d -- Help, Do, - * 14: 0x7e - 0x87 -- F17 - F20. - * - * Notes: - * 1. Codes in the 0x00 - 0x40 range are reserved. - * 2. The assignment of the 0x41 - 0x55 range is undiscovered, probably 10. - */ - -/* delay is 5 - 630 ms; 0x00 and 0x7f are reserved */ -#define LK_PARAM_DELAY(t) ((t)&0x7f) - -/* rate is 12 - 127 Hz; 0x00 - 0x0b and 0x7d (power-up!) are reserved */ -#define LK_PARAM_RATE(r) (LK_PARAM|((r)&0x7f)) - -#define LK_SHIFT 1<<0 -#define LK_CTRL 1<<1 -#define LK_LOCK 1<<2 -#define LK_COMP 1<<3 - -#define LK_KEY_SHIFT 0xae -#define LK_KEY_CTRL 0xaf -#define LK_KEY_LOCK 0xb0 -#define LK_KEY_COMP 0xb1 - -#define LK_KEY_RELEASE 0xb3 /* all keys released */ -#define LK_KEY_REPEAT 0xb4 /* repeat the last key */ - -/* status responses */ -#define LK_STAT_RESUME_ERR 0xb5 /* keystrokes lost while inhibited */ -#define LK_STAT_ERROR 0xb6 /* an invalid command received */ -#define LK_STAT_INHIBIT_ACK 0xb7 /* transmission inhibited */ -#define LK_STAT_TEST_ACK 0xb8 /* the factory test mode entered */ -#define LK_STAT_MODE_KEYDOWN 0xb9 /* a key is down on a change */ - /* to the DOWN_UP mode; */ - /* the keycode follows */ -#define LK_STAT_MODE_ACK 0xba /* the mode command succeeded */ - -#define LK_STAT_PWRUP_ID 0x01 /* the power-up response start mark */ -#define LK_STAT_PWRUP_OK 0x00 /* the power-up self test OK */ -#define LK_STAT_PWRUP_KDOWN 0x3d /* a key was down during the test */ -#define LK_STAT_PWRUP_ERROR 0x3e /* keyboard self test failure */ - -extern unsigned char scancodeRemap[256]; |