This is part 13/26 of patchset for add support NEC PC-9800 architecture,
against 2.5.43.
Summary:
console keyboard modules
- adapted to PC-9800 hardware spec.
- add jis-x201("kana") support.
diffstat:
drivers/char/defkeymap_pc9800.c | 285 ++++++++++++++++++++++++
drivers/char/defkeymap_pc9800.map | 439 ++++++++++++++++++++++++++++++++++++++
drivers/char/keyboard.c | 79 ++++++
include/linux/kbd_kern.h | 11
include/linux/keyboard.h | 4
include/linux/logibusmouse.h | 30 ++
include/linux/pc_keyb.h | 18 +
7 files changed, 865 insertions(+), 1 deletion(-)
patch:
diff -urN linux/drivers/char/defkeymap_pc9800.c linux98/drivers/char/defkeymap_pc9800.c
--- linux/drivers/char/defkeymap_pc9800.c Thu Jan 1 09:00:00 1970
+++ linux98/drivers/char/defkeymap_pc9800.c Mon Sep 16 10:47:44 2002
@@ -0,0 +1,285 @@
+
+/* Do not edit this file! It was automatically generated by */
+/* loadkeys --mktable defkeymap_pc9800.map > defkeymap_pc9800.c */
+
+#include <linux/config.h>
+#include <linux/types.h>
+#include <linux/keyboard.h>
+#include <linux/kd.h>
+
+u_short plain_map[NR_KEYS] = {
+ 0xf01b, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
+ 0xf038, 0xf039, 0xf030, 0xf02d, 0xf05e, 0xf05c, 0xf07f, 0xf009,
+ 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
+ 0xfb6f, 0xfb70, 0xf040, 0xf05b, 0xf201, 0xfb61, 0xfb73, 0xfb64,
+ 0xfb66, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf03b, 0xf03a,
+ 0xf05d, 0xfb7a, 0xfb78, 0xfb63, 0xfb76, 0xfb62, 0xfb6e, 0xfb6d,
+ 0xf02c, 0xf02e, 0xf02f, 0xf05f, 0xf020, 0xf701, 0xf118, 0xf119,
+ 0xf115, 0xf116, 0xf603, 0xf601, 0xf602, 0xf600, 0xf114, 0xf117,
+ 0xf30b, 0xf30d, 0xf307, 0xf308, 0xf309, 0xf30c, 0xf304, 0xf305,
+ 0xf306, 0xf30a, 0xf301, 0xf302, 0xf303, 0xf03d, 0xf300, 0xf02c,
+ 0xf310, 0xf703, 0xfe00, 0xfe01, 0xfe02, 0xf10d, 0xf10e, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf114, 0xf200,
+ 0xf205, 0xf209, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105,
+ 0xf106, 0xf107, 0xf108, 0xf109, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf700, 0xf207, 0xf704, 0xf703, 0xf702, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+};
+
+static u_short shift_map[NR_KEYS] = {
+ 0xf01b, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027,
+ 0xf028, 0xf029, 0xf030, 0xf03d, 0xf060, 0xf07c, 0xf07f, 0xf009,
+ 0xfb51, 0xfb57, 0xfb45, 0xfb52, 0xfb54, 0xfb59, 0xfb55, 0xfb49,
+ 0xfb4f, 0xfb50, 0xf07e, 0xf07b, 0xf201, 0xfb41, 0xfb53, 0xfb44,
+ 0xfb46, 0xfb47, 0xfb48, 0xfb4a, 0xfb4b, 0xfb4c, 0xf02b, 0xf02a,
+ 0xf07d, 0xfb5a, 0xfb58, 0xfb43, 0xfb56, 0xfb42, 0xfb4e, 0xfb4d,
+ 0xf03c, 0xf03e, 0xf03f, 0xf05f, 0xf020, 0xf701, 0xf20b, 0xf20a,
+ 0xf115, 0xf116, 0xf603, 0xf601, 0xf602, 0xf600, 0xf114, 0xf117,
+ 0xf30b, 0xf30d, 0xf307, 0xf308, 0xf309, 0xf30c, 0xf304, 0xf305,
+ 0xf306, 0xf30a, 0xf301, 0xf302, 0xf303, 0xf03d, 0xf300, 0xf02c,
+ 0xf310, 0xf703, 0xfe00, 0xfe01, 0xfe02, 0xf10d, 0xf10e, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf114, 0xf200,
+ 0xf205, 0xf209, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105,
+ 0xf106, 0xf107, 0xf108, 0xf109, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf700, 0xf207, 0xf704, 0xf703, 0xf702, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+};
+
+static u_short altgr_map[NR_KEYS] = {
+ 0xf01b, 0xf200, 0xf200, 0xf200, 0xf024, 0xf200, 0xf07b, 0xf05b,
+ 0xf05d, 0xf07d, 0xf030, 0xf05c, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
+ 0xfb6f, 0xfb70, 0xf200, 0xf200, 0xf201, 0xfb61, 0xfb73, 0xfb64,
+ 0xfb66, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf200, 0xf200,
+ 0xf200, 0xfb7a, 0xfb78, 0xfb63, 0xfb76, 0xfb62, 0xfb6e, 0xfb6d,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf020, 0xf701, 0xf118, 0xf119,
+ 0xf115, 0xf116, 0xf603, 0xf601, 0xf602, 0xf600, 0xf114, 0xf117,
+ 0xf30b, 0xf30d, 0xf307, 0xf308, 0xf309, 0xf30c, 0xf304, 0xf305,
+ 0xf306, 0xf30a, 0xf301, 0xf302, 0xf303, 0xf03d, 0xf300, 0xf02c,
+ 0xf310, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf10e, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf114, 0xf200,
+ 0xf205, 0xf209, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf700, 0xf207, 0xf704, 0xf703, 0xf702, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+};
+
+static u_short ctrl_map[NR_KEYS] = {
+ 0xf01b, 0xf200, 0xf200, 0xf01b, 0xf01c, 0xf01d, 0xf01f, 0xf01f,
+ 0xf07f, 0xf200, 0xf030, 0xf01f, 0xf01e, 0xf01c, 0xf200, 0xf200,
+ 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
+ 0xf00f, 0xf010, 0xf000, 0xf01b, 0xf201, 0xf001, 0xf013, 0xf004,
+ 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200, 0xf200,
+ 0xf01d, 0xf01a, 0xf018, 0xf003, 0xf016, 0xf002, 0xf00e, 0xf00d,
+ 0xf200, 0xf200, 0xf200, 0xf01f, 0xf000, 0xf07f, 0xf118, 0xf119,
+ 0xf115, 0xf116, 0xf603, 0xf601, 0xf602, 0xf600, 0xf114, 0xf117,
+ 0xf30b, 0xf30d, 0xf307, 0xf308, 0xf309, 0xf30c, 0xf304, 0xf305,
+ 0xf306, 0xf30a, 0xf301, 0xf302, 0xf303, 0xf03d, 0xf300, 0xf02c,
+ 0xf310, 0xf703, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf114, 0xf200,
+ 0xf205, 0xf209, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105,
+ 0xf106, 0xf107, 0xf108, 0xf109, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf700, 0xf207, 0xf704, 0xf703, 0xf702, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+};
+
+static u_short altgr_ctrl_map[NR_KEYS] = {
+ 0xf01b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf030, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
+ 0xf00f, 0xf010, 0xf200, 0xf200, 0xf201, 0xf001, 0xf013, 0xf004,
+ 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200, 0xf200,
+ 0xf200, 0xf01a, 0xf018, 0xf003, 0xf016, 0xf002, 0xf00e, 0xf00d,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf020, 0xf701, 0xf118, 0xf119,
+ 0xf115, 0xf20c, 0xf603, 0xf601, 0xf602, 0xf600, 0xf114, 0xf117,
+ 0xf30b, 0xf30d, 0xf307, 0xf308, 0xf309, 0xf30c, 0xf304, 0xf305,
+ 0xf306, 0xf30a, 0xf301, 0xf302, 0xf303, 0xf03d, 0xf300, 0xf02c,
+ 0xf310, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf10e, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf114, 0xf200,
+ 0xf205, 0xf209, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf700, 0xf207, 0xf704, 0xf703, 0xf702, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+};
+
+static u_short alt_map[NR_KEYS] = {
+ 0xf01b, 0xf81b, 0xf832, 0xf833, 0xf834, 0xf835, 0xf836, 0xf837,
+ 0xf838, 0xf839, 0xf830, 0xf82d, 0xf860, 0xf85c, 0xf87f, 0xf809,
+ 0xf871, 0xf877, 0xf865, 0xf872, 0xf874, 0xf879, 0xf875, 0xf869,
+ 0xf86f, 0xf870, 0xf860, 0xf85b, 0xf80d, 0xf861, 0xf873, 0xf864,
+ 0xf866, 0xf867, 0xf868, 0xf86a, 0xf86b, 0xf86c, 0xf83b, 0xf200,
+ 0xf85d, 0xf87a, 0xf878, 0xf863, 0xf876, 0xf862, 0xf86e, 0xf86d,
+ 0xf200, 0xf200, 0xf200, 0xf82c, 0xf000, 0xf82f, 0xf118, 0xf119,
+ 0xf115, 0xf116, 0xf603, 0xf601, 0xf602, 0xf600, 0xf114, 0xf117,
+ 0xf30b, 0xf30d, 0xf907, 0xf908, 0xf909, 0xf30c, 0xf904, 0xf905,
+ 0xf906, 0xf30a, 0xf901, 0xf902, 0xf903, 0xf03d, 0xf900, 0xf02c,
+ 0xf310, 0xf703, 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf50e, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf114, 0xf200,
+ 0xf205, 0xf209, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504, 0xf505,
+ 0xf506, 0xf507, 0xf508, 0xf509, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf700, 0xf207, 0xf704, 0xf703, 0xf702, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+};
+
+static u_short ctrl_alt_map[NR_KEYS] = {
+ 0xf01b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf030, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf811, 0xf817, 0xf805, 0xf812, 0xf814, 0xf819, 0xf815, 0xf809,
+ 0xf80f, 0xf810, 0xf200, 0xf200, 0xf201, 0xf801, 0xf813, 0xf804,
+ 0xf806, 0xf807, 0xf808, 0xf80a, 0xf80b, 0xf80c, 0xf200, 0xf200,
+ 0xf200, 0xf81a, 0xf818, 0xf803, 0xf816, 0xf802, 0xf80e, 0xf80d,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf020, 0xf701, 0xf118, 0xf119,
+ 0xf115, 0xf20c, 0xf603, 0xf601, 0xf602, 0xf600, 0xf114, 0xf117,
+ 0xf30b, 0xf30d, 0xf307, 0xf308, 0xf309, 0xf30c, 0xf304, 0xf305,
+ 0xf306, 0xf30a, 0xf301, 0xf302, 0xf303, 0xf03d, 0xf300, 0xf02c,
+ 0xf310, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf10e, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf114, 0xf200,
+ 0xf205, 0xf209, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf700, 0xf207, 0xf704, 0xf703, 0xf702, 0xf200, 0xf200, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+};
+
+static u_short kana_map[NR_KEYS] = {
+ 0xf01b, 0xf0c7, 0xf0cc, 0xf0b1, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0d4,
+ 0xf0d5, 0xf0d6, 0xf0dc, 0xf0ce, 0xf0cd, 0xf0b0, 0xf008, 0xf009,
+ 0xf0c0, 0xf0c3, 0xf0b2, 0xf0bd, 0xf0b6, 0xf0dd, 0xf0c5, 0xf0c6,
+ 0xf0d7, 0xf0be, 0xf0de, 0xf0df, 0xf201, 0xf0c1, 0xf0c4, 0xf0bc,
+ 0xf0ca, 0xf0b7, 0xf0b8, 0xf0cf, 0xf0c9, 0xf0d8, 0xf0da, 0xf0b9,
+ 0xf0d1, 0xf0c2, 0xf0bb, 0xf0bf, 0xf0cb, 0xf0ba, 0xf0d0, 0xf0d3,
+ 0xf0c8, 0xf0d9, 0xf0d2, 0xf0db, 0xf020, 0xf200, 0xf20b, 0xf20a,
+ 0xf200, 0xf200, 0xf01e, 0xf01d, 0xf01c, 0xf01f, 0xf200, 0xf200,
+ 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf209, 0xf307,
+ 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
+ 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf03c, 0xf10a,
+ 0xf10b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf30e, 0xf702, 0xf501, 0xf502, 0xf701, 0xf205, 0xf114, 0xf603,
+ 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
+ 0xf700, 0xf207, 0xf704, 0xf200, 0xf702, 0xf110, 0xf311, 0xf11d,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+};
+
+static u_short shift_kana_map[NR_KEYS] = {
+ 0xf01b, 0xf0c7, 0xf0cc, 0xf0a7, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac,
+ 0xf0ad, 0xf0ae, 0xf0a6, 0xf0ce, 0xf0cd, 0xf0b0, 0xf008, 0xf009,
+ 0xf0c0, 0xf0c3, 0xf0a8, 0xf0bd, 0xf0b6, 0xf0dd, 0xf0c5, 0xf0c6,
+ 0xf0d7, 0xf0be, 0xf0de, 0xf0a2, 0xf201, 0xf0c1, 0xf0c4, 0xf0bc,
+ 0xf0ca, 0xf0b7, 0xf0b8, 0xf0cf, 0xf0c9, 0xf0d8, 0xf0da, 0xf0b9,
+ 0xf0a3, 0xf0af, 0xf0bb, 0xf0bf, 0xf0cb, 0xf0ba, 0xf0d0, 0xf0d3,
+ 0xf0a4, 0xf0a1, 0xf0a5, 0xf0db, 0xf020, 0xf200, 0xf20b, 0xf20a,
+ 0xf200, 0xf200, 0xf01e, 0xf01d, 0xf01c, 0xf01f, 0xf200, 0xf200,
+ 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf209, 0xf307,
+ 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
+ 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf03c, 0xf10a,
+ 0xf10b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf30e, 0xf702, 0xf501, 0xf502, 0xf701, 0xf205, 0xf114, 0xf603,
+ 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
+ 0xf700, 0xf207, 0xf704, 0xf200, 0xf702, 0xf110, 0xf311, 0xf11d,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
+};
+
+static u_short ctrl_kana_map[NR_KEYS] = {
+ 0xf01b, 0xf200, 0xf200, 0xf01b, 0xf01c, 0xf01d, 0xf01f, 0xf01f,
+ 0xf07f, 0xf200, 0xf030, 0xf01f, 0xf01e, 0xf01c, 0xf200, 0xf200,
+ 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
+ 0xf00f, 0xf010, 0xf000, 0xf01b, 0xf201, 0xf001, 0xf013, 0xf004,
+ 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200, 0xf200,
+ 0xf01d, 0xf01a, 0xf018, 0xf003, 0xf016, 0xf002, 0xf00e, 0xf00d,
+ 0xf200, 0xf200, 0xf200, 0xf01f, 0xf000, 0xf07f, 0xf118, 0xf119,
+ 0xf115, 0xf116, 0xf603, 0xf601, 0xf602, 0xf600, 0xf114, 0xf117,
+ 0xf30b, 0xf30d, 0xf307, 0xf308, 0xf309, 0xf30c, 0xf304, 0xf305,
+ 0xf306, 0xf30a, 0xf301, 0xf302, 0xf303, 0xf03d, 0xf300, 0xf02c,
+ 0xf310, 0xf703, 0xfe00, 0xfe01, 0xfe02, 0xf10d, 0xf10e, 0xf200,
+ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf114, 0xf200,
+ 0xf205, 0xf209, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105,
+ 0xf106, 0xf107, 0xf108, 0xf109, 0xf200, 0xf200, 0xf200, 0xf200,
+ 0xf700, 0xf207, 0xf704, 0xf703, 0xf702, 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, 0, altgr_ctrl_map, 0,
+ alt_map, 0, 0, 0,
+ ctrl_alt_map, 0, 0, 0,
+ kana_map, shift_kana_map, 0, 0,
+ ctrl_kana_map, 0
+};
+
+unsigned int keymap_count = 10;
+
+
+/*
+ * 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,
+};
+
+
+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,
+ 0,
+};
+
+struct kbdiacr accent_table[MAX_DIACR] = {
+};
+
+unsigned int accent_table_size = 0;
diff -urN linux/drivers/char/defkeymap_pc9800.map linux98/drivers/char/defkeymap_pc9800.map
--- linux/drivers/char/defkeymap_pc9800.map Thu Jan 1 09:00:00 1970
+++ linux98/drivers/char/defkeymap_pc9800.map Mon Sep 16 11:26:41 2002
@@ -0,0 +1,439 @@
+charset "jis-x-0201"
+keymaps 0-2,4,6,8,12,16-17,20
+keycode 0 = Escape
+keycode 1 = one exclam
+ alt keycode 1 = Meta_Escape
+ kana keycode 1 = kana_nu
+ shift kana keycode 1 = kana_nu
+keycode 2 = two quotedbl
+ alt keycode 2 = Meta_two
+ kana keycode 2 = kana_fu
+ shift kana keycode 2 = kana_fu
+keycode 3 = three numbersign
+ control keycode 3 = Escape
+ alt keycode 3 = Meta_three
+ kana keycode 3 = kana_a
+ shift kana keycode 3 = kana_small_a
+ control kana keycode 3 = Escape
+keycode 4 = four dollar dollar Control_backslash
+ alt keycode 4 = Meta_four
+ kana keycode 4 = kana_u
+ shift kana keycode 4 = kana_small_u
+ control kana keycode 4 = Control_backslash
+keycode 5 = five percent
+ control keycode 5 = Control_bracketright
+ alt keycode 5 = Meta_five
+ kana keycode 5 = kana_e
+ shift kana keycode 5 = kana_small_e
+ control kana keycode 5 = Control_bracketright
+keycode 6 = six ampersand braceleft Control_underscore
+ alt keycode 6 = Meta_six
+ kana keycode 6 = kana_o
+ shift kana keycode 6 = kana_small_o
+ control kana keycode 6 = Control_underscore
+keycode 7 = seven apostrophe bracketleft Control_underscore
+ alt keycode 7 = Meta_seven
+ kana keycode 7 = kana_ya
+ shift kana keycode 7 = kana_small_ya
+ control kana keycode 7 = Control_underscore
+keycode 8 = eight parenleft bracketright Delete
+ alt keycode 8 = Meta_eight
+ kana keycode 8 = kana_yu
+ shift kana keycode 8 = kana_small_yu
+ control kana keycode 8 = Delete
+keycode 9 = nine parenright braceright
+ alt keycode 9 = Meta_nine
+ kana keycode 9 = kana_yo
+ shift kana keycode 9 = kana_small_yo
+keycode 10 = zero
+ alt keycode 10 = Meta_zero
+ kana keycode 10 = kana_wa
+ shift kana keycode 10 = kana_wo
+keycode 11 = minus equal backslash Control_underscore
+ alt keycode 11 = Meta_minus
+ kana keycode 11 = kana_ho
+ shift kana keycode 11 = kana_ho
+ control kana keycode 11 = Control_underscore
+keycode 12 = asciicircum grave
+ control keycode 12 = Control_asciicircum
+ alt keycode 12 = Meta_grave
+ kana keycode 12 = kana_he
+ shift kana keycode 12 = kana_he
+ control kana keycode 12 = Control_asciicircum
+keycode 13 = backslash bar
+ control keycode 13 = Control_backslash
+ alt keycode 13 = Meta_backslash
+ kana keycode 13 = choonkigou
+ shift kana keycode 13 = choonkigou
+ control kana keycode 13 = Control_backslash
+keycode 14 = Delete Delete
+ alt keycode 14 = Meta_Delete
+ kana keycode 14 = BackSpace
+ shift kana keycode 14 = BackSpace
+keycode 15 = Tab Tab
+ alt keycode 15 = Meta_Tab
+ kana keycode 15 = Tab
+ shift kana keycode 15 = Tab
+keycode 16 = +q +Q +q Control_q Control_q Meta_q Meta_Control_q kana_ta kana_ta Control_q
+keycode 17 = +w +W +w Control_w Control_w Meta_w Meta_Control_w kana_te kana_te Control_w
+keycode 18 = +e +E +e Control_e Control_e Meta_e Meta_Control_e kana_i kana_small_i Control_e
+keycode 19 = +r +R +r Control_r Control_r Meta_r Meta_Control_r kana_su kana_su Control_r
+keycode 20 = +t +T +t Control_t Control_t Meta_t Meta_Control_t kana_ka kana_ka Control_t
+keycode 21 = +y +Y +y Control_y Control_y Meta_y Meta_Control_y kana_n kana_n Control_y
+keycode 22 = +u +U +u Control_u Control_u Meta_u Meta_Control_u kana_na kana_na Control_u
+keycode 23 = +i +I +i Tab Tab Meta_i Meta_Tab kana_ni kana_ni Tab
+keycode 24 = +o +O +o Control_o Control_o Meta_o Meta_Control_o kana_ra kana_ra Control_o
+keycode 25 = +p +P +p Control_p Control_p Meta_p Meta_Control_p kana_se kana_se Control_p
+keycode 26 = at asciitilde
+ control keycode 26 = nul
+ alt keycode 26 = Meta_grave
+ kana keycode 26 = dakuten
+ shift kana keycode 26 = dakuten
+ control kana keycode 26 = nul
+keycode 27 = bracketleft braceleft
+ control keycode 27 = Escape
+ alt keycode 27 = Meta_bracketleft
+ kana keycode 27 = handakuten
+ shift kana keycode 27 = hiraki_kagikakko
+ control kana keycode 27 = Escape
+keycode 28 = Return
+ alt keycode 28 = Meta_Control_m
+keycode 29 = +a +A +a Control_a Control_a Meta_a Meta_Control_a kana_chi kana_chi Control_a
+keycode 30 = +s +S +s Control_s Control_s Meta_s Meta_Control_s kana_to kana_to Control_s
+keycode 31 = +d +D +d Control_d Control_d Meta_d Meta_Control_d kana_shi kana_shi Control_d
+keycode 32 = +f +F +f Control_f Control_f Meta_f Meta_Control_f kana_ha kana_ha Control_f
+keycode 33 = +g +G +g Control_g Control_g Meta_g Meta_Control_g kana_ki kana_ki Control_g
+keycode 34 = +h +H +h BackSpace BackSpace Meta_h Meta_BackSpace kana_ku kana_ku BackSpace
+keycode 35 = +j +J +j Linefeed Linefeed Meta_j Meta_Linefeed kana_ma kana_ma Linefeed
+keycode 36 = +k +K +k Control_k Control_k Meta_k Meta_Control_k kana_no kana_no Control_k
+keycode 37 = +l +L +l Control_l Control_l Meta_l Meta_Control_l kana_ri kana_ri Control_l
+keycode 38 = semicolon plus
+ alt keycode 38 = Meta_semicolon
+ kana keycode 38 = kana_re
+ shift kana keycode 38 = kana_re
+keycode 39 = colon asterisk
+ kana keycode 39 = kana_ke
+ shift kana keycode 39 = kana_ke
+keycode 40 = bracketright braceright
+ control keycode 40 = Control_bracketright
+ alt keycode 40 = Meta_bracketright
+ kana keycode 40 = kana_mu
+ shift kana keycode 40 = toji_kagikakko
+ control kana keycode 40 = Control_bracketright
+keycode 41 = +z +Z +z Control_z Control_z Meta_z Meta_Control_z kana_tsu kana_small_tsu Control_z
+keycode 42 = +x +X +x Control_x Control_x Meta_x Meta_Control_x kana_sa kana_sa Control_x
+keycode 43 = +c +C +c Control_c Control_c Meta_c Meta_Control_c kana_so kana_so Control_c
+keycode 44 = +v +V +v Control_v Control_v Meta_v Meta_Control_v kana_hi kana_hi Control_v
+keycode 45 = +b +B +b Control_b Control_b Meta_b Meta_Control_b kana_ko kana_ko Control_b
+keycode 46 = +n +N +n Control_n Control_n Meta_n Meta_Control_n kana_mi kana_mi Control_n
+keycode 47 = +m +M +m Control_m Control_m Meta_m Meta_Control_m kana_mo kana_mo Control_m
+keycode 48 = comma less
+ kana keycode 48 = kana_ne
+ shift kana keycode 48 = kana_ten
+keycode 49 = period greater
+ kana keycode 49 = kana_ru
+ shift kana keycode 49 = kana_maru
+keycode 50 = slash question
+ kana keycode 50 = kana_me
+ shift kana keycode 50 = nakaguro
+keycode 51 = underscore underscore
+ control keycode 51 = Control_underscore
+ alt keycode 51 = Meta_comma
+ kana keycode 51 = kana_ro
+ shift kana keycode 51 = kana_ro
+ control kana keycode 51 = Control_underscore
+keycode 52 = space
+ control keycode 52 = nul
+ alt keycode 52 = nul
+ kana keycode 52 = space
+ shift kana keycode 52 = space
+ control kana keycode 52 = nul
+keycode 53 = AltGr
+ control keycode 53 = Delete
+ alt keycode 53 = Meta_slash
+ kana keycode 53 = VoidSymbol
+ shift kana keycode 53 = VoidSymbol
+ control kana keycode 53 = Delete
+keycode 54 = Prior
+ shift keycode 54 = Scroll_Backward
+ kana keycode 54 = Scroll_Backward
+ shift kana keycode 54 = Scroll_Backward
+keycode 55 = Next
+ shift keycode 55 = Scroll_Forward
+ kana keycode 55 = Scroll_Forward
+ shift kana keycode 55 = Scroll_Forward
+keycode 56 = Insert
+ kana keycode 56 = VoidSymbol
+ shift kana keycode 56 = VoidSymbol
+keycode 57 = Remove
+ altgr control keycode 57 = Boot
+ control alt keycode 57 = Boot
+ kana keycode 57 = VoidSymbol
+ shift kana keycode 57 = VoidSymbol
+keycode 58 = Up
+ kana keycode 58 = Control_asciicircum
+ shift kana keycode 58 = Control_asciicircum
+keycode 59 = Left
+ kana keycode 59 = Control_bracketright
+ shift kana keycode 59 = Control_bracketright
+keycode 60 = Right
+ kana keycode 60 = Control_backslash
+ shift kana keycode 60 = Control_backslash
+keycode 61 = Down
+ kana keycode 61 = Control_underscore
+ shift kana keycode 61 = Control_underscore
+keycode 62 = Find
+ kana keycode 62 = VoidSymbol
+ shift kana keycode 62 = VoidSymbol
+keycode 63 = Select
+ kana keycode 63 = VoidSymbol
+ shift kana keycode 63 = VoidSymbol
+keycode 64 = KP_Subtract
+ kana keycode 64 = F6
+ shift kana keycode 64 = F6
+keycode 65 = KP_Divide
+ kana keycode 65 = F7
+ shift kana keycode 65 = F7
+keycode 66 = KP_7
+ alt keycode 66 = Ascii_7
+ kana keycode 66 = F8
+ shift kana keycode 66 = F8
+keycode 67 = KP_8
+ alt keycode 67 = Ascii_8
+ kana keycode 67 = F9
+ shift kana keycode 67 = F9
+keycode 68 = KP_9
+ alt keycode 68 = Ascii_9
+ kana keycode 68 = F10
+ shift kana keycode 68 = F10
+keycode 69 = KP_Multiply
+ kana keycode 69 = Num_Lock
+ shift kana keycode 69 = Num_Lock
+keycode 70 = KP_4
+ alt keycode 70 = Ascii_4
+ kana keycode 70 = Scroll_Lock
+ shift kana keycode 70 = Scroll_Lock
+keycode 71 = KP_5
+ alt keycode 71 = Ascii_5
+ kana keycode 71 = KP_7
+ shift kana keycode 71 = KP_7
+keycode 72 = KP_6
+ alt keycode 72 = Ascii_6
+ kana keycode 72 = KP_8
+ shift kana keycode 72 = KP_8
+keycode 73 = KP_Add
+ kana keycode 73 = KP_9
+ shift kana keycode 73 = KP_9
+keycode 74 = KP_1
+ alt keycode 74 = Ascii_1
+ kana keycode 74 = KP_Subtract
+ shift kana keycode 74 = KP_Subtract
+keycode 75 = KP_2
+ alt keycode 75 = Ascii_2
+ kana keycode 75 = KP_4
+ shift kana keycode 75 = KP_4
+keycode 76 = KP_3
+ alt keycode 76 = Ascii_3
+ kana keycode 76 = KP_5
+ shift kana keycode 76 = KP_5
+keycode 77 = equal
+ kana keycode 77 = KP_6
+ shift kana keycode 77 = KP_6
+keycode 78 = KP_0
+ alt keycode 78 = Ascii_0
+ kana keycode 78 = KP_Add
+ shift kana keycode 78 = KP_Add
+keycode 79 = comma
+ kana keycode 79 = KP_1
+ shift kana keycode 79 = KP_1
+keycode 80 = KP_Period
+ kana keycode 80 = KP_2
+ shift kana keycode 80 = KP_2
+keycode 81 = Alt
+ kana keycode 81 = KP_3
+ shift kana keycode 81 = KP_3
+keycode 82 = 0xe00
+ altgr keycode 82 = VoidSymbol
+ altgr control keycode 82 = VoidSymbol
+ control keycode 82 = F11
+ alt keycode 82 = Console_11
+ control alt keycode 82 = VoidSymbol
+ kana keycode 82 = KP_0
+ shift kana keycode 82 = KP_0
+keycode 83 = 0xe01
+ altgr keycode 83 = VoidSymbol
+ altgr control keycode 83 = VoidSymbol
+ control keycode 83 = F12
+ alt keycode 83 = Console_12
+ control alt keycode 83 = VoidSymbol
+ kana keycode 83 = KP_Period
+ shift kana keycode 83 = KP_Period
+keycode 84 = 0xe02
+ altgr keycode 84 = VoidSymbol
+ altgr control keycode 84 = VoidSymbol
+ control keycode 84 = F13
+ alt keycode 84 = Console_13
+ control alt keycode 84 = VoidSymbol
+ kana keycode 84 = Last_Console
+ shift kana keycode 84 = Last_Console
+keycode 85 = F14 F14
+ control keycode 85 = F14
+ alt keycode 85 = Console_14
+ control kana keycode 85 = F14
+keycode 86 = F15
+ alt keycode 86 = Console_15
+ kana keycode 86 = less
+ shift kana keycode 86 = less
+keycode 87 =
+ kana keycode 87 = F11
+ shift kana keycode 87 = F11
+keycode 88 =
+ kana keycode 88 = F12
+ shift kana keycode 88 = F12
+keycode 89 =
+keycode 90 =
+keycode 91 =
+keycode 92 =
+keycode 93 =
+keycode 94 = Find
+ kana keycode 94 = VoidSymbol
+ shift kana keycode 94 = VoidSymbol
+keycode 95 =
+keycode 96 = Break
+ kana keycode 96 = KP_Enter
+ shift kana keycode 96 = KP_Enter
+keycode 97 = Scroll_Lock
+ kana keycode 97 = Control
+ shift kana keycode 97 = Control
+keycode 98 = F1
+ altgr keycode 98 = VoidSymbol
+ altgr control keycode 98 = VoidSymbol
+ alt keycode 98 = Console_1
+ control alt keycode 98 = VoidSymbol
+ kana keycode 98 = Console_2
+ shift kana keycode 98 = Console_2
+keycode 99 = F2
+ altgr keycode 99 = VoidSymbol
+ altgr control keycode 99 = VoidSymbol
+ alt keycode 99 = Console_2
+ control alt keycode 99 = VoidSymbol
+ kana keycode 99 = Console_3
+ shift kana keycode 99 = Console_3
+keycode 100 = F3
+ altgr keycode 100 = VoidSymbol
+ altgr control keycode 100 = VoidSymbol
+ alt keycode 100 = Console_3
+ control alt keycode 100 = VoidSymbol
+ kana keycode 100 = AltGr
+ shift kana keycode 100 = AltGr
+keycode 101 = F4
+ altgr keycode 101 = VoidSymbol
+ altgr control keycode 101 = VoidSymbol
+ alt keycode 101 = Console_4
+ control alt keycode 101 = VoidSymbol
+ kana keycode 101 = Break
+ shift kana keycode 101 = Break
+keycode 102 = F5
+ altgr keycode 102 = VoidSymbol
+ altgr control keycode 102 = VoidSymbol
+ alt keycode 102 = Console_5
+ control alt keycode 102 = VoidSymbol
+ kana keycode 102 = Find
+ shift kana keycode 102 = Find
+keycode 103 = F6
+ altgr keycode 103 = VoidSymbol
+ altgr control keycode 103 = VoidSymbol
+ alt keycode 103 = Console_6
+ control alt keycode 103 = VoidSymbol
+ kana keycode 103 = Up
+ shift kana keycode 103 = Up
+keycode 104 = F7
+ altgr keycode 104 = VoidSymbol
+ altgr control keycode 104 = VoidSymbol
+ alt keycode 104 = Console_7
+ control alt keycode 104 = VoidSymbol
+ kana keycode 104 = Prior
+ shift kana keycode 104 = Prior
+keycode 105 = F8
+ altgr keycode 105 = VoidSymbol
+ altgr control keycode 105 = VoidSymbol
+ alt keycode 105 = Console_8
+ control alt keycode 105 = VoidSymbol
+ kana keycode 105 = Left
+ shift kana keycode 105 = Left
+keycode 106 = F9
+ altgr keycode 106 = VoidSymbol
+ altgr control keycode 106 = VoidSymbol
+ alt keycode 106 = Console_9
+ control alt keycode 106 = VoidSymbol
+ kana keycode 106 = Right
+ shift kana keycode 106 = Right
+keycode 107 = F10
+ altgr keycode 107 = VoidSymbol
+ altgr control keycode 107 = VoidSymbol
+ alt keycode 107 = Console_10
+ control alt keycode 107 = VoidSymbol
+ kana keycode 107 = Select
+ shift kana keycode 107 = Select
+keycode 108 =
+ kana keycode 108 = Down
+ shift kana keycode 108 = Down
+keycode 109 =
+ kana keycode 109 = Next
+ shift kana keycode 109 = Next
+keycode 110 =
+ kana keycode 110 = Insert
+ shift kana keycode 110 = Insert
+keycode 111 =
+ kana keycode 111 = Remove
+ shift kana keycode 111 = Remove
+keycode 112 = Shift
+keycode 113 = Caps_Lock
+keycode 114 = KanaShift
+keycode 115 = Alt
+ kana keycode 115 = VoidSymbol
+ shift kana keycode 115 = VoidSymbol
+keycode 116 = Control
+keycode 117 =
+ kana keycode 117 = F17
+ shift kana keycode 117 = F17
+keycode 118 =
+ kana keycode 118 = KP_MinPlus
+ shift kana keycode 118 = KP_MinPlus
+keycode 119 =
+ kana keycode 119 = Pause
+ shift kana keycode 119 = Pause
+keycode 120 =
+keycode 121 =
+keycode 122 =
+keycode 123 =
+keycode 124 =
+keycode 125 =
+keycode 126 =
+keycode 127 =
+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~"
diff -urN linux/drivers/char/keyboard.c linux98/drivers/char/keyboard.c
--- linux/drivers/char/keyboard.c Sat Oct 12 13:21:42 2002
+++ linux98/drivers/char/keyboard.c Sat Oct 12 14:18:52 2002
@@ -44,6 +44,9 @@
static void kbd_disconnect(struct input_handle *handle);
extern void ctrl_alt_del(void);
+#ifdef CONFIG_PC9800
+extern void do_change_kanji_mode(int, unsigned long);
+#endif
/*
* Exported functions/variables
@@ -58,7 +61,11 @@
* Some laptops take the 789uiojklm,. keys as number pad when NumLock is on.
* This seems a good reason to start with NumLock off.
*/
+#ifndef CONFIG_PC9800
#define KBD_DEFLEDS 0
+#else
+#define KBD_DEFLEDS (1 << VC_NUMLOCK)
+#endif
#endif
#ifndef KBD_DEFLOCK
@@ -73,23 +80,41 @@
* Handler Tables.
*/
+#ifndef CONFIG_PC9800
#define K_HANDLERS\
k_self, k_fn, k_spec, k_pad,\
k_dead, k_cons, k_cur, k_shift,\
k_meta, k_ascii, k_lock, k_lowercase,\
k_slock, k_dead2, k_ignore, k_ignore
+#else
+#define K_HANDLERS\
+ k_self, k_fn, k_spec, k_pad,\
+ k_dead, k_cons, k_cur, k_shift,\
+ k_meta, k_ascii, k_lock, k_lowercase,\
+ k_slock, k_dead2, k_chkmode, k_ignore
+#endif
typedef void (k_handler_fn)(struct vc_data *vc, unsigned char value,
char up_flag);
static k_handler_fn K_HANDLERS;
static k_handler_fn *k_handler[16] = { K_HANDLERS };
+#ifndef CONFIG_PC9800
#define FN_HANDLERS\
fn_null, fn_enter, fn_show_ptregs, fn_show_mem,\
fn_show_state, fn_send_intr, fn_lastcons, fn_caps_toggle,\
fn_num, fn_hold, fn_scroll_forw, fn_scroll_back,\
fn_boot_it, fn_caps_on, fn_compose, fn_SAK,\
fn_dec_console, fn_inc_console, fn_spawn_con, fn_bare_num
+#else
+#define FN_HANDLERS\
+ fn_null, fn_enter, fn_show_ptregs, fn_show_mem,\
+ fn_show_state, fn_send_intr, fn_lastcons, fn_caps_toggle,\
+ fn_num, fn_hold, fn_scroll_forw, fn_scroll_back,\
+ fn_boot_it, fn_caps_on, fn_compose, fn_SAK,\
+ fn_dec_console, fn_inc_console, fn_spawn_con, fn_bare_num, \
+ fn_kana_toggle
+#endif
typedef void (fn_handler_fn)(struct vc_data *vc);
static fn_handler_fn FN_HANDLERS;
@@ -104,6 +129,9 @@
255, ARRAY_SIZE(func_table) - 1, ARRAY_SIZE(fn_handler) - 1, NR_PAD - 1,
NR_DEAD - 1, 255, 3, NR_SHIFT - 1, 255, NR_ASCII - 1, NR_LOCK - 1,
255, NR_LOCK - 1, 255
+#ifdef CONFIG_PC9800
+ , 2
+#endif
};
const int NR_TYPES = ARRAY_SIZE(max_vals);
@@ -145,6 +173,7 @@
#ifdef CONFIG_MAGIC_SYSRQ
unsigned char kbd_sysrq_xlate[128] =
+#ifndef CONFIG_PC9800
"\000\0331234567890-=\177\t" /* 0x00 - 0x0f */
"qwertyuiop[]\r\000as" /* 0x10 - 0x1f */
"dfghjkl;'`\000\\zxcv" /* 0x20 - 0x2f */
@@ -152,6 +181,15 @@
"\206\207\210\211\212\000\000789-456+1" /* 0x40 - 0x4f */
"230\177\000\000\213\214\000\000\000\000\000\000\000\000\000\000" /* 0x50 - 0x5f */
"\r\000/"; /* 0x60 - 0x6f */
+#else /* CONFIG_PC9800 */
+ "\0331234567890-^\\\177\t" /* 0x00 - 0x0f */
+ "qwertyuiop@[\rasd" /* 0x10 - 0x1f */
+ "fghjkl;:]zxcvbnm" /* 0x20 - 0x2f */
+ ",./_ \000\000\000\000\177\000\000\000\000\000\000" /* 0x30 - 0x3f */
+ "-/789*456+123=0," /* 0x40 - 0x4f */
+ ".\000\213\214\215\216\217\000\000\000\000\000\000\000\000\000" /* 0x50 - 0x5f */
+ "\000\000\201\202\203\204\205\206\207\210\211\212"; /* 0x60 - 0x6f */
+#endif /* !CONFIG_PC9800 */
static int sysrq_down;
#endif
static int sysrq_alt;
@@ -447,6 +485,15 @@
set_vc_kbd_led(kbd, VC_CAPSLOCK);
}
+#ifdef CONFIG_PC9800
+static void fn_kana_toggle(struct vc_data *vc)
+{
+ if (rep)
+ return;
+ chg_vc_kbd_led(kbd, VC_KANALOCK);
+}
+#endif
+
static void fn_show_ptregs(struct vc_data *vc)
{
if (kbd_pt_regs)
@@ -535,12 +582,20 @@
static void fn_scroll_forw(struct vc_data *vc)
{
+#ifndef CONFIG_PC9800
scrollfront(0);
+#else
+ scrollfront(3);
+#endif
}
static void fn_scroll_back(struct vc_data *vc)
{
+#ifndef CONFIG_PC9800
scrollback(0);
+#else
+ scrollback(3);
+#endif
}
static void fn_show_mem(struct vc_data *vc)
@@ -597,7 +652,11 @@
static void k_spec(struct vc_data *vc, unsigned char value, char up_flag)
{
+#ifndef CONFIG_PC9800
if (up_flag)
+#else
+ if (up_flag && value != 7 && value != 0x14) /* caps/kana lock */
+#endif
return;
if (value >= ARRAY_SIZE(fn_handler))
return;
@@ -651,6 +710,16 @@
k_dead2(vc, value, up_flag);
}
+#ifdef CONFIG_PC9800
+static void k_chkmode(struct vc_data *vc, unsigned char value, char up_flag)
+{
+ if (up_flag)
+ return;
+
+ do_change_kanji_mode(fg_console, value);
+}
+#endif /* CONFIG_PC9800 */
+
static void k_cons(struct vc_data *vc, unsigned char value, char up_flag)
{
if (up_flag)
@@ -910,6 +979,9 @@
input_event(handle->dev, EV_LED, LED_SCROLLL, !!(leds & 0x01));
input_event(handle->dev, EV_LED, LED_NUML, !!(leds & 0x02));
input_event(handle->dev, EV_LED, LED_CAPSL, !!(leds & 0x04));
+#ifdef CONFIG_PC9800
+ input_event(handle->dev, EV_LED, LED_KANA, !!(leds & 0x08));
+#endif
}
}
@@ -918,7 +990,7 @@
DECLARE_TASKLET_DISABLED(keyboard_tasklet, kbd_bh, 0);
-#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(CONFIG_ALPHA) || defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64)
+#if (defined(CONFIG_X86) && !defined(CONFIG_PC9800)) || defined(CONFIG_IA64) || defined(CONFIG_ALPHA) || defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64)
static unsigned short x86_keycodes[256] =
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
@@ -1084,6 +1156,11 @@
shift_final = (shift_state | kbd->slockstate) ^ kbd->lockstate;
key_map = key_maps[shift_final];
+#ifdef CONFIG_PC9800
+ if (vc_kbd_led(kbd, VC_KANALOCK))
+ shift_final |= (1 << KG_KANASHIFT);
+#endif
+
if (!key_map) {
compute_shiftstate();
kbd->slockstate = 0;
diff -urN linux/include/linux/kbd_kern.h linux98/include/linux/kbd_kern.h
--- linux/include/linux/kbd_kern.h Mon Apr 15 04:18:55 2002
+++ linux98/include/linux/kbd_kern.h Wed Apr 17 15:51:19 2002
@@ -1,6 +1,7 @@
#ifndef _KBD_KERN_H
#define _KBD_KERN_H
+#include <linux/config.h>
#include <linux/tty.h>
#include <linux/interrupt.h>
#include <linux/keyboard.h>
@@ -43,11 +44,19 @@
#define LED_SHOW_IOCTL 1 /* only change leds upon ioctl */
#define LED_SHOW_MEM 2 /* `heartbeat': peek into memory */
+#ifdef CONFIG_PC9800
+ unsigned char ledflagstate:4; /* flags, not lights */
+ unsigned char default_ledflagstate:4;
+#else
unsigned char ledflagstate:3; /* flags, not lights */
unsigned char default_ledflagstate:3;
+#endif
#define VC_SCROLLOCK 0 /* scroll-lock mode */
#define VC_NUMLOCK 1 /* numeric lock mode */
#define VC_CAPSLOCK 2 /* capslock mode */
+#ifdef CONFIG_PC9800
+#define VC_KANALOCK 3 /* kanalock mode */
+#endif
unsigned char kbdmode:2; /* one 2-bit value */
#define VC_XLATE 0 /* translate keycodes using keymap */
@@ -69,6 +78,8 @@
extern unsigned char getledstate(void);
extern void setledstate(struct kbd_struct *kbd, unsigned int led);
+struct kbd_repeat;
+extern int setrepeat(struct kbd_repeat *);
extern int do_poke_blanked_console;
diff -urN linux/include/linux/keyboard.h linux98/include/linux/keyboard.h
--- linux/include/linux/keyboard.h Sat Oct 12 13:21:33 2002
+++ linux98/include/linux/keyboard.h Sat Oct 12 19:51:13 2002
@@ -1,6 +1,7 @@
#ifndef __LINUX_KEYBOARD_H
#define __LINUX_KEYBOARD_H
+#include <linux/config.h>
#include <linux/wait.h>
#include <linux/input.h>
@@ -9,6 +10,9 @@
#define KG_ALT 3
#define KG_ALTGR 1
#define KG_SHIFTL 4
+#ifdef CONFIG_PC9800
+#define KG_KANASHIFT 4
+#endif
#define KG_SHIFTR 5
#define KG_CTRLL 6
#define KG_CTRLR 7
diff -urN linux/include/linux/logibusmouse.h linux98/include/linux/logibusmouse.h
--- linux/include/linux/logibusmouse.h Tue Aug 3 01:54:29 1999
+++ linux98/include/linux/logibusmouse.h Fri Aug 17 22:15:13 2001
@@ -27,12 +27,20 @@
*
*/
+#include <linux/config.h>
+
+#ifdef CONFIG_LOGIBUSMOUSE_PC9800
+#define MOUSE_IRQ 13
+#else
#define MOUSE_IRQ 5
+#endif
#define LOGITECH_BUSMOUSE 0 /* Minor device # for Logitech */
#define MICROSOFT_BUSMOUSE 2 /* Minor device # for Microsoft */
/*--------- LOGITECH BUSMOUSE ITEMS -------------*/
+#ifndef CONFIG_LOGIBUSMOUSE_PC9800
+
#define LOGIBM_BASE 0x23c
#define MSE_DATA_PORT 0x23c
#define MSE_SIGNATURE_PORT 0x23d
@@ -41,6 +49,18 @@
#define MSE_CONFIG_PORT 0x23f
#define LOGIBM_EXTENT 0x4
+#else /* CONFIG_LOGIBUSMOUSE_PC9800 */
+
+#define LOGIBM_BASE 0x7fd9
+#define MSE_DATA_PORT (LOGIBM_BASE + 0)
+/* MSE_SIGNATURE_PORT does not exist */
+#define MSE_CONTROL_PORT (LOGIBM_BASE + 4)
+/* MSE_INTERRUPT_PORT does not exist */
+#define MSE_CONFIG_PORT (LOGIBM_BASE + 6)
+#define LOGIBM_EXTENT (-7)
+
+#endif /* !CONFIG_LOGIBUSMOUSE_PC9800 */
+
#define MSE_ENABLE_INTERRUPTS 0x00
#define MSE_DISABLE_INTERRUPTS 0x10
@@ -49,10 +69,20 @@
#define MSE_READ_Y_LOW 0xc0
#define MSE_READ_Y_HIGH 0xe0
+#ifndef CONFIG_LOGIBUSMOUSE_PC9800
/* Magic number used to check if the mouse exists */
#define MSE_CONFIG_BYTE 0x91
#define MSE_DEFAULT_MODE 0x90
#define MSE_SIGNATURE_BYTE 0xa5
+#else
+/* Magic number used to check if the mouse exists */
+/* #define MSE_CONFIG_BYTE is not used */
+#define MSE_DEFAULT_MODE 0x93
+/* #define MSE_SIGNATURE_BYTE is not used */
+
+#define MSE_TIMER_PORT 0xbfdb
+#define MSE_DEFAULT_TIMER_VAL 0x00
+#endif
/* useful Logitech Mouse macros */
diff -urN linux/include/linux/pc_keyb.h linux98/include/linux/pc_keyb.h
--- linux/include/linux/pc_keyb.h Tue Oct 12 02:15:40 1999
+++ linux98/include/linux/pc_keyb.h Fri Aug 17 22:15:13 2001
@@ -6,6 +6,8 @@
* (c) 1997 Martin Mares <[email protected]>
*/
+#include <linux/config.h>
+
/*
* Configuration Switches
*/
@@ -33,9 +35,16 @@
* Keyboard Controller Registers on normal PCs.
*/
+#ifdef CONFIG_PC9800
+#define KBD_STATUS_REG 0x43 /* Status register (R) */
+#define KBD_CNTL_REG 0x43 /* Controller command register (W) */
+#define KBD_DATA_REG 0x41 /* Keyboard data register (R/W) */
+#define KBD_MODE_REG 0x43
+#else /* !CONFIG_PC9800 */
#define KBD_STATUS_REG 0x64 /* Status register (R) */
#define KBD_CNTL_REG 0x64 /* Controller command register (W) */
#define KBD_DATA_REG 0x60 /* Keyboard data register (R/W) */
+#endif /* CONFIG_PC9800 */
/*
* Keyboard Controller Commands
@@ -59,11 +68,16 @@
* Keyboard Commands
*/
+#ifdef CONFIG_PC9800
+#define KBD_CMD_SET_RATE 0x9C /* Set typematic rate */
+#define KBD_CMD_SET_LEDS 0x9D /* Set keyboard leds */
+#else /* CONFIG_PC9800 */
#define KBD_CMD_SET_LEDS 0xED /* Set keyboard leds */
#define KBD_CMD_SET_RATE 0xF3 /* Set typematic rate */
#define KBD_CMD_ENABLE 0xF4 /* Enable scanning */
#define KBD_CMD_DISABLE 0xF5 /* Disable scanning */
#define KBD_CMD_RESET 0xFF /* Reset */
+#endif /* CONFIG_PC9800 */
/*
* Keyboard Replies
@@ -71,7 +85,11 @@
#define KBD_REPLY_POR 0xAA /* Power on reset */
#define KBD_REPLY_ACK 0xFA /* Command ACK */
+#ifdef CONFIG_PC9800
+#define KBD_REPLY_RESEND 0xFC /* Command NACK, send the cmd again */
+#else
#define KBD_REPLY_RESEND 0xFE /* Command NACK, send the cmd again */
+#endif
/*
* Status Register Bits
On Thu, Oct 17, 2002 at 08:40:04PM +0900, Osamu Tomita wrote:
> Summary:
> console keyboard modules
> - adapted to PC-9800 hardware spec.
> - add jis-x201("kana") support.
I won't merge this unless it's cleaned up, kana support either made
generic or put into keymaps, and the below problems resolved.
> patch:
> diff -urN linux/drivers/char/defkeymap_pc9800.c linux98/drivers/char/defkeymap_pc9800.c
> --- linux/drivers/char/defkeymap_pc9800.c Thu Jan 1 09:00:00 1970
> +++ linux98/drivers/char/defkeymap_pc9800.c Mon Sep 16 10:47:44 2002
> @@ -0,0 +1,285 @@
> +
> +/* Do not edit this file! It was automatically generated by */
> +/* loadkeys --mktable defkeymap_pc9800.map > defkeymap_pc9800.c */
> +
> +#include <linux/config.h>
> +#include <linux/types.h>
> +#include <linux/keyboard.h>
> +#include <linux/kd.h>
> +
> +u_short plain_map[NR_KEYS] = {
> + 0xf01b, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
> + 0xf038, 0xf039, 0xf030, 0xf02d, 0xf05e, 0xf05c, 0xf07f, 0xf009,
> + 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
> + 0xfb6f, 0xfb70, 0xf040, 0xf05b, 0xf201, 0xfb61, 0xfb73, 0xfb64,
> + 0xfb66, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf03b, 0xf03a,
> diff -urN linux/drivers/char/defkeymap_pc9800.map linux98/drivers/char/defkeymap_pc9800.map
> --- linux/drivers/char/defkeymap_pc9800.map Thu Jan 1 09:00:00 1970
> +++ linux98/drivers/char/defkeymap_pc9800.map Mon Sep 16 11:26:41 2002
> @@ -0,0 +1,439 @@
> +charset "jis-x-0201"
> +keymaps 0-2,4,6,8,12,16-17,20
> +keycode 0 = Escape
> +keycode 1 = one exclam
> + alt keycode 1 = Meta_Escape
> + kana keycode 1 = kana_nu
> + shift kana keycode 1 = kana_nu
... no way I'll add another default keymap when now we have unified
keycodes. And we do support japanese keycodes/keymappings.
> diff -urN linux/drivers/char/keyboard.c linux98/drivers/char/keyboard.c
> --- linux/drivers/char/keyboard.c Sat Oct 12 13:21:42 2002
> +++ linux98/drivers/char/keyboard.c Sat Oct 12 14:18:52 2002
> @@ -44,6 +44,9 @@
>
> static void kbd_disconnect(struct input_handle *handle);
> extern void ctrl_alt_del(void);
> +#ifdef CONFIG_PC9800
> +extern void do_change_kanji_mode(int, unsigned long);
> +#endif
Either there is a need for a special kanji mode changing function for
japanese keyboards or there is not. Either way, it isn't PC-98 specific.
> /*
> * Exported functions/variables
> @@ -58,7 +61,11 @@
> * Some laptops take the 789uiojklm,. keys as number pad when NumLock is on.
> * This seems a good reason to start with NumLock off.
> */
> +#ifndef CONFIG_PC9800
> #define KBD_DEFLEDS 0
> +#else
> +#define KBD_DEFLEDS (1 << VC_NUMLOCK)
> +#endif
> #endif
You want numlock on by default?
> #ifdef CONFIG_MAGIC_SYSRQ
> unsigned char kbd_sysrq_xlate[128] =
> +#ifndef CONFIG_PC9800
> "\000\0331234567890-=\177\t" /* 0x00 - 0x0f */
> "qwertyuiop[]\r\000as" /* 0x10 - 0x1f */
> "dfghjkl;'`\000\\zxcv" /* 0x20 - 0x2f */
> @@ -152,6 +181,15 @@
> "\206\207\210\211\212\000\000789-456+1" /* 0x40 - 0x4f */
> "230\177\000\000\213\214\000\000\000\000\000\000\000\000\000\000" /* 0x50 - 0x5f */
> "\r\000/"; /* 0x60 - 0x6f */
> +#else /* CONFIG_PC9800 */
> + "\0331234567890-^\\\177\t" /* 0x00 - 0x0f */
> + "qwertyuiop@[\rasd" /* 0x10 - 0x1f */
> + "fghjkl;:]zxcvbnm" /* 0x20 - 0x2f */
> + ",./_ \000\000\000\000\177\000\000\000\000\000\000" /* 0x30 - 0x3f */
> + "-/789*456+123=0," /* 0x40 - 0x4f */
> + ".\000\213\214\215\216\217\000\000\000\000\000\000\000\000\000" /* 0x50 - 0x5f */
> + "\000\000\201\202\203\204\205\206\207\210\211\212"; /* 0x60 - 0x6f */
> +#endif /* !CONFIG_PC9800 */
The keycodes are defined constants. They do not change between
architectures. So this table also must be constant.
> @@ -535,12 +582,20 @@
>
> static void fn_scroll_forw(struct vc_data *vc)
> {
> +#ifndef CONFIG_PC9800
> scrollfront(0);
> +#else
> + scrollfront(3);
> +#endif
> }
Huh?
> static void k_spec(struct vc_data *vc, unsigned char value, char up_flag)
> {
> +#ifndef CONFIG_PC9800
> if (up_flag)
> +#else
> + if (up_flag && value != 7 && value != 0x14) /* caps/kana lock */
> +#endif
Very ugly. This should be handled by the keymap.
> diff -urN linux/include/linux/logibusmouse.h linux98/include/linux/logibusmouse.h
> --- linux/include/linux/logibusmouse.h Tue Aug 3 01:54:29 1999
> +++ linux98/include/linux/logibusmouse.h Fri Aug 17 22:15:13 2001
Hmm, this file isn't used at all in 2.5. Why patching it?
> diff -urN linux/include/linux/pc_keyb.h linux98/include/linux/pc_keyb.h
> --- linux/include/linux/pc_keyb.h Tue Oct 12 02:15:40 1999
> +++ linux98/include/linux/pc_keyb.h Fri Aug 17 22:15:13 2001
And this one isn't either.
--
Vojtech Pavlik
SuSE Labs