From 6b3f4dc157580bee04c02f0e6cf9beac2b624396 Mon Sep 17 00:00:00 2001 From: David van Moolenbroek Date: Sat, 28 Sep 2013 14:46:21 +0200 Subject: [PATCH] Input infrastructure, INPUT server, PCKBD driver This commit separates the low-level keyboard driver from TTY, putting it in a separate driver (PCKBD). The commit also separates management of raw input devices from TTY, and puts it in a separate server (INPUT). All keyboard and mouse input from hardware is sent by drivers to the INPUT server, which either sends it to a process that has opened a raw input device, or otherwise forwards it to TTY for standard processing. Design by Dirk Vogt. Prototype by Uli Kastlunger. Additional changes made to the prototype: - the event communication is now based on USB HID codes; all input drivers have to use USB codes to describe events; - all TTY keymaps have been converted to USB format, with the effect that a single keymap covers all keys; there is no (static) escaped keymap anymore; - further keymap tweaks now allow remapping of literally all keys; - input device renumbering and protocol rewrite; - INPUT server rewrite, with added support for cancel and select; - PCKBD reimplementation, including PC/AT-to-USB translation; - support for manipulating keyboard LEDs has been added; - keyboard and mouse multiplexer devices have been added to INPUT, primarily so that an X server need only open two devices; - a new "libinputdriver" library abstracts away protocol details from input drivers, and should be used by all future input drivers; - both INPUT and PCKBD can be restarted; - TTY is now scheduled by KERNEL, so that it won't be punished for running a lot; without this, simply running "yes" on the console kills the system; - the KIOCBELL IOCTL has been moved to /dev/console; - support for the SCANCODES termios setting has been removed; - obsolete keymap compression has been removed; - the obsolete Olivetti M24 keymap has been removed. Change-Id: I3a672fb8c4fd566734e4b46d3994b4b7fc96d578 --- commands/DESCRIBE/DESCRIBE.sh | 22 +- commands/MAKEDEV/MAKEDEV.sh | 29 +- commands/loadkeys/loadkeys.c | 67 +- distrib/sets/lists/minix/md.i386 | 1 + distrib/sets/lists/minix/mi | 7 +- drivers/Makefile | 6 +- drivers/pckbd/Makefile | 12 + drivers/pckbd/pckbd.c | 476 ++++++++++++ drivers/pckbd/pckbd.h | 49 ++ drivers/pckbd/table.c | 169 +++++ drivers/ramdisk/Makefile | 4 +- drivers/ramdisk/proto | 2 + drivers/ramdisk/proto.dev | 13 +- drivers/ramdisk/rc | 3 + drivers/tty/arch/earm/console.c | 6 +- drivers/tty/arch/earm/keyboard.c | 12 +- drivers/tty/arch/earm/rs232.c | 2 +- drivers/tty/arch/i386/keyboard.c | 986 ++++--------------------- drivers/tty/arch/i386/rs232.c | 2 +- drivers/tty/keymaps/Makefile | 4 +- drivers/tty/keymaps/abnt2.src | 233 +++--- drivers/tty/keymaps/dvorak.src | 232 +++--- drivers/tty/keymaps/french.src | 232 +++--- drivers/tty/keymaps/genmap.c | 80 +- drivers/tty/keymaps/german.src | 232 +++--- drivers/tty/keymaps/italian.src | 232 +++--- drivers/tty/keymaps/japanese.src | 236 +++--- drivers/tty/keymaps/latin-america.src | 236 +++--- drivers/tty/keymaps/olivetti.src | 132 ---- drivers/tty/keymaps/polish.src | 232 +++--- drivers/tty/keymaps/portuguese.src | 236 +++--- drivers/tty/keymaps/russian-cp1251.src | 232 +++--- drivers/tty/keymaps/russian-cp866.src | 232 +++--- drivers/tty/keymaps/russian.src | 232 +++--- drivers/tty/keymaps/scandinavian.src | 232 +++--- drivers/tty/keymaps/spanish.src | 236 +++--- drivers/tty/keymaps/uk.src | 232 +++--- drivers/tty/keymaps/ukraine-koi8-u.src | 232 +++--- drivers/tty/keymaps/us-std-esc.src | 132 ---- drivers/tty/keymaps/us-std.src | 232 +++--- drivers/tty/keymaps/us-swap.src | 232 +++--- drivers/tty/pty.c | 2 +- drivers/tty/tty.c | 122 +-- drivers/tty/tty.h | 11 +- etc/Makefile | 1 - etc/system.conf | 24 +- include/minix/Makefile | 3 +- include/minix/com.h | 45 +- include/minix/dmap.h | 6 +- include/minix/input.h | 331 ++++++++- include/minix/inputdriver.h | 24 + include/minix/keymap.h | 43 +- include/minix/termios.h | 1 - lib/Makefile | 2 +- lib/libchardriver/chardriver.c | 16 +- lib/libinputdriver/Makefile | 8 + lib/libinputdriver/inputdriver.c | 206 ++++++ lib/libsys/Makefile | 1 - lib/libsys/input.c | 17 - lib/libvtreefs/inc.h | 1 - man/man4/tty.4 | 24 - man/man5/keymap.5 | 53 +- servers/Makefile | 4 +- servers/ds/inc.h | 1 - servers/input/Makefile | 14 + servers/input/input.c | 696 +++++++++++++++++ servers/input/input.h | 45 ++ servers/iso9660fs/inc.h | 1 - servers/pfs/inc.h | 1 - servers/pm/main.c | 1 - servers/procfs/inc.h | 1 - servers/rs/inc.h | 1 - servers/vfs/main.c | 1 - servers/vfs/mount.c | 1 - servers/vfs/path.c | 1 - servers/vm/break.c | 1 - servers/vm/exit.c | 1 - servers/vm/fdref.h | 1 - servers/vm/fork.c | 1 - servers/vm/main.c | 1 - servers/vm/mmap.c | 1 - servers/vm/pagefaults.c | 1 - servers/vm/pagetable.c | 1 - servers/vm/queryexit.c | 1 - servers/vm/region.h | 1 - servers/vm/rs.c | 1 - servers/vm/slaballoc.c | 1 - test/scancodes/Makefile | 10 - test/scancodes/test-scancodes.c | 410 ---------- 89 files changed, 4316 insertions(+), 4234 deletions(-) create mode 100644 drivers/pckbd/Makefile create mode 100644 drivers/pckbd/pckbd.c create mode 100644 drivers/pckbd/pckbd.h create mode 100644 drivers/pckbd/table.c delete mode 100644 drivers/tty/keymaps/olivetti.src delete mode 100644 drivers/tty/keymaps/us-std-esc.src create mode 100644 include/minix/inputdriver.h create mode 100644 lib/libinputdriver/Makefile create mode 100644 lib/libinputdriver/inputdriver.c delete mode 100644 lib/libsys/input.c create mode 100644 servers/input/Makefile create mode 100644 servers/input/input.c create mode 100644 servers/input/input.h delete mode 100644 test/scancodes/Makefile delete mode 100644 test/scancodes/test-scancodes.c diff --git a/commands/DESCRIBE/DESCRIBE.sh b/commands/DESCRIBE/DESCRIBE.sh index b028e7667..5ad21eb0c 100644 --- a/commands/DESCRIBE/DESCRIBE.sh +++ b/commands/DESCRIBE/DESCRIBE.sh @@ -126,10 +126,6 @@ do ;; 4,125) des="video output" dev=video ;; - 4,126) des="auxiliary input" dev=kbdaux - ;; - 4,127) des="keyboard input" dev=kbd - ;; 4,12[89]|4,1[3-8]?|4,19[01]) p=`expr \\( $minor - 128 \\) / 16 | tr '0123' 'pqrs'` n=`expr $minor % 16` @@ -212,6 +208,24 @@ do des="vnode disk $drive partition $par slice $sub" dev=vnd${drive}p${par}s${sub} ;; + 64,0) + des="keyboard input multiplexer" + dev=kbdmux + ;; + 64,[1-4]) + n=`expr $minor - 1` + des="keyboard input $n" + dev=kbd$n + ;; + 64,64) + des="mouse input multiplexer" + dev=mousemux + ;; + 64,6[5-8]) + n=`expr $minor - 65` + des="mouse input $n" + dev=mouse$n + ;; BAD,BAD) des= dev= ;; diff --git a/commands/MAKEDEV/MAKEDEV.sh b/commands/MAKEDEV/MAKEDEV.sh index 83e2270a8..277a5ea26 100644 --- a/commands/MAKEDEV/MAKEDEV.sh +++ b/commands/MAKEDEV/MAKEDEV.sh @@ -35,7 +35,8 @@ case $#:$1 in sht21b1s40 sht21b2s40 sht21b3s40 \ bmp085b1s77 bmp085b2s77 bmp085b3s77 \ vnd0 vnd0p0 vnd0p0s0 vnd1 vnd1p0 vnd1p0s0 \ - vnd2 vnd3 vnd4 vnd5 vnd6 vnd7 + vnd2 vnd3 vnd4 vnd5 vnd6 vnd7 \ + input ;; 0:|1:-\?) cat >&2 <&2 ex=1 diff --git a/commands/loadkeys/loadkeys.c b/commands/loadkeys/loadkeys.c index f1f0646b1..38468ba06 100644 --- a/commands/loadkeys/loadkeys.c +++ b/commands/loadkeys/loadkeys.c @@ -6,86 +6,51 @@ #include #include #include +#include #include #include -#if __minix_vmd -#define KBD_DEVICE "/dev/kbd" -#else #define KBD_DEVICE "/dev/console" -#endif - -u16_t keymap[NR_SCAN_CODES * MAP_COLS]; -u8_t comprmap[4 + NR_SCAN_CODES * MAP_COLS * 9/8 * 2 + 1]; - - -void tell(char *s) -{ - write(2, s, strlen(s)); -} - void fatal(char *say) { - int err = errno; - tell("loadkeys: "); - if (say != NULL) { - tell(say); - tell(": "); - } - tell(strerror(err)); - tell("\n"); - exit(1); + fprintf(stderr, "loadkeys: %s: %s\n", say, strerror(errno)); + exit(EXIT_FAILURE); } void usage(void) { - tell("Usage: loadkeys mapfile\n"); - exit(1); + fprintf(stderr, "usage: loadkeys \n"); + exit(EXIT_FAILURE); } int main(int argc, char *argv[]) { - u8_t *cm; - u16_t *km; - int fd, n, fb; + char sig[4]; + keymap_t keymap; + int fd; if (argc != 2) usage(); if ((fd = open(argv[1], O_RDONLY)) < 0) fatal(argv[1]); - if (read(fd, comprmap, sizeof(comprmap)) < 0) fatal(argv[1]); + if (read(fd, sig, sizeof(sig)) < sizeof(sig)) fatal(argv[1]); - if (memcmp(comprmap, KEY_MAGIC, 4) != 0) { - tell("loadkeys: "); - tell(argv[1]); - tell(": not a keymap file\n"); - exit(1); + if (memcmp(sig, KEY_MAGIC, sizeof(sig)) != 0) { + fprintf(stderr, "loadkeys: %s: not a keymap file\n", argv[1]); + return EXIT_FAILURE; } + + if (read(fd, keymap, sizeof(keymap)) < sizeof(keymap)) fatal(argv[1]); + close(fd); - /* Decompress the keymap data. */ - cm = comprmap + 4; - n = 8; - for (km = keymap; km < keymap + NR_SCAN_CODES * MAP_COLS; km++) { - if (n == 8) { - /* Need a new flag byte. */ - fb = *cm++; - n = 0; - } - *km = *cm++; /* Low byte. */ - if (fb & (1 << n)) { - *km |= (*cm++ << 8); /* One of the few special keys. */ - } - n++; - } - if ((fd = open(KBD_DEVICE, O_WRONLY)) < 0) fatal(KBD_DEVICE); if (ioctl(fd, KIOCSMAP, keymap) < 0) fatal(KBD_DEVICE); - return 0; + return EXIT_SUCCESS; } diff --git a/distrib/sets/lists/minix/md.i386 b/distrib/sets/lists/minix/md.i386 index 7b20f3900..8b640bdac 100644 --- a/distrib/sets/lists/minix/md.i386 +++ b/distrib/sets/lists/minix/md.i386 @@ -21,6 +21,7 @@ ./sbin/at_wini minix-sys ./sbin/floppy minix-sys ./sbin/hgfs minix-sys +./sbin/pckbd minix-sys ./sbin/vbfs minix-sys ./sbin/virtio_blk minix-sys ./usr/include/gcc-4.5/abmintrin.h minix-sys gcccmds diff --git a/distrib/sets/lists/minix/mi b/distrib/sets/lists/minix/mi index 94db612f7..02f52cf65 100644 --- a/distrib/sets/lists/minix/mi +++ b/distrib/sets/lists/minix/mi @@ -72,7 +72,6 @@ ./boot/minix/.temp/mod06_memory minix-sys ./boot/minix_default minix-sys ./dev minix-sys -./dev/mouse minix-sys ./etc minix-sys ./etc/atf minix-sys atf ./etc/boot.cfg.default minix-sys @@ -153,6 +152,7 @@ ./sbin/fsck.ext2 minix-sys ./sbin/fsck_ext2fs minix-sys ./sbin/fsck.mfs minix-sys +./sbin/input minix-sys ./sbin/is minix-sys ./sbin/isofs minix-sys ./sbin/mfs minix-sys @@ -1185,6 +1185,7 @@ ./usr/include/minix/i2cdriver.h minix-sys ./usr/include/minix/i2c.h minix-sys ./usr/include/minix/input.h minix-sys +./usr/include/minix/inputdriver.h minix-sys ./usr/include/minix/ioctl.h minix-sys ./usr/include/minix/ipcconst.h minix-sys ./usr/include/minix/ipc.h minix-sys @@ -1580,7 +1581,6 @@ ./usr/lib/keymaps/italian.map minix-sys ./usr/lib/keymaps/japanese.map minix-sys ./usr/lib/keymaps/latin-america.map minix-sys -./usr/lib/keymaps/olivetti.map minix-sys ./usr/lib/keymaps/polish.map minix-sys ./usr/lib/keymaps/portuguese.map minix-sys ./usr/lib/keymaps/russian-cp1251.map minix-sys @@ -1590,7 +1590,6 @@ ./usr/lib/keymaps/spanish.map minix-sys ./usr/lib/keymaps/uk.map minix-sys ./usr/lib/keymaps/ukraine-koi8-u.map minix-sys -./usr/lib/keymaps/us-std-esc.map minix-sys ./usr/lib/keymaps/us-std.map minix-sys ./usr/lib/keymaps/us-swap.map minix-sys ./usr/lib/libarchive.a minix-sys @@ -1678,6 +1677,8 @@ ./usr/lib/libgcc_s.so minix-sys gcccmds ./usr/lib/libgcc_s.so.1.0 minix-sys gcccmds ./usr/lib/libgcc_s.so.1 minix-sys gcccmds +./usr/lib/libinputdriver.a minix-sys +./usr/lib/libinputdriver_pic.a minix-sys ./usr/lib/libl.a minix-sys ./usr/lib/liblua.a minix-sys ./usr/lib/liblua_pic.a minix-sys diff --git a/drivers/Makefile b/drivers/Makefile index 644a3b4a2..97536d428 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -6,7 +6,7 @@ .if ${MKIMAGEONLY} == "yes" .if ${MACHINE_ARCH} == "i386" -SUBDIR= at_wini floppy tty pci +SUBDIR= at_wini floppy tty pci pckbd .endif .if ${MACHINE_ARCH} == "earm" @@ -17,8 +17,8 @@ SUBDIR= tty .if ${MACHINE_ARCH} == "i386" SUBDIR= ahci amddev atl2 at_wini audio dec21140A dp8390 dpeth \ - e1000 fbd filter floppy fxp hello lance log mmc orinoco pci printer \ - random readclock rtl8139 rtl8169 ti1225 tty vbox acpi \ + e1000 fbd filter floppy fxp hello lance log mmc orinoco pci pckbd \ + printer random readclock rtl8139 rtl8169 ti1225 tty vbox acpi \ virtio_blk virtio_net vnd .endif diff --git a/drivers/pckbd/Makefile b/drivers/pckbd/Makefile new file mode 100644 index 000000000..f964367b7 --- /dev/null +++ b/drivers/pckbd/Makefile @@ -0,0 +1,12 @@ +# Makefile for the PC keyboard/mouse driver (PCKBD) +PROG= pckbd +SRCS= pckbd.c table.c + +DPADD+= ${LIBINPUTDRIVER} ${LIBSYS} ${LIBTIMERS} +LDADD+= -linputdriver -lsys -ltimers + +MAN= + +BINDIR?= /sbin + +.include diff --git a/drivers/pckbd/pckbd.c b/drivers/pckbd/pckbd.c new file mode 100644 index 000000000..f1c91a6cf --- /dev/null +++ b/drivers/pckbd/pckbd.c @@ -0,0 +1,476 @@ +/* Keyboard driver for PCs and ATs. */ +#include +#include +#include + +#include "pckbd.h" + +/* + * Data that is to be sent to the keyboard. Each byte is ACKed by the keyboard. + * This is currently somewhat overpowered for its only purpose: setting LEDs. + */ +static struct kbdout { + unsigned char buf[KBD_OUT_BUFSZ]; + int offset; + int avail; + int expect_ack; +} kbdout; + +static int kbd_watchdog_set = 0; +static int kbd_alive = 1; +static minix_timer_t tmr_kbd_wd; + +static int irq_hook_id = -1; +static int aux_irq_hook_id = -1; + +static int kbd_state = 0; + +static unsigned char aux_bytes[3]; +static unsigned char aux_state = 0; +static int aux_counter = 0; + +static void pckbd_leds(unsigned int); +static void pckbd_intr(unsigned int); +static void pckbd_alarm(clock_t); + +static struct inputdriver pckbd_tab = { + .idr_leds = pckbd_leds, + .idr_intr = pckbd_intr, + .idr_alarm = pckbd_alarm +}; + +/* + * The watchdog timer function, implementing all but the actual reset. + */ +static void +kbd_watchdog(minix_timer_t *UNUSED(tmrp)) +{ + kbd_watchdog_set = 0; + if (!kbdout.avail) + return; /* Watchdog is no longer needed */ + + if (!kbd_alive) + printf("PCKBD: watchdog should reset keyboard\n"); + kbd_alive = 0; + + set_timer(&tmr_kbd_wd, sys_hz(), kbd_watchdog, 0); + + kbd_watchdog_set = 1; +} + +/* + * Send queued data to the keyboard. + */ +static void +kbd_send(void) +{ + u32_t sb; + int r; + + if (!kbdout.avail) + return; + if (kbdout.expect_ack) + return; + + if ((r = sys_inb(KB_STATUS, &sb)) != OK) + printf("PCKBD: send sys_inb() failed (1): %d\n", r); + + if (sb & (KB_OUT_FULL | KB_IN_FULL)) { + printf("PCKBD: not sending (1): sb = 0x%x\n", sb); + return; + } + micro_delay(KBC_IN_DELAY); + if ((r = sys_inb(KB_STATUS, &sb)) != OK) + printf("PCKBD: send sys_inb() failed (2): %d\n", r); + if (sb & (KB_OUT_FULL | KB_IN_FULL)) { + printf("PCKBD: not sending (2): sb = 0x%x\n", sb); + return; + } + + /* Okay, buffer is really empty */ + if ((r = sys_outb(KEYBD, kbdout.buf[kbdout.offset])) != OK) + printf("PCKBD: send sys_outb() failed: %d\n", r); + kbdout.offset++; + kbdout.avail--; + kbdout.expect_ack = 1; + + kbd_alive = 1; + if (kbd_watchdog_set) { + /* Set a watchdog timer for one second. */ + set_timer(&tmr_kbd_wd, sys_hz(), kbd_watchdog, 0); + + kbd_watchdog_set = 1; + } +} + +/* + * Try to obtain input from the keyboard. + */ +static int +scan_keyboard(unsigned char *bp, int *isauxp) +{ + u32_t b, sb; + int r; + + if ((r = sys_inb(KB_STATUS, &sb)) != OK) { + printf("PCKBD: scan sys_inb() failed (1): %d\n", r); + return FALSE; + } + if (!(sb & KB_OUT_FULL)) { + if (kbdout.avail && !kbdout.expect_ack) + kbd_send(); + return FALSE; + } + if ((r = sys_inb(KEYBD, &b)) != OK) { + printf("PCKBD: scan sys_inb() failed (2): %d\n", r); + return FALSE; + } + if (!(sb & KB_AUX_BYTE) && b == KB_ACK && kbdout.expect_ack) { + kbdout.expect_ack = 0; + micro_delay(KBC_IN_DELAY); + kbd_send(); + return FALSE; + } + if (bp) + *bp = b; + if (isauxp) + *isauxp = !!(sb & KB_AUX_BYTE); + if (kbdout.avail && !kbdout.expect_ack) { + micro_delay(KBC_IN_DELAY); + kbd_send(); + } + return TRUE; +} + +/* + * Wait until the controller is ready. Return TRUE on success, FALSE on + * timeout. Since this may discard input, only use during initialization. + */ +static int +kb_wait(void) +{ + spin_t spin; + u32_t status; + int r, isaux; + unsigned char byte; + + SPIN_FOR(&spin, KBC_WAIT_TIME) { + if ((r = sys_inb(KB_STATUS, &status)) != OK) + printf("PCKBD: wait sys_inb() failed: %d\n", r); + if (status & KB_OUT_FULL) + (void) scan_keyboard(&byte, &isaux); + if (!(status & (KB_IN_FULL | KB_OUT_FULL))) + return TRUE; /* wait until ready */ + } + + printf("PCKBD: wait timeout\n"); + return FALSE; +} + +/* + * Set the LEDs on the caps, num, and scroll lock keys. + */ +static void +set_leds(unsigned char ledmask) +{ + if (kbdout.avail == 0) + kbdout.offset = 0; + if (kbdout.offset + kbdout.avail + 2 > KBD_OUT_BUFSZ) { + /* + * The output buffer is full. Ignore this command. Reset the + * ACK flag. + */ + kbdout.expect_ack = 0; + } else { + kbdout.buf[kbdout.offset+kbdout.avail] = LED_CODE; + kbdout.buf[kbdout.offset+kbdout.avail+1] = ledmask; + kbdout.avail += 2; + } + if (!kbdout.expect_ack) + kbd_send(); +} + +/* + * Send a command to the keyboard. + */ +static void +kbc_cmd0(int cmd) +{ + int r; + + kb_wait(); + if ((r = sys_outb(KB_COMMAND, cmd)) != OK) + printf("PCKBD: cmd0 sys_outb() failed: %d\n", r); +} + +/* + * Send a command to the keyboard, including data. + */ +static void +kbc_cmd1(int cmd, int data) +{ + int r; + + kb_wait(); + if ((r = sys_outb(KB_COMMAND, cmd)) != OK) + printf("PCKBD: cmd1 sys_outb() failed (1): %d\n", r); + kb_wait(); + if ((r = sys_outb(KEYBD, data)) != OK) + printf("PCKBD: cmd1 sys_outb() failed (2): %d\n", r); +} + +/* + * Wait at most one second for a byte from the keyboard or the controller. + */ +static int +kbc_read(void) +{ + u32_t byte, status; + spin_t spin; + int r; + + SPIN_FOR(&spin, KBC_READ_TIME) { + if ((r = sys_inb(KB_STATUS, &status)) != OK) + printf("PCKBD: read sys_inb() failed (1): %d\n", r); + if (status & KB_OUT_FULL) { + micro_delay(KBC_IN_DELAY); + if ((r = sys_inb(KEYBD, &byte)) != OK) + printf("PCKBD: read sys_inb() failed (2): " + "%d\n", r); + if (status & KB_AUX_BYTE) + printf("PCKBD: read got aux 0x%x\n", byte); + return byte; + } + } + + panic("kbc_read failed to complete"); +} + +/* + * Initialize the keyboard hardware. + */ +static void +kb_init(void) +{ + int r, ccb; + + /* Discard leftover keystroke. */ + scan_keyboard(NULL, NULL); + + /* Set interrupt handler and enable keyboard IRQ. */ + irq_hook_id = KEYBOARD_IRQ; /* id to be returned on interrupt */ + r = sys_irqsetpolicy(KEYBOARD_IRQ, IRQ_REENABLE, &irq_hook_id); + if (r != OK) + panic("Couldn't set keyboard IRQ policy: %d", r); + if ((r = sys_irqenable(&irq_hook_id)) != OK) + panic("Couldn't enable keyboard IRQs: %d", r); + + /* Set AUX interrupt handler and enable AUX IRQ. */ + aux_irq_hook_id = KBD_AUX_IRQ; /* id to be returned on interrupt */ + r = sys_irqsetpolicy(KBD_AUX_IRQ, IRQ_REENABLE, &aux_irq_hook_id); + if (r != OK) + panic("Couldn't set AUX IRQ policy: %d", r); + if ((r = sys_irqenable(&aux_irq_hook_id)) != OK) + panic("Couldn't enable AUX IRQs: %d", r); + + /* Disable the keyboard and AUX. */ + kbc_cmd0(KBC_DI_KBD); + kbc_cmd0(KBC_DI_AUX); + + /* Get the current configuration byte. */ + kbc_cmd0(KBC_RD_RAM_CCB); + ccb = kbc_read(); + + /* Enable both interrupts. */ + kbc_cmd1(KBC_WR_RAM_CCB, ccb | 3); + + /* Re-enable the keyboard device. */ + kbc_cmd0(KBC_EN_KBD); + + /* Enable the AUX device. */ + kbc_cmd0(KBC_EN_AUX); + + /* Set the initial LED state. */ + kb_wait(); + + set_leds(0); +} + +/* + * Process a keyboard scancode. + */ +static void +kbd_process(unsigned char scode) +{ + int press, index, page, code; + + press = !(scode & SCAN_RELEASE) ? INPUT_PRESS : INPUT_RELEASE; + index = scode & ~SCAN_RELEASE; + + switch (kbd_state) { + case 1: + page = scanmap_escaped[index].page; + code = scanmap_escaped[index].code; + break; + case 2: + kbd_state = (index == SCAN_CTRL) ? 3 : 0; + return; + case 3: + if (index == SCAN_NUMLOCK) { + page = INPUT_PAGE_KEY; + code = INPUT_KEY_PAUSE; + break; + } + /* FALLTHROUGH */ + default: + switch (scode) { + case SCAN_EXT0: + kbd_state = 1; + return; + case SCAN_EXT1: + kbd_state = 2; + return; + } + page = scanmap_normal[index].page; + code = scanmap_normal[index].code; + break; + } + + if (page) + inputdriver_send_event(FALSE /*mouse*/, page, code, press, 0); + + kbd_state = 0; +} + +/* + * Process an auxiliary (mouse) scancode. + */ +static void +kbdaux_process(unsigned char scode) +{ + u32_t delta; + int i; + + if (aux_counter == 0 && !(scode & 0x08)) + return; /* resync */ + + aux_bytes[aux_counter++] = scode; + + if (aux_counter < 3) + return; /* need more first */ + + aux_counter = 0; + + /* Send an event for each button state change. */ + for (i = 0; i < 3; i++) { + if ((aux_state ^ aux_bytes[0]) & (1 << i)) { + aux_state ^= (1 << i); + + inputdriver_send_event(TRUE /*mouse*/, + INPUT_PAGE_BUTTON, INPUT_BUTTON_1 + i, + aux_state & (1 << i), 0); + } + } + + /* Send an event for each relative mouse movement, X and/or Y. */ + for (i = 0; i < 2; i++) { + delta = aux_bytes[1 + i]; + if (delta != 0) { + if (aux_bytes[0] & (0x10 << i)) + delta |= 0xFFFFFF00; /* make signed */ + + inputdriver_send_event(TRUE /*mouse*/, INPUT_PAGE_GD, + !i ? INPUT_GD_X : INPUT_GD_Y, delta, + INPUT_FLAG_REL); + } + } +} + +/* + * Set keyboard LEDs. + */ +static void +pckbd_leds(unsigned int leds) +{ + unsigned char b; + + b = 0; + if (leds & (1 << INPUT_LED_NUMLOCK)) b |= LED_NUM_LOCK; + if (leds & (1 << INPUT_LED_CAPSLOCK)) b |= LED_CAPS_LOCK; + if (leds & (1 << INPUT_LED_SCROLLLOCK)) b |= LED_SCROLL_LOCK; + + set_leds(b); +} + +/* + * Process a keyboard interrupt. + */ +static void +pckbd_intr(unsigned int UNUSED(mask)) +{ + unsigned char scode; + int isaux; + + /* Fetch a character from the keyboard hardware and acknowledge it. */ + if (!scan_keyboard(&scode, &isaux)) + return; + + if (!isaux) { + /* A keyboard key press or release. */ + kbd_process(scode); + } else { + /* A mouse event. */ + kbdaux_process(scode); + } +} + +/* + * Process a timer signal. + */ +static void +pckbd_alarm(clock_t stamp) +{ + expire_timers(stamp); +} + +/* + * Initialize the driver. + */ +static int +pckbd_init(int UNUSED(type), sef_init_info_t *UNUSED(info)) +{ + /* Initialize the watchdog timer. */ + init_timer(&tmr_kbd_wd); + + /* Initialize the keyboard. */ + kb_init(); + + /* Announce the driver's presence. */ + inputdriver_announce(INPUT_DEV_KBD | INPUT_DEV_MOUSE); + + return OK; +} + +/* + * Set callback routines and let SEF initialize. + */ +static void +pckbd_startup(void) +{ + sef_setcb_init_fresh(pckbd_init); + + sef_startup(); +} + +/* + * PC keyboard/mouse driver task. + */ +int +main(void) +{ + pckbd_startup(); + + inputdriver_task(&pckbd_tab); + + return 0; +} diff --git a/drivers/pckbd/pckbd.h b/drivers/pckbd/pckbd.h new file mode 100644 index 000000000..fd3c791c3 --- /dev/null +++ b/drivers/pckbd/pckbd.h @@ -0,0 +1,49 @@ +#ifndef _DRIVERS_PCKBD_H +#define _DRIVERS_PCKBD_H + +/* Standard and AT keyboard. (PS/2 MCA implies AT throughout.) */ +#define KEYBD 0x60 /* I/O port for keyboard data */ + +/* AT keyboard. */ +#define KB_COMMAND 0x64 /* I/O port for commands on AT */ +#define KB_STATUS 0x64 /* I/O port for status on AT */ +#define KB_ACK 0xFA /* keyboard ack response */ +#define KB_AUX_BYTE 0x20 /* Auxiliary Device Output Buffer Full */ +#define KB_OUT_FULL 0x01 /* status bit set when keypress char pending */ +#define KB_IN_FULL 0x02 /* status bit set when not ready to receive */ +#define KBC_RD_RAM_CCB 0x20 /* Read controller command byte */ +#define KBC_WR_RAM_CCB 0x60 /* Write controller command byte */ +#define KBC_DI_AUX 0xA7 /* Disable Auxiliary Device */ +#define KBC_EN_AUX 0xA8 /* Enable Auxiliary Device */ +#define KBC_DI_KBD 0xAD /* Disable Keybard Interface */ +#define KBC_EN_KBD 0xAE /* Enable Keybard Interface */ +#define LED_CODE 0xED /* command to keyboard to set LEDs */ + +#define KBC_WAIT_TIME 100000 /* wait this many usecs for a status update */ +#define KBC_READ_TIME 1000000 /* wait this many usecs for a result byte */ + +#define KBC_IN_DELAY 7 /* wait 7 microseconds when polling */ + +#define KBD_OUT_BUFSZ 16 /* Output buffer for data to the keyboard. */ + +#define KBD_SCAN_CODES 0x80 + +#define SCAN_RELEASE 0x80 +#define SCAN_CTRL 0x1D +#define SCAN_NUMLOCK 0x45 +#define SCAN_EXT0 0xE0 +#define SCAN_EXT1 0xE1 + +#define LED_SCROLL_LOCK 0x01 +#define LED_NUM_LOCK 0x02 +#define LED_CAPS_LOCK 0x04 + +struct scanmap { + unsigned short page; + unsigned short code; +}; + +extern const struct scanmap scanmap_normal[KBD_SCAN_CODES]; +extern const struct scanmap scanmap_escaped[KBD_SCAN_CODES]; + +#endif /* !_DRIVERS_PCKBD_H */ diff --git a/drivers/pckbd/table.c b/drivers/pckbd/table.c new file mode 100644 index 000000000..c1773e95c --- /dev/null +++ b/drivers/pckbd/table.c @@ -0,0 +1,169 @@ +/* Scancode conversion tables from PC keyboard scan codes to USB HID codes. */ +/* + * The contents of this file are based on the Microsoft "USB HID to PS/2 Scan + * Code Translation Table" document, of which the purpose is to provide a + * translation the other way around. Therefore, some codes might be missing. + */ +#include + +#include "pckbd.h" + +const struct scanmap scanmap_normal[KBD_SCAN_CODES] = { + [0x01] = { INPUT_PAGE_KEY, INPUT_KEY_ESCAPE }, + [0x02] = { INPUT_PAGE_KEY, INPUT_KEY_1 }, + [0x03] = { INPUT_PAGE_KEY, INPUT_KEY_2 }, + [0x04] = { INPUT_PAGE_KEY, INPUT_KEY_3 }, + [0x05] = { INPUT_PAGE_KEY, INPUT_KEY_4 }, + [0x06] = { INPUT_PAGE_KEY, INPUT_KEY_5 }, + [0x07] = { INPUT_PAGE_KEY, INPUT_KEY_6 }, + [0x08] = { INPUT_PAGE_KEY, INPUT_KEY_7 }, + [0x09] = { INPUT_PAGE_KEY, INPUT_KEY_8 }, + [0x0A] = { INPUT_PAGE_KEY, INPUT_KEY_9 }, + [0x0B] = { INPUT_PAGE_KEY, INPUT_KEY_0 }, + [0x0C] = { INPUT_PAGE_KEY, INPUT_KEY_DASH }, + [0x0D] = { INPUT_PAGE_KEY, INPUT_KEY_EQUAL }, + [0x0E] = { INPUT_PAGE_KEY, INPUT_KEY_BACKSPACE }, + [0x0F] = { INPUT_PAGE_KEY, INPUT_KEY_TAB }, + [0x10] = { INPUT_PAGE_KEY, INPUT_KEY_Q }, + [0x11] = { INPUT_PAGE_KEY, INPUT_KEY_W }, + [0x12] = { INPUT_PAGE_KEY, INPUT_KEY_E }, + [0x13] = { INPUT_PAGE_KEY, INPUT_KEY_R }, + [0x14] = { INPUT_PAGE_KEY, INPUT_KEY_T }, + [0x15] = { INPUT_PAGE_KEY, INPUT_KEY_Y }, + [0x16] = { INPUT_PAGE_KEY, INPUT_KEY_U }, + [0x17] = { INPUT_PAGE_KEY, INPUT_KEY_I }, + [0x18] = { INPUT_PAGE_KEY, INPUT_KEY_O }, + [0x19] = { INPUT_PAGE_KEY, INPUT_KEY_P }, + [0x1A] = { INPUT_PAGE_KEY, INPUT_KEY_OPEN_BRACKET }, + [0x1B] = { INPUT_PAGE_KEY, INPUT_KEY_CLOSE_BRACKET }, + [0x1C] = { INPUT_PAGE_KEY, INPUT_KEY_ENTER }, + [0x1D] = { INPUT_PAGE_KEY, INPUT_KEY_LEFT_CTRL }, + [0x1E] = { INPUT_PAGE_KEY, INPUT_KEY_A }, + [0x1F] = { INPUT_PAGE_KEY, INPUT_KEY_S }, + [0x20] = { INPUT_PAGE_KEY, INPUT_KEY_D }, + [0x21] = { INPUT_PAGE_KEY, INPUT_KEY_F }, + [0x22] = { INPUT_PAGE_KEY, INPUT_KEY_G }, + [0x23] = { INPUT_PAGE_KEY, INPUT_KEY_H }, + [0x24] = { INPUT_PAGE_KEY, INPUT_KEY_J }, + [0x25] = { INPUT_PAGE_KEY, INPUT_KEY_K }, + [0x26] = { INPUT_PAGE_KEY, INPUT_KEY_L }, + [0x27] = { INPUT_PAGE_KEY, INPUT_KEY_SEMICOLON }, + [0x28] = { INPUT_PAGE_KEY, INPUT_KEY_APOSTROPH }, + [0x29] = { INPUT_PAGE_KEY, INPUT_KEY_GRAVE_ACCENT }, + [0x2A] = { INPUT_PAGE_KEY, INPUT_KEY_LEFT_SHIFT }, + [0x2B] = { INPUT_PAGE_KEY, INPUT_KEY_BACKSLASH }, + [0x2C] = { INPUT_PAGE_KEY, INPUT_KEY_Z }, + [0x2D] = { INPUT_PAGE_KEY, INPUT_KEY_X }, + [0x2E] = { INPUT_PAGE_KEY, INPUT_KEY_C }, + [0x2F] = { INPUT_PAGE_KEY, INPUT_KEY_V }, + [0x30] = { INPUT_PAGE_KEY, INPUT_KEY_B }, + [0x31] = { INPUT_PAGE_KEY, INPUT_KEY_N }, + [0x32] = { INPUT_PAGE_KEY, INPUT_KEY_M }, + [0x33] = { INPUT_PAGE_KEY, INPUT_KEY_COMMA }, + [0x34] = { INPUT_PAGE_KEY, INPUT_KEY_PERIOD }, + [0x35] = { INPUT_PAGE_KEY, INPUT_KEY_SLASH }, + [0x36] = { INPUT_PAGE_KEY, INPUT_KEY_RIGHT_SHIFT }, + [0x37] = { INPUT_PAGE_KEY, INPUT_KEY_KP_STAR }, + [0x38] = { INPUT_PAGE_KEY, INPUT_KEY_LEFT_ALT }, + [0x39] = { INPUT_PAGE_KEY, INPUT_KEY_SPACEBAR }, + [0x3A] = { INPUT_PAGE_KEY, INPUT_KEY_CAPS_LOCK }, + [0x3B] = { INPUT_PAGE_KEY, INPUT_KEY_F1 }, + [0x3C] = { INPUT_PAGE_KEY, INPUT_KEY_F2 }, + [0x3D] = { INPUT_PAGE_KEY, INPUT_KEY_F3 }, + [0x3E] = { INPUT_PAGE_KEY, INPUT_KEY_F4 }, + [0x3F] = { INPUT_PAGE_KEY, INPUT_KEY_F5 }, + [0x40] = { INPUT_PAGE_KEY, INPUT_KEY_F6 }, + [0x41] = { INPUT_PAGE_KEY, INPUT_KEY_F7 }, + [0x42] = { INPUT_PAGE_KEY, INPUT_KEY_F8 }, + [0x43] = { INPUT_PAGE_KEY, INPUT_KEY_F9 }, + [0x44] = { INPUT_PAGE_KEY, INPUT_KEY_F10 }, + [0x45] = { INPUT_PAGE_KEY, INPUT_KEY_NUM_LOCK }, + [0x46] = { INPUT_PAGE_KEY, INPUT_KEY_SCROLL_LOCK }, + [0x47] = { INPUT_PAGE_KEY, INPUT_KEY_KP_7 }, + [0x48] = { INPUT_PAGE_KEY, INPUT_KEY_KP_8 }, + [0x49] = { INPUT_PAGE_KEY, INPUT_KEY_KP_9 }, + [0x4A] = { INPUT_PAGE_KEY, INPUT_KEY_KP_DASH }, + [0x4B] = { INPUT_PAGE_KEY, INPUT_KEY_KP_4 }, + [0x4C] = { INPUT_PAGE_KEY, INPUT_KEY_KP_5 }, + [0x4D] = { INPUT_PAGE_KEY, INPUT_KEY_KP_6 }, + [0x4E] = { INPUT_PAGE_KEY, INPUT_KEY_KP_PLUS }, + [0x4F] = { INPUT_PAGE_KEY, INPUT_KEY_KP_1 }, + [0x50] = { INPUT_PAGE_KEY, INPUT_KEY_KP_2 }, + [0x51] = { INPUT_PAGE_KEY, INPUT_KEY_KP_3 }, + [0x52] = { INPUT_PAGE_KEY, INPUT_KEY_KP_0 }, + [0x53] = { INPUT_PAGE_KEY, INPUT_KEY_KP_PERIOD }, + [0x54] = { INPUT_PAGE_KEY, INPUT_KEY_SYSREQ }, + [0x56] = { INPUT_PAGE_KEY, INPUT_KEY_EUROPE_2 }, + [0x57] = { INPUT_PAGE_KEY, INPUT_KEY_F11 }, + [0x58] = { INPUT_PAGE_KEY, INPUT_KEY_F12 }, + [0x59] = { INPUT_PAGE_KEY, INPUT_KEY_KP_EQUAL }, + [0x5C] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_6 }, + [0x64] = { INPUT_PAGE_KEY, INPUT_KEY_F13 }, + [0x65] = { INPUT_PAGE_KEY, INPUT_KEY_F14 }, + [0x66] = { INPUT_PAGE_KEY, INPUT_KEY_F15 }, + [0x67] = { INPUT_PAGE_KEY, INPUT_KEY_F16 }, + [0x68] = { INPUT_PAGE_KEY, INPUT_KEY_F17 }, + [0x69] = { INPUT_PAGE_KEY, INPUT_KEY_F18 }, + [0x6A] = { INPUT_PAGE_KEY, INPUT_KEY_F19 }, + [0x6B] = { INPUT_PAGE_KEY, INPUT_KEY_F20 }, + [0x6C] = { INPUT_PAGE_KEY, INPUT_KEY_F21 }, + [0x6D] = { INPUT_PAGE_KEY, INPUT_KEY_F22 }, + [0x6E] = { INPUT_PAGE_KEY, INPUT_KEY_F23 }, + [0x70] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_2 }, + /* The following two keys (0x71, 0x72) are release-only. */ + [0x71] = { INPUT_PAGE_KEY, INPUT_KEY_LANG_2 }, + [0x72] = { INPUT_PAGE_KEY, INPUT_KEY_LANG_1 }, + [0x73] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_1 }, + /* The following key (0x76) can be either F24 or LANG_5. */ + [0x76] = { INPUT_PAGE_KEY, INPUT_KEY_F24 }, + [0x77] = { INPUT_PAGE_KEY, INPUT_KEY_LANG_4 }, + [0x78] = { INPUT_PAGE_KEY, INPUT_KEY_LANG_3 }, + [0x79] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_4 }, + [0x7B] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_5 }, + [0x7D] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_3 }, + [0x7E] = { INPUT_PAGE_KEY, INPUT_KEY_EQUAL_SIGN }, +}; + +const struct scanmap scanmap_escaped[KBD_SCAN_CODES] = { + [0x10] = { INPUT_PAGE_CONS, INPUT_CONS_SCAN_PREVIOUS_TRACK }, + [0x19] = { INPUT_PAGE_CONS, INPUT_CONS_SCAN_NEXT_TRACK }, + [0x1C] = { INPUT_PAGE_KEY, INPUT_KEY_KP_ENTER }, + [0x1D] = { INPUT_PAGE_KEY, INPUT_KEY_RIGHT_CTRL }, + [0x20] = { INPUT_PAGE_CONS, INPUT_CONS_MUTE }, + [0x21] = { INPUT_PAGE_CONS, INPUT_CONS_AL_CALCULATOR }, + [0x22] = { INPUT_PAGE_CONS, INPUT_CONS_PLAY_PAUSE }, + [0x24] = { INPUT_PAGE_CONS, INPUT_CONS_STOP }, + [0x2E] = { INPUT_PAGE_CONS, INPUT_CONS_VOLUME_DOWN }, + [0x30] = { INPUT_PAGE_CONS, INPUT_CONS_VOLUME_UP }, + [0x32] = { INPUT_PAGE_CONS, INPUT_CONS_AC_HOME }, + [0x35] = { INPUT_PAGE_KEY, INPUT_KEY_KP_SLASH }, + [0x37] = { INPUT_PAGE_KEY, INPUT_KEY_PRINT_SCREEN }, + [0x38] = { INPUT_PAGE_KEY, INPUT_KEY_RIGHT_ALT }, + [0x46] = { INPUT_PAGE_KEY, INPUT_KEY_PAUSE }, + [0x47] = { INPUT_PAGE_KEY, INPUT_KEY_HOME }, + [0x48] = { INPUT_PAGE_KEY, INPUT_KEY_UP_ARROW }, + [0x49] = { INPUT_PAGE_KEY, INPUT_KEY_PAGE_UP }, + [0x4B] = { INPUT_PAGE_KEY, INPUT_KEY_LEFT_ARROW }, + [0x4D] = { INPUT_PAGE_KEY, INPUT_KEY_RIGHT_ARROW }, + [0x4F] = { INPUT_PAGE_KEY, INPUT_KEY_END }, + [0x50] = { INPUT_PAGE_KEY, INPUT_KEY_DOWN_ARROW }, + [0x51] = { INPUT_PAGE_KEY, INPUT_KEY_PAGE_DOWN }, + [0x52] = { INPUT_PAGE_KEY, INPUT_KEY_INSERT }, + [0x53] = { INPUT_PAGE_KEY, INPUT_KEY_DELETE }, + [0x5B] = { INPUT_PAGE_KEY, INPUT_KEY_LEFT_GUI }, + [0x5C] = { INPUT_PAGE_KEY, INPUT_KEY_RIGHT_GUI }, + [0x5D] = { INPUT_PAGE_KEY, INPUT_KEY_APPLICATION }, + /* The following extended key (0x5E) may also be INPUT_KEY_POWER. */ + [0x5E] = { INPUT_PAGE_GD, INPUT_GD_SYSTEM_POWER_DOWN }, + [0x5F] = { INPUT_PAGE_GD, INPUT_GD_SYSTEM_SLEEP }, + [0x63] = { INPUT_PAGE_GD, INPUT_GD_SYSTEM_WAKE_UP }, + [0x65] = { INPUT_PAGE_CONS, INPUT_CONS_AC_SEARCH }, + [0x66] = { INPUT_PAGE_CONS, INPUT_CONS_AC_BOOKMARKS }, + [0x67] = { INPUT_PAGE_CONS, INPUT_CONS_AC_REFRESH }, + [0x68] = { INPUT_PAGE_CONS, INPUT_CONS_AC_STOP }, + [0x69] = { INPUT_PAGE_CONS, INPUT_CONS_AC_FORWARD }, + [0x6A] = { INPUT_PAGE_CONS, INPUT_CONS_AC_BACK }, + [0x6B] = { INPUT_PAGE_CONS, INPUT_CONS_AL_LOCAL_BROWSER }, + [0x6C] = { INPUT_PAGE_CONS, INPUT_CONS_AL_EMAIL_READER }, + [0x6D] = { INPUT_PAGE_CONS, INPUT_CONS_AL_MEDIA_SELECT }, +}; diff --git a/drivers/ramdisk/Makefile b/drivers/ramdisk/Makefile index 3c2e1759b..df01f72b7 100644 --- a/drivers/ramdisk/Makefile +++ b/drivers/ramdisk/Makefile @@ -32,7 +32,7 @@ EXTRA= rc PROTO_FILES= proto.common.etc proto.common.dynamic proto.dev PROG_DRIVERS= PROG_COMMANDS= mount umount grep fsck.mfs sh service loadramdisk sysenv -PROG_SERVERS= mfs procfs +PROG_SERVERS= input mfs procfs PROG_BIN= PROG_SBIN= PROG_USR.BIN= @@ -45,7 +45,7 @@ RAMDISK_SMALL= 1 .if ${MACHINE_ARCH} == "i386" ETC+= rs.single EXTRA+= -PROG_DRIVERS+= at_wini floppy pci +PROG_DRIVERS+= at_wini floppy pci pckbd PROG_COMMANDS+= cdprobe PROG_USR.SBIN+= pwd_mkdb diff --git a/drivers/ramdisk/proto b/drivers/ramdisk/proto index f8f650452..2852fe6e8 100644 --- a/drivers/ramdisk/proto +++ b/drivers/ramdisk/proto @@ -21,6 +21,7 @@ d--755 0 0 ahci ---755 0 0 ahci virtio_blk ---755 0 0 virtio_blk at_wini ---755 0 0 at_wini + pckbd ---755 0 0 pckbd #if RAMDISK_SMALL == 1 ext2 ---755 0 0 ext2 #endif @@ -30,6 +31,7 @@ d--755 0 0 #endif mfs ---755 0 0 mfs procfs ---755 0 0 procfs + input ---755 0 0 input $ usr d--755 0 0 bin d--755 0 0 diff --git a/drivers/ramdisk/proto.dev b/drivers/ramdisk/proto.dev index 4e86959a5..bce056c5f 100644 --- a/drivers/ramdisk/proto.dev +++ b/drivers/ramdisk/proto.dev @@ -355,14 +355,21 @@ imgrd b--600 0 8 1 6 ip c--600 0 0 7 2 ip0 c--600 0 0 7 2 - kbd c--660 0 0 4 127 - kbdaux c--660 0 0 4 126 + kbdmux c--600 0 0 64 0 + kbd0 c--600 0 0 64 1 + kbd1 c--600 0 0 64 2 + kbd2 c--600 0 0 64 3 + kbd3 c--600 0 0 64 4 klog c--600 0 0 15 0 kmem c--640 0 8 1 2 log c--222 0 0 4 15 lp c--200 1 1 6 0 mem c--640 0 8 1 1 - mouse s--777 0 0 /dev/kbdaux + mousemux c--600 0 0 64 64 + mouse0 c--600 0 0 64 65 + mouse1 c--600 0 0 64 66 + mouse2 c--600 0 0 64 67 + mouse3 c--600 0 0 64 68 null c--666 0 8 1 3 ptyp0 c--666 0 4 4 192 ptyp1 c--666 0 4 4 193 diff --git a/drivers/ramdisk/rc b/drivers/ramdisk/rc index cf20b9929..c26ed3c9e 100644 --- a/drivers/ramdisk/rc +++ b/drivers/ramdisk/rc @@ -15,6 +15,9 @@ then if [ -e $ACPI -a -n "`sysenv acpi`" ] fi /bin/service -c up /usr/sbin/pci + /bin/service -c up /sbin/input -dev /dev/kbdmux + /bin/service -c up /sbin/pckbd + # Start procfs so we can access /proc/pci mount -t procfs none /proc >/dev/null diff --git a/drivers/tty/arch/earm/console.c b/drivers/tty/arch/earm/console.c index 04a5aff34..d2360b2aa 100644 --- a/drivers/tty/arch/earm/console.c +++ b/drivers/tty/arch/earm/console.c @@ -18,9 +18,13 @@ cons_stop(void) { } +void +beep_x(unsigned int freq, clock_t dur) +{ +} + int con_loadfont(endpoint_t endpt, cp_grant_id_t grant) { return 0; } - diff --git a/drivers/tty/arch/earm/keyboard.c b/drivers/tty/arch/earm/keyboard.c index cf278378b..474df386f 100644 --- a/drivers/tty/arch/earm/keyboard.c +++ b/drivers/tty/arch/earm/keyboard.c @@ -3,23 +3,13 @@ #include #include "tty.h" -void -kbd_interrupt(message *m) -{ -} - void do_fkey_ctl(message *m) { } void -do_kb_inject(message *m) -{ -} - -void -do_kbd(message *m, int ipc_status) +do_input(message *m) { } diff --git a/drivers/tty/arch/earm/rs232.c b/drivers/tty/arch/earm/rs232.c index 3cba19ef5..d8bde82f3 100644 --- a/drivers/tty/arch/earm/rs232.c +++ b/drivers/tty/arch/earm/rs232.c @@ -649,7 +649,7 @@ rs_read(tty_t *tp, int try) if (count > icount) count = icount; /* Perform input processing on (part of) the input buffer. */ - if ((count = in_process(tp, rs->itail, count, -1)) == 0) break; + if ((count = in_process(tp, rs->itail, count)) == 0) break; rs->icount -= count; if (!rs->idevready && rs->icount < RS_ILOWWATER) istart(rs); if ((rs->itail += count) == bufend(rs->ibuf)) diff --git a/drivers/tty/arch/i386/keyboard.c b/drivers/tty/arch/i386/keyboard.c index 4dc8649f0..d24109eda 100644 --- a/drivers/tty/arch/i386/keyboard.c +++ b/drivers/tty/arch/i386/keyboard.c @@ -19,78 +19,29 @@ #include #include #include +#include #include #include "tty.h" -#include "kernel/const.h" -#include "kernel/config.h" -#include "kernel/type.h" -#include "kernel/proc.h" -static u16_t keymap[NR_SCAN_CODES * MAP_COLS] = { +static u16_t keymap[NR_SCAN_CODES][MAP_COLS] = { #include "keymaps/us-std.src" }; -static u16_t keymap_escaped[NR_SCAN_CODES * MAP_COLS] = { -#include "keymaps/us-std-esc.src" -}; - -static int irq_hook_id = -1; -static int aux_irq_hook_id = -1; - -/* Standard and AT keyboard. (PS/2 MCA implies AT throughout.) */ -#define KEYBD 0x60 /* I/O port for keyboard data */ - -/* AT keyboard. */ -#define KB_COMMAND 0x64 /* I/O port for commands on AT */ -#define KB_STATUS 0x64 /* I/O port for status on AT */ -#define KB_ACK 0xFA /* keyboard ack response */ -#define KB_AUX_BYTE 0x20 /* Auxiliary Device Output Buffer Full */ -#define KB_OUT_FULL 0x01 /* status bit set when keypress char pending */ -#define KB_IN_FULL 0x02 /* status bit set when not ready to receive */ -#define KBC_RD_RAM_CCB 0x20 /* Read controller command byte */ -#define KBC_WR_RAM_CCB 0x60 /* Write controller command byte */ -#define KBC_DI_AUX 0xA7 /* Disable Auxiliary Device */ -#define KBC_EN_AUX 0xA8 /* Enable Auxiliary Device */ -#define KBC_DI_KBD 0xAD /* Disable Keybard Interface */ -#define KBC_EN_KBD 0xAE /* Enable Keybard Interface */ -#define KBC_WRITE_AUX 0xD4 /* Write to Auxiliary Device */ -#define LED_CODE 0xED /* command to keyboard to set LEDs */ -#define MAX_KB_ACK_RETRIES 0x1000 /* max #times to wait for kb ack */ -#define MAX_KB_BUSY_RETRIES 0x1000 /* max #times to loop while kb busy */ -#define KBIT 0x80 /* bit used to ack characters to keyboard */ - -#define KBC_IN_DELAY 7 /* wait 7 microseconds when polling */ - -/* Miscellaneous. */ -#define ESC_SCAN 0x01 /* reboot key when panicking */ -#define SLASH_SCAN 0x35 /* to recognize numeric slash */ -#define RSHIFT_SCAN 0x36 /* to distinguish left and right shift */ -#define HOME_SCAN 0x47 /* first key on the numeric keypad */ -#define INS_SCAN 0x52 /* INS for use in CTRL-ALT-INS reboot */ -#define DEL_SCAN 0x53 /* DEL for use in CTRL-ALT-DEL reboot */ - -#define KBD_BUFSZ 1024 /* Buffer size for raw scan codes */ -#define KBD_OUT_BUFSZ 16 /* Output buffer to sending data to the - * keyboard. - */ - -#define CONSOLE 0 /* line number for console */ #define KB_IN_BYTES 32 /* size of keyboard input buffer */ -static char injbuf[KB_IN_BYTES]; -static char *injhead = injbuf; -static char *injtail = injbuf; -static int injcount; +/* Scan codes in the input buffer are in the 0000h-00E7h range inclusive, plus + * the following bit if the key was released rather than pressed. + */ +#define RELEASE_BIT 0x8000 -static char ibuf[KB_IN_BYTES]; /* input buffer */ -static char *ihead = ibuf; /* next free spot in input buffer */ -static char *itail = ibuf; /* scan code to return to TTY */ -static int icount; /* # codes in buffer */ +static unsigned short inbuf[KB_IN_BYTES]; +static unsigned short *inhead = inbuf; +static unsigned short *intail = inbuf; +static int incount; -static int esc; /* escape scan code detected? */ static int alt_l; /* left alt key state */ static int alt_r; /* right alt key state */ -static int alt; /* either alt key */ +static int alt; /* either alt key */ static int ctrl_l; /* left control key state */ static int ctrl_r; /* right control key state */ static int ctrl; /* either control key */ @@ -99,15 +50,15 @@ static int shift_r; /* right shift key state */ static int shift; /* either shift key */ static int num_down; /* num lock key depressed */ static int caps_down; /* caps lock key depressed */ -static int scroll_down; /* scroll lock key depressed */ +static int scroll_down; /* scroll lock key depressed */ static int alt_down; /* alt key depressed */ static int locks[NR_CONS]; /* per console lock keys state */ -/* Lock key active bits. Chosen to be equal to the keyboard LED bits. */ -#define SCROLL_LOCK 0x01 -#define NUM_LOCK 0x02 -#define CAPS_LOCK 0x04 -#define ALT_LOCK 0x08 +/* Lock key active bits. Chosen to be equal to the input LED mask bits. */ +#define SCROLL_LOCK (1 << INPUT_LED_SCROLLLOCK) +#define NUM_LOCK (1 << INPUT_LED_NUMLOCK) +#define CAPS_LOCK (1 << INPUT_LED_CAPSLOCK) +#define ALT_LOCK 0x10 static char numpad_map[12] = {'H', 'Y', 'A', 'B', 'D', 'C', 'V', 'U', 'G', 'S', 'T', '@'}; @@ -117,335 +68,20 @@ static char *fkey_map[12] = "18", "19", "20", "21", "23", "24"}; /* F7-F12 */ /* Variables and definition for observed function keys. */ -typedef struct observer { int proc_nr; int events; } obs_t; +typedef struct observer { endpoint_t proc_nr; int events; } obs_t; static obs_t fkey_obs[12]; /* observers for F1-F12 */ static obs_t sfkey_obs[12]; /* observers for SHIFT F1-F12 */ -static struct kbd -{ - devminor_t minor; - int nr_open; - char buf[KBD_BUFSZ]; - int offset; - int avail; - size_t req_size; - cdev_id_t req_id; - cp_grant_id_t req_grant; - endpoint_t req_caller; - unsigned int select_ops; - endpoint_t select_proc; -} kbd, kbdaux; +static endpoint_t input_endpt = NONE; -/* Data that is to be sent to the keyboard. Each byte is ACKed by the - * keyboard. - */ -static struct kbd_outack -{ - unsigned char buf[KBD_OUT_BUFSZ]; - int offset; - int avail; - int expect_ack; -} kbdout; - -static int kbd_watchdog_set= 0; -static int kbd_alive= 1; static long sticky_alt_mode = 0; static long debug_fkeys = 1; -static minix_timer_t tmr_kbd_wd; -static void kbc_cmd0(int cmd); -static void kbc_cmd1(int cmd, int data); -static int kbc_read(void); -static void kbd_send(void); -static int kb_ack(void); -static int kb_wait(void); static int func_key(int scode); -static int scan_keyboard(unsigned char *bp, int *isauxp); static unsigned make_break(int scode); static void set_leds(void); static void show_key_mappings(void); -static int kb_read(struct tty *tp, int try); static unsigned map_key(int scode); -static void kbd_watchdog(minix_timer_t *tmrp); - -static int kbd_open(devminor_t minor, int access, endpoint_t user_endpt); -static int kbd_close(devminor_t minor); -static ssize_t kbd_read(devminor_t minor, u64_t position, endpoint_t endpt, - cp_grant_id_t grant, size_t size, int flags, cdev_id_t id); -static ssize_t kbd_write(devminor_t minor, u64_t position, endpoint_t endpt, - cp_grant_id_t grant, size_t size, int flags, cdev_id_t id); -static int kbd_ioctl(devminor_t minor, unsigned long request, endpoint_t endpt, - cp_grant_id_t grant, int flags, endpoint_t user_endpt, cdev_id_t id); -static int kbd_cancel(devminor_t minor, endpoint_t endpt, cdev_id_t id); -static int kbd_select(devminor_t minor, unsigned int ops, endpoint_t endpt); - -static struct chardriver kbd_tab = { - .cdr_open = kbd_open, - .cdr_close = kbd_close, - .cdr_read = kbd_read, - .cdr_write = kbd_write, - .cdr_ioctl = kbd_ioctl, - .cdr_cancel = kbd_cancel, - .cdr_select = kbd_select -}; - -/*===========================================================================* - * line2kbd * - *===========================================================================*/ -static struct kbd * -line2kbd(devminor_t minor) -{ - switch (minor) { - case KBD_MINOR: return &kbd; - case KBDAUX_MINOR: return &kbdaux; - default: return NULL; - } -} - -/*===========================================================================* - * kbd_open * - *===========================================================================*/ -static int -kbd_open(devminor_t minor, int UNUSED(access), endpoint_t UNUSED(user_endpt)) -{ - struct kbd *kbdp; - - if ((kbdp = line2kbd(minor)) == NULL) - return ENXIO; - - kbdp->nr_open++; - return OK; -} - -/*===========================================================================* - * kbd_close * - *===========================================================================*/ -static int -kbd_close(devminor_t minor) -{ - struct kbd *kbdp; - - if ((kbdp = line2kbd(minor)) == NULL) - return ENXIO; - - kbdp->nr_open--; - if (kbdp->nr_open < 0) { - printf("TTY(kbd): open count is negative\n"); - kbdp->nr_open= 0; - } - if (kbdp->nr_open == 0) - kbdp->avail= 0; - - return OK; -} - -/*===========================================================================* - * kbd_read * - *===========================================================================*/ -static ssize_t -kbd_read(devminor_t minor, u64_t UNUSED(position), endpoint_t endpt, - cp_grant_id_t grant, size_t size, int flags, cdev_id_t id) -{ - ssize_t n, r; - struct kbd *kbdp; - - if ((kbdp = line2kbd(minor)) == NULL) - return ENXIO; - - /* We handle only one request at a time. */ - if (kbdp->req_size) - return EIO; - - if ((ssize_t) size <= 0) - return EINVAL; - - /* If no data is available, suspend the caller. */ - if (kbdp->avail == 0) { - if (flags & CDEV_NONBLOCK) - return EAGAIN; - kbdp->req_size = size; - kbdp->req_id = id; - kbdp->req_grant = grant; - kbdp->req_caller = endpt; - return EDONTREPLY; - } - - /* Handle read request. */ - n = kbdp->avail; - if (n > (ssize_t) size) - n = size; - if (kbdp->offset + n > KBD_BUFSZ) - n = KBD_BUFSZ - kbdp->offset; - if (n <= 0) - panic("do_kbd(READ): bad n: %d", n); - r = sys_safecopyto(endpt, grant, 0, - (vir_bytes) &kbdp->buf[kbdp->offset], n); - if (r == OK) { - kbdp->offset = (kbdp->offset + n) % KBD_BUFSZ; - kbdp->avail -= n; - r = n; - } else - printf("TTY(kbd): copy in read kbd failed: %d\n", r); - - return r; -} - -/*===========================================================================* - * kbd_write * - *===========================================================================*/ -static ssize_t -kbd_write(devminor_t minor, u64_t UNUSED(position), endpoint_t endpt, - cp_grant_id_t grant, size_t size, int flags, cdev_id_t id) -{ - struct kbd *kbdp; - unsigned char c; - size_t i; - int r; - - if ((kbdp = line2kbd(minor)) == NULL) - return ENXIO; - if (kbdp != &kbdaux) { - printf("TTY(kbd): write to keyboard not implemented\n"); - return EINVAL; - } - - /* - * Assume that output to AUX only happens during initialization and we - * can afford to lose input. This should be fixed at a later time. - */ - for (i = 0; i < size; i++) { - r = sys_safecopyfrom(endpt, grant, i, (vir_bytes) &c, 1); - if (r != OK) - return i ? i : r; - kbc_cmd1(KBC_WRITE_AUX, c); - } - - return r; -} - -/*===========================================================================* - * kbd_ioctl * - *===========================================================================*/ -static int -kbd_ioctl(devminor_t minor, unsigned long request, endpoint_t endpt, - cp_grant_id_t grant, int flags, endpoint_t UNUSED(user_endpt), - cdev_id_t id) -{ - struct kbd *kbdp; - kio_leds_t leds; - kio_bell_t bell; - clock_t ticks; - unsigned char b; - int r; - - if ((kbdp = line2kbd(minor)) == NULL) - return ENXIO; - if (kbdp != &kbd) - return ENOTTY; /* we only support ioctls on keyboards now */ - - switch (request) { - case KIOCSLEDS: - r = sys_safecopyfrom(endpt, grant, 0, (vir_bytes) &leds, - sizeof(leds)); - if (r != OK) - return r; - - b = 0; - if (leds.kl_bits & KBD_LEDS_NUM) b |= NUM_LOCK; - if (leds.kl_bits & KBD_LEDS_CAPS) b |= CAPS_LOCK; - if (leds.kl_bits & KBD_LEDS_SCROLL) b |= SCROLL_LOCK; - if (kbdout.avail == 0) - kbdout.offset = 0; - if (kbdout.offset + kbdout.avail + 2 > KBD_OUT_BUFSZ) { - /* Output buffer is full. Ignore this command. - * Reset ACK flag. - */ - kbdout.expect_ack = 0; - } else { - kbdout.buf[kbdout.offset+kbdout.avail] = LED_CODE; - kbdout.buf[kbdout.offset+kbdout.avail+1] = b; - kbdout.avail += 2; - } - if (!kbdout.expect_ack) - kbd_send(); - - return OK; - - case KIOCBELL: - r = sys_safecopyfrom(endpt, grant, 0, (vir_bytes) &bell, - sizeof(bell)); - if (r != OK) - return r; - - ticks = bell.kb_duration.tv_usec * system_hz / 1000000; - ticks += bell.kb_duration.tv_sec * system_hz; - if (!ticks) - ticks++; - beep_x(bell.kb_pitch, ticks); - - return OK; - - default: - return ENOTTY; - } -} - -/*===========================================================================* - * kbd_cancel * - *===========================================================================*/ -static int -kbd_cancel(devminor_t minor, endpoint_t endpt, cdev_id_t id) -{ - struct kbd *kbdp; - - if ((kbdp = line2kbd(minor)) == NULL) - return ENXIO; - - if (kbdp->req_size > 0 && endpt == kbdp->req_caller && - id == kbdp->req_id) - return EINTR; - - return EDONTREPLY; -} - -/*===========================================================================* - * kbd_select * - *===========================================================================*/ -static int -kbd_select(devminor_t minor, unsigned int ops, endpoint_t endpt) -{ - struct kbd *kbdp; - int watch, ready_ops; - - if ((kbdp = line2kbd(minor)) == NULL) - return ENXIO; - - watch = (ops & CDEV_NOTIFY); - ops &= (CDEV_OP_RD | CDEV_OP_WR | CDEV_OP_ERR); - - ready_ops = 0; - if (kbdp->avail && (ops & CDEV_OP_RD)) - ready_ops |= CDEV_OP_RD; - if (ops & CDEV_OP_WR) - ready_ops |= CDEV_OP_WR; /* writes never block */ - - ops &= ~ready_ops; - if (ops && watch) { - kbdp->select_ops |= ops; - kbdp->select_proc = endpt; - } - - return ready_ops; -} - -/*===========================================================================* - * do_kbd * - *===========================================================================*/ -void -do_kbd(message *m, int ipc_status) -{ - chardriver_process(&kbd_tab, m, ipc_status); -} /*===========================================================================* * map_key * @@ -458,14 +94,11 @@ int scode; int caps, column, lk; u16_t *keyrow; - if(esc) - keyrow = &keymap_escaped[scode * MAP_COLS]; - else - keyrow = &keymap[scode * MAP_COLS]; + keyrow = keymap[scode]; caps = shift; lk = locks[ccurrent]; - if ((lk & NUM_LOCK) && HOME_SCAN <= scode && scode <= DEL_SCAN) caps = !caps; + if ((lk & NUM_LOCK) && (keyrow[0] & HASNUM)) caps = !caps; if ((lk & CAPS_LOCK) && (keyrow[0] & HASCAPS)) caps = !caps; if (alt) { @@ -482,110 +115,67 @@ int scode; if (ctrl) column = 5; } } - return keyrow[column] & ~HASCAPS; + return keyrow[column] & ~(HASNUM | HASCAPS); } /*===========================================================================* - * kbd_interrupt * + * do_input * *===========================================================================*/ -void kbd_interrupt(message *UNUSED(m_ptr)) +void do_input(message *msg) { -/* A keyboard interrupt has occurred. Process it. */ - int n, r, o, isaux; - unsigned char scode; - struct kbd *kbdp; + unsigned short scode; + endpoint_t endpt; + int r; - /* Fetch the character from the keyboard hardware and acknowledge it. */ - if (!scan_keyboard(&scode, &isaux)) - return; - - if (isaux) - kbdp= &kbdaux; - else if (kbd.nr_open) - kbdp= &kbd; - else - kbdp= NULL; - - if (kbdp) - { - /* raw scan codes or aux data */ - if (kbdp->avail >= KBD_BUFSZ) - { -#if 0 - printf("kbd_interrupt: %s buffer is full\n", - isaux ? "kbdaux" : "keyboard"); -#endif - return; /* Buffer is full */ + switch (msg->m_type) { + case TTY_INPUT_UP: + if ((r = ds_retrieve_label_endpt("input", &endpt)) != OK) { + printf("TTY: unable to retrieve INPUT endpoint (%d)\n", r); + return; + } + if (endpt != msg->m_source) { + printf("TTY: up request from non-INPUT %u\n", msg->m_source); + return; } - o= (kbdp->offset + kbdp->avail) % KBD_BUFSZ; - kbdp->buf[o]= scode; - kbdp->avail++; - if (kbdp->req_size) { - /* Reply to read request */ - n= kbdp->avail; - if (n > kbdp->req_size) - n= kbdp->req_size; - if (kbdp->offset + n > KBD_BUFSZ) - n= KBD_BUFSZ-kbdp->offset; - if (n <= 0) - panic("kbd_interrupt: bad n: %d", n); - kbdp->req_size= 0; - r= sys_safecopyto(kbdp->req_caller, kbdp->req_grant, 0, - (vir_bytes)&kbdp->buf[kbdp->offset], n); - if (r == OK) - { - kbdp->offset= (kbdp->offset+n) % KBD_BUFSZ; - kbdp->avail -= n; - r= n; - } else printf("copy in revive kbd failed: %d\n", r); - chardriver_reply_task(kbdp->req_caller, kbdp->req_id, r); - kbdp->req_caller = NONE; + input_endpt = msg->m_source; + + /* Pass the current state of the LEDs to INPUT. */ + set_leds(); + + break; + + case TTY_INPUT_EVENT: + if (msg->m_source != input_endpt) { + printf("TTY: input event from non-INPUT %u\n", msg->m_source); + return; } - /* Only satisfy pending select if characters weren't just read. */ - if (kbdp->avail && (kbdp->select_ops & CDEV_OP_RD)) { - chardriver_reply_select(kbdp->select_proc, kbdp->minor, - CDEV_OP_RD); - kbdp->select_ops &= ~CDEV_OP_RD; + + /* Only handle keyboard keys. */ + if (msg->INPUT_PAGE != INPUT_PAGE_KEY) + return; + + /* Only handle known USB HID keyboard codes (the 00h-E7h range). */ + scode = msg->INPUT_CODE; + if (scode >= NR_SCAN_CODES) + return; + + /* Is it a KEY RELEASE? */ + if (msg->INPUT_VALUE == INPUT_RELEASE) + scode |= RELEASE_BIT; + + if (incount < KB_IN_BYTES) { + *inhead++ = scode; + if (inhead == inbuf + KB_IN_BYTES) inhead = inbuf; + incount++; + tty_table[ccurrent].tty_events = 1; } - return; + + break; + + default: + panic("do_input called for unknown message type %x", msg->m_type); } - - /* Store the scancode in memory so the task can get at it later. */ - if (icount < KB_IN_BYTES) { - *ihead++ = scode; - if (ihead == ibuf + KB_IN_BYTES) ihead = ibuf; - icount++; - tty_table[ccurrent].tty_events = 1; - if (tty_table[ccurrent].tty_select_ops & CDEV_OP_RD) { - select_retry(&tty_table[ccurrent]); - } - } -} - - -void do_kb_inject(message *msg) -{ - unsigned char scode; - /* only handle keyboard events */ - if (msg->INPUT_TYPE == INPUT_EV_KEY) { - scode = msg->INPUT_CODE; - - /* is it a KEY RELEASE? */ - if (msg->INPUT_VALUE == 0) { - scode |= KEY_RELEASE; - } - - if (injcount < KB_IN_BYTES) { - *injhead++ = scode; - if (injhead == injbuf + KB_IN_BYTES) injhead = injbuf; - injcount++; - tty_table[ccurrent].tty_events = 1; - if (tty_table[ccurrent].tty_select_ops & CDEV_OP_RD) { - select_retry(&tty_table[ccurrent]); - } - } - } } /*===========================================================================* @@ -597,48 +187,38 @@ int try; { /* Process characters from the circular keyboard buffer. */ char buf[7], *p, suffix; - int scode; + unsigned short scode; unsigned ch; /* always use the current console */ tp = &tty_table[ccurrent]; - if (try) { - if (icount > 0) return 1; - return 0; - } + if (try) + return (incount > 0); - while (icount > 0 || injcount > 0) { - if (injcount > 0) { - /* take one key scan code */ - scode = *injtail++; - if (injtail == injbuf + KB_IN_BYTES) injtail = injbuf; - injcount--; - } else { - /* take one key scan code */ - scode = *itail++; - if (itail == ibuf + KB_IN_BYTES) itail = ibuf; - icount--; - } + while (incount > 0) { + /* Take one key scan code. */ + scode = *intail++; + if (intail == inbuf + KB_IN_BYTES) intail = inbuf; + incount--; /* Function keys are being used for debug dumps (if enabled). */ if (debug_fkeys && func_key(scode)) continue; /* Perform make/break processing. */ - ch = make_break(scode); if (ch <= 0xFF) { /* A normal character. */ buf[0] = ch; - (void) in_process(tp, buf, 1, scode); + (void) in_process(tp, buf, 1); } else if (HOME <= ch && ch <= INSRT) { /* An ASCII escape sequence generated by the numeric pad. */ buf[0] = ESC; buf[1] = '['; buf[2] = numpad_map[ch - HOME]; - (void) in_process(tp, buf, 3, scode); + (void) in_process(tp, buf, 3); } else if ((F1 <= ch && ch <= F12) || (SF1 <= ch && ch <= SF12) || (CF1 <= ch && ch <= CF12 && !debug_fkeys)) { @@ -666,7 +246,7 @@ int try; *p++ = suffix; } *p++ = '~'; - (void) in_process(tp, buf, p - buf, scode); + (void) in_process(tp, buf, p - buf); } else if (ch == ALEFT) { /* Choose lower numbered console as current console. */ @@ -687,90 +267,31 @@ int try; switch(ch) { case CF1: show_key_mappings(); break; case CF3: toggle_scroll(); break; /* hardware <-> software */ - case CF7: sigchar(&tty_table[CONSOLE], SIGQUIT, 1); break; - case CF8: sigchar(&tty_table[CONSOLE], SIGINT, 1); break; - case CF9: sigchar(&tty_table[CONSOLE], SIGKILL, 1); break; + case CF7: sigchar(line2tty(CONS_MINOR), SIGQUIT, 1); break; + case CF8: sigchar(line2tty(CONS_MINOR), SIGINT, 1); break; + case CF9: sigchar(line2tty(CONS_MINOR), SIGKILL, 1); break; } - } else { - /* pass on scancode even though there is no character code */ - (void) in_process(tp, NULL, 0, scode); } } return 1; } -/*===========================================================================* - * kbd_send * - *===========================================================================*/ -static void kbd_send() -{ - u32_t sb; - int r; - - if (!kbdout.avail) - return; - if (kbdout.expect_ack) - return; - - if((r=sys_inb(KB_STATUS, &sb)) != OK) { - printf("kbd_send: 1 sys_inb() failed: %d\n", r); - } - if (sb & (KB_OUT_FULL|KB_IN_FULL)) - { - printf("not sending 1: sb = 0x%x\n", sb); - return; - } - micro_delay(KBC_IN_DELAY); - if((r=sys_inb(KB_STATUS, &sb)) != OK) { - printf("kbd_send: 2 sys_inb() failed: %d\n", r); - } - if (sb & (KB_OUT_FULL|KB_IN_FULL)) - { - printf("not sending 2: sb = 0x%x\n", sb); - return; - } - - /* Okay, buffer is really empty */ -#if 0 - printf("sending byte 0x%x to keyboard\n", kbdout.buf[kbdout.offset]); -#endif - if((r=sys_outb(KEYBD, kbdout.buf[kbdout.offset])) != OK) { - printf("kbd_send: 3 sys_outb() failed: %d\n", r); - } - kbdout.offset++; - kbdout.avail--; - kbdout.expect_ack= 1; - - kbd_alive= 1; - if (kbd_watchdog_set) - { - /* Set a watchdog timer for one second. */ - set_timer(&tmr_kbd_wd, system_hz, kbd_watchdog, 0); - - kbd_watchdog_set= 1; - } -} - /*===========================================================================* * make_break * *===========================================================================*/ -static unsigned make_break(scode) -int scode; /* scan code of key just struck or released */ +static unsigned make_break(int scode) { /* This routine can handle keyboards that interrupt only on key depression, * as well as keyboards that interrupt on key depression and key release. * For efficiency, the interrupt routine filters out most key releases. */ - int ch, make, escape; + int ch, make; static int CAD_count = 0; static int rebooting = 0; - /* Check for CTRL-ALT-DEL, and if found, halt the computer. This would - * be better done in keyboard() in case TTY is hung, except control and - * alt are set in the high level code. - */ - if (ctrl && alt && (scode == DEL_SCAN || scode == INS_SCAN)) + /* Check for CTRL-ALT-DEL, and if found, halt the computer. */ + if (ctrl && alt && (scode == INPUT_KEY_DELETE || scode == INPUT_KEY_INSERT)) { if (++CAD_count == 3) { cons_stop(); @@ -780,28 +301,28 @@ int scode; /* scan code of key just struck or released */ rebooting = 1; } - if(rebooting) - return -1; + if (rebooting) + return -1; /* High-order bit set on key release. */ - make = (scode & KEY_RELEASE) == 0; /* true if pressed */ + make = !(scode & RELEASE_BIT); /* true if pressed */ - ch = map_key(scode &= ASCII_MASK); /* map to ASCII */ - - escape = esc; /* Key is escaped? (true if added since the XT) */ - esc = 0; + ch = map_key(scode &= ~RELEASE_BIT); /* map to ASCII */ switch (ch) { - case CTRL: /* Left or right control key */ - *(escape ? &ctrl_r : &ctrl_l) = make; + case LCTRL: /* Left or right control key */ + case RCTRL: + *(ch == RCTRL ? &ctrl_r : &ctrl_l) = make; ctrl = ctrl_l | ctrl_r; break; - case SHIFT: /* Left or right shift key */ - *(scode == RSHIFT_SCAN ? &shift_r : &shift_l) = make; + case LSHIFT: /* Left or right shift key */ + case RSHIFT: + *(ch == RSHIFT ? &shift_r : &shift_l) = make; shift = shift_l | shift_r; break; - case ALT: /* Left or right alt key */ - *(escape ? &alt_r : &alt_l) = make; + case LALT: /* Left or right alt key */ + case RALT: + *(ch == RALT ? &alt_r : &alt_l) = make; alt = alt_l | alt_r; if (sticky_alt_mode && (alt_r && (alt_down < make))) { locks[ccurrent] ^= ALT_LOCK; @@ -829,30 +350,12 @@ int scode; /* scan code of key just struck or released */ } scroll_down = make; break; - case EXTKEY: /* Escape keycode */ - esc = 1; /* Next key is escaped */ - return(-1); default: /* A normal key */ if(!make) return -1; if(ch) return ch; - { - static char seen[2][NR_SCAN_CODES]; - int notseen = 0, ei; - ei = escape ? 1 : 0; - if(scode >= 0 && scode < NR_SCAN_CODES) { - notseen = !seen[ei][scode]; - seen[ei][scode] = 1; - } else { - printf("tty: scode %d makes no sense\n", scode); - } - if(notseen) { - printf("tty: ignoring unrecognized %s " - "scancode 0x%x\n", - escape ? "escaped" : "straight", scode); - } - } + /* Ignore unmapped key codes. */ return -1; } @@ -863,150 +366,22 @@ int scode; /* scan code of key just struck or released */ /*===========================================================================* * set_leds * *===========================================================================*/ -static void set_leds() +static void set_leds(void) { -/* Set the LEDs on the caps, num, and scroll lock keys */ - int s; +/* Make INPUT set the LEDs on the caps, num, and scroll lock keys. */ + message m; + int r; - kb_wait(); /* wait for buffer empty */ - if ((s=sys_outb(KEYBD, LED_CODE)) != OK) - printf("Warning, sys_outb couldn't prepare for LED values: %d\n", s); - /* prepare keyboard to accept LED values */ - kb_ack(); /* wait for ack response */ + if (input_endpt == NONE) + return; - kb_wait(); /* wait for buffer empty */ - if ((s=sys_outb(KEYBD, locks[ccurrent])) != OK) - printf("Warning, sys_outb couldn't give LED values: %d\n", s); - /* give keyboard LED values */ - kb_ack(); /* wait for ack response */ -} + memset(&m, 0, sizeof(m)); -/*===========================================================================* - * kbc_cmd0 * - *===========================================================================*/ -static void kbc_cmd0(cmd) -int cmd; -{ - kb_wait(); - if(sys_outb(KB_COMMAND, cmd) != OK) - printf("kbc_cmd0: sys_outb failed\n"); -} + m.m_type = INPUT_SETLEDS; + m.INPUT_LED_MASK = locks[ccurrent] & ~ALT_LOCK; -/*===========================================================================* - * kbc_cmd1 * - *===========================================================================*/ -static void kbc_cmd1(cmd, data) -int cmd; -int data; -{ - kb_wait(); - if(sys_outb(KB_COMMAND, cmd) != OK) - printf("kbc_cmd1: 1 sys_outb failed\n"); - kb_wait(); - if(sys_outb(KEYBD, data) != OK) - printf("kbc_cmd1: 2 sys_outb failed\n"); -} - - -/*===========================================================================* -* kbc_read * -*===========================================================================*/ -static int kbc_read() -{ - int i; - u32_t byte, st; -#if 0 - struct micro_state ms; -#endif - -#if DEBUG - printf("in kbc_read\n"); -#endif - - /* Wait at most 1 second for a byte from the keyboard or - * the kbd controller, return -1 on a timeout. - */ - for (i= 0; i<1000000; i++) -#if 0 - micro_start(&ms); - do -#endif - { - if(sys_inb(KB_STATUS, &st) != OK) - printf("kbc_read: 1 sys_inb failed\n"); - if (st & KB_OUT_FULL) - { - micro_delay(KBC_IN_DELAY); - if(sys_inb(KEYBD, &byte) != OK) - printf("kbc_read: 2 sys_inb failed\n"); - if (st & KB_AUX_BYTE) - printf("kbc_read: aux byte 0x%x\n", byte); -#if DEBUG - printf("keyboard`kbc_read: returning byte 0x%x\n", - byte); -#endif - return byte; - } - } -#if 0 - while (micro_elapsed(&ms) < 1000000); -#endif - panic("kbc_read failed to complete"); - return EINVAL; -} - - -/*===========================================================================* - * kb_wait * - *===========================================================================*/ -static int kb_wait() -{ -/* Wait until the controller is ready; return zero if this times out. */ - - int retries; - u32_t status; - int s, isaux; - unsigned char byte; - - retries = MAX_KB_BUSY_RETRIES + 1; /* wait until not busy */ - do { - s = sys_inb(KB_STATUS, &status); - if(s != OK) - printf("kb_wait: sys_inb failed: %d\n", s); - if (status & KB_OUT_FULL) { - if (scan_keyboard(&byte, &isaux)) - { -#if 0 - printf("ignoring %sbyte in kb_wait\n", isaux ? "AUX " : ""); -#endif - } - } - if (! (status & (KB_IN_FULL|KB_OUT_FULL)) ) - break; /* wait until ready */ - } while (--retries != 0); /* continue unless timeout */ - return(retries); /* zero on timeout, positive if ready */ -} - -/*===========================================================================* - * kb_ack * - *===========================================================================*/ -static int kb_ack() -{ -/* Wait until kbd acknowledges last command; return zero if this times out. */ - - int retries, s; - u32_t u8val; - - retries = MAX_KB_ACK_RETRIES + 1; - do { - s = sys_inb(KEYBD, &u8val); - if(s != OK) - printf("kb_ack: sys_inb failed: %d\n", s); - if (u8val == KB_ACK) - break; /* wait for ack */ - } while(--retries != 0); /* continue unless timeout */ - - return(retries); /* nonzero if ack received */ + if ((r = asynsend3(input_endpt, &m, AMF_NOREPLY)) != OK) + printf("TTY: asynsend to INPUT %u failed (%d)\n", input_endpt, r); } /*===========================================================================* @@ -1026,58 +401,17 @@ tty_t *tp; void kb_init_once(void) { int i; - u8_t ccb; env_parse("sticky_alt", "d", 0, &sticky_alt_mode, 0, 1); env_parse("debug_fkeys", "d", 0, &debug_fkeys, 0, 1); - set_leds(); /* turn off numlock led */ - scan_keyboard(NULL, NULL); /* discard leftover keystroke */ - - /* Clear the function key observers array. Also see func_key(). */ - for (i=0; i<12; i++) { - fkey_obs[i].proc_nr = NONE; /* F1-F12 observers */ - fkey_obs[i].events = 0; /* F1-F12 observers */ - sfkey_obs[i].proc_nr = NONE; /* Shift F1-F12 observers */ - sfkey_obs[i].events = 0; /* Shift F1-F12 observers */ - } - - kbd.minor= KBD_MINOR; - kbdaux.minor= KBDAUX_MINOR; - - /* Set interrupt handler and enable keyboard IRQ. */ - irq_hook_id = KEYBOARD_IRQ; /* id to be returned on interrupt */ - if ((i=sys_irqsetpolicy(KEYBOARD_IRQ, IRQ_REENABLE, &irq_hook_id)) != OK) - panic("Couldn't set keyboard IRQ policy: %d", i); - if ((i=sys_irqenable(&irq_hook_id)) != OK) - panic("Couldn't enable keyboard IRQs: %d", i); - kbd_irq_set |= (1 << KEYBOARD_IRQ); - - /* Set AUX interrupt handler and enable AUX IRQ. */ - aux_irq_hook_id = KBD_AUX_IRQ; /* id to be returned on interrupt */ - if ((i=sys_irqsetpolicy(KBD_AUX_IRQ, IRQ_REENABLE, - &aux_irq_hook_id)) != OK) - panic("Couldn't set AUX IRQ policy: %d", i); - if ((i=sys_irqenable(&aux_irq_hook_id)) != OK) - panic("Couldn't enable AUX IRQs: %d", i); - kbd_irq_set |= (1 << KBD_AUX_IRQ); - - /* Disable the keyboard and aux */ - kbc_cmd0(KBC_DI_KBD); - kbc_cmd0(KBC_DI_AUX); - - /* Get the current configuration byte */ - kbc_cmd0(KBC_RD_RAM_CCB); - ccb= kbc_read(); - - /* Enable both interrupts. */ - kbc_cmd1(KBC_WR_RAM_CCB, ccb | 3); - - /* Re-enable the keyboard device. */ - kbc_cmd0(KBC_EN_KBD); - - /* Enable the aux device. */ - kbc_cmd0(KBC_EN_AUX); + /* Clear the function key observers array. Also see func_key(). */ + for (i = 0; i < 12; i++) { + fkey_obs[i].proc_nr = NONE; /* F1-F12 observers */ + fkey_obs[i].events = 0; /* F1-F12 observers */ + sfkey_obs[i].proc_nr = NONE; /* Shift F1-F12 observers */ + sfkey_obs[i].events = 0; /* F1-F12 observers */ + } } /*===========================================================================* @@ -1207,7 +541,7 @@ int scode; /* scan code for a function key */ int proc_nr; /* Ignore key releases. If this is a key press, get full key code. */ - if (scode & KEY_RELEASE) return(FALSE); /* key release */ + if (scode & RELEASE_BIT) return(FALSE); /* key release */ key = map_key(scode); /* include modifiers */ /* Key pressed, now see if there is an observer for the pressed key. @@ -1242,7 +576,6 @@ int scode; /* scan code for a function key */ static void show_key_mappings() { int i,s; - struct proc proc; printf("\n"); printf("System information. Known function key mappings to request debug dumps:\n"); @@ -1251,20 +584,14 @@ static void show_key_mappings() printf(" %sF%d: ", i+1<10? " ":"", i+1); if (fkey_obs[i].proc_nr != NONE) { - if ((s = sys_getproc(&proc, fkey_obs[i].proc_nr))!=OK) - printf("%-14.14s", ""); - else - printf("%-14.14s", proc.p_name); + printf("%-14u", fkey_obs[i].proc_nr); } else { printf("%-14.14s", ""); } printf(" %sShift-F%d: ", i+1<10? " ":"", i+1); if (sfkey_obs[i].proc_nr != NONE) { - if ((s = sys_getproc(&proc, sfkey_obs[i].proc_nr))!=OK) - printf("%-14.14s", ""); - else - printf("%-14.14s", proc.p_name); + printf("%-14u", sfkey_obs[i].proc_nr); } else { printf("%-14.14s", ""); } @@ -1274,68 +601,3 @@ static void show_key_mappings() printf("Press one of the registered function keys to trigger a debug dump.\n"); printf("\n"); } - -/*===========================================================================* - * scan_keyboard * - *===========================================================================*/ -static int scan_keyboard(bp, isauxp) -unsigned char *bp; -int *isauxp; -{ - u32_t b, sb; - - if(sys_inb(KB_STATUS, &sb) != OK) - printf("scan_keyboard: sys_inb failed\n"); - - if (!(sb & KB_OUT_FULL)) - { - if (kbdout.avail && !kbdout.expect_ack) - kbd_send(); - return 0; - } - if(sys_inb(KEYBD, &b) != OK) - printf("scan_keyboard: 2 sys_inb failed\n"); -#if 0 - printf("got byte 0x%x from %s\n", b, (sb & KB_AUX_BYTE) ? "AUX" : "keyboard"); -#endif - if (!(sb & KB_AUX_BYTE) && b == KB_ACK && kbdout.expect_ack) - { -#if 0 - printf("got ACK from keyboard\n"); -#endif - kbdout.expect_ack= 0; - micro_delay(KBC_IN_DELAY); - kbd_send(); - return 0; - } - if (bp) - *bp= b; - if (isauxp) - *isauxp= !!(sb & KB_AUX_BYTE); - if (kbdout.avail && !kbdout.expect_ack) - { - micro_delay(KBC_IN_DELAY); - kbd_send(); - } - return 1; -} - -/*===========================================================================* - * kbd_watchdog * - *===========================================================================*/ -static void kbd_watchdog(minix_timer_t *UNUSED(tmrp)) -{ - - kbd_watchdog_set= 0; - if (!kbdout.avail) - return; /* Watchdog is no longer needed */ - if (!kbd_alive) - { - printf("kbd_watchdog: should reset keyboard\n"); - } - kbd_alive= 0; - - set_timer(&tmr_kbd_wd, system_hz, kbd_watchdog, 0); - - kbd_watchdog_set= 1; -} diff --git a/drivers/tty/arch/i386/rs232.c b/drivers/tty/arch/i386/rs232.c index 9fe52d2ab..7f73d9b1a 100644 --- a/drivers/tty/arch/i386/rs232.c +++ b/drivers/tty/arch/i386/rs232.c @@ -588,7 +588,7 @@ static int rs_read(tty_t *tp, int try) if (count > icount) count = icount; /* Perform input processing on (part of) the input buffer. */ - if ((count = in_process(tp, rs->itail, count, -1)) == 0) break; + if ((count = in_process(tp, rs->itail, count)) == 0) break; rs->icount -= count; if (!rs->idevready && rs->icount < RS_ILOWWATER) istart(rs); diff --git a/drivers/tty/keymaps/Makefile b/drivers/tty/keymaps/Makefile index 4a8eea8c6..7ba42260f 100644 --- a/drivers/tty/keymaps/Makefile +++ b/drivers/tty/keymaps/Makefile @@ -3,9 +3,9 @@ .include FILES= dvorak.map french.map german.map italian.map japanese.map \ - latin-america.map olivetti.map polish.map russian-cp866.map \ + latin-america.map polish.map russian-cp866.map \ russian.map scandinavian.map spanish.map uk.map \ - us-std-esc.map us-std.map us-swap.map russian-cp1251.map \ + us-std.map us-swap.map russian-cp1251.map \ ukraine-koi8-u.map portuguese.map abnt2.map .include "Makefile.inc" diff --git a/drivers/tty/keymaps/abnt2.src b/drivers/tty/keymaps/abnt2.src index 637713e5e..b0d09b345 100644 --- a/drivers/tty/keymaps/abnt2.src +++ b/drivers/tty/keymaps/abnt2.src @@ -2,131 +2,108 @@ /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', A('1'), A('1'), A('!'), C('A'), -/* 03 - '2' */ '2', '@', A('2'), A('2'), A('@'), C('@'), -/* 04 - '3' */ '3', '#', A('3'), A('3'), A('#'), C('C'), -/* 05 - '4' */ '4', '$', A('4'), A('4'), A('$'), C('D'), -/* 06 - '5' */ '5', '%', A('5'), A('5'), A('%'), C('E'), -/* 07 - '6' */ '6', '^', A('6'), A('6'), A('^'), C('^'), -/* 08 - '7' */ '7', '&', A('7'), A('7'), A('&'), C('G'), -/* 09 - '8' */ '8', '*', A('8'), A('8'), A('*'), C('H'), -/* 10 - '9' */ '9', '(', A('9'), A('9'), A('('), C('I'), -/* 11 - '0' */ '0', ')', A('0'), A('0'), A(')'), C('@'), -/* 12 - '-' */ '-', '_', A('-'), A('-'), A('_'), C('_'), -/* 13 - '=' */ '=', '+', A('='), A('='), A('+'), C('@'), -/* 14 - BS */ C('H'), C('H'), CA('H'),CA('H'),CA('H'),0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), 63, A('W'),C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), A('e'), A('E'), C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), A('r'), A('R'), C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), A('t'), A('T'), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), A('u'), A('U'), C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), A('i'), A('I'), C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), A('o'), A('O'), C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), A('p'), A('P'), C('P'), -/* 26 - ''' */ 0x027,0x060,A(0x027),A(0x027),A(0x060),C(0x027), -/* 27 - '[' */ 91,123, A(91),A(166),A(123),C(91), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), A('a'), A('A'), C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), A('s'), A('S'), C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), A('d'), A('D'), C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), A('f'), A('F'), C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), A('g'), A('G'), C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), A('h'), A('H'), C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), A('j'), A('J'), C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), A('k'), A('K'), C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), A('l'), A('L'), C('L'), -/* 39 - ';' */ L(135), 128, A(135), A(135), A(128), C(135), -/* 40 - '~' */ 126, 94, A(126), A(126), A(94), C(126), -/* 41 - '´' */ '\'', '"', A('\''),A('\''),A('"'),C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - ']' */ ']', '}', A(']'),167 ,A('}'), C(']'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), A('x'), A('X'), C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), A('c'), A('C'), C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), A('v'), A('V'), C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), A('b'), A('B'), C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), A('n'), A('N'), C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), A('m'), A('M'), C('M'), -/* 51 - ',' */ ',', '<', A(','), A(','), A('<'), C('@'), -/* 52 - '.' */ '.', '>', A('.'), A('.'), A('>'), C('@'), -/* 53 - '/' */ 59, 58, A(59), A(58), A(59), C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), A('*'), A('*'), C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, A('7'), CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, A('8'), CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, A('9'), CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, A('-'), CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, A('4'), CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, A('5'), CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, A('+'), CPLUS, -/* 79 - End */ END, '1', AEND, AEND, A('1'), CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, A('2'), CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, A('3'), CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, A('0'), CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),A(0177),A('.'), 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '\\', '|', A('\\'),A('|'),A('\\'),C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - '?' */ '?', 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A('a'), A('a'), A('A'), C('A') }, + K(B) = { L('b'), 'B', A('b'), A('b'), A('B'), C('B') }, + K(C) = { L('c'), 'C', A('c'), A('c'), A('C'), C('C') }, + K(D) = { L('d'), 'D', A('d'), A('d'), A('D'), C('D') }, + K(E) = { L('e'), 'E', A('e'), A('e'), A('E'), C('E') }, + K(F) = { L('f'), 'F', A('f'), A('f'), A('F'), C('F') }, + K(G) = { L('g'), 'G', A('g'), A('g'), A('G'), C('G') }, + K(H) = { L('h'), 'H', A('h'), A('h'), A('H'), C('H') }, + K(I) = { L('i'), 'I', A('i'), A('i'), A('I'), C('I') }, + K(J) = { L('j'), 'J', A('j'), A('j'), A('J'), C('J') }, + K(K) = { L('k'), 'K', A('k'), A('k'), A('K'), C('K') }, + K(L) = { L('l'), 'L', A('l'), A('l'), A('L'), C('L') }, + K(M) = { L('m'), 'M', A('m'), A('m'), A('M'), C('M') }, + K(N) = { L('n'), 'N', A('n'), A('n'), A('N'), C('N') }, + K(O) = { L('o'), 'O', A('o'), A('o'), A('O'), C('O') }, + K(P) = { L('p'), 'P', A('p'), A('p'), A('P'), C('P') }, + K(Q) = { L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q') }, + K(R) = { L('r'), 'R', A('r'), A('r'), A('R'), C('R') }, + K(S) = { L('s'), 'S', A('s'), A('s'), A('S'), C('S') }, + K(T) = { L('t'), 'T', A('t'), A('t'), A('T'), C('T') }, + K(U) = { L('u'), 'U', A('u'), A('u'), A('U'), C('U') }, + K(V) = { L('v'), 'V', A('v'), A('v'), A('V'), C('V') }, + K(W) = { L('w'), 'W', A('w'), 63, A('W'), C('W') }, + K(X) = { L('x'), 'X', A('x'), A('x'), A('X'), C('X') }, + K(Y) = { L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y') }, + K(Z) = { L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z') }, + K(1) = { '1', '!', A('1'), A('1'), A('!'), C('A') }, + K(2) = { '2', '@', A('2'), A('2'), A('@'), C('@') }, + K(3) = { '3', '#', A('3'), A('3'), A('#'), C('C') }, + K(4) = { '4', '$', A('4'), A('4'), A('$'), C('D') }, + K(5) = { '5', '%', A('5'), A('5'), A('%'), C('E') }, + K(6) = { '6', '^', A('6'), A('6'), A('^'), C('^') }, + K(7) = { '7', '&', A('7'), A('7'), A('&'), C('G') }, + K(8) = { '8', '*', A('8'), A('8'), A('*'), C('H') }, + K(9) = { '9', '(', A('9'), A('9'), A('('), C('I') }, + K(0) = { '0', ')', A('0'), A('0'), A(')'), C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),CA('H'),CA('H'),DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), A(' '), A(' '), C('@') }, + K(DASH) = { '-', '_', A('-'), A('-'), A('_'), C('_') }, + K(EQUAL) = { '=', '+', A('='), A('='), A('+'), C('@') }, + K(OPEN_BRACKET) = { 0x027,0x060,A(0x027),A(0x027),A(0x060),C(0x027) }, + K(CLOSE_BRACKET) = { 91, 123, A(91), A(166), A(123), C(91) }, + K(BACKSLASH) = { ']', '}', A(']'), 167 , A('}'), C(']') }, + K(SEMICOLON) = { L(135), 128, A(135), A(135), A(128), C(135) }, + K(APOSTROPH) = { 126, 94, A(126), A(126), A(94), C(126) }, + K(GRAVE_ACCENT) = { '\'', '"', A('\''),A('\''),A('"'), C('@') }, + K(COMMA) = { ',', '<', A(','), A(','), A('<'), C('@') }, + K(PERIOD) = { '.', '>', A('.'), A('.'), A('>'), C('@') }, + K(SLASH) = { 59, 58, A(59), A(58), A(59), C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), A(DEL), A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { 59, 59, A(59), A(58), A(59), C('@') }, + K(KP_STAR) = { '*', '*', A('*'), A('*'), A('*'), C('@') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, A('-'), CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, A('+'), CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, A('1'), CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, A('2'), CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, A('3'), CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, A('4'), CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, A('5'), CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, A('7'), CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, A('8'), CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, A('9'), CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, A('0'), CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), A(DEL), A('.'), DEL }, + K(EUROPE_2) = { '\\', '|', A('\\'),A('|'), A('\\'),C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(KP_EQUAL) = { '?', 0, 0, 0, 0, 0 }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/dvorak.src b/drivers/tty/keymaps/dvorak.src index 0cfd965a6..4a9c3bc2a 100644 --- a/drivers/tty/keymaps/dvorak.src +++ b/drivers/tty/keymaps/dvorak.src @@ -5,131 +5,107 @@ /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', A('1'), A('1'), A('!'), C('A'), -/* 03 - '2' */ '2', '@', A('2'), A('2'), A('@'), C('@'), -/* 04 - '3' */ '3', '#', A('3'), A('3'), A('#'), C('C'), -/* 05 - '4' */ '4', '$', A('4'), A('4'), A('$'), C('D'), -/* 06 - '5' */ '5', '%', A('5'), A('5'), A('%'), C('E'), -/* 07 - '6' */ '6', '^', A('6'), A('6'), A('^'), C('^'), -/* 08 - '7' */ '7', '&', A('7'), A('7'), A('&'), C('G'), -/* 09 - '8' */ '8', '*', A('8'), A('8'), A('*'), C('H'), -/* 10 - '9' */ '9', '(', A('9'), A('9'), A('('), C('I'), -/* 11 - '0' */ '0', ')', A('0'), A('0'), A(')'), C('@'), -/* 12 - '-' */ '[', '{', A('['), A('['), A('}'), C(']'), -/* 13 - '=' */ ']', '}', A(']'), A(']'), A('}'), C(']'), -/* 14 - BS */ C('H'), C('H'), CA('H'),CA('H'),CA('H'),0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I'), -/* 16 - 'q' */ '\'', '"', A('\''),A('\''),A('"'), C('@'), -/* 17 - 'w' */ ',', '<', A(','), A(','), A('<'), C('@'), -/* 18 - 'e' */ '.', '>', A('.'), A('.'), A('>'), C('@'), -/* 19 - 'r' */ L('p'), 'P', A('p'), A('p'), A('P'), C('P'), -/* 20 - 't' */ L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y'), -/* 21 - 'y' */ L('f'), 'F', A('f'), A('f'), A('F'), C('F'), -/* 22 - 'u' */ L('g'), 'G', A('g'), A('g'), A('G'), C('G'), -/* 23 - 'i' */ L('c'), 'C', A('c'), A('c'), A('C'), C('C'), -/* 24 - 'o' */ L('r'), 'R', A('r'), A('r'), A('R'), C('R'), -/* 25 - 'p' */ L('l'), 'L', A('l'), A('l'), A('L'), C('L'), -/* 26 - '[' */ '/', '?', A('/'), A('/'), A('?'), C('@'), -/* 27 - ']' */ '=', '+', A('='), A('='), A('+'), C('@'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), A('a'), A('A'), C('A'), -/* 31 - 's' */ L('o'), 'O', A('o'), A('o'), A('O'), C('O'), -/* 32 - 'd' */ L('e'), 'E', A('e'), A('e'), A('E'), C('E'), -/* 33 - 'f' */ L('u'), 'U', A('u'), A('u'), A('U'), C('U'), -/* 34 - 'g' */ L('i'), 'I', A('i'), A('i'), A('I'), C('I'), -/* 35 - 'h' */ L('d'), 'D', A('d'), A('d'), A('D'), C('D'), -/* 36 - 'j' */ L('h'), 'H', A('h'), A('h'), A('H'), C('H'), -/* 37 - 'k' */ L('t'), 'T', A('t'), A('t'), A('T'), C('T'), -/* 38 - 'l' */ L('n'), 'N', A('n'), A('n'), A('N'), C('N'), -/* 39 - ';' */ L('s'), 'S', A('s'), A('s'), A('S'), C('S'), -/* 40 - '\'' */ '-', '_', A('-'), A('-'), A('_'), C('_'), -/* 41 - '`' */ '`', '~', A('`'), A('`'), A('~'), C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ '\\', '|', A('\\'),A('\\'),A('|'), C('\\'), -/* 44 - 'z' */ ';', ':', A(';'), A(';'), A(':'), C('@'), -/* 45 - 'x' */ L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q'), -/* 46 - 'c' */ L('j'), 'J', A('j'), A('j'), A('J'), C('J'), -/* 47 - 'v' */ L('k'), 'K', A('k'), A('k'), A('K'), C('K'), -/* 48 - 'b' */ L('x'), 'X', A('x'), A('x'), A('X'), C('X'), -/* 49 - 'n' */ L('b'), 'B', A('b'), A('b'), A('B'), C('B'), -/* 50 - 'm' */ L('m'), 'M', A('m'), A('m'), A('M'), C('M'), -/* 51 - ',' */ L('w'), 'W', A('w'), A('w'), A('W'), C('W'), -/* 52 - '.' */ L('v'), 'V', A('v'), A('v'), A('V'), C('V'), -/* 53 - '/' */ L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), A('*'), A('*'), C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, A('7'), CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, A('8'), CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, A('9'), CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, A('-'), CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, A('4'), CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, A('5'), CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, A('+'), CPLUS, -/* 79 - End */ END, '1', AEND, AEND, A('1'), CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, A('2'), CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, A('3'), CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, A('0'), CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),A(0177),A('.'), 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), A('|'), A('>'), C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A('a'), A('a'), A('A'), C('A') }, + K(B) = { L('x'), 'X', A('x'), A('x'), A('X'), C('X') }, + K(C) = { L('j'), 'J', A('j'), A('j'), A('J'), C('J') }, + K(D) = { L('e'), 'E', A('e'), A('e'), A('E'), C('E') }, + K(E) = { '.', '>', A('.'), A('.'), A('>'), C('@') }, + K(F) = { L('u'), 'U', A('u'), A('u'), A('U'), C('U') }, + K(G) = { L('i'), 'I', A('i'), A('i'), A('I'), C('I') }, + K(H) = { L('d'), 'D', A('d'), A('d'), A('D'), C('D') }, + K(I) = { L('c'), 'C', A('c'), A('c'), A('C'), C('C') }, + K(J) = { L('h'), 'H', A('h'), A('h'), A('H'), C('H') }, + K(K) = { L('t'), 'T', A('t'), A('t'), A('T'), C('T') }, + K(L) = { L('n'), 'N', A('n'), A('n'), A('N'), C('N') }, + K(M) = { L('m'), 'M', A('m'), A('m'), A('M'), C('M') }, + K(N) = { L('b'), 'B', A('b'), A('b'), A('B'), C('B') }, + K(O) = { L('r'), 'R', A('r'), A('r'), A('R'), C('R') }, + K(P) = { L('l'), 'L', A('l'), A('l'), A('L'), C('L') }, + K(Q) = { '\'', '"', A('\''),A('\''),A('"'), C('@') }, + K(R) = { L('p'), 'P', A('p'), A('p'), A('P'), C('P') }, + K(S) = { L('o'), 'O', A('o'), A('o'), A('O'), C('O') }, + K(T) = { L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y') }, + K(U) = { L('g'), 'G', A('g'), A('g'), A('G'), C('G') }, + K(V) = { L('k'), 'K', A('k'), A('k'), A('K'), C('K') }, + K(W) = { ',', '<', A(','), A(','), A('<'), C('@') }, + K(X) = { L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q') }, + K(Y) = { L('f'), 'F', A('f'), A('f'), A('F'), C('F') }, + K(Z) = { ';', ':', A(';'), A(';'), A(':'), C('@') }, + K(1) = { '1', '!', A('1'), A('1'), A('!'), C('A') }, + K(2) = { '2', '@', A('2'), A('2'), A('@'), C('@') }, + K(3) = { '3', '#', A('3'), A('3'), A('#'), C('C') }, + K(4) = { '4', '$', A('4'), A('4'), A('$'), C('D') }, + K(5) = { '5', '%', A('5'), A('5'), A('%'), C('E') }, + K(6) = { '6', '^', A('6'), A('6'), A('^'), C('^') }, + K(7) = { '7', '&', A('7'), A('7'), A('&'), C('G') }, + K(8) = { '8', '*', A('8'), A('8'), A('*'), C('H') }, + K(9) = { '9', '(', A('9'), A('9'), A('('), C('I') }, + K(0) = { '0', ')', A('0'), A('0'), A(')'), C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),CA('H'),CA('H'),DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), A(' '), A(' '), C('@') }, + K(DASH) = { '[', '{', A('['), A('['), A('}'), C(']') }, + K(EQUAL) = { ']', '}', A(']'), A(']'), A('}'), C(']') }, + K(OPEN_BRACKET) = { '/', '?', A('/'), A('/'), A('?'), C('@') }, + K(CLOSE_BRACKET) = { '=', '+', A('='), A('='), A('+'), C('@') }, + K(BACKSLASH) = { '\\', '|', A('\\'),A('\\'),A('|'), C('\\') }, + K(SEMICOLON) = { L('s'), 'S', A('s'), A('s'), A('S'), C('S') }, + K(APOSTROPH) = { '-', '_', A('-'), A('-'), A('_'), C('_') }, + K(GRAVE_ACCENT) = { '`', '~', A('`'), A('`'), A('~'), C('@') }, + K(COMMA) = { L('w'), 'W', A('w'), A('w'), A('W'), C('W') }, + K(PERIOD) = { L('v'), 'V', A('v'), A('v'), A('V'), C('V') }, + K(SLASH) = { L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), A(DEL), A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { L('z'), L('z'), A('z'), A('z'), A('z'), C('Z') }, + K(KP_STAR) = { '*', '*', A('*'), A('*'), A('*'), C('@') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, A('-'), CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, A('+'), CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, A('1'), CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, A('2'), CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, A('3'), CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, A('4'), CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, A('5'), CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, A('7'), CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, A('8'), CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, A('9'), CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, A('0'), CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), A(DEL), A('.'), DEL }, + K(EUROPE_2) = { '<', '>', A('<'), A('|'), A('>'), C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/french.src b/drivers/tty/keymaps/french.src index 01a61cdc1..d6a2afb5a 100644 --- a/drivers/tty/keymaps/french.src +++ b/drivers/tty/keymaps/french.src @@ -2,131 +2,107 @@ /* scan-code !Shift Shift Alt AltGr Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),C('['), C('['), C('['), -/* 02 - '1' */ '&', '1', A('1'), '&', '1', C('A'), -/* 03 - '2' */ 0202, '2', A('2'), '~', '2', C('B'), -/* 04 - '3' */ '"', '3', A('3'), '#', '3', C('C'), -/* 05 - '4' */ '\'', '4', A('4'), '{', '4', C('D'), -/* 06 - '5' */ '(', '5', A('5'), '[', '5', C('E'), -/* 07 - '6' */ '-', '6', A('6'), '|', '6', C('F'), -/* 08 - '7' */ 0212, '7', A('7'), '`', '7', C('G'), -/* 09 - '8' */ '_', '8', A('8'), '\\', '8', C('H'), -/* 10 - '9' */ 0207, '9', A('9'), '^', '9', C('I'), -/* 11 - '0' */ 0205, '0', A('0'), '@', '0', C('J'), -/* 12 - '-' */ ')', 0370, A(')'), ']', '-', C('K'), -/* 13 - '=' */ '=', '+', A('='), '}', '=', C('L'), -/* 14 - BS */ C('H'), C('H'), CA('H'),C('H'), C('H'), 0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),C('I'), C('I'), C('I'), -/* 16 - 'q' */ L('a'), 'A', A('a'), 'a', 'Q', C('A'), -/* 17 - 'w' */ L('z'), 'Z', A('z'), 'z', 'W', C('Z'), -/* 18 - 'e' */ L('e'), 'E', A('e'), 'e', 'E', C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), 'r', 'R', C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), 't', 'T', C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), 'y', 'Y', C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), 'u', 'U', C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), 'i', 'I', C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), 'o', 'O', C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), 'p', 'P', C('P'), -/* 26 - '[' */ '^', '"', A('^'), '^', '[', C('^'), -/* 27 - ']' */ '$', 0234, A('$'), '$', ']', C('$'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('q'), 'Q', A('q'), 'q', 'A', C('Q'), -/* 31 - 's' */ L('s'), 'S', A('s'), 's', 'S', C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), 'd', 'D', C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), 'f', 'F', C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), 'g', 'G', C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), 'h', 'H', C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), 'j', 'J', C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), 'k', 'K', C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), 'l', 'L', C('L'), -/* 39 - ';' */ L('m'), 'M', A('m'), 'm', 'M', C('M'), -/* 40 - '\'' */ 0227, '%', A('%'), 0227, '\\', C('G'), -/* 41 - '`' */ 0375, 0375, 0375, 0375, '`', C('['), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '`' */ '*', 0346, A('*'), '*', '`', C('*'), -/* 44 - 'z' */ L('w'), 'W', A('w'), 'w', 'Z', C('W'), -/* 45 - 'x' */ L('x'), 'X', A('x'), 'x', 'X', C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), 'c', 'C', C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), 'v', 'V', C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), 'b', 'B', C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), 'n', 'N', C('N'), -/* 50 - 'm' */ ',', '?', A(','), ',', 'm', C('@'), -/* 51 - ',' */ ';', '.', A(';'), ';', ',', C('@'), -/* 52 - '.' */ ':', '/', A(':'), ':', '.', C('@'), -/* 53 - '/' */ '!', '$'/*025*/,A('!'), '!', '/', C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), '*', '*', C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), ' ', ' ', C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, '7', CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, '8', CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, '9', CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, '-', CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, '4', CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, '5', CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, '+', CPLUS, -/* 79 - End */ END, '1', AEND, AEND, '1', CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, '2', CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, '3', CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, '0', CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),0177, '.', 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), '<', '>', C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('q'), 'Q', A('q'), 'q', 'A', C('Q') }, + K(B) = { L('b'), 'B', A('b'), 'b', 'B', C('B') }, + K(C) = { L('c'), 'C', A('c'), 'c', 'C', C('C') }, + K(D) = { L('d'), 'D', A('d'), 'd', 'D', C('D') }, + K(E) = { L('e'), 'E', A('e'), 'e', 'E', C('E') }, + K(F) = { L('f'), 'F', A('f'), 'f', 'F', C('F') }, + K(G) = { L('g'), 'G', A('g'), 'g', 'G', C('G') }, + K(H) = { L('h'), 'H', A('h'), 'h', 'H', C('H') }, + K(I) = { L('i'), 'I', A('i'), 'i', 'I', C('I') }, + K(J) = { L('j'), 'J', A('j'), 'j', 'J', C('J') }, + K(K) = { L('k'), 'K', A('k'), 'k', 'K', C('K') }, + K(L) = { L('l'), 'L', A('l'), 'l', 'L', C('L') }, + K(M) = { ',', '?', A(','), ',', 'm', C('@') }, + K(N) = { L('n'), 'N', A('n'), 'n', 'N', C('N') }, + K(O) = { L('o'), 'O', A('o'), 'o', 'O', C('O') }, + K(P) = { L('p'), 'P', A('p'), 'p', 'P', C('P') }, + K(Q) = { L('a'), 'A', A('a'), 'a', 'Q', C('A') }, + K(R) = { L('r'), 'R', A('r'), 'r', 'R', C('R') }, + K(S) = { L('s'), 'S', A('s'), 's', 'S', C('S') }, + K(T) = { L('t'), 'T', A('t'), 't', 'T', C('T') }, + K(U) = { L('u'), 'U', A('u'), 'u', 'U', C('U') }, + K(V) = { L('v'), 'V', A('v'), 'v', 'V', C('V') }, + K(W) = { L('z'), 'Z', A('z'), 'z', 'W', C('Z') }, + K(X) = { L('x'), 'X', A('x'), 'x', 'X', C('X') }, + K(Y) = { L('y'), 'Y', A('y'), 'y', 'Y', C('Y') }, + K(Z) = { L('w'), 'W', A('w'), 'w', 'Z', C('W') }, + K(1) = { '&', '1', A('1'), '&', '1', C('A') }, + K(2) = { 0202, '2', A('2'), '~', '2', C('B') }, + K(3) = { '"', '3', A('3'), '#', '3', C('C') }, + K(4) = { '\'', '4', A('4'), '{', '4', C('D') }, + K(5) = { '(', '5', A('5'), '[', '5', C('E') }, + K(6) = { '-', '6', A('6'), '|', '6', C('F') }, + K(7) = { 0212, '7', A('7'), '`', '7', C('G') }, + K(8) = { '_', '8', A('8'), '\\', '8', C('H') }, + K(9) = { 0207, '9', A('9'), '^', '9', C('I') }, + K(0) = { 0205, '0', A('0'), '@', '0', C('J') }, + K(ENTER) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),C('['), C('['), C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),C('H'), C('H'), DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),C('I'), C('I'), C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), ' ', ' ', C('@') }, + K(DASH) = { ')', 0370, A(')'), ']', '-', C('K') }, + K(EQUAL) = { '=', '+', A('='), '}', '=', C('L') }, + K(OPEN_BRACKET) = { '^', '"', A('^'), '^', '[', C('^') }, + K(CLOSE_BRACKET) = { '$', 0234, A('$'), '$', ']', C('$') }, + K(BACKSLASH) = { '*', 0346, A('*'), '*', '`', C('*') }, + K(SEMICOLON) = { L('m'), 'M', A('m'), 'm', 'M', C('M') }, + K(APOSTROPH) = { 0227, '%', A('%'), 0227, '\\', C('G') }, + K(GRAVE_ACCENT) = { 0375, 0375, 0375, 0375, '`', C('[') }, + K(COMMA) = { ';', '.', A(';'), ';', ',', C('@') }, + K(PERIOD) = { ':', '/', A(':'), ':', '.', C('@') }, + K(SLASH) = { '!', '$', A('!'), '!', '/', C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), DEL, A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '!', '!', A('!'), '!', A('!'), C('@') }, + K(KP_STAR) = { '*', '*', A('*'), '*', '*', C('@') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, '-', CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, '+', CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),C('M'), CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, '1', CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, '2', CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, '3', CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, '4', CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, '5', CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, '7', CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, '8', CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, '9', CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, '0', CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), DEL, '.', DEL }, + K(EUROPE_2) = { '<', '>', A('<'), '<', '>', C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/genmap.c b/drivers/tty/keymaps/genmap.c index 29d3b49c0..e5caca724 100644 --- a/drivers/tty/keymaps/genmap.c +++ b/drivers/tty/keymaps/genmap.c @@ -1,77 +1,37 @@ /* genmap - output binary keymap Author: Marcus Hampel */ #include -#ifdef __minix -#include -#else -#include "../../../include/minix/keymap.h" -#endif -#include +#include #include #include +#include #include #include - -/* - * if we crosscompile those might not be defined, - */ -#ifndef u16_t -#include -typedef uint16_t u16_t; +#ifdef __minix +#include +#include +#else +#include "../../../include/minix/input.h" +#include "../../../include/minix/keymap.h" #endif -#ifndef u8_t -#include -typedef uint8_t u8_t; -#endif - -u16_t keymap[NR_SCAN_CODES * MAP_COLS] = { +keymap_t keymap = { #include KEYSRC }; -u8_t comprmap[4 + NR_SCAN_CODES * MAP_COLS * 9/8 * 2 + 1]; - -void tell(const char *s) -{ - write(2, s, strlen(s)); -} - int main(void) { - u8_t *cm, *fb; - u16_t *km; - int n; - - /* Compress the keymap. */ - memcpy(comprmap, KEY_MAGIC, 4); - cm = comprmap + 4; - n = 8; - for (km = keymap; km < keymap + NR_SCAN_CODES * MAP_COLS; km++) { - if (n == 8) { - /* Allocate a new flag byte. */ - fb = cm; - *cm++ = 0; - n= 0; - } - *cm++ = (*km & 0x00FF); /* Low byte. */ - if (*km & 0xFF00) { - *cm++ = (*km >> 8); /* High byte only when set. */ - *fb |= (1 << n); /* Set a flag if so. */ - } - n++; + /* This utility used to do compression, but the entire keymap fits in a + * single 4K file system block now anyway, so who cares anymore? + */ + if (write(1, KEY_MAGIC, 4) != 4) { + perror("write"); + return EXIT_FAILURE; + } + if (write(1, keymap, sizeof(keymap)) != sizeof(keymap)) { + perror("write"); + return EXIT_FAILURE; } - /* Don't store trailing zeros. */ - while (cm > comprmap && cm[-1] == 0) cm--; - - /* Emit the compressed keymap. */ - if (write(1, comprmap, cm - comprmap) < 0) { - int err = errno; - - tell("genmap: "); - tell(strerror(err)); - tell("\n"); - exit(1); - } - exit(0); + return EXIT_SUCCESS; } diff --git a/drivers/tty/keymaps/german.src b/drivers/tty/keymaps/german.src index 8cbab636d..a5239d1aa 100644 --- a/drivers/tty/keymaps/german.src +++ b/drivers/tty/keymaps/german.src @@ -2,131 +2,107 @@ /* scan-code unsh Shift Alt AltGr Alt+Sh Strg */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),C('['), C('['), C('['), -/* 02 - '1' */ '1', '!', A('1'), '1', '!', C('A'), -/* 03 - '2' */ '2', '"', A('2'), 0375, '@', C('@'), -/* 04 - '3' */ '3', 025, A('3'), 0374, '#', C('C'), -/* 05 - '4' */ '4', '$', A('4'), '4', '$', C('D'), -/* 06 - '5' */ '5', '%', A('5'), '5', '%', C('E'), -/* 07 - '6' */ '6', '&', A('6'), '6', '^', C('^'), -/* 08 - '7' */ '7', '/', A('7'), '{', '&', C('G'), -/* 09 - '8' */ '8', '(', A('8'), '[', '*', C('H'), -/* 10 - '9' */ '9', ')', A('9'), ']', '(', C('I'), -/* 11 - '0' */ '0', '=', A('0'), '}', ')', C('@'), -/* 12 - '-' */ 0341, '?', 0341, '\\', '_', C('_'), -/* 13 - '=' */ '\'', '`', A('\''),'=', '+', C('@'), -/* 14 - BS */ C('H'), C('H'), CA('H'),C('H'), C('H'), 0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),C('I'), C('I'), C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), '@', 'Q', C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), 'w', 'W', C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), 'e', 'E', C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), 'r', 'R', C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), 't', 'T', C('T'), -/* 21 - 'y' */ L('z'), 'Z', A('z'), 'z', 'Z', C('Z'), -/* 22 - 'u' */ L('u'), 'U', A('u'), 'u', 'U', C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), 'i', 'I', C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), 'o', 'O', C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), 'p', 'P', C('P'), -/* 26 - '[' */ L(0201),0232, 0201, '[', '{', C('['), -/* 27 - ']' */ '+', '*', A('+'), '~', ']', C(']'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 29 - Strg;-) */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), 'a', 'A', C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), 's', 'S', C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), 'd', 'D', C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), 'f', 'F', C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), 'g', 'G', C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), 'h', 'H', C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), 'j', 'J', C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), 'k', 'K', C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), 'l', 'L', C('L'), -/* 39 - ';' */ L(0224),0231, 0224, ';', ':', C('@'), -/* 40 - '\'' */ L(0204),0216, 0204, '\'', '"', C('@'), -/* 41 - '`' */ '^', 0370, A('^'), '`', '~', C('^'), -/* 42 - SHIFT */ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ '#', '\'', A('#'), '\\', '|', C('\\'), -/* 44 - 'z' */ L('y'), 'Y', A('y'), 'y', 'Y', C('Y'), -/* 45 - 'x' */ L('x'), 'X', A('x'), 'x', 'X', C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), 'c', 'C', C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), 'v', 'V', C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), 'b', 'B', C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), 'n', 'N', C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), 0346, 'M', C('M'), -/* 51 - ',' */ ',', ';', A(','), ',', '<', C('@'), -/* 52 - '.' */ '.', ':', A('.'), '.', '>', C('@'), -/* 53 - '/' */ '-', '_', A('-'), '/', '?', C('_'), -/* 54 - SHIFT */ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), '*', '*', C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), ' ', ' ', C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, '7', CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, '8', CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, '9', CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, '-', CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, '4', CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, '5', CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, '+', CPLUS, -/* 79 - End */ END, '1', AEND, AEND, '1', CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, '2', CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, '3', CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, '0', CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),0177, '.', 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), '|', '>', C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A('a'), 'a', 'A', C('A') }, + K(B) = { L('b'), 'B', A('b'), 'b', 'B', C('B') }, + K(C) = { L('c'), 'C', A('c'), 'c', 'C', C('C') }, + K(D) = { L('d'), 'D', A('d'), 'd', 'D', C('D') }, + K(E) = { L('e'), 'E', A('e'), 'e', 'E', C('E') }, + K(F) = { L('f'), 'F', A('f'), 'f', 'F', C('F') }, + K(G) = { L('g'), 'G', A('g'), 'g', 'G', C('G') }, + K(H) = { L('h'), 'H', A('h'), 'h', 'H', C('H') }, + K(I) = { L('i'), 'I', A('i'), 'i', 'I', C('I') }, + K(J) = { L('j'), 'J', A('j'), 'j', 'J', C('J') }, + K(K) = { L('k'), 'K', A('k'), 'k', 'K', C('K') }, + K(L) = { L('l'), 'L', A('l'), 'l', 'L', C('L') }, + K(M) = { L('m'), 'M', A('m'), 0346, 'M', C('M') }, + K(N) = { L('n'), 'N', A('n'), 'n', 'N', C('N') }, + K(O) = { L('o'), 'O', A('o'), 'o', 'O', C('O') }, + K(P) = { L('p'), 'P', A('p'), 'p', 'P', C('P') }, + K(Q) = { L('q'), 'Q', A('q'), '@', 'Q', C('Q') }, + K(R) = { L('r'), 'R', A('r'), 'r', 'R', C('R') }, + K(S) = { L('s'), 'S', A('s'), 's', 'S', C('S') }, + K(T) = { L('t'), 'T', A('t'), 't', 'T', C('T') }, + K(U) = { L('u'), 'U', A('u'), 'u', 'U', C('U') }, + K(V) = { L('v'), 'V', A('v'), 'v', 'V', C('V') }, + K(W) = { L('w'), 'W', A('w'), 'w', 'W', C('W') }, + K(X) = { L('x'), 'X', A('x'), 'x', 'X', C('X') }, + K(Y) = { L('z'), 'Z', A('z'), 'z', 'Z', C('Z') }, + K(Z) = { L('y'), 'Y', A('y'), 'y', 'Y', C('Y') }, + K(1) = { '1', '!', A('1'), '1', '!', C('A') }, + K(2) = { '2', '"', A('2'), 0375, '@', C('@') }, + K(3) = { '3', 025, A('3'), 0374, '#', C('C') }, + K(4) = { '4', '$', A('4'), '4', '$', C('D') }, + K(5) = { '5', '%', A('5'), '5', '%', C('E') }, + K(6) = { '6', '&', A('6'), '6', '^', C('^') }, + K(7) = { '7', '/', A('7'), '{', '&', C('G') }, + K(8) = { '8', '(', A('8'), '[', '*', C('H') }, + K(9) = { '9', ')', A('9'), ']', '(', C('I') }, + K(0) = { '0', '=', A('0'), '}', ')', C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),C('['), C('['), C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),C('H'), C('H'), DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),C('I'), C('I'), C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), ' ', ' ', C('@') }, + K(DASH) = { 0341, '?', 0341, '\\', '_', C('_') }, + K(EQUAL) = { '\'', '`', A('\''),'=', '+', C('@') }, + K(OPEN_BRACKET) = { L(0201),0232, 0201, '[', '{', C('[') }, + K(CLOSE_BRACKET) = { '+', '*', A('+'), '~', ']', C(']') }, + K(BACKSLASH) = { '#', '\'', A('#'), '\\', '|', C('\\') }, + K(SEMICOLON) = { L(0224),0231, 0224, ';', ':', C('@') }, + K(APOSTROPH) = { L(0204),0216, 0204, '\'', '"', C('@') }, + K(GRAVE_ACCENT) = { '^', 0370, A('^'), '`', '~', C('^') }, + K(COMMA) = { ',', ';', A(','), ',', '<', C('@') }, + K(PERIOD) = { '.', ':', A('.'), '.', '>', C('@') }, + K(SLASH) = { '-', '_', A('-'), '/', '?', C('_') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), DEL, A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '-', '-', A('-'), '/', A('-'), C('_') }, + K(KP_STAR) = { '*', '*', A('*'), '*', '*', C('@') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, '-', CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, '+', CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),C('M'), CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, '1', CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, '2', CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, '3', CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, '4', CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, '5', CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, '7', CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, '8', CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, '9', CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, '0', CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), DEL, '.', DEL }, + K(EUROPE_2) = { '<', '>', A('<'), '|', '>', C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/italian.src b/drivers/tty/keymaps/italian.src index 95c64ee91..d7c9d4e80 100644 --- a/drivers/tty/keymaps/italian.src +++ b/drivers/tty/keymaps/italian.src @@ -4,131 +4,107 @@ /* scan-code !Shift Shift Alt AltGr Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),C('['), C('['), C('['), -/* 02 - '1' */ '1', '!', A('1'), '1', '!', C('A'), -/* 03 - '2' */ '2', '"', A('2'), '2', '@', C('@'), -/* 04 - '3' */ '3', 0234, A('3'), '3', 0234, C('C'), -/* 05 - '4' */ '4', '$', A('4'), '4', '$', C('D'), -/* 06 - '5' */ '5', '%', A('5'), '5', '%', C('E'), -/* 07 - '6' */ '6', '&', A('6'), '6', '&', C('F'), -/* 08 - '7' */ '7', '/', A('7'), '7', '/', C('G'), -/* 09 - '8' */ '8', '(', A('8'), '8', '(', C('H'), -/* 10 - '9' */ '9', ')', A('9'), '8', ')', C('I'), -/* 11 - '0' */ '0', '=', A('0'), '0', '=', C('@'), -/* 12 - '-' */ '\'', '?', A('\''),'`', '?', C('@'), -/* 13 - '=' */ 0215, '^', A('|'), 0215, '^', C('^'), -/* 14 - BS */ C('H'), C('H'), CA('H'),C('H'), C('H'), 0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),C('I'), C('I'), C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), 'q', 'Q', C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), 'w', 'W', C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), 'e', 'E', C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), 'r', 'R', C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), 't', 'T', C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), 'y', 'Y', C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), 'u', 'U', C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), 'i', 'I', C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), 'o', 'O', C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), 'p', 'P', C('P'), -/* 26 - '[' */ 0212, 0202, 0212, '[', '{', C('['), -/* 27 - ']' */ '+', '*', A('+'), ']', '}', C(']'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), 'a', 'A', C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), 's', 'S', C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), 'd', 'D', C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), 'f', 'F', C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), 'g', 'G', C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), 'h', 'H', C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), 'j', 'J', C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), 'k', 'K', C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), 'l', 'L', C('L'), -/* 39 - ';' */ 0225, 0207, 0225, '@', '@', C('@'), -/* 40 - '\'' */ 0205, 0370, 0205, '#', 0276, C('@'), -/* 41 - '`' */ '\\', '|', A('\\'),0176, '|', C('\\'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ 0227, 025, 0227, 0227, 025, C('@'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), 'z', 'Z', C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), 'x', 'X', C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), 'c', 'C', C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), 'v', 'V', C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), 'b', 'B', C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), 'n', 'N', C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), 'm', 'M', C('M'), -/* 51 - ',' */ ',', ';', A(','), ',', ';', C('@'), -/* 52 - '.' */ '.', ':', A('.'), '.', ':', C('@'), -/* 53 - '/' */ '-', '_', A('-'), '-', '_', C('_'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), '*', '*', C('M'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), ' ', ' ', C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, '7', CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, '8', CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, '9', CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, '-', CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, '4', CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, '5', CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, '+', CPLUS, -/* 79 - End */ END, '1', AEND, AEND, '1', CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, '2', CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, '3', CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, '0', CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),0177, '.', 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), '|', '>', C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A('a'), 'a', 'A', C('A') }, + K(B) = { L('b'), 'B', A('b'), 'b', 'B', C('B') }, + K(C) = { L('c'), 'C', A('c'), 'c', 'C', C('C') }, + K(D) = { L('d'), 'D', A('d'), 'd', 'D', C('D') }, + K(E) = { L('e'), 'E', A('e'), 'e', 'E', C('E') }, + K(F) = { L('f'), 'F', A('f'), 'f', 'F', C('F') }, + K(G) = { L('g'), 'G', A('g'), 'g', 'G', C('G') }, + K(H) = { L('h'), 'H', A('h'), 'h', 'H', C('H') }, + K(I) = { L('i'), 'I', A('i'), 'i', 'I', C('I') }, + K(J) = { L('j'), 'J', A('j'), 'j', 'J', C('J') }, + K(K) = { L('k'), 'K', A('k'), 'k', 'K', C('K') }, + K(L) = { L('l'), 'L', A('l'), 'l', 'L', C('L') }, + K(M) = { L('m'), 'M', A('m'), 'm', 'M', C('M') }, + K(N) = { L('n'), 'N', A('n'), 'n', 'N', C('N') }, + K(O) = { L('o'), 'O', A('o'), 'o', 'O', C('O') }, + K(P) = { L('p'), 'P', A('p'), 'p', 'P', C('P') }, + K(Q) = { L('q'), 'Q', A('q'), 'q', 'Q', C('Q') }, + K(R) = { L('r'), 'R', A('r'), 'r', 'R', C('R') }, + K(S) = { L('s'), 'S', A('s'), 's', 'S', C('S') }, + K(T) = { L('t'), 'T', A('t'), 't', 'T', C('T') }, + K(U) = { L('u'), 'U', A('u'), 'u', 'U', C('U') }, + K(V) = { L('v'), 'V', A('v'), 'v', 'V', C('V') }, + K(W) = { L('w'), 'W', A('w'), 'w', 'W', C('W') }, + K(X) = { L('x'), 'X', A('x'), 'x', 'X', C('X') }, + K(Y) = { L('y'), 'Y', A('y'), 'y', 'Y', C('Y') }, + K(Z) = { L('z'), 'Z', A('z'), 'z', 'Z', C('Z') }, + K(1) = { '1', '!', A('1'), '1', '!', C('A') }, + K(2) = { '2', '"', A('2'), '2', '@', C('@') }, + K(3) = { '3', 0234, A('3'), '3', 0234, C('C') }, + K(4) = { '4', '$', A('4'), '4', '$', C('D') }, + K(5) = { '5', '%', A('5'), '5', '%', C('E') }, + K(6) = { '6', '&', A('6'), '6', '&', C('F') }, + K(7) = { '7', '/', A('7'), '7', '/', C('G') }, + K(8) = { '8', '(', A('8'), '8', '(', C('H') }, + K(9) = { '9', ')', A('9'), '8', ')', C('I') }, + K(0) = { '0', '=', A('0'), '0', '=', C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),C('['), C('['), C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),C('H'), C('H'), DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),C('I'), C('I'), C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), ' ', ' ', C('@') }, + K(DASH) = { '\'', '?', A('\''),'`', '?', C('@') }, + K(EQUAL) = { 0215, '^', A('|'), 0215, '^', C('^') }, + K(OPEN_BRACKET) = { 0212, 0202, 0212, '[', '{', C('[') }, + K(CLOSE_BRACKET) = { '+', '*', A('+'), ']', '}', C(']') }, + K(BACKSLASH) = { 0227, 025, 0227, 0227, 025, C('@') }, + K(SEMICOLON) = { 0225, 0207, 0225, '@', '@', C('@') }, + K(APOSTROPH) = { 0205, 0370, 0205, '#', 0276, C('@') }, + K(GRAVE_ACCENT) = { '\\', '|', A('\\'),0176, '|', C('\\') }, + K(COMMA) = { ',', ';', A(','), ',', ';', C('@') }, + K(PERIOD) = { '.', ':', A('.'), '.', ':', C('@') }, + K(SLASH) = { '-', '_', A('-'), '-', '_', C('_') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), DEL, A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '-', '-', A('-'), '-', A('-'), C('_') }, + K(KP_STAR) = { '*', '*', A('*'), '*', '*', C('M') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, '-', CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, '+', CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),C('M'), CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, '1', CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, '2', CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, '3', CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, '4', CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, '5', CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, '7', CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, '8', CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, '9', CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, '0', CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), DEL, '.', DEL }, + K(EUROPE_2) = { '<', '>', A('<'), '|', '>', C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/japanese.src b/drivers/tty/keymaps/japanese.src index 7ab519f43..9a5c5482c 100644 --- a/drivers/tty/keymaps/japanese.src +++ b/drivers/tty/keymaps/japanese.src @@ -18,137 +18,109 @@ * 125(0x7D) YEN mapped to '\\' and '|' */ -#if (NR_SCAN_CODES != 0x80) -#error NR_SCAN_CODES mis-match -#endif - /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', A('1'), A('1'), A('!'), C('A'), -/* 03 - '2' */ '2', '"', A('2'), A('2'), A('"'), C('B'), -/* 04 - '3' */ '3', '#', A('3'), A('3'), A('#'), C('C'), -/* 05 - '4' */ '4', '$', A('4'), A('4'), A('$'), C('D'), -/* 06 - '5' */ '5', '%', A('5'), A('5'), A('%'), C('E'), -/* 07 - '6' */ '6', '&', A('6'), A('6'), A('&'), C('F'), -/* 08 - '7' */ '7', '\'', A('7'), A('7'), A('\''),C('G'), -/* 09 - '8' */ '8', '(', A('8'), A('8'), A('('), C('H'), -/* 10 - '9' */ '9', ')', A('9'), A('9'), A(')'), C('I'), -/* 11 - '0' */ '0', '~', A('0'), A('0'), A('~'), C('@'), -/* 12 - '-' */ '-', '=', A('-'), A('-'), A('='), C('@'), -/* 13 - '^' */ '^', '~', A('^'), A('^'), A('~'), C('^'), -/* 14 - BS */ C('H'), C('H'), CA('H'),CA('H'),CA('H'),0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), A('w'), A('W'), C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), A('e'), A('E'), C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), A('r'), A('R'), C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), A('t'), A('T'), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), A('u'), A('U'), C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), A('i'), A('I'), C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), A('o'), A('O'), C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), A('p'), A('P'), C('P'), -/* 26 - '@' */ '@', '`', A('@'), A('@'), A('`'), C('@'), -/* 27 - '[' */ '[', '{', A('['), A('['), A('{'), C('['), -/* 28 - Enter */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), A('a'), A('A'), C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), A('s'), A('S'), C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), A('d'), A('D'), C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), A('f'), A('F'), C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), A('g'), A('G'), C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), A('h'), A('H'), C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), A('j'), A('J'), C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), A('k'), A('K'), C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), A('l'), A('L'), C('L'), -/* 39 - ';' */ ';', '+', A(';'), A(';'), A('+'), C('@'), -/* 40 - ':' */ ':', '*', A(':'), A(':'), A('*'), C('@'), -/* 41 - KANJI */ 0, 0, 0, 0, 0, 0, -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - ']' */ ']', '}', A(']'), A(']'), A('}'), C(']'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), A('x'), A('X'), C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), A('c'), A('C'), C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), A('v'), A('V'), C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), A('b'), A('B'), C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), A('n'), A('N'), C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), A('m'), A('M'), C('M'), -/* 51 - ',' */ ',', '<', A(','), A(','), A('<'), C('@'), -/* 52 - '.' */ '.', '>', A('.'), A('.'), A('>'), C('@'), -/* 53 - '/' */ '/', '?', A('/'), A('/'), A('?'), C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), A('*'), A('*'), C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, A('7'), CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, A('8'), CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, A('9'), CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, A('-'), CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, A('4'), CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, A('5'), CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, A('+'), CPLUS, -/* 79 - End */ END, '1', AEND, AEND, A('1'), CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, A('2'), CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, A('3'), CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, A('0'), CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),A(0177),A('.'), 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ 0, 0, 0, 0, 0, 0, -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - KANA */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - '\\' */ '\\', '_', A('\\'),A('\\'),A('_'), C('_'), -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - HENKAN */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - MU-HENKAN*/ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - YEN */ '\\', '|', A('\\'),A('\\'),A('|'), C('\\'), -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A('a'), A('a'), A('A'), C('A') }, + K(B) = { L('b'), 'B', A('b'), A('b'), A('B'), C('B') }, + K(C) = { L('c'), 'C', A('c'), A('c'), A('C'), C('C') }, + K(D) = { L('d'), 'D', A('d'), A('d'), A('D'), C('D') }, + K(E) = { L('e'), 'E', A('e'), A('e'), A('E'), C('E') }, + K(F) = { L('f'), 'F', A('f'), A('f'), A('F'), C('F') }, + K(G) = { L('g'), 'G', A('g'), A('g'), A('G'), C('G') }, + K(H) = { L('h'), 'H', A('h'), A('h'), A('H'), C('H') }, + K(I) = { L('i'), 'I', A('i'), A('i'), A('I'), C('I') }, + K(J) = { L('j'), 'J', A('j'), A('j'), A('J'), C('J') }, + K(K) = { L('k'), 'K', A('k'), A('k'), A('K'), C('K') }, + K(L) = { L('l'), 'L', A('l'), A('l'), A('L'), C('L') }, + K(M) = { L('m'), 'M', A('m'), A('m'), A('M'), C('M') }, + K(N) = { L('n'), 'N', A('n'), A('n'), A('N'), C('N') }, + K(O) = { L('o'), 'O', A('o'), A('o'), A('O'), C('O') }, + K(P) = { L('p'), 'P', A('p'), A('p'), A('P'), C('P') }, + K(Q) = { L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q') }, + K(R) = { L('r'), 'R', A('r'), A('r'), A('R'), C('R') }, + K(S) = { L('s'), 'S', A('s'), A('s'), A('S'), C('S') }, + K(T) = { L('t'), 'T', A('t'), A('t'), A('T'), C('T') }, + K(U) = { L('u'), 'U', A('u'), A('u'), A('U'), C('U') }, + K(V) = { L('v'), 'V', A('v'), A('v'), A('V'), C('V') }, + K(W) = { L('w'), 'W', A('w'), A('w'), A('W'), C('W') }, + K(X) = { L('x'), 'X', A('x'), A('x'), A('X'), C('X') }, + K(Y) = { L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y') }, + K(Z) = { L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z') }, + K(1) = { '1', '!', A('1'), A('1'), A('!'), C('A') }, + K(2) = { '2', '"', A('2'), A('2'), A('"'), C('B') }, + K(3) = { '3', '#', A('3'), A('3'), A('#'), C('C') }, + K(4) = { '4', '$', A('4'), A('4'), A('$'), C('D') }, + K(5) = { '5', '%', A('5'), A('5'), A('%'), C('E') }, + K(6) = { '6', '&', A('6'), A('6'), A('&'), C('F') }, + K(7) = { '7', '\'', A('7'), A('7'), A('\''),C('G') }, + K(8) = { '8', '(', A('8'), A('8'), A('('), C('H') }, + K(9) = { '9', ')', A('9'), A('9'), A(')'), C('I') }, + K(0) = { '0', '~', A('0'), A('0'), A('~'), C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),CA('H'),CA('H'),DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), A(' '), A(' '), C('@') }, + K(DASH) = { '-', '=', A('-'), A('-'), A('='), C('@') }, + K(EQUAL) = { '^', '~', A('^'), A('^'), A('~'), C('^') }, + K(OPEN_BRACKET) = { '@', '`', A('@'), A('@'), A('`'), C('@') }, + K(CLOSE_BRACKET) = { '[', '{', A('['), A('['), A('{'), C('[') }, + K(BACKSLASH) = { ']', '}', A(']'), A(']'), A('}'), C(']') }, + K(SEMICOLON) = { ';', '+', A(';'), A(';'), A('+'), C('@') }, + K(APOSTROPH) = { ':', '*', A(':'), A(':'), A('*'), C('@') }, + K(COMMA) = { ',', '<', A(','), A(','), A('<'), C('@') }, + K(PERIOD) = { '.', '>', A('.'), A('.'), A('>'), C('@') }, + K(SLASH) = { '/', '?', A('/'), A('/'), A('?'), C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), A(DEL), A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '/', '/', A('/'), A('/'), A('/'), C('@') }, + K(KP_STAR) = { '*', '*', A('*'), A('*'), A('*'), C('@') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, A('-'), CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, A('+'), CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, A('1'), CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, A('2'), CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, A('3'), CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, A('4'), CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, A('5'), CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, A('7'), CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, A('8'), CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, A('9'), CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, A('0'), CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), A(DEL), A('.'), DEL }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(I10L_1) = { '\\', '_', A('\\'),A('\\'),A('_'), C('_') }, + K(I10L_3) = { '\\', '|', A('\\'),A('\\'),A('|'), C('\\') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/latin-america.src b/drivers/tty/keymaps/latin-america.src index 5c4071581..aecceba5c 100644 --- a/drivers/tty/keymaps/latin-america.src +++ b/drivers/tty/keymaps/latin-america.src @@ -14,137 +14,109 @@ in MINIX 1.7.2 ***/ -#if (NR_SCAN_CODES != 0x80) -#error NR_SCAN_CODES mis-match -#endif - /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', A('1'), A('1'), A('!'), C('A'), -/* 03 - '2' */ '2', '"', A('2'), A('2'), A('"'), C('@'), -/* 04 - '3' */ '3', '#', A('3'), A('3'), A('#'), C('C'), -/* 05 - '4' */ '4', '$', A('4'), A('4'), A('$'), C('D'), -/* 06 - '5' */ '5', '%', A('5'), A('5'), A('%'), C('E'), -/* 07 - '6' */ '6', '&', A('6'), A('6'), A('$'), C('^'), -/* 08 - '7' */ '7', '/', A('7'), A('7'), A('/'), C('G'), -/* 09 - '8' */ '8', '(', A('8'), A('8'), A('('), C('H'), -/* 10 - '9' */ '9', ')', A('9'), A('9'), A(')'), C('I'), -/* 11 - '0' */ '0', '=', A('0'), A('0'), A('='), C('@'), -/* 12 - '-' */ '\'', '?', A('\''), 0x5c, A('?'), C('?'), -/* 13 - '¨' */ 0xa8, 0xad, A(0xa8),A(0xa8),A(0xad), C('@'), -/* 14 - BS */ C('H'), C('H'), CA('H'),CA('H'),CA('H'),0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), 0x40, A('Q'), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), A('w'), A('W'), C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), A('e'), A('E'), C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), A('r'), A('R'), C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), A('t'), A('T'), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), A('u'), A('U'), C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), A('i'), A('I'), C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), A('o'), A('O'), C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), A('p'), A('P'), C('P'), -/* 26 - 'ï' */ 0xef, 0xf9, A(0xef),A(0xef),A(0xf9),C(0xef), -/* 27 - '+' */ '+', '*', A('+'), 0x7e, A('*'), C('+'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), A('a'), A('A'), C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), A('s'), A('S'), C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), A('d'), A('D'), C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), A('f'), A('F'), C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), A('g'), A('G'), C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), A('h'), A('H'), C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), A('j'), A('J'), C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), A('k'), A('K'), C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), A('l'), A('L'), C('L'), -/* 39 - '¤' */ L(0xa4),0xa5, A(0xa4),A(0xa4),A(0xa5),C('@'), -/* 40 - '{' */ '{', '[', A('{'), 0x5e, A('['), C('@'), -/* 41 - '|' */ '|', 0xf8, A('|'), 0xaa, A('\''),C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '}' */ 0x7d, 0x5d, A('<'), 0x60, A('>'), C('<'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), A('x'), A('X'), C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), A('c'), A('C'), C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), A('v'), A('V'), C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), A('b'), A('B'), C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), A('n'), A('N'), C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), A('m'), A('M'), C('M'), -/* 51 - ',' */ ',', ';', A(','), A(','), A(';'), C('@'), -/* 52 - '.' */ '.', ':', A('.'), A('.'), A(':'), C('@'), -/* 53 - '/' */ '-', '_', A('-'), A('-'), A('_'), C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), A('*'), A('*'), C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, A('7'), CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, A('8'), CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, A('9'), CPGUP, -/* 74 - '-' */ '-', '-', '-', '-', '-', '-', -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, A('4'), CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, A('5'), CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT, -/* 78 - '+' */ '+', '+', '+', '+', '+', '+', -/* 79 - End */ END, '1', AEND, AEND, A('1'), CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, A('2'), CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, A('3'), CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, A('0'), CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),A(0177),A('.'), 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), A('>'), A('>'), C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A('a'), A('a'), A('A'), C('A') }, + K(B) = { L('b'), 'B', A('b'), A('b'), A('B'), C('B') }, + K(C) = { L('c'), 'C', A('c'), A('c'), A('C'), C('C') }, + K(D) = { L('d'), 'D', A('d'), A('d'), A('D'), C('D') }, + K(E) = { L('e'), 'E', A('e'), A('e'), A('E'), C('E') }, + K(F) = { L('f'), 'F', A('f'), A('f'), A('F'), C('F') }, + K(G) = { L('g'), 'G', A('g'), A('g'), A('G'), C('G') }, + K(H) = { L('h'), 'H', A('h'), A('h'), A('H'), C('H') }, + K(I) = { L('i'), 'I', A('i'), A('i'), A('I'), C('I') }, + K(J) = { L('j'), 'J', A('j'), A('j'), A('J'), C('J') }, + K(K) = { L('k'), 'K', A('k'), A('k'), A('K'), C('K') }, + K(L) = { L('l'), 'L', A('l'), A('l'), A('L'), C('L') }, + K(M) = { L('m'), 'M', A('m'), A('m'), A('M'), C('M') }, + K(N) = { L('n'), 'N', A('n'), A('n'), A('N'), C('N') }, + K(O) = { L('o'), 'O', A('o'), A('o'), A('O'), C('O') }, + K(P) = { L('p'), 'P', A('p'), A('p'), A('P'), C('P') }, + K(Q) = { L('q'), 'Q', A('q'), 0x40, A('Q'), C('Q') }, + K(R) = { L('r'), 'R', A('r'), A('r'), A('R'), C('R') }, + K(S) = { L('s'), 'S', A('s'), A('s'), A('S'), C('S') }, + K(T) = { L('t'), 'T', A('t'), A('t'), A('T'), C('T') }, + K(U) = { L('u'), 'U', A('u'), A('u'), A('U'), C('U') }, + K(V) = { L('v'), 'V', A('v'), A('v'), A('V'), C('V') }, + K(W) = { L('w'), 'W', A('w'), A('w'), A('W'), C('W') }, + K(X) = { L('x'), 'X', A('x'), A('x'), A('X'), C('X') }, + K(Y) = { L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y') }, + K(Z) = { L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z') }, + K(1) = { '1', '!', A('1'), A('1'), A('!'), C('A') }, + K(2) = { '2', '"', A('2'), A('2'), A('"'), C('@') }, + K(3) = { '3', '#', A('3'), A('3'), A('#'), C('C') }, + K(4) = { '4', '$', A('4'), A('4'), A('$'), C('D') }, + K(5) = { '5', '%', A('5'), A('5'), A('%'), C('E') }, + K(6) = { '6', '&', A('6'), A('6'), A('$'), C('^') }, + K(7) = { '7', '/', A('7'), A('7'), A('/'), C('G') }, + K(8) = { '8', '(', A('8'), A('8'), A('('), C('H') }, + K(9) = { '9', ')', A('9'), A('9'), A(')'), C('I') }, + K(0) = { '0', '=', A('0'), A('0'), A('='), C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),CA('H'),CA('H'),DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), A(' '), A(' '), C('@') }, + K(DASH) = { '\'', '?', A('\''),0x5c, A('?'), C('?') }, + K(EQUAL) = { 0xa8, 0xad, A(0xa8),A(0xa8),A(0xad),C('@') }, + K(OPEN_BRACKET) = { 0xef, 0xf9, A(0xef),A(0xef),A(0xf9),C(0xef) }, + K(CLOSE_BRACKET) = { '+', '*', A('+'), 0x7e, A('*'), C('+') }, + K(BACKSLASH) = { 0x7d, 0x5d, A('<'), 0x60, A('>'), C('<') }, + K(SEMICOLON) = { L(0xa4),0xa5, A(0xa4),A(0xa4),A(0xa5),C('@') }, + K(APOSTROPH) = { '{', '[', A('{'), 0x5e, A('['), C('@') }, + K(GRAVE_ACCENT) = { '|', 0xf8, A('|'), 0xaa, A('\''),C('@') }, + K(COMMA) = { ',', ';', A(','), A(','), A(';'), C('@') }, + K(PERIOD) = { '.', ':', A('.'), A('.'), A(':'), C('@') }, + K(SLASH) = { '-', '_', A('-'), A('-'), A('_'), C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), A(DEL), A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '-', '-', A('-'), A('-'), A('-'), C('@') }, + K(KP_STAR) = { '*', '*', A('*'), A('*'), A('*'), C('@') }, + K(KP_DASH) = { '-', '-', '-', '-', '-', '-' }, + K(KP_PLUS) = { '+', '+', '+', '+', '+', '+' }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, A('1'), CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, A('2'), CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, A('3'), CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, A('4'), CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, A('5'), CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, A('7'), CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, A('8'), CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, A('9'), CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, A('0'), CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), A(DEL), A('.'), DEL }, + K(EUROPE_2) = { '<', '>', A('<'), A('>'), A('>'), C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/olivetti.src b/drivers/tty/keymaps/olivetti.src deleted file mode 100644 index 25deb961d..000000000 --- a/drivers/tty/keymaps/olivetti.src +++ /dev/null @@ -1,132 +0,0 @@ -/* Keymap for the Olivetti M24. */ - -/* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ -/* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', A('1'), A('1'), A('!'), C('A'), -/* 03 - '2' */ '2', '"', A('2'), A('2'), A('"'), C('B'), -/* 04 - '3' */ '3', '#', A('3'), A('3'), A('#'), C('C'), -/* 05 - '4' */ '4', '$', A('4'), A('4'), A('$'), C('D'), -/* 06 - '5' */ '5', '%', A('5'), A('5'), A('%'), C('E'), -/* 07 - '6' */ '6', '&', A('6'), A('6'), A('&'), C('F'), -/* 08 - '7' */ '7', '\'', A('7'), A('7'), A('\''),C('G'), -/* 09 - '8' */ '8', '(', A('8'), A('8'), A('('), C('H'), -/* 10 - '9' */ '9', ')', A('9'), A('9'), A(')'), C('I'), -/* 11 - '0' */ '0', '_', A('0'), A('0'), A('_'), C('@'), -/* 12 - '-' */ '-', '=', A('-'), A('-'), A('='), C('@'), -/* 13 - '=' */ '^', '~', A('^'), A('^'), A('~'), C('^'), -/* 14 - BS */ C('H'), C('H'), CA('H'),CA('H'),CA('H'),0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), A('w'), A('W'), C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), A('e'), A('E'), C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), A('r'), A('R'), C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), A('t'), A('T'), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), A('u'), A('U'), C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), A('i'), A('I'), C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), A('o'), A('O'), C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), A('p'), A('P'), C('P'), -/* 26 - '[' */ '@', '`', A('@'), A('@'), A('`'), C('@'), -/* 27 - ']' */ '[', '{', A('['), A('['), A('{'), C('['), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), A('a'), A('A'), C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), A('s'), A('S'), C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), A('d'), A('D'), C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), A('f'), A('F'), C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), A('g'), A('G'), C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), A('h'), A('H'), C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), A('j'), A('J'), C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), A('k'), A('K'), C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), A('l'), A('L'), C('L'), -/* 39 - ';' */ ';', '+', A(';'), A(';'), A('+'), C('@'), -/* 40 - '\'' */ ':', '*', A(':'), A(':'), A('*'), C('@'), -/* 41 - '`' */ ']', '}', A(']'), A(']'), A('}'), C(']'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ '\\', '|', A('\\'),A('\\'),A('|'), C('\\'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), A('x'), A('X'), C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), A('c'), A('C'), C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), A('v'), A('V'), C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), A('b'), A('B'), C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), A('n'), A('N'), C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), A('m'), A('M'), C('M'), -/* 51 - ',' */ ',', '<', A(','), A(','), A('<'), C('@'), -/* 52 - '.' */ '.', '>', A('.'), A('.'), A('>'), C('@'), -/* 53 - '/' */ '/', '?', A('/'), A('/'), A('?'), C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), A('*'), A('*'), C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ C('S'), C('S'), C('S'), C('S'), C('S'), C('S'), -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, A('7'), CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, A('8'), CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, A('9'), CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, A('-'), CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, A('4'), CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, A('5'), CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, A('+'), CPLUS, -/* 79 - End */ END, '1', AEND, AEND, A('1'), CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, A('2'), CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, A('3'), CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, A('0'), CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),A(0177),A('.'), 0177, -/* 84 - Enter */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 85 - ??? */ LEFT, 014, A(014), A(014), A(014), 014, -/* 86 - ??? */ 0212, 0212, 0212, 0212, 0212, 0212, -/* 87 - F11 */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ DOWN, DOWN, DOWN, DOWN, DOWN, DOWN, -/* 90 - ??? */ RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, RIGHT, -/* 91 - ??? */ UP, UP, UP, UP, UP, UP, -/* 92 - ??? */ LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 diff --git a/drivers/tty/keymaps/polish.src b/drivers/tty/keymaps/polish.src index b8a2d5ec5..5a84ff4be 100644 --- a/drivers/tty/keymaps/polish.src +++ b/drivers/tty/keymaps/polish.src @@ -6,131 +6,107 @@ /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', A('1'), A('1'), A('!'), C('A'), -/* 03 - '2' */ '2', '@', A('2'), A('2'), A('@'), C('@'), -/* 04 - '3' */ '3', '#', A('3'), A('3'), A('#'), C('C'), -/* 05 - '4' */ '4', '$', A('4'), A('4'), A('$'), C('D'), -/* 06 - '5' */ '5', '%', A('5'), A('5'), A('%'), C('E'), -/* 07 - '6' */ '6', '^', A('6'), A('6'), A('^'), C('^'), -/* 08 - '7' */ '7', '&', A('7'), A('7'), A('&'), C('G'), -/* 09 - '8' */ '8', '*', A('8'), A('8'), A('*'), C('H'), -/* 10 - '9' */ '9', '(', A('9'), A('9'), A('('), C('I'), -/* 11 - '0' */ '0', ')', A('0'), A('0'), A(')'), C('@'), -/* 12 - '-' */ '-', '_', A('-'), A('-'), A('_'), C('_'), -/* 13 - '=' */ '=', '+', A('='), A('='), A('+'), C('@'), -/* 14 - BS */ C('H'), C('H'), CA('H'),CA('H'),CA('H'),0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), A('w'), A('W'), C('W'), -/* 18 - 'e' */ L('e'), 'E', A(0xea),A(0xea),A(0xca),C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), A('r'), A('R'), C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), A('t'), A('T'), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), A('u'), A('U'), C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), A('i'), A('I'), C('I'), -/* 24 - 'o' */ L('o'), 'O', A(0xf3),A(0xf3),A(0xd3),C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), A('p'), A('P'), C('P'), -/* 26 - '[' */ '[', '{', A('['), A('['), A('{'), C('['), -/* 27 - ']' */ ']', '}', A(']'), A(']'), A('}'), C(']'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A(0xb1),A(0xb1),A(0xa1),C('A'), -/* 31 - 's' */ L('s'), 'S', A(0xb6),A(0xb6),A(0xa6),C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), A('d'), A('D'), C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), A('f'), A('F'), C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), A('g'), A('G'), C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), A('h'), A('H'), C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), A('j'), A('J'), C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), A('k'), A('K'), C('K'), -/* 38 - 'l' */ L('l'), 'L', A(0xb3),A(0xb3),A(0xa3),C('L'), -/* 39 - ';' */ ';', ':', A(';'), A(';'), A(':'), C('@'), -/* 40 - '\'' */ '\'', '"', A('\''),A('\''),A('"'), C('@'), -/* 41 - '`' */ '`', '~', A('`'), A('`'), A('~'), C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ '\\', '|', A('\\'),A('\\'),A('|'), C('\\'), -/* 44 - 'z' */ L('z'), 'Z', A(0xbf),A(0xbf),A(0xaf),C('Z'), -/* 45 - 'x' */ L('x'), 'X', A(0xbc),A(0xbc),A(0xac),C('X'), -/* 46 - 'c' */ L('c'), 'C', A(0xe6),A(0xe6),A(0xc6),C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), A('v'), A('V'), C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), A('b'), A('B'), C('B'), -/* 49 - 'n' */ L('n'), 'N', A(0xf1),A(0xf1),A(0xd1),C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), A('m'), A('M'), C('M'), -/* 51 - ',' */ ',', '<', A(','), A(','), A('<'), C('@'), -/* 52 - '.' */ '.', '>', A('.'), A('.'), A('>'), C('@'), -/* 53 - '/' */ '/', '?', A('/'), A('/'), A('?'), C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), A('*'), A('*'), C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, A('7'), CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, A('8'), CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, A('9'), CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, A('-'), CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, A('4'), CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, A('5'), CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, A('+'), CPLUS, -/* 79 - End */ END, '1', AEND, AEND, A('1'), CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, A('2'), CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, A('3'), CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, A('0'), CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),A(0177),A('.'), 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), A('|'), A('>'), C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A(0xb1),A(0xb1),A(0xa1),C('A') }, + K(B) = { L('b'), 'B', A('b'), A('b'), A('B'), C('B') }, + K(C) = { L('c'), 'C', A(0xe6),A(0xe6),A(0xc6),C('C') }, + K(D) = { L('d'), 'D', A('d'), A('d'), A('D'), C('D') }, + K(E) = { L('e'), 'E', A(0xea),A(0xea),A(0xca),C('E') }, + K(F) = { L('f'), 'F', A('f'), A('f'), A('F'), C('F') }, + K(G) = { L('g'), 'G', A('g'), A('g'), A('G'), C('G') }, + K(H) = { L('h'), 'H', A('h'), A('h'), A('H'), C('H') }, + K(I) = { L('i'), 'I', A('i'), A('i'), A('I'), C('I') }, + K(J) = { L('j'), 'J', A('j'), A('j'), A('J'), C('J') }, + K(K) = { L('k'), 'K', A('k'), A('k'), A('K'), C('K') }, + K(L) = { L('l'), 'L', A(0xb3),A(0xb3),A(0xa3),C('L') }, + K(M) = { L('m'), 'M', A('m'), A('m'), A('M'), C('M') }, + K(N) = { L('n'), 'N', A(0xf1),A(0xf1),A(0xd1),C('N') }, + K(O) = { L('o'), 'O', A(0xf3),A(0xf3),A(0xd3),C('O') }, + K(P) = { L('p'), 'P', A('p'), A('p'), A('P'), C('P') }, + K(Q) = { L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q') }, + K(R) = { L('r'), 'R', A('r'), A('r'), A('R'), C('R') }, + K(S) = { L('s'), 'S', A(0xb6),A(0xb6),A(0xa6),C('S') }, + K(T) = { L('t'), 'T', A('t'), A('t'), A('T'), C('T') }, + K(U) = { L('u'), 'U', A('u'), A('u'), A('U'), C('U') }, + K(V) = { L('v'), 'V', A('v'), A('v'), A('V'), C('V') }, + K(W) = { L('w'), 'W', A('w'), A('w'), A('W'), C('W') }, + K(X) = { L('x'), 'X', A(0xbc),A(0xbc),A(0xac),C('X') }, + K(Y) = { L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y') }, + K(Z) = { L('z'), 'Z', A(0xbf),A(0xbf),A(0xaf),C('Z') }, + K(1) = { '1', '!', A('1'), A('1'), A('!'), C('A') }, + K(2) = { '2', '@', A('2'), A('2'), A('@'), C('@') }, + K(3) = { '3', '#', A('3'), A('3'), A('#'), C('C') }, + K(4) = { '4', '$', A('4'), A('4'), A('$'), C('D') }, + K(5) = { '5', '%', A('5'), A('5'), A('%'), C('E') }, + K(6) = { '6', '^', A('6'), A('6'), A('^'), C('^') }, + K(7) = { '7', '&', A('7'), A('7'), A('&'), C('G') }, + K(8) = { '8', '*', A('8'), A('8'), A('*'), C('H') }, + K(9) = { '9', '(', A('9'), A('9'), A('('), C('I') }, + K(0) = { '0', ')', A('0'), A('0'), A(')'), C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),CA('H'),CA('H'),DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), A(' '), A(' '), C('@') }, + K(DASH) = { '-', '_', A('-'), A('-'), A('_'), C('_') }, + K(EQUAL) = { '=', '+', A('='), A('='), A('+'), C('@') }, + K(OPEN_BRACKET) = { '[', '{', A('['), A('['), A('{'), C('[') }, + K(CLOSE_BRACKET) = { ']', '}', A(']'), A(']'), A('}'), C(']') }, + K(BACKSLASH) = { '\\', '|', A('\\'),A('\\'),A('|'), C('\\') }, + K(SEMICOLON) = { ';', ':', A(';'), A(';'), A(':'), C('@') }, + K(APOSTROPH) = { '\'', '"', A('\''),A('\''),A('"'), C('@') }, + K(GRAVE_ACCENT) = { '`', '~', A('`'), A('`'), A('~'), C('@') }, + K(COMMA) = { ',', '<', A(','), A(','), A('<'), C('@') }, + K(PERIOD) = { '.', '>', A('.'), A('.'), A('>'), C('@') }, + K(SLASH) = { '/', '?', A('/'), A('/'), A('?'), C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), A(DEL), A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '/', '/', A('/'), A('/'), A('/'), C('@') }, + K(KP_STAR) = { '*', '*', A('*'), A('*'), A('*'), C('@') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, A('-'), CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, A('+'), CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, A('1'), CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, A('2'), CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, A('3'), CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, A('4'), CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, A('5'), CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, A('7'), CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, A('8'), CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, A('9'), CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, A('0'), CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), A(DEL), A('.'), DEL }, + K(EUROPE_2) = { '<', '>', A('<'), A('|'), A('>'), C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/portuguese.src b/drivers/tty/keymaps/portuguese.src index de5e579da..d48978b24 100644 --- a/drivers/tty/keymaps/portuguese.src +++ b/drivers/tty/keymaps/portuguese.src @@ -1,134 +1,108 @@ /* Keymap for Portuguese keyboards */ /* scan-code !Shift Shift Alt AltGr Alt+Sh Ctrl */ -/* -==================================================================== -*/ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),C('['), C('['), C('['), -/* 02 - '1' */ '1', '!', A('1'), '|', '!', C('A'), -/* 03 - '2' */ '2', '"', '@', '@', '"', C('@'), -/* 04 - '3' */ '3', '#', A(156), 156, 0372, C('C'), -/* 05 - '4' */ '4', '$', A('4'), 0x15, '$', C('D'), -/* 06 - '5' */ '5', '%', A('5'), '5', '%', C('E'), -/* 07 - '6' */ '6', '&', A('6'), 0252, '&', C('F'), -/* 08 - '7' */ '7', '/', '{', '{', '/', C('G'), -/* 09 - '8' */ '8', '(', A('8'), '[', '(', C('H'), -/* 10 - '9' */ '9', ')', A('9'), ']', ')', C('I'), -/* 11 - '0' */ '0', '=', 125, 125, '=', C('@'), -/* 12 - '-' */ '\'', '?', A('\''),'?', '?', C('_'), -/* 13 - '=' */ 174, 175, 174, 174, 0250, C('@'), -/* 14 - BS */ 127, 127, 127, 127, 127, C(127), -/* 15 - TAB */ C('I'), C('I'), CA('I'),C('I'), C('I'), C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), 'q', 'Q', C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), 'w', 'W', C('W'), -/* 18 - 'e' */ L('e'), 'E', 128, 128, 'E', C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), 'r', 'R', C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), 't', 'T', C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), 'y', 'Y', C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), 'u', 'U', C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), 'i', 'I', C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), 'o', 'O', C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), 'p', 'P', C('P'), -/* 26 - '[' */ '+', '*', A('`'),'[', '^', C('['), -/* 27 - ']' */ '\'', 96, '\'', '\'', '*', C(']'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), 'a', 'A', C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), 's', 'S', C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), 'd', 'D', C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), 'f', 'F', C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), 'g', 'G', C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), 'h', 'H', C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), 'j', 'J', C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), 'k', 'K', C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), 'l', 'L', C('L'), -/* 39 - ';' */ 135, 128, 135,135, 135, 135, -/* 40 - '\'' */ 167, 166, 167, 167, 167, C('@'), -/* 41 - '`' */ '\\', '|', A(0247),'\\', 0246, C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '~' */ '~', '^', A(0207),'}', 000, C('@'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), 'z', 'Z', C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), 'x', 'X', C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), 'c', 'C', C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), 'v', 'V', C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), 'b', 'B', C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), 'n', 'N', C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), 'm', 'M', C('M'), -/* 51 - ',' */ ',', ';', A(','), ',', ';', C('@'), -/* 52 - '.' */ '.', ':', A('.'), '.', ':', C('@'), -/* 53 - '/' */ '-', '_', '-' , '-', '_', C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), '*', '*', C('M'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), ' ', ' ', C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, '7', CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, '8', CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, '9', CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, '-', CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, '4', CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, '5', CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, '+', CPLUS, -/* 79 - End */ END, '1', AEND, AEND, '1', CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, '2', CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, '3', CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, '0', CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),0177, '.', 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), '<', '>', C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 +/* ==================================================================== */ + K(A) = { L('a'), 'A', A('a'), 'a', 'A', C('A') }, + K(B) = { L('b'), 'B', A('b'), 'b', 'B', C('B') }, + K(C) = { L('c'), 'C', A('c'), 'c', 'C', C('C') }, + K(D) = { L('d'), 'D', A('d'), 'd', 'D', C('D') }, + K(E) = { L('e'), 'E', 128, 128, 'E', C('E') }, + K(F) = { L('f'), 'F', A('f'), 'f', 'F', C('F') }, + K(G) = { L('g'), 'G', A('g'), 'g', 'G', C('G') }, + K(H) = { L('h'), 'H', A('h'), 'h', 'H', C('H') }, + K(I) = { L('i'), 'I', A('i'), 'i', 'I', C('I') }, + K(J) = { L('j'), 'J', A('j'), 'j', 'J', C('J') }, + K(K) = { L('k'), 'K', A('k'), 'k', 'K', C('K') }, + K(L) = { L('l'), 'L', A('l'), 'l', 'L', C('L') }, + K(M) = { L('m'), 'M', A('m'), 'm', 'M', C('M') }, + K(N) = { L('n'), 'N', A('n'), 'n', 'N', C('N') }, + K(O) = { L('o'), 'O', A('o'), 'o', 'O', C('O') }, + K(P) = { L('p'), 'P', A('p'), 'p', 'P', C('P') }, + K(Q) = { L('q'), 'Q', A('q'), 'q', 'Q', C('Q') }, + K(R) = { L('r'), 'R', A('r'), 'r', 'R', C('R') }, + K(S) = { L('s'), 'S', A('s'), 's', 'S', C('S') }, + K(T) = { L('t'), 'T', A('t'), 't', 'T', C('T') }, + K(U) = { L('u'), 'U', A('u'), 'u', 'U', C('U') }, + K(V) = { L('v'), 'V', A('v'), 'v', 'V', C('V') }, + K(W) = { L('w'), 'W', A('w'), 'w', 'W', C('W') }, + K(X) = { L('x'), 'X', A('x'), 'x', 'X', C('X') }, + K(Y) = { L('y'), 'Y', A('y'), 'y', 'Y', C('Y') }, + K(Z) = { L('z'), 'Z', A('z'), 'z', 'Z', C('Z') }, + K(1) = { '1', '!', A('1'), '|', '!', C('A') }, + K(2) = { '2', '"', '@', '@', '"', C('@') }, + K(3) = { '3', '#', A(156), 156, 0372, C('C') }, + K(4) = { '4', '$', A('4'), 0x15, '$', C('D') }, + K(5) = { '5', '%', A('5'), '5', '%', C('E') }, + K(6) = { '6', '&', A('6'), 0252, '&', C('F') }, + K(7) = { '7', '/', '{', '{', '/', C('G') }, + K(8) = { '8', '(', A('8'), '[', '(', C('H') }, + K(9) = { '9', ')', A('9'), ']', ')', C('I') }, + K(0) = { '0', '=', 125, 125, '=', C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),C('['), C('['), C('[') }, + K(BACKSPACE) = { 127, 127, 127, 127, 127, C(127) }, + K(TAB) = { C('I'), C('I'), CA('I'),C('I'), C('I'), C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), ' ', ' ', C('@') }, + K(DASH) = { '\'', '?', A('\''),'?', '?', C('_') }, + K(EQUAL) = { 174, 175, 174, 174, 0250, C('@') }, + K(OPEN_BRACKET) = { '+', '*', A('`'), '[', '^', C('[') }, + K(CLOSE_BRACKET) = { '\'', 96, '\'', '\'', '*', C(']') }, + K(BACKSLASH) = { '~', '^', A(0207),'}', 000, C('@') }, + K(SEMICOLON) = { 135, 128, 135, 135, 135, 135 }, + K(APOSTROPH) = { 167, 166, 167, 167, 167, C('@') }, + K(GRAVE_ACCENT) = { '\\', '|', A(0247),'\\', 0246, C('@') }, + K(COMMA) = { ',', ';', A(','), ',', ';', C('@') }, + K(PERIOD) = { '.', ':', A('.'), '.', ':', C('@') }, + K(SLASH) = { '-', '_', '-' , '-', '_', C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), DEL, A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '-', '-', '-' , '-', '-' , C('@') }, + K(KP_STAR) = { '*', '*', A('*'), '*', '*', C('M') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, '-', CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, '+', CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),C('M'), CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, '1', CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, '2', CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, '3', CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, '4', CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, '5', CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, '7', CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, '8', CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, '9', CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, '0', CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), DEL, '.', DEL }, + K(EUROPE_2) = { '<', '>', A('<'), '<', '>', C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/russian-cp1251.src b/drivers/tty/keymaps/russian-cp1251.src index d96c737c8..1a5a7735a 100755 --- a/drivers/tty/keymaps/russian-cp1251.src +++ b/drivers/tty/keymaps/russian-cp1251.src @@ -7,131 +7,107 @@ /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', A('1'), A('1'), A('!'), C('A'), -/* 03 - '2' */ '2', '@', A('2'), A('2'), A('@'), C('@'), -/* 04 - '3' */ '3', '#', A('3'), A('3'), A('#'), C('C'), -/* 05 - '4' */ '4', '$', A('4'), A('4'), A('$'), C('D'), -/* 06 - '5' */ '5', '%', A('5'), A('5'), A('%'), C('E'), -/* 07 - '6' */ '6', '^', A('6'), A('6'), A('^'), C('^'), -/* 08 - '7' */ '7', '&', A('7'), A('7'), A('&'), C('G'), -/* 09 - '8' */ '8', '*', A('8'), A('8'), A('*'), C('H'), -/* 10 - '9' */ '9', '(', A('9'), A('9'), A('('), C('I'), -/* 11 - '0' */ '0', ')', A('0'), A('0'), A(')'), C('@'), -/* 12 - '-' */ '-', '_', A('-'), A('-'), A('_'), C('_'), -/* 13 - '=' */ '=', '+', A('='), A('='), A('+'), C('@'), -/* 14 - BS */ C('H'), C('H'), CA('H'),CA('H'),CA('H'),0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I'), -/* 16 - 'q' */ L('q'), 'Q', A(233), A('q'), A(201), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A(246), A('w'), A(214), C('W'), -/* 18 - 'e' */ L('e'), 'E', A(243), A('e'), A(211), C('E'), -/* 19 - 'r' */ L('r'), 'R', A(234), A('r'), A(202), C('R'), -/* 20 - 't' */ L('t'), 'T', A(229), A('t'), A(197), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A(237), A('y'), A(205), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A(227), A('u'), A(195), C('U'), -/* 23 - 'i' */ L('i'), 'I', A(248), A('i'), A(216), C('I'), -/* 24 - 'o' */ L('o'), 'O', A(249), A('o'), A(217), C('O'), -/* 25 - 'p' */ L('p'), 'P', A(231), A('p'), A(199), C('P'), -/* 26 - '[' */ '[', '{', A(245), A('['), A(213), C('['), -/* 27 - ']' */ ']', '}', A(250), A(']'), A(218), C(']'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A(244), A('a'), A(212), C('A'), -/* 31 - 's' */ L('s'), 'S', A(251), A('s'), A(219), C('S'), -/* 32 - 'd' */ L('d'), 'D', A(226), A('d'), A(194), C('D'), -/* 33 - 'f' */ L('f'), 'F', A(224), A('f'), A(192), C('F'), -/* 34 - 'g' */ L('g'), 'G', A(239), A('g'), A(207), C('G'), -/* 35 - 'h' */ L('h'), 'H', A(240), A('h'), A(208), C('H'), -/* 36 - 'j' */ L('j'), 'J', A(238), A('j'), A(206), C('J'), -/* 37 - 'k' */ L('k'), 'K', A(235), A('k'), A(203), C('K'), -/* 38 - 'l' */ L('l'), 'L', A(228), A('l'), A(196), C('L'), -/* 39 - ';' */ ';', ':', A(230), A(';'), A(198), C('@'), -/* 40 - '\'' */ '\'', '"', A(253),A('\''),A(221), C('@'), -/* 41 - '`' */ '`', '~', A('`'), A('`'), A('~'), C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ '\\', '|', A('\\'),A('\\'),A('|'), C('\\'), -/* 44 - 'z' */ L('z'), 'Z', A(255), A('z'), A(223), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A(247), A('x'), A(215), C('X'), -/* 46 - 'c' */ L('c'), 'C', A(241), A('c'), A(209), C('C'), -/* 47 - 'v' */ L('v'), 'V', A(236), A('v'), A(204), C('V'), -/* 48 - 'b' */ L('b'), 'B', A(232), A('b'), A(200), C('B'), -/* 49 - 'n' */ L('n'), 'N', A(242), A('n'), A(210), C('N'), -/* 50 - 'm' */ L('m'), 'M', A(252), A('m'), A(220), C('M'), -/* 51 - ',' */ ',', '<', A(225), A(','), A(193), C('@'), -/* 52 - '.' */ '.', '>', A(254), A('.'), A(222), C('@'), -/* 53 - '/' */ '/', '?', A(46), A('/'), A(44), C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), A('*'), A('*'), C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, A('7'), CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, A('8'), CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, A('9'), CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, A('-'), CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, A('4'), CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, A('5'), CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, A('+'), CPLUS, -/* 79 - End */ END, '1', AEND, AEND, A('1'), CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, A('2'), CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, A('3'), CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, A('0'), CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),A(0177),A('.'), 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), A('|'), A('>'), C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A(244), A('a'), A(212), C('A') }, + K(B) = { L('b'), 'B', A(232), A('b'), A(200), C('B') }, + K(C) = { L('c'), 'C', A(241), A('c'), A(209), C('C') }, + K(D) = { L('d'), 'D', A(226), A('d'), A(194), C('D') }, + K(E) = { L('e'), 'E', A(243), A('e'), A(211), C('E') }, + K(F) = { L('f'), 'F', A(224), A('f'), A(192), C('F') }, + K(G) = { L('g'), 'G', A(239), A('g'), A(207), C('G') }, + K(H) = { L('h'), 'H', A(240), A('h'), A(208), C('H') }, + K(I) = { L('i'), 'I', A(248), A('i'), A(216), C('I') }, + K(J) = { L('j'), 'J', A(238), A('j'), A(206), C('J') }, + K(K) = { L('k'), 'K', A(235), A('k'), A(203), C('K') }, + K(L) = { L('l'), 'L', A(228), A('l'), A(196), C('L') }, + K(M) = { L('m'), 'M', A(252), A('m'), A(220), C('M') }, + K(N) = { L('n'), 'N', A(242), A('n'), A(210), C('N') }, + K(O) = { L('o'), 'O', A(249), A('o'), A(217), C('O') }, + K(P) = { L('p'), 'P', A(231), A('p'), A(199), C('P') }, + K(Q) = { L('q'), 'Q', A(233), A('q'), A(201), C('Q') }, + K(R) = { L('r'), 'R', A(234), A('r'), A(202), C('R') }, + K(S) = { L('s'), 'S', A(251), A('s'), A(219), C('S') }, + K(T) = { L('t'), 'T', A(229), A('t'), A(197), C('T') }, + K(U) = { L('u'), 'U', A(227), A('u'), A(195), C('U') }, + K(V) = { L('v'), 'V', A(236), A('v'), A(204), C('V') }, + K(W) = { L('w'), 'W', A(246), A('w'), A(214), C('W') }, + K(X) = { L('x'), 'X', A(247), A('x'), A(215), C('X') }, + K(Y) = { L('y'), 'Y', A(237), A('y'), A(205), C('Y') }, + K(Z) = { L('z'), 'Z', A(255), A('z'), A(223), C('Z') }, + K(1) = { '1', '!', A('1'), A('1'), A('!'), C('A') }, + K(2) = { '2', '@', A('2'), A('2'), A('@'), C('@') }, + K(3) = { '3', '#', A('3'), A('3'), A('#'), C('C') }, + K(4) = { '4', '$', A('4'), A('4'), A('$'), C('D') }, + K(5) = { '5', '%', A('5'), A('5'), A('%'), C('E') }, + K(6) = { '6', '^', A('6'), A('6'), A('^'), C('^') }, + K(7) = { '7', '&', A('7'), A('7'), A('&'), C('G') }, + K(8) = { '8', '*', A('8'), A('8'), A('*'), C('H') }, + K(9) = { '9', '(', A('9'), A('9'), A('('), C('I') }, + K(0) = { '0', ')', A('0'), A('0'), A(')'), C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),CA('H'),CA('H'),DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), A(' '), A(' '), C('@') }, + K(DASH) = { '-', '_', A('-'), A('-'), A('_'), C('_') }, + K(EQUAL) = { '=', '+', A('='), A('='), A('+'), C('@') }, + K(OPEN_BRACKET) = { '[', '{', A(245), A('['), A(213), C('[') }, + K(CLOSE_BRACKET) = { ']', '}', A(250), A(']'), A(218), C(']') }, + K(BACKSLASH) = { '\\', '|', A('\\'),A('\\'),A('|'), C('\\') }, + K(SEMICOLON) = { ';', ':', A(230), A(';'), A(198), C('@') }, + K(APOSTROPH) = { '\'', '"', A(253), A('\''),A(221), C('@') }, + K(GRAVE_ACCENT) = { '`', '~', A('`'), A('`'), A('~'), C('@') }, + K(COMMA) = { ',', '<', A(225), A(','), A(193), C('@') }, + K(PERIOD) = { '.', '>', A(254), A('.'), A(222), C('@') }, + K(SLASH) = { '/', '?', A(46), A('/'), A(44), C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), A(DEL), A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '/', '/', A(46), A('/'), A(46), C('@') }, + K(KP_STAR) = { '*', '*', A('*'), A('*'), A('*'), C('@') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, A('-'), CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, A('+'), CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, A('1'), CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, A('2'), CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, A('3'), CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, A('4'), CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, A('5'), CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, A('7'), CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, A('8'), CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, A('9'), CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, A('0'), CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), A(DEL), A('.'), DEL }, + K(EUROPE_2) = { '<', '>', A('<'), A('|'), A('>'), C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/russian-cp866.src b/drivers/tty/keymaps/russian-cp866.src index 470d99ff5..8032fa3c6 100644 --- a/drivers/tty/keymaps/russian-cp866.src +++ b/drivers/tty/keymaps/russian-cp866.src @@ -6,131 +6,107 @@ /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', '1', A('1'), '!', C('A'), -/* 03 - '2' */ '2', '@', '2', A('2'), '"', C('@'), -/* 04 - '3' */ '3', '#', '3', A('3'), 'N', C('C'), -/* 05 - '4' */ '4', '$', '4', A('4'), ';', C('D'), -/* 06 - '5' */ '5', '%', '5', A('5'), '%', C('E'), -/* 07 - '6' */ '6', '^', '6', A('6'), ':', C('^'), -/* 08 - '7' */ '7', '&', '7', A('7'), '?', C('G'), -/* 09 - '8' */ '8', '*', '8', A('8'), '*', C('H'), -/* 10 - '9' */ '9', '(', '9', A('9'), '(', C('I'), -/* 11 - '0' */ '0', ')', '0', A('0'), ')', C('@'), -/* 12 - '-' */ '-', '_', '-', A('-'), '_', C('_'), -/* 13 - '=' */ '=', '+', '=', A('='), '+', C('@'), -/* 14 - BS */ C('H'), C('H'), C('H'), CA('H'), C('H'),0177, -/* 15 - TAB */ C('I'), C('I'), C('I'), CA('I'),C('I'), C('I'), -/* 16 - 'q' */ L('q'), 'Q', A(169), A('q'), A(137), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A(230), A('w'), A(150), C('W'), -/* 18 - 'e' */ L('e'), 'E', A(227), A('e'), A(147), C('E'), -/* 19 - 'r' */ L('r'), 'R', A(170), A('r'), A(138), C('R'), -/* 20 - 't' */ L('t'), 'T', A(165), A('t'), A(133), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A(173), A('y'), A(141), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A(163), A('u'), A(131), C('U'), -/* 23 - 'i' */ L('i'), 'I', A(232), A('i'), A(152), C('I'), -/* 24 - 'o' */ L('o'), 'O', A(233), A('o'), A(153), C('O'), -/* 25 - 'p' */ L('p'), 'P', A(167), A('p'), A(135), C('P'), -/* 26 - '[' */ '[', '{', A(229), A('['), A(149), C('['), -/* 27 - ']' */ ']', '}', A(234), A(']'), A(154), C(']'), -/* 28 - CR/LF */ C('M'), C('M'), C('M'), CA('M'), C('M') ,C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A(228), A('a'), A(148), C('A'), -/* 31 - 's' */ L('s'), 'S', A(235), A('s'), A(155), C('S'), -/* 32 - 'd' */ L('d'), 'D', A(162), A('d'), A(130), C('D'), -/* 33 - 'f' */ L('f'), 'F', A(160), A('f'), A(128), C('F'), -/* 34 - 'g' */ L('g'), 'G', A(175), A('g'), A(143), C('G'), -/* 35 - 'h' */ L('h'), 'H', A(224), A('h'), A(144), C('H'), -/* 36 - 'j' */ L('j'), 'J', A(174), A('j'), A(142), C('J'), -/* 37 - 'k' */ L('k'), 'K', A(171), A('k'), A(139), C('K'), -/* 38 - 'l' */ L('l'), 'L', A(164), A('l'), A(132), C('L'), -/* 39 - ';' */ ';', ':', A(166), A(';'), A(134), C('@'), -/* 40 - '\'' */ '\'', '"', A(237), A('\''),A(157), C('@'), -/* 41 - '`' */ '`', '~', A(241), A('`'), A(240), C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ '\\', '|', '\\', A('\\'), '|', C('\\'), -/* 44 - 'z' */ L('z'), 'Z', A(239), A('z'), A(159), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A(231), A('x'), A(151), C('X'), -/* 46 - 'c' */ L('c'), 'C', A(225), A('c'), A(145), C('C'), -/* 47 - 'v' */ L('v'), 'V', A(172), A('v'), A(140), C('V'), -/* 48 - 'b' */ L('b'), 'B', A(168), A('b'), A(136), C('B'), -/* 49 - 'n' */ L('n'), 'N', A(226), A('n'), A(146), C('N'), -/* 50 - 'm' */ L('m'), 'M', A(236), A('m'), A(156), C('M'), -/* 51 - ',' */ ',', '<', A(161), A(','), A(129), C('@'), -/* 52 - '.' */ '.', '>', A(238), A('.'), A(158), C('@'), -/* 53 - '/' */ '/', '?', '.', A('/'), ',', C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', '*', A('*'), '*', C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', ' ', A(' '), ' ', C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, F1, AF1, SF1, CF1, -/* 60 - F2 */ F2, SF2, F2, AF2, SF2, CF2, -/* 61 - F3 */ F3, SF3, F3, AF3, SF3, CF3, -/* 62 - F4 */ F4, SF4, F4, AF4, SF4, CF4, -/* 63 - F5 */ F5, SF5, F5, AF5, SF5, CF5, -/* 64 - F6 */ F6, SF6, F6, AF6, SF6, CF6, -/* 65 - F7 */ F7, SF7, F7, AF7, SF7, CF7, -/* 66 - F8 */ F8, SF8, F8, AF8, SF8, CF8, -/* 67 - F9 */ F9, SF9, F9, AF9, SF9, CF9, -/* 68 - F10 */ F10, SF10, F10, AF10, SF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', HOME, AHOME, '7', CHOME, -/* 72 - CurUp */ UP, '8', UP, AUP, '8', CUP, -/* 73 - PgUp */ PGUP, '9', PGUP, APGUP, '9', CPGUP, -/* 74 - '-' */ NMIN, '-', NMIN, ANMIN, '-', CNMIN, -/* 75 - Left */ LEFT, '4', LEFT, ALEFT, '4', CLEFT, -/* 76 - MID */ MID, '5', MID, AMID, '5', CMID, -/* 77 - Right */ RIGHT, '6', RIGHT, ARIGHT, '6', CRIGHT, -/* 78 - '+' */ PLUS, '+', PLUS, APLUS, '+', CPLUS, -/* 79 - End */ END, '1', END, AEND, '1', CEND, -/* 80 - Down */ DOWN, '2', DOWN, ADOWN, '2', CDOWN, -/* 81 - PgDown */ PGDN, '3', PGDN, APGDN, '3', CPGDN, -/* 82 - Insert */ INSRT, '0', INSRT, AINSRT, '0', CINSRT, -/* 83 - Delete */ 0177, '.', 0177, A(0177),'.', 0177, -/* 84 - Enter */ C('M'), C('M'), C('M'), CA('M'), C('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', '<', A('|'), '>', C('@'), -/* 87 - F11 */ F11, SF11, F11, AF11, SF11, CF11, -/* 88 - F12 */ F12, SF12, F12, AF12, SF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A(228), A('a'), A(148), C('A') }, + K(B) = { L('b'), 'B', A(168), A('b'), A(136), C('B') }, + K(C) = { L('c'), 'C', A(225), A('c'), A(145), C('C') }, + K(D) = { L('d'), 'D', A(162), A('d'), A(130), C('D') }, + K(E) = { L('e'), 'E', A(227), A('e'), A(147), C('E') }, + K(F) = { L('f'), 'F', A(160), A('f'), A(128), C('F') }, + K(G) = { L('g'), 'G', A(175), A('g'), A(143), C('G') }, + K(H) = { L('h'), 'H', A(224), A('h'), A(144), C('H') }, + K(I) = { L('i'), 'I', A(232), A('i'), A(152), C('I') }, + K(J) = { L('j'), 'J', A(174), A('j'), A(142), C('J') }, + K(K) = { L('k'), 'K', A(171), A('k'), A(139), C('K') }, + K(L) = { L('l'), 'L', A(164), A('l'), A(132), C('L') }, + K(M) = { L('m'), 'M', A(236), A('m'), A(156), C('M') }, + K(N) = { L('n'), 'N', A(226), A('n'), A(146), C('N') }, + K(O) = { L('o'), 'O', A(233), A('o'), A(153), C('O') }, + K(P) = { L('p'), 'P', A(167), A('p'), A(135), C('P') }, + K(Q) = { L('q'), 'Q', A(169), A('q'), A(137), C('Q') }, + K(R) = { L('r'), 'R', A(170), A('r'), A(138), C('R') }, + K(S) = { L('s'), 'S', A(235), A('s'), A(155), C('S') }, + K(T) = { L('t'), 'T', A(165), A('t'), A(133), C('T') }, + K(U) = { L('u'), 'U', A(163), A('u'), A(131), C('U') }, + K(V) = { L('v'), 'V', A(172), A('v'), A(140), C('V') }, + K(W) = { L('w'), 'W', A(230), A('w'), A(150), C('W') }, + K(X) = { L('x'), 'X', A(231), A('x'), A(151), C('X') }, + K(Y) = { L('y'), 'Y', A(173), A('y'), A(141), C('Y') }, + K(Z) = { L('z'), 'Z', A(239), A('z'), A(159), C('Z') }, + K(1) = { '1', '!', '1', A('1'), '!', C('A') }, + K(2) = { '2', '@', '2', A('2'), '"', C('@') }, + K(3) = { '3', '#', '3', A('3'), 'N', C('C') }, + K(4) = { '4', '$', '4', A('4'), ';', C('D') }, + K(5) = { '5', '%', '5', A('5'), '%', C('E') }, + K(6) = { '6', '^', '6', A('6'), ':', C('^') }, + K(7) = { '7', '&', '7', A('7'), '?', C('G') }, + K(8) = { '8', '*', '8', A('8'), '*', C('H') }, + K(9) = { '9', '(', '9', A('9'), '(', C('I') }, + K(0) = { '0', ')', '0', A('0'), ')', C('@') }, + K(ENTER) = { C('M'), C('M'), C('M'), CA('M'),C('M') ,C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), C('H'), CA('H'),C('H'), DEL }, + K(TAB) = { C('I'), C('I'), C('I'), CA('I'),C('I'), C('I') }, + K(SPACEBAR) = { ' ', ' ', ' ', A(' '), ' ', C('@') }, + K(DASH) = { '-', '_', '-', A('-'), '_', C('_') }, + K(EQUAL) = { '=', '+', '=', A('='), '+', C('@') }, + K(OPEN_BRACKET) = { '[', '{', A(229), A('['), A(149), C('[') }, + K(CLOSE_BRACKET) = { ']', '}', A(234), A(']'), A(154), C(']') }, + K(BACKSLASH) = { '\\', '|', '\\', A('\\'),'|', C('\\') }, + K(SEMICOLON) = { ';', ':', A(166), A(';'), A(134), C('@') }, + K(APOSTROPH) = { '\'', '"', A(237), A('\''),A(157), C('@') }, + K(GRAVE_ACCENT) = { '`', '~', A(241), A('`'), A(240), C('@') }, + K(COMMA) = { ',', '<', A(161), A(','), A(129), C('@') }, + K(PERIOD) = { '.', '>', A(238), A('.'), A(158), C('@') }, + K(SLASH) = { '/', '?', '.', A('/'), ',', C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, F1, AF1, SF1, CF1 }, + K(F2) = { F2, SF2, F2, AF2, SF2, CF2 }, + K(F3) = { F3, SF3, F3, AF3, SF3, CF3 }, + K(F4) = { F4, SF4, F4, AF4, SF4, CF4 }, + K(F5) = { F5, SF5, F5, AF5, SF5, CF5 }, + K(F6) = { F6, SF6, F6, AF6, SF6, CF6 }, + K(F7) = { F7, SF7, F7, AF7, SF7, CF7 }, + K(F8) = { F8, SF8, F8, AF8, SF8, CF8 }, + K(F9) = { F9, SF9, F9, AF9, SF9, CF9 }, + K(F10) = { F10, SF10, F10, AF10, SF10, CF10 }, + K(F11) = { F11, SF11, F11, AF11, SF11, CF11 }, + K(F12) = { F12, SF12, F12, AF12, SF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, INSRT, AINSRT, INSRT, CINSRT }, + K(HOME) = { HOME, HOME, HOME, AHOME, HOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, PGUP, APGUP, PGUP, CPGUP }, + K(DELETE) = { DEL, DEL, DEL, A(DEL), DEL, DEL }, + K(END) = { END, END, END, AEND, END, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, PGDN, APGDN, PGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, RIGHT, ARIGHT, RIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, LEFT, ALEFT, LEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, DOWN, ADOWN, DOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, UP, AUP, UP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '/', '/', '.', A('/'), '.', C('@') }, + K(KP_STAR) = { '*', '*', '*', A('*'), '*', C('@') }, + K(KP_DASH) = { '-', '-', '-', AMIN, '-', CMIN }, + K(KP_PLUS) = { '+', '+', '+', APLUS, '+', CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), C('M'), CA('M'),C('M'), C('J') }, + K(KP_1) = { NEND, '1', END, AEND, '1', CEND }, + K(KP_2) = { NDOWN, '2', DOWN, ADOWN, '2', CDOWN }, + K(KP_3) = { NPGDN, '3', PGDN, APGDN, '3', CPGDN }, + K(KP_4) = { NLEFT, '4', LEFT, ALEFT, '4', CLEFT }, + K(KP_5) = { NMID, '5', MID, AMID, '5', CMID }, + K(KP_6) = { NRIGHT, '6', RIGHT, ARIGHT, '6', CRIGHT }, + K(KP_7) = { NHOME, '7', HOME, AHOME, '7', CHOME }, + K(KP_8) = { NUP, '8', UP, AUP, '8', CUP }, + K(KP_9) = { NPGUP, '9', PGUP, APGUP, '9', CPGUP }, + K(KP_0) = { NINSRT, '0', INSRT, AINSRT, '0', CINSRT }, + K(KP_PERIOD) = { NDEL, '.', DEL, A(DEL), '.', DEL }, + K(EUROPE_2) = { '<', '>', '<', A('|'), '>', C('@') }, + K(APPLICATION) = { C('M'), C('M'), C('M'), CA('M'),C('M') ,C('J') }, + K(SYSREQ) = { C('M'), C('M'), C('M'), CA('M'),C('M'), C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/russian.src b/drivers/tty/keymaps/russian.src index 94a420e25..07fa345d7 100644 --- a/drivers/tty/keymaps/russian.src +++ b/drivers/tty/keymaps/russian.src @@ -6,131 +6,107 @@ /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', '1', A('1'), '!', C('A'), -/* 03 - '2' */ '2', '@', '2', A('2'), '"', C('@'), -/* 04 - '3' */ '3', '#', '3', A('3'), 'N', C('C'), -/* 05 - '4' */ '4', '$', '4', A('4'), ';', C('D'), -/* 06 - '5' */ '5', '%', '5', A('5'), '%', C('E'), -/* 07 - '6' */ '6', '^', '6', A('6'), ':', C('^'), -/* 08 - '7' */ '7', '&', '7', A('7'), '?', C('G'), -/* 09 - '8' */ '8', '*', '8', A('8'), '*', C('H'), -/* 10 - '9' */ '9', '(', '9', A('9'), '(', C('I'), -/* 11 - '0' */ '0', ')', '0', A('0'), ')', C('@'), -/* 12 - '-' */ '-', '_', '-', A('-'), '_', C('_'), -/* 13 - '=' */ '=', '+', '=', A('='), '+', C('@'), -/* 14 - BS */ C('H'), C('H'), C('H'), CA('H'), C('H'),0177, -/* 15 - TAB */ C('I'), C('I'), C('I'), CA('I'),C('I'), C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('J'), A('q'), A('j'), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A(195), A('w'), A(227), C('W'), -/* 18 - 'e' */ L('e'), 'E', A(213), A('e'), A(245), C('E'), -/* 19 - 'r' */ L('r'), 'R', A(203), A('r'), A(235), C('R'), -/* 20 - 't' */ L('t'), 'T', A(197), A('t'), A(229), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A(206), A('y'), A(238), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A(199), A('u'), A(231), C('U'), -/* 23 - 'i' */ L('i'), 'I', A(219), A('i'), A(251), C('I'), -/* 24 - 'o' */ L('o'), 'O', A(221), A('o'), A(253), C('O'), -/* 25 - 'p' */ L('p'), 'P', A(218), A('p'), A(250), C('P'), -/* 26 - '[' */ '[', '{', A(200), A('['), A(232), C('['), -/* 27 - ']' */ ']', '}', A(223), A(']'), A(255), C(']'), -/* 28 - CR/LF */ C('M'), C('M'), C('M'), CA('M'), C('M') ,C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A(198), A('a'), A(230), C('A'), -/* 31 - 's' */ L('s'), 'S', A(217), A('s'), A(249), C('S'), -/* 32 - 'd' */ L('d'), 'D', A(215), A('d'), A(247), C('D'), -/* 33 - 'f' */ L('f'), 'F', A(193), A('f'), A(225), C('F'), -/* 34 - 'g' */ L('g'), 'G', A(208), A('g'), A(240), C('G'), -/* 35 - 'h' */ L('h'), 'H', A(210), A('h'), A(242), C('H'), -/* 36 - 'j' */ L('j'), 'J', A(207), A('j'), A(239), C('J'), -/* 37 - 'k' */ L('k'), 'K', A(204), A('k'), A(236), C('K'), -/* 38 - 'l' */ L('l'), 'L', A(196), A('l'), A(228), C('L'), -/* 39 - ';' */ ';', ':', A(214), A(';'), A(246), C('@'), -/* 40 - '\'' */ '\'', '"', A(220), A('\''),A(252), C('@'), -/* 41 - '`' */ '`', '~', A(163), A('`'), A(179), C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ '\\', '|', '\\', A('\\'), '|', C('\\'), -/* 44 - 'z' */ L('z'), 'Z', A(209), A('z'), A(241), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A(222), A('x'), A(254), C('X'), -/* 46 - 'c' */ L('c'), 'C', A(211), A('c'), A(243), C('C'), -/* 47 - 'v' */ L('v'), 'V', A(205), A('v'), A(237), C('V'), -/* 48 - 'b' */ L('b'), 'B', A(201), A('b'), A(233), C('B'), -/* 49 - 'n' */ L('n'), 'N', A(212), A('n'), A(244), C('N'), -/* 50 - 'm' */ L('m'), 'M', A(216), A('m'), A(248), C('M'), -/* 51 - ',' */ ',', '<', A(194), A(','), A(226), C('@'), -/* 52 - '.' */ '.', '>', A(192), A('.'), A(224), C('@'), -/* 53 - '/' */ '/', '?', '.', A('/'), ',', C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', '*', A('*'), '*', C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', ' ', A(' '), ' ', C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, F1, AF1, SF1, CF1, -/* 60 - F2 */ F2, SF2, F2, AF2, SF2, CF2, -/* 61 - F3 */ F3, SF3, F3, AF3, SF3, CF3, -/* 62 - F4 */ F4, SF4, F4, AF4, SF4, CF4, -/* 63 - F5 */ F5, SF5, F5, AF5, SF5, CF5, -/* 64 - F6 */ F6, SF6, F6, AF6, SF6, CF6, -/* 65 - F7 */ F7, SF7, F7, AF7, SF7, CF7, -/* 66 - F8 */ F8, SF8, F8, AF8, SF8, CF8, -/* 67 - F9 */ F9, SF9, F9, AF9, SF9, CF9, -/* 68 - F10 */ F10, SF10, F10, AF10, SF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', HOME, AHOME, '7', CHOME, -/* 72 - CurUp */ UP, '8', UP, AUP, '8', CUP, -/* 73 - PgUp */ PGUP, '9', PGUP, APGUP, '9', CPGUP, -/* 74 - '-' */ NMIN, '-', NMIN, ANMIN, '-', CNMIN, -/* 75 - Left */ LEFT, '4', LEFT, ALEFT, '4', CLEFT, -/* 76 - MID */ MID, '5', MID, AMID, '5', CMID, -/* 77 - Right */ RIGHT, '6', RIGHT, ARIGHT, '6', CRIGHT, -/* 78 - '+' */ PLUS, '+', PLUS, APLUS, '+', CPLUS, -/* 79 - End */ END, '1', END, AEND, '1', CEND, -/* 80 - Down */ DOWN, '2', DOWN, ADOWN, '2', CDOWN, -/* 81 - PgDown */ PGDN, '3', PGDN, APGDN, '3', CPGDN, -/* 82 - Insert */ INSRT, '0', INSRT, AINSRT, '0', CINSRT, -/* 83 - Delete */ 0177, '.', 0177, A(0177),'.', 0177, -/* 84 - Enter */ C('M'), C('M'), C('M'), CA('M'), C('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', '<', A('|'), '>', C('@'), -/* 87 - F11 */ F11, SF11, F11, AF11, SF11, CF11, -/* 88 - F12 */ F12, SF12, F12, AF12, SF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A(198), A('a'), A(230), C('A') }, + K(B) = { L('b'), 'B', A(201), A('b'), A(233), C('B') }, + K(C) = { L('c'), 'C', A(211), A('c'), A(243), C('C') }, + K(D) = { L('d'), 'D', A(215), A('d'), A(247), C('D') }, + K(E) = { L('e'), 'E', A(213), A('e'), A(245), C('E') }, + K(F) = { L('f'), 'F', A(193), A('f'), A(225), C('F') }, + K(G) = { L('g'), 'G', A(208), A('g'), A(240), C('G') }, + K(H) = { L('h'), 'H', A(210), A('h'), A(242), C('H') }, + K(I) = { L('i'), 'I', A(219), A('i'), A(251), C('I') }, + K(J) = { L('j'), 'J', A(207), A('j'), A(239), C('J') }, + K(K) = { L('k'), 'K', A(204), A('k'), A(236), C('K') }, + K(L) = { L('l'), 'L', A(196), A('l'), A(228), C('L') }, + K(M) = { L('m'), 'M', A(216), A('m'), A(248), C('M') }, + K(N) = { L('n'), 'N', A(212), A('n'), A(244), C('N') }, + K(O) = { L('o'), 'O', A(221), A('o'), A(253), C('O') }, + K(P) = { L('p'), 'P', A(218), A('p'), A(250), C('P') }, + K(Q) = { L('q'), 'Q', A('J'), A('q'), A('j'), C('Q') }, + K(R) = { L('r'), 'R', A(203), A('r'), A(235), C('R') }, + K(S) = { L('s'), 'S', A(217), A('s'), A(249), C('S') }, + K(T) = { L('t'), 'T', A(197), A('t'), A(229), C('T') }, + K(U) = { L('u'), 'U', A(199), A('u'), A(231), C('U') }, + K(V) = { L('v'), 'V', A(205), A('v'), A(237), C('V') }, + K(W) = { L('w'), 'W', A(195), A('w'), A(227), C('W') }, + K(X) = { L('x'), 'X', A(222), A('x'), A(254), C('X') }, + K(Y) = { L('y'), 'Y', A(206), A('y'), A(238), C('Y') }, + K(Z) = { L('z'), 'Z', A(209), A('z'), A(241), C('Z') }, + K(1) = { '1', '!', '1', A('1'), '!', C('A') }, + K(2) = { '2', '@', '2', A('2'), '"', C('@') }, + K(3) = { '3', '#', '3', A('3'), 'N', C('C') }, + K(4) = { '4', '$', '4', A('4'), ';', C('D') }, + K(5) = { '5', '%', '5', A('5'), '%', C('E') }, + K(6) = { '6', '^', '6', A('6'), ':', C('^') }, + K(7) = { '7', '&', '7', A('7'), '?', C('G') }, + K(8) = { '8', '*', '8', A('8'), '*', C('H') }, + K(9) = { '9', '(', '9', A('9'), '(', C('I') }, + K(0) = { '0', ')', '0', A('0'), ')', C('@') }, + K(ENTER) = { C('M'), C('M'), C('M'), CA('M'),C('M') ,C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), C('H'), CA('H'),C('H'), DEL }, + K(TAB) = { C('I'), C('I'), C('I'), CA('I'),C('I'), C('I') }, + K(SPACEBAR) = { ' ', ' ', ' ', A(' '), ' ', C('@') }, + K(DASH) = { '-', '_', '-', A('-'), '_', C('_') }, + K(EQUAL) = { '=', '+', '=', A('='), '+', C('@') }, + K(OPEN_BRACKET) = { '[', '{', A(200), A('['), A(232), C('[') }, + K(CLOSE_BRACKET) = { ']', '}', A(223), A(']'), A(255), C(']') }, + K(BACKSLASH) = { '\\', '|', '\\', A('\\'),'|', C('\\') }, + K(SEMICOLON) = { ';', ':', A(214), A(';'), A(246), C('@') }, + K(APOSTROPH) = { '\'', '"', A(220), A('\''),A(252), C('@') }, + K(GRAVE_ACCENT) = { '`', '~', A(163), A('`'), A(179), C('@') }, + K(COMMA) = { ',', '<', A(194), A(','), A(226), C('@') }, + K(PERIOD) = { '.', '>', A(192), A('.'), A(224), C('@') }, + K(SLASH) = { '/', '?', '.', A('/'), ',', C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, F1, AF1, SF1, CF1 }, + K(F2) = { F2, SF2, F2, AF2, SF2, CF2 }, + K(F3) = { F3, SF3, F3, AF3, SF3, CF3 }, + K(F4) = { F4, SF4, F4, AF4, SF4, CF4 }, + K(F5) = { F5, SF5, F5, AF5, SF5, CF5 }, + K(F6) = { F6, SF6, F6, AF6, SF6, CF6 }, + K(F7) = { F7, SF7, F7, AF7, SF7, CF7 }, + K(F8) = { F8, SF8, F8, AF8, SF8, CF8 }, + K(F9) = { F9, SF9, F9, AF9, SF9, CF9 }, + K(F10) = { F10, SF10, F10, AF10, SF10, CF10 }, + K(F11) = { F11, SF11, F11, AF11, SF11, CF11 }, + K(F12) = { F12, SF12, F12, AF12, SF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, INSRT, AINSRT, INSRT, CINSRT }, + K(HOME) = { HOME, HOME, HOME, AHOME, HOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, PGUP, APGUP, PGUP, CPGUP }, + K(DELETE) = { DEL, DEL, DEL, A(DEL), DEL, DEL }, + K(END) = { END, END, END, AEND, END, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, PGDN, APGDN, PGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, RIGHT, ARIGHT, RIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, LEFT, ALEFT, LEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, DOWN, ADOWN, DOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, UP, AUP, UP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '/', '/', '.', A('/'), '.', C('@') }, + K(KP_STAR) = { '*', '*', '*', A('*'), '*', C('@') }, + K(KP_DASH) = { '-', '-', '-', AMIN, '-', CMIN }, + K(KP_PLUS) = { '+', '+', '+', APLUS, '+', CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), C('M'), CA('M'),C('M'), C('J') }, + K(KP_1) = { NEND, '1', END, AEND, '1', CEND }, + K(KP_2) = { NDOWN, '2', DOWN, ADOWN, '2', CDOWN }, + K(KP_3) = { NPGDN, '3', PGDN, APGDN, '3', CPGDN }, + K(KP_4) = { NLEFT, '4', LEFT, ALEFT, '4', CLEFT }, + K(KP_5) = { NMID, '5', MID, AMID, '5', CMID }, + K(KP_6) = { NRIGHT, '6', RIGHT, ARIGHT, '6', CRIGHT }, + K(KP_7) = { NHOME, '7', HOME, AHOME, '7', CHOME }, + K(KP_8) = { NUP, '8', UP, AUP, '8', CUP }, + K(KP_9) = { NPGUP, '9', PGUP, APGUP, '9', CPGUP }, + K(KP_0) = { NINSRT, '0', INSRT, AINSRT, '0', CINSRT }, + K(KP_PERIOD) = { NDEL, '.', DEL, A(DEL), '.', DEL }, + K(EUROPE_2) = { '<', '>', '<', A('|'), '>', C('@') }, + K(APPLICATION) = { C('M'), C('M'), C('M'), CA('M'),C('M') ,C('J') }, + K(SYSREQ) = { C('M'), C('M'), C('M'), CA('M'),C('M'), C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/scandinavian.src b/drivers/tty/keymaps/scandinavian.src index 3c21af313..a1ad2eb8e 100644 --- a/drivers/tty/keymaps/scandinavian.src +++ b/drivers/tty/keymaps/scandinavian.src @@ -5,131 +5,107 @@ /* scan-code unsh Shift Alt AltGr Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),C('['), C('['), C('['), -/* 02 - '1' */ '1', '!', A('1'), '1', '!', C('A'), -/* 03 - '2' */ '2', '"', A('2'), '@', '@', C('@'), -/* 04 - '3' */ '3', '#', A('3'), 156, '#', C('C'), -/* 05 - '4' */ '4', ' ', A('4'), '$', '$', C('D'), -/* 06 - '5' */ '5', '%', A('5'), '5', '%', C('E'), -/* 07 - '6' */ '6', '&', A('6'), '6', '^', C('^'), -/* 08 - '7' */ '7', '/', A('7'), '{', '&', C('G'), -/* 09 - '8' */ '8', '(', A('8'), '[', '*', C('H'), -/* 10 - '9' */ '9', ')', A('9'), ']', '(', C('I'), -/* 11 - '0' */ '0', '=', A('0'), '}', ')', C('@'), -/* 12 - '_' */ '+', '?', 0341, '\\', '_', C('_'), -/* 13 - '=' */ '\'', '`', A('\''),'=', '+', C('@'), -/* 14 - BS */ C('H'), C('H'), CA('H'),C('H'), C('H'), 0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),C('I'), C('I'), C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), '@', 'Q', C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), 'w', 'W', C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), 'e', 'E', C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), 'r', 'R', C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), 't', 'T', C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), 'y', 'Y', C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), 'u', 'U', C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), 'i', 'I', C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), 'o', 'O', C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), 'p', 'P', C('P'), -/* 26 - '[' */ L(134), 143, 0201, '[', '{', C('['), -/* 27 - ']' */ '\"', '^', A('+'), '~', ']', C(']'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), 'a', 'A', C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), 's', 'S', C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), 'd', 'D', C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), 'f', 'F', C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), 'g', 'G', C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), 'h', 'H', C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), 'j', 'J', C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), 'k', 'K', C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), 'l', 'L', C('L'), -/* 39 - ';' */ L(0224),0231, 0224, ';', ':', C('@'), -/* 40 - '\'' */ L(0204),0216, 0204, '\'', '"', C('@'), -/* 41 - '`' */ L(21), 171, A('^'), '`', '~', C('^'), -/* 42 - SHIFT */ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ 39, '*', A('#'), '\\', '|', C('\\'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), 'z', 'Z', C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), 'x', 'X', C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), 'c', 'C', C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), 'v', 'V', C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), 'b', 'B', C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), 'n', 'N', C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), 0346, 'M', C('M'), -/* 51 - ',' */ ',', ';', A(','), ',', '<', C('@'), -/* 52 - '.' */ '.', ':', A('.'), '.', '>', C('@'), -/* 53 - '/' */ '-', '_', A('-'), '/', '?', C('_'), -/* 54 - SHIFT */ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), '*', '*', C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), ' ', ' ', C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, '7', CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, '8', CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, '9', CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, '-', CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, '4', CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, '5', CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, '+', CPLUS, -/* 79 - End */ END, '1', AEND, AEND, '1', CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, '2', CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, '3', CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, '0', CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),0177, '.', 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), '|', '>', C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A('a'), 'a', 'A', C('A') }, + K(B) = { L('b'), 'B', A('b'), 'b', 'B', C('B') }, + K(C) = { L('c'), 'C', A('c'), 'c', 'C', C('C') }, + K(D) = { L('d'), 'D', A('d'), 'd', 'D', C('D') }, + K(E) = { L('e'), 'E', A('e'), 'e', 'E', C('E') }, + K(F) = { L('f'), 'F', A('f'), 'f', 'F', C('F') }, + K(G) = { L('g'), 'G', A('g'), 'g', 'G', C('G') }, + K(H) = { L('h'), 'H', A('h'), 'h', 'H', C('H') }, + K(I) = { L('i'), 'I', A('i'), 'i', 'I', C('I') }, + K(J) = { L('j'), 'J', A('j'), 'j', 'J', C('J') }, + K(K) = { L('k'), 'K', A('k'), 'k', 'K', C('K') }, + K(L) = { L('l'), 'L', A('l'), 'l', 'L', C('L') }, + K(M) = { L('m'), 'M', A('m'), 0346, 'M', C('M') }, + K(N) = { L('n'), 'N', A('n'), 'n', 'N', C('N') }, + K(O) = { L('o'), 'O', A('o'), 'o', 'O', C('O') }, + K(P) = { L('p'), 'P', A('p'), 'p', 'P', C('P') }, + K(Q) = { L('q'), 'Q', A('q'), '@', 'Q', C('Q') }, + K(R) = { L('r'), 'R', A('r'), 'r', 'R', C('R') }, + K(S) = { L('s'), 'S', A('s'), 's', 'S', C('S') }, + K(T) = { L('t'), 'T', A('t'), 't', 'T', C('T') }, + K(U) = { L('u'), 'U', A('u'), 'u', 'U', C('U') }, + K(V) = { L('v'), 'V', A('v'), 'v', 'V', C('V') }, + K(W) = { L('w'), 'W', A('w'), 'w', 'W', C('W') }, + K(X) = { L('x'), 'X', A('x'), 'x', 'X', C('X') }, + K(Y) = { L('y'), 'Y', A('y'), 'y', 'Y', C('Y') }, + K(Z) = { L('z'), 'Z', A('z'), 'z', 'Z', C('Z') }, + K(1) = { '1', '!', A('1'), '1', '!', C('A') }, + K(2) = { '2', '"', A('2'), '@', '@', C('@') }, + K(3) = { '3', '#', A('3'), 156, '#', C('C') }, + K(4) = { '4', ' ', A('4'), '$', '$', C('D') }, + K(5) = { '5', '%', A('5'), '5', '%', C('E') }, + K(6) = { '6', '&', A('6'), '6', '^', C('^') }, + K(7) = { '7', '/', A('7'), '{', '&', C('G') }, + K(8) = { '8', '(', A('8'), '[', '*', C('H') }, + K(9) = { '9', ')', A('9'), ']', '(', C('I') }, + K(0) = { '0', '=', A('0'), '}', ')', C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),C('['), C('['), C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),C('H'), C('H'), DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),C('I'), C('I'), C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), ' ', ' ', C('@') }, + K(DASH) = { '+', '?', 0341, '\\', '_', C('_') }, + K(EQUAL) = { '\'', '`', A('\''),'=', '+', C('@') }, + K(OPEN_BRACKET) = { L(134), 143, 0201, '[', '{', C('[') }, + K(CLOSE_BRACKET) = { '\"', '^', A('+'), '~', ']', C(']') }, + K(BACKSLASH) = { 39, '*', A('#'), '\\', '|', C('\\') }, + K(SEMICOLON) = { L(0224),0231, 0224, ';', ':', C('@') }, + K(APOSTROPH) = { L(0204),0216, 0204, '\'', '"', C('@') }, + K(GRAVE_ACCENT) = { L(21), 171, A('^'), '`', '~', C('^') }, + K(COMMA) = { ',', ';', A(','), ',', '<', C('@') }, + K(PERIOD) = { '.', ':', A('.'), '.', '>', C('@') }, + K(SLASH) = { '-', '_', A('-'), '/', '?', C('_') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), DEL, A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '-', '-', A('-'), '/', A('-'), C('_') }, + K(KP_STAR) = { '*', '*', A('*'), '*', '*', C('@') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, '-', CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, '+', CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),C('M'), CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, '1', CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, '2', CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, '3', CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, '4', CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, '5', CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, '7', CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, '8', CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, '9', CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, '0', CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), DEL, '.', DEL }, + K(EUROPE_2) = { '<', '>', A('<'), '|', '>', C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/spanish.src b/drivers/tty/keymaps/spanish.src index ed66aa537..0ba1b5a6c 100644 --- a/drivers/tty/keymaps/spanish.src +++ b/drivers/tty/keymaps/spanish.src @@ -2,134 +2,108 @@ /* Modified by Javier Garcia Martin jawa@inf.deusto.es */ /* scan-code !Shift Shift Alt AltGr Alt+Sh Ctrl */ -/* -==================================================================== -*/ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),C('['), C('['), C('['), -/* 02 - '1' */ '1', '!', A('1'), '|', '!', C('A'), -/* 03 - '2' */ '2', '"', A('2'), '@', '"', C('@'), -/* 04 - '3' */ '3', 0372, A('3'), '#', 0372, C('C'), -/* 05 - '4' */ '4', '$', A('4'), '~', '$', C('D'), -/* 06 - '5' */ '5', '%', A('5'), 0317, '%', C('E'), -/* 07 - '6' */ '6', '&', A('6'), 0252, '&', C('^'), -/* 08 - '7' */ '7', '/', A('7'), '{', '/', C('G'), -/* 09 - '8' */ '8', '(', A('8'), '(', '(', C('H'), -/* 10 - '9' */ '9', ')', A('9'), ')', ')', C('I'), -/* 11 - '0' */ '0', '=', A('0'), '=', '=', C('_'), -/* 12 - '-' */ '\'', '?', A('\''),'?', '?', C('^'), -/* 13 - '=' */ 0255, 0250, A(0255),0250, 0250, C('@'), -/* 14 - BS */ C('H'), C('H'), CA('H'),C('H'), C('H'), 0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),C('I'), C('I'), C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), 'q', 'Q', C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), 'w', 'W', C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), 'e', 'E', C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), 'r', 'R', C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), 't', 'T', C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), 'y', 'Y', C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), 'u', 'U', C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), 'i', 'I', C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), 'o', 'O', C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), 'p', 'P', C('P'), -/* 26 - '[' */ '`', '^', A('`'),'[', '^', C('['), -/* 27 - ']' */ '+', '*', A('+'), ']', '*', C(']'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), 'a', 'A', C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), 's', 'S', C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), 'd', 'D', C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), 'f', 'F', C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), 'g', 'G', C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), 'h', 'H', C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), 'j', 'J', C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), 'k', 'K', C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), 'l', 'L', C('L'), -/* 39 - ';' */ L(0244),0245, A(0244),0244, 0245, C('@'), -/* 40 - '\'' */ '\'', '"', A('\''),'{', '"', C('['), -/* 41 - '`' */ 0247, 0246, A(0247),'\\', 0246, C('\\'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ L(0207),0200, A(0207),'}', 0200, C(']'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), 'z', 'Z', C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), 'x', 'X', C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), 'c', 'C', C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), 'v', 'V', C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), 'b', 'B', C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), 'n', 'N', C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), 'm', 'M', C('M'), -/* 51 - ',' */ ',', ';', A(','), ',', ';', C('@'), -/* 52 - '.' */ '.', ':', A('.'), '.', ':', C('@'), -/* 53 - '/' */ '-', '_', A('-'), '-', '_', C('_'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), '*', '*', C('M'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), ' ', ' ', C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, C('S'), -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, C('C'), -/* 71 - Home */ HOME, '7', AHOME, AHOME, '7', CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, '8', CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, '9', CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, '-', CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, '4', CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, '5', CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, '+', CPLUS, -/* 79 - End */ END, '1', AEND, AEND, '1', CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, '2', CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, '3', CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, '0', CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),0177, '.', 0177, -/* 84 - Enter? SysRq?*/ C('M'), C('M'), CA('M'),C('M'), C('M'), C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), '<', '>', C('\\'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 +/* ==================================================================== */ + K(A) = { L('a'), 'A', A('a'), 'a', 'A', C('A') }, + K(B) = { L('b'), 'B', A('b'), 'b', 'B', C('B') }, + K(C) = { L('c'), 'C', A('c'), 'c', 'C', C('C') }, + K(D) = { L('d'), 'D', A('d'), 'd', 'D', C('D') }, + K(E) = { L('e'), 'E', A('e'), 'e', 'E', C('E') }, + K(F) = { L('f'), 'F', A('f'), 'f', 'F', C('F') }, + K(G) = { L('g'), 'G', A('g'), 'g', 'G', C('G') }, + K(H) = { L('h'), 'H', A('h'), 'h', 'H', C('H') }, + K(I) = { L('i'), 'I', A('i'), 'i', 'I', C('I') }, + K(J) = { L('j'), 'J', A('j'), 'j', 'J', C('J') }, + K(K) = { L('k'), 'K', A('k'), 'k', 'K', C('K') }, + K(L) = { L('l'), 'L', A('l'), 'l', 'L', C('L') }, + K(M) = { L('m'), 'M', A('m'), 'm', 'M', C('M') }, + K(N) = { L('n'), 'N', A('n'), 'n', 'N', C('N') }, + K(O) = { L('o'), 'O', A('o'), 'o', 'O', C('O') }, + K(P) = { L('p'), 'P', A('p'), 'p', 'P', C('P') }, + K(Q) = { L('q'), 'Q', A('q'), 'q', 'Q', C('Q') }, + K(R) = { L('r'), 'R', A('r'), 'r', 'R', C('R') }, + K(S) = { L('s'), 'S', A('s'), 's', 'S', C('S') }, + K(T) = { L('t'), 'T', A('t'), 't', 'T', C('T') }, + K(U) = { L('u'), 'U', A('u'), 'u', 'U', C('U') }, + K(V) = { L('v'), 'V', A('v'), 'v', 'V', C('V') }, + K(W) = { L('w'), 'W', A('w'), 'w', 'W', C('W') }, + K(X) = { L('x'), 'X', A('x'), 'x', 'X', C('X') }, + K(Y) = { L('y'), 'Y', A('y'), 'y', 'Y', C('Y') }, + K(Z) = { L('z'), 'Z', A('z'), 'z', 'Z', C('Z') }, + K(1) = { '1', '!', A('1'), '|', '!', C('A') }, + K(2) = { '2', '"', A('2'), '@', '"', C('@') }, + K(3) = { '3', 0372, A('3'), '#', 0372, C('C') }, + K(4) = { '4', '$', A('4'), '~', '$', C('D') }, + K(5) = { '5', '%', A('5'), 0317, '%', C('E') }, + K(6) = { '6', '&', A('6'), 0252, '&', C('^') }, + K(7) = { '7', '/', A('7'), '{', '/', C('G') }, + K(8) = { '8', '(', A('8'), '(', '(', C('H') }, + K(9) = { '9', ')', A('9'), ')', ')', C('I') }, + K(0) = { '0', '=', A('0'), '=', '=', C('_') }, + K(ENTER) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),C('['), C('['), C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),C('H'), C('H'), DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),C('I'), C('I'), C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), ' ', ' ', C('@') }, + K(DASH) = { '\'', '?', A('\''),'?', '?', C('^') }, + K(EQUAL) = { 0255, 0250, A(0255),0250, 0250, C('@') }, + K(OPEN_BRACKET) = { '`', '^', A('`'), '[', '^', C('[') }, + K(CLOSE_BRACKET) = { '+', '*', A('+'), ']', '*', C(']') }, + K(BACKSLASH) = { L(0207),0200, A(0207),'}', 0200, C(']') }, + K(SEMICOLON) = { L(0244),0245, A(0244),0244, 0245, C('@') }, + K(APOSTROPH) = { '\'', '"', A('\''),'{', '"', C('[') }, + K(GRAVE_ACCENT) = { 0247, 0246, A(0247),'\\', 0246, C('\\') }, + K(COMMA) = { ',', ';', A(','), ',', ';', C('@') }, + K(PERIOD) = { '.', ':', A('.'), '.', ':', C('@') }, + K(SLASH) = { '-', '_', A('-'), '-', '_', C('_') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, C('C') }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), DEL, A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, C('S') }, + K(KP_SLASH) = { '-', '-', A('-'), '-', A('-'), C('_') }, + K(KP_STAR) = { '*', '*', A('*'), '*', '*', C('M') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, '-', CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, '+', CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),C('M'), CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, '1', CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, '2', CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, '3', CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, '4', CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, '5', CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, '7', CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, '8', CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, '9', CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, '0', CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), DEL, '.', DEL }, + K(EUROPE_2) = { '<', '>', A('<'), '<', '>', C('\\') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/uk.src b/drivers/tty/keymaps/uk.src index 4b3245b65..037dae4db 100644 --- a/drivers/tty/keymaps/uk.src +++ b/drivers/tty/keymaps/uk.src @@ -2,131 +2,107 @@ /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', A('1'), A('1'), A('!'), C('A'), -/* 03 - '2' */ '2', '"', A('2'), A('2'), A('@'), C('@'), -/* 04 - '3' */ '3', 156, A('3'), A('3'), A(156), C('C'), -/* 05 - '4' */ '4', '$', A('4'), A('4'), A('$'), C('D'), -/* 06 - '5' */ '5', '%', A('5'), A('5'), A('%'), C('E'), -/* 07 - '6' */ '6', '^', A('6'), A('6'), A('^'), C('^'), -/* 08 - '7' */ '7', '&', A('7'), A('7'), A('&'), C('G'), -/* 09 - '8' */ '8', '*', A('8'), A('8'), A('*'), C('H'), -/* 10 - '9' */ '9', '(', A('9'), A('9'), A('('), C('I'), -/* 11 - '0' */ '0', ')', A('0'), A('0'), A(')'), C('@'), -/* 12 - '-' */ '-', '_', A('-'), A('-'), A('_'), C('_'), -/* 13 - '=' */ '=', '+', A('='), A('='), A('+'), C('@'), -/* 14 - BS */ C('H'), C('H'), CA('H'),CA('H'),CA('H'),0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), A('w'), A('W'), C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), A('e'), A('E'), C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), A('r'), A('R'), C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), A('t'), A('T'), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), A('u'), A('U'), C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), A('i'), A('I'), C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), A('o'), A('O'), C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), A('p'), A('P'), C('P'), -/* 26 - '[' */ '[', '{', A('['), A('['), A('{'), C('['), -/* 27 - ']' */ ']', '}', A(']'), A(']'), A('}'), C(']'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), A('a'), A('A'), C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), A('s'), A('S'), C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), A('d'), A('D'), C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), A('f'), A('F'), C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), A('g'), A('G'), C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), A('h'), A('H'), C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), A('j'), A('J'), C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), A('k'), A('K'), C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), A('l'), A('L'), C('L'), -/* 39 - ';' */ ';', ':', A(';'), A(';'), A(':'), C('@'), -/* 40 - '\'' */ '\'', '@', A('\''),A('\''),A('"'), C('@'), -/* 41 - '`' */ '`', '~', A('`'), A('`'), A('~'), C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '#' */ '#', '~', A('#'), A('#'), A('~'), C('#'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), A('x'), A('X'), C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), A('c'), A('C'), C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), A('v'), A('V'), C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), A('b'), A('B'), C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), A('n'), A('N'), C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), A('m'), A('M'), C('M'), -/* 51 - ',' */ ',', '<', A(','), A(','), A('<'), C('@'), -/* 52 - '.' */ '.', '>', A('.'), A('.'), A('>'), C('@'), -/* 53 - '/' */ '/', '?', A('/'), A('/'), A('?'), C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), A('*'), A('*'), C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, A('7'), CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, A('8'), CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, A('9'), CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, A('-'), CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, A('4'), CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, A('5'), CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, A('+'), CPLUS, -/* 79 - End */ END, '1', AEND, AEND, A('1'), CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, A('2'), CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, A('3'), CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, A('0'), CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),A(0177),A('.'), 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '\\', '|', A('\\'),A('|'), A('|'), C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A('a'), A('a'), A('A'), C('A') }, + K(B) = { L('b'), 'B', A('b'), A('b'), A('B'), C('B') }, + K(C) = { L('c'), 'C', A('c'), A('c'), A('C'), C('C') }, + K(D) = { L('d'), 'D', A('d'), A('d'), A('D'), C('D') }, + K(E) = { L('e'), 'E', A('e'), A('e'), A('E'), C('E') }, + K(F) = { L('f'), 'F', A('f'), A('f'), A('F'), C('F') }, + K(G) = { L('g'), 'G', A('g'), A('g'), A('G'), C('G') }, + K(H) = { L('h'), 'H', A('h'), A('h'), A('H'), C('H') }, + K(I) = { L('i'), 'I', A('i'), A('i'), A('I'), C('I') }, + K(J) = { L('j'), 'J', A('j'), A('j'), A('J'), C('J') }, + K(K) = { L('k'), 'K', A('k'), A('k'), A('K'), C('K') }, + K(L) = { L('l'), 'L', A('l'), A('l'), A('L'), C('L') }, + K(M) = { L('m'), 'M', A('m'), A('m'), A('M'), C('M') }, + K(N) = { L('n'), 'N', A('n'), A('n'), A('N'), C('N') }, + K(O) = { L('o'), 'O', A('o'), A('o'), A('O'), C('O') }, + K(P) = { L('p'), 'P', A('p'), A('p'), A('P'), C('P') }, + K(Q) = { L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q') }, + K(R) = { L('r'), 'R', A('r'), A('r'), A('R'), C('R') }, + K(S) = { L('s'), 'S', A('s'), A('s'), A('S'), C('S') }, + K(T) = { L('t'), 'T', A('t'), A('t'), A('T'), C('T') }, + K(U) = { L('u'), 'U', A('u'), A('u'), A('U'), C('U') }, + K(V) = { L('v'), 'V', A('v'), A('v'), A('V'), C('V') }, + K(W) = { L('w'), 'W', A('w'), A('w'), A('W'), C('W') }, + K(X) = { L('x'), 'X', A('x'), A('x'), A('X'), C('X') }, + K(Y) = { L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y') }, + K(Z) = { L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z') }, + K(1) = { '1', '!', A('1'), A('1'), A('!'), C('A') }, + K(2) = { '2', '"', A('2'), A('2'), A('@'), C('@') }, + K(3) = { '3', 156, A('3'), A('3'), A(156), C('C') }, + K(4) = { '4', '$', A('4'), A('4'), A('$'), C('D') }, + K(5) = { '5', '%', A('5'), A('5'), A('%'), C('E') }, + K(6) = { '6', '^', A('6'), A('6'), A('^'), C('^') }, + K(7) = { '7', '&', A('7'), A('7'), A('&'), C('G') }, + K(8) = { '8', '*', A('8'), A('8'), A('*'), C('H') }, + K(9) = { '9', '(', A('9'), A('9'), A('('), C('I') }, + K(0) = { '0', ')', A('0'), A('0'), A(')'), C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),CA('H'),CA('H'),DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), A(' '), A(' '), C('@') }, + K(DASH) = { '-', '_', A('-'), A('-'), A('_'), C('_') }, + K(EQUAL) = { '=', '+', A('='), A('='), A('+'), C('@') }, + K(OPEN_BRACKET) = { '[', '{', A('['), A('['), A('{'), C('[') }, + K(CLOSE_BRACKET) = { ']', '}', A(']'), A(']'), A('}'), C(']') }, + K(BACKSLASH) = { '#', '~', A('#'), A('#'), A('~'), C('#') }, + K(SEMICOLON) = { ';', ':', A(';'), A(';'), A(':'), C('@') }, + K(APOSTROPH) = { '\'', '@', A('\''),A('\''),A('"'), C('@') }, + K(GRAVE_ACCENT) = { '`', '~', A('`'), A('`'), A('~'), C('@') }, + K(COMMA) = { ',', '<', A(','), A(','), A('<'), C('@') }, + K(PERIOD) = { '.', '>', A('.'), A('.'), A('>'), C('@') }, + K(SLASH) = { '/', '?', A('/'), A('/'), A('?'), C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), A(DEL), A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '/', '/', A('/'), A('/'), A('/'), C('@') }, + K(KP_STAR) = { '*', '*', A('*'), A('*'), A('*'), C('@') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, A('-'), CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, A('+'), CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, A('1'), CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, A('2'), CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, A('3'), CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, A('4'), CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, A('5'), CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, A('7'), CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, A('8'), CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, A('9'), CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, A('0'), CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), A(DEL), A('.'), DEL }, + K(EUROPE_2) = { '\\', '|', A('\\'),A('|'), A('|'), C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/ukraine-koi8-u.src b/drivers/tty/keymaps/ukraine-koi8-u.src index 6f5386004..e20c41cbf 100755 --- a/drivers/tty/keymaps/ukraine-koi8-u.src +++ b/drivers/tty/keymaps/ukraine-koi8-u.src @@ -6,131 +6,107 @@ /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', '1', A('1'), '!', C('A'), -/* 03 - '2' */ '2', '@', '2', A('2'), '"', C('@'), -/* 04 - '3' */ '3', '#', '3', A('3'), 'N', C('C'), -/* 05 - '4' */ '4', '$', '4', A('4'), ';', C('D'), -/* 06 - '5' */ '5', '%', '5', A('5'), '%', C('E'), -/* 07 - '6' */ '6', '^', '6', A('6'), ':', C('^'), -/* 08 - '7' */ '7', '&', '7', A('7'), '?', C('G'), -/* 09 - '8' */ '8', '*', '8', A('8'), '*', C('H'), -/* 10 - '9' */ '9', '(', '9', A('9'), '(', C('I'), -/* 11 - '0' */ '0', ')', '0', A('0'), ')', C('@'), -/* 12 - '-' */ '-', '_', '-', A('-'), '_', C('_'), -/* 13 - '=' */ '=', '+', '=', A('='), '+', C('@'), -/* 14 - BS */ C('H'), C('H'), C('H'), CA('H'), C('H'),0177, -/* 15 - TAB */ C('I'), C('I'), C('I'), CA('I'),C('I'), C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('J'), A('q'), A('j'), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A(195), A('w'), A(227), C('W'), -/* 18 - 'e' */ L('e'), 'E', A(213), A('e'), A(245), C('E'), -/* 19 - 'r' */ L('r'), 'R', A(203), A('r'), A(235), C('R'), -/* 20 - 't' */ L('t'), 'T', A(197), A('t'), A(229), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A(206), A('y'), A(238), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A(199), A('u'), A(231), C('U'), -/* 23 - 'i' */ L('i'), 'I', A(219), A('i'), A(251), C('I'), -/* 24 - 'o' */ L('o'), 'O', A(221), A('o'), A(253), C('O'), -/* 25 - 'p' */ L('p'), 'P', A(218), A('p'), A(250), C('P'), -/* 26 - '[' */ '[', '{', A(200), A('['), A(232), C('['), -/* 27 - ']' */ ']', '}', A(167), A(']'), A(183), C(']'), -/* 28 - CR/LF */ C('M'), C('M'), C('M'), CA('M'), C('M') ,C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A(198), A('a'), A(230), C('A'), -/* 31 - 's' */ L('s'), 'S', A(166), A('s'), A(182), C('S'), -/* 32 - 'd' */ L('d'), 'D', A(215), A('d'), A(247), C('D'), -/* 33 - 'f' */ L('f'), 'F', A(193), A('f'), A(225), C('F'), -/* 34 - 'g' */ L('g'), 'G', A(208), A('g'), A(240), C('G'), -/* 35 - 'h' */ L('h'), 'H', A(210), A('h'), A(242), C('H'), -/* 36 - 'j' */ L('j'), 'J', A(207), A('j'), A(239), C('J'), -/* 37 - 'k' */ L('k'), 'K', A(204), A('k'), A(236), C('K'), -/* 38 - 'l' */ L('l'), 'L', A(196), A('l'), A(228), C('L'), -/* 39 - ';' */ ';', ':', A(214), A(';'), A(246), C('@'), -/* 40 - '\'' */ '\'','"', A(164), A('\''),A(180), C('@'), -/* 41 - '`' */ '`', '~', A(163), A('`'), A(179), C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ '\\', '|', '\\', A('\\'), '|', C('\\'), -/* 44 - 'z' */ L('z'), 'Z', A(209), A('z'), A(241), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A(222), A('x'), A(254), C('X'), -/* 46 - 'c' */ L('c'), 'C', A(211), A('c'), A(243), C('C'), -/* 47 - 'v' */ L('v'), 'V', A(205), A('v'), A(237), C('V'), -/* 48 - 'b' */ L('b'), 'B', A(201), A('b'), A(233), C('B'), -/* 49 - 'n' */ L('n'), 'N', A(212), A('n'), A(244), C('N'), -/* 50 - 'm' */ L('m'), 'M', A(216), A('m'), A(248), C('M'), -/* 51 - ',' */ ',', '<', A(194), A(','), A(226), C('@'), -/* 52 - '.' */ '.', '>', A(192), A('.'), A(224), C('@'), -/* 53 - '/' */ '/', '?', '.', A('/'), ',', C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', '*', A('*'), '*', C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', ' ', A(' '), ' ', C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, F1, AF1, SF1, CF1, -/* 60 - F2 */ F2, SF2, F2, AF2, SF2, CF2, -/* 61 - F3 */ F3, SF3, F3, AF3, SF3, CF3, -/* 62 - F4 */ F4, SF4, F4, AF4, SF4, CF4, -/* 63 - F5 */ F5, SF5, F5, AF5, SF5, CF5, -/* 64 - F6 */ F6, SF6, F6, AF6, SF6, CF6, -/* 65 - F7 */ F7, SF7, F7, AF7, SF7, CF7, -/* 66 - F8 */ F8, SF8, F8, AF8, SF8, CF8, -/* 67 - F9 */ F9, SF9, F9, AF9, SF9, CF9, -/* 68 - F10 */ F10, SF10, F10, AF10, SF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', HOME, AHOME, '7', CHOME, -/* 72 - CurUp */ UP, '8', UP, AUP, '8', CUP, -/* 73 - PgUp */ PGUP, '9', PGUP, APGUP, '9', CPGUP, -/* 74 - '-' */ NMIN, '-', NMIN, ANMIN, '-', CNMIN, -/* 75 - Left */ LEFT, '4', LEFT, ALEFT, '4', CLEFT, -/* 76 - MID */ MID, '5', MID, AMID, '5', CMID, -/* 77 - Right */ RIGHT, '6', RIGHT, ARIGHT, '6', CRIGHT, -/* 78 - '+' */ PLUS, '+', PLUS, APLUS, '+', CPLUS, -/* 79 - End */ END, '1', END, AEND, '1', CEND, -/* 80 - Down */ DOWN, '2', DOWN, ADOWN, '2', CDOWN, -/* 81 - PgDown */ PGDN, '3', PGDN, APGDN, '3', CPGDN, -/* 82 - Insert */ INSRT, '0', INSRT, AINSRT, '0', CINSRT, -/* 83 - Delete */ 0177, '.', 0177, A(0177),'.', 0177, -/* 84 - Enter */ C('M'), C('M'), C('M'), CA('M'), C('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', '<', A('|'), '>', C('@'), -/* 87 - F11 */ F11, SF11, F11, AF11, SF11, CF11, -/* 88 - F12 */ F12, SF12, F12, AF12, SF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A(198), A('a'), A(230), C('A') }, + K(B) = { L('b'), 'B', A(201), A('b'), A(233), C('B') }, + K(C) = { L('c'), 'C', A(211), A('c'), A(243), C('C') }, + K(D) = { L('d'), 'D', A(215), A('d'), A(247), C('D') }, + K(E) = { L('e'), 'E', A(213), A('e'), A(245), C('E') }, + K(F) = { L('f'), 'F', A(193), A('f'), A(225), C('F') }, + K(G) = { L('g'), 'G', A(208), A('g'), A(240), C('G') }, + K(H) = { L('h'), 'H', A(210), A('h'), A(242), C('H') }, + K(I) = { L('i'), 'I', A(219), A('i'), A(251), C('I') }, + K(J) = { L('j'), 'J', A(207), A('j'), A(239), C('J') }, + K(K) = { L('k'), 'K', A(204), A('k'), A(236), C('K') }, + K(L) = { L('l'), 'L', A(196), A('l'), A(228), C('L') }, + K(M) = { L('m'), 'M', A(216), A('m'), A(248), C('M') }, + K(N) = { L('n'), 'N', A(212), A('n'), A(244), C('N') }, + K(O) = { L('o'), 'O', A(221), A('o'), A(253), C('O') }, + K(P) = { L('p'), 'P', A(218), A('p'), A(250), C('P') }, + K(Q) = { L('q'), 'Q', A('J'), A('q'), A('j'), C('Q') }, + K(R) = { L('r'), 'R', A(203), A('r'), A(235), C('R') }, + K(S) = { L('s'), 'S', A(166), A('s'), A(182), C('S') }, + K(T) = { L('t'), 'T', A(197), A('t'), A(229), C('T') }, + K(U) = { L('u'), 'U', A(199), A('u'), A(231), C('U') }, + K(V) = { L('v'), 'V', A(205), A('v'), A(237), C('V') }, + K(W) = { L('w'), 'W', A(195), A('w'), A(227), C('W') }, + K(X) = { L('x'), 'X', A(222), A('x'), A(254), C('X') }, + K(Y) = { L('y'), 'Y', A(206), A('y'), A(238), C('Y') }, + K(Z) = { L('z'), 'Z', A(209), A('z'), A(241), C('Z') }, + K(1) = { '1', '!', '1', A('1'), '!', C('A') }, + K(2) = { '2', '@', '2', A('2'), '"', C('@') }, + K(3) = { '3', '#', '3', A('3'), 'N', C('C') }, + K(4) = { '4', '$', '4', A('4'), ';', C('D') }, + K(5) = { '5', '%', '5', A('5'), '%', C('E') }, + K(6) = { '6', '^', '6', A('6'), ':', C('^') }, + K(7) = { '7', '&', '7', A('7'), '?', C('G') }, + K(8) = { '8', '*', '8', A('8'), '*', C('H') }, + K(9) = { '9', '(', '9', A('9'), '(', C('I') }, + K(0) = { '0', ')', '0', A('0'), ')', C('@') }, + K(ENTER) = { C('M'), C('M'), C('M'), CA('M'),C('M') ,C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), C('H'), CA('H'),C('H'), DEL }, + K(TAB) = { C('I'), C('I'), C('I'), CA('I'),C('I'), C('I') }, + K(SPACEBAR) = { ' ', ' ', ' ', A(' '), ' ', C('@') }, + K(DASH) = { '-', '_', '-', A('-'), '_', C('_') }, + K(EQUAL) = { '=', '+', '=', A('='), '+', C('@') }, + K(OPEN_BRACKET) = { '[', '{', A(200), A('['), A(232), C('[') }, + K(CLOSE_BRACKET) = { ']', '}', A(167), A(']'), A(183), C(']') }, + K(BACKSLASH) = { '\\', '|', '\\', A('\\'),'|', C('\\') }, + K(SEMICOLON) = { ';', ':', A(214), A(';'), A(246), C('@') }, + K(APOSTROPH) = { '\'', '"', A(164), A('\''),A(180), C('@') }, + K(GRAVE_ACCENT) = { '`', '~', A(163), A('`'), A(179), C('@') }, + K(COMMA) = { ',', '<', A(194), A(','), A(226), C('@') }, + K(PERIOD) = { '.', '>', A(192), A('.'), A(224), C('@') }, + K(SLASH) = { '/', '?', '.', A('/'), ',', C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, F1, AF1, SF1, CF1 }, + K(F2) = { F2, SF2, F2, AF2, SF2, CF2 }, + K(F3) = { F3, SF3, F3, AF3, SF3, CF3 }, + K(F4) = { F4, SF4, F4, AF4, SF4, CF4 }, + K(F5) = { F5, SF5, F5, AF5, SF5, CF5 }, + K(F6) = { F6, SF6, F6, AF6, SF6, CF6 }, + K(F7) = { F7, SF7, F7, AF7, SF7, CF7 }, + K(F8) = { F8, SF8, F8, AF8, SF8, CF8 }, + K(F9) = { F9, SF9, F9, AF9, SF9, CF9 }, + K(F10) = { F10, SF10, F10, AF10, SF10, CF10 }, + K(F11) = { F11, SF11, F11, AF11, SF11, CF11 }, + K(F12) = { F12, SF12, F12, AF12, SF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, INSRT, AINSRT, INSRT, CINSRT }, + K(HOME) = { HOME, HOME, HOME, AHOME, HOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, PGUP, APGUP, PGUP, CPGUP }, + K(DELETE) = { DEL, DEL, DEL, A(DEL), DEL, DEL }, + K(END) = { END, END, END, AEND, END, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, PGDN, APGDN, PGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, RIGHT, ARIGHT, RIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, LEFT, ALEFT, LEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, DOWN, ADOWN, DOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, UP, AUP, UP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '/', '/', '.', A('/'), '.', C('@') }, + K(KP_STAR) = { '*', '*', '*', A('*'), '*', C('@') }, + K(KP_DASH) = { '-', '-', '-', AMIN, '-', CMIN }, + K(KP_PLUS) = { '+', '+', '+', APLUS, '+', CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), C('M'), CA('M'),C('M'), C('J') }, + K(KP_1) = { NEND, '1', END, AEND, '1', CEND }, + K(KP_2) = { NDOWN, '2', DOWN, ADOWN, '2', CDOWN }, + K(KP_3) = { NPGDN, '3', PGDN, APGDN, '3', CPGDN }, + K(KP_4) = { NLEFT, '4', LEFT, ALEFT, '4', CLEFT }, + K(KP_5) = { NMID, '5', MID, AMID, '5', CMID }, + K(KP_6) = { NRIGHT, '6', RIGHT, ARIGHT, '6', CRIGHT }, + K(KP_7) = { NHOME, '7', HOME, AHOME, '7', CHOME }, + K(KP_8) = { NUP, '8', UP, AUP, '8', CUP }, + K(KP_9) = { NPGUP, '9', PGUP, APGUP, '9', CPGUP }, + K(KP_0) = { NINSRT, '0', INSRT, AINSRT, '0', CINSRT }, + K(KP_PERIOD) = { NDEL, '.', DEL, A(DEL), '.', DEL }, + K(EUROPE_2) = { '<', '>', '<', A('|'), '>', C('@') }, + K(APPLICATION) = { C('M'), C('M'), C('M'), CA('M'),C('M') ,C('J') }, + K(SYSREQ) = { C('M'), C('M'), C('M'), CA('M'),C('M'), C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/us-std-esc.src b/drivers/tty/keymaps/us-std-esc.src deleted file mode 100644 index c83a7fb6d..000000000 --- a/drivers/tty/keymaps/us-std-esc.src +++ /dev/null @@ -1,132 +0,0 @@ -/* Keymap for US MF-2 keyboard. */ - -/* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ -/* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', A('1'), A('1'), A('!'), C('A'), -/* 03 - '2' */ '2', '@', A('2'), A('2'), A('@'), C('@'), -/* 04 - '3' */ '3', '#', A('3'), A('3'), A('#'), C('C'), -/* 05 - '4' */ '4', '$', A('4'), A('4'), A('$'), C('D'), -/* 06 - '5' */ '5', '%', A('5'), A('5'), A('%'), C('E'), -/* 07 - '6' */ '6', '^', A('6'), A('6'), A('^'), C('^'), -/* 08 - '7' */ '7', '&', A('7'), A('7'), A('&'), C('G'), -/* 09 - '8' */ '8', '*', A('8'), A('8'), A('*'), C('H'), -/* 10 - '9' */ '9', '(', A('9'), A('9'), A('('), C('I'), -/* 11 - '0' */ '0', ')', A('0'), A('0'), A(')'), C('@'), -/* 12 - '-' */ '-', '_', A('-'), A('-'), A('_'), C('_'), -/* 13 - '=' */ 0, 0, 0, 0, 0, 0, -/* 14 - BS */ C('H'), C('H'), CA('H'),CA('H'),CA('H'),0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), A('w'), A('W'), C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), A('e'), A('E'), C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), A('r'), A('R'), C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), A('t'), A('T'), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), A('u'), A('U'), C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), A('i'), A('I'), C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), A('o'), A('O'), C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), A('p'), A('P'), C('P'), -/* 26 - '[' */ '[', '{', A('['), A('['), A('{'), C('['), -/* 27 - ']' */ ']', '}', A(']'), A(']'), A('}'), C(']'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), A('a'), A('A'), C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), A('s'), A('S'), C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), A('d'), A('D'), C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), A('f'), A('F'), C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), A('g'), A('G'), C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), A('h'), A('H'), C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), A('j'), A('J'), C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), A('k'), A('K'), C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), A('l'), A('L'), C('L'), -/* 39 - ';' */ ';', ':', A(';'), A(';'), A(':'), C('@'), -/* 40 - '\'' */ '\'', '"', A('\''),A('\''),A('"'), C('@'), -/* 41 - '`' */ '`', '~', A('`'), A('`'), A('~'), C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ '\\', '|', A('\\'),A('\\'),A('|'), C('\\'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), A('x'), A('X'), C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), A('c'), A('C'), C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), A('v'), A('V'), C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), A('b'), A('B'), C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), A('n'), A('N'), C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), A('m'), A('M'), C('M'), -/* 51 - ',' */ ',', '<', A(','), A(','), A('<'), C('@'), -/* 52 - '.' */ '.', '>', A('.'), A('.'), A('>'), C('@'), -/* 53 - '/' */ '/', '?', A('/'), A('/'), A('?'), C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), A('*'), A('*'), C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 58 - CapsLck */ 0, 0, 0, 0, 0, 0, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ 0, 0, 0, 0, 0, C('S'), -/* 70 - ScrLock */ 0, 0, 0, 0, 0, C('C'), -/* 71 - Home */ HOME, '7', AHOME, AHOME, A('7'), CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, A('8'), CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, A('9'), CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, A('-'), CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, A('4'), CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, A('5'), CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, A('+'), CPLUS, -/* 79 - End */ END, '1', AEND, AEND, A('1'), CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, A('2'), CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, A('3'), CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, A('0'), CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),A(0177),A('.'), 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), A('|'), A('>'), C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - LGUI */ LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT, -/* 92 - RGUI */ RIGHT, '>', ARIGHT, ARIGHT, A('>'), ARIGHT, -/* 93 - MENU */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 94 - Power */ 0, 0, 0, 0, 0, 0, -/* 95 - Sleep */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - Make */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - SRCH */ 0, 0, 0, 0, 0, 0, -/*102 - FAV */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - STOP */ 0, 0, 0, 0, 0, 0, -/*105 - FWD */ 0, 0, 0, 0, 0, 0, -/*106 - BACK */ 0, 0, 0, 0, 0, 0, -/*107 - MyComp */ 0, 0, 0, 0, 0, 0, -/*108 - MAIL */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 diff --git a/drivers/tty/keymaps/us-std.src b/drivers/tty/keymaps/us-std.src index 82059ffc2..f4f4a7abd 100644 --- a/drivers/tty/keymaps/us-std.src +++ b/drivers/tty/keymaps/us-std.src @@ -2,131 +2,107 @@ /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', A('1'), A('1'), A('!'), C('A'), -/* 03 - '2' */ '2', '@', A('2'), A('2'), A('@'), C('@'), -/* 04 - '3' */ '3', '#', A('3'), A('3'), A('#'), C('C'), -/* 05 - '4' */ '4', '$', A('4'), A('4'), A('$'), C('D'), -/* 06 - '5' */ '5', '%', A('5'), A('5'), A('%'), C('E'), -/* 07 - '6' */ '6', '^', A('6'), A('6'), A('^'), C('^'), -/* 08 - '7' */ '7', '&', A('7'), A('7'), A('&'), C('G'), -/* 09 - '8' */ '8', '*', A('8'), A('8'), A('*'), C('H'), -/* 10 - '9' */ '9', '(', A('9'), A('9'), A('('), C('I'), -/* 11 - '0' */ '0', ')', A('0'), A('0'), A(')'), C('@'), -/* 12 - '-' */ '-', '_', A('-'), A('-'), A('_'), C('_'), -/* 13 - '=' */ '=', '+', A('='), A('='), A('+'), C('@'), -/* 14 - BS */ C('H'), C('H'), CA('H'),CA('H'),CA('H'),0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), A('w'), A('W'), C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), A('e'), A('E'), C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), A('r'), A('R'), C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), A('t'), A('T'), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), A('u'), A('U'), C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), A('i'), A('I'), C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), A('o'), A('O'), C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), A('p'), A('P'), C('P'), -/* 26 - '[' */ '[', '{', A('['), A('['), A('{'), C('['), -/* 27 - ']' */ ']', '}', A(']'), A(']'), A('}'), C(']'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 29 - Ctrl */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 30 - 'a' */ L('a'), 'A', A('a'), A('a'), A('A'), C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), A('s'), A('S'), C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), A('d'), A('D'), C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), A('f'), A('F'), C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), A('g'), A('G'), C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), A('h'), A('H'), C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), A('j'), A('J'), C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), A('k'), A('K'), C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), A('l'), A('L'), C('L'), -/* 39 - ';' */ ';', ':', A(';'), A(';'), A(':'), C('@'), -/* 40 - '\'' */ '\'', '"', A('\''),A('\''),A('"'), C('@'), -/* 41 - '`' */ '`', '~', A('`'), A('`'), A('~'), C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ '\\', '|', A('\\'),A('\\'),A('|'), C('\\'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), A('x'), A('X'), C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), A('c'), A('C'), C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), A('v'), A('V'), C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), A('b'), A('B'), C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), A('n'), A('N'), C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), A('m'), A('M'), C('M'), -/* 51 - ',' */ ',', '<', A(','), A(','), A('<'), C('@'), -/* 52 - '.' */ '.', '>', A('.'), A('.'), A('>'), C('@'), -/* 53 - '/' */ '/', '?', A('/'), A('/'), A('?'), C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), A('*'), A('*'), C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 58 - CapsLck */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, A('7'), CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, A('8'), CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, A('9'), CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, A('-'), CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, A('4'), CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, A('5'), CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, A('+'), CPLUS, -/* 79 - End */ END, '1', AEND, AEND, A('1'), CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, A('2'), CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, A('3'), CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, A('0'), CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),A(0177),A('.'), 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), A('|'), A('>'), C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A('a'), A('a'), A('A'), C('A') }, + K(B) = { L('b'), 'B', A('b'), A('b'), A('B'), C('B') }, + K(C) = { L('c'), 'C', A('c'), A('c'), A('C'), C('C') }, + K(D) = { L('d'), 'D', A('d'), A('d'), A('D'), C('D') }, + K(E) = { L('e'), 'E', A('e'), A('e'), A('E'), C('E') }, + K(F) = { L('f'), 'F', A('f'), A('f'), A('F'), C('F') }, + K(G) = { L('g'), 'G', A('g'), A('g'), A('G'), C('G') }, + K(H) = { L('h'), 'H', A('h'), A('h'), A('H'), C('H') }, + K(I) = { L('i'), 'I', A('i'), A('i'), A('I'), C('I') }, + K(J) = { L('j'), 'J', A('j'), A('j'), A('J'), C('J') }, + K(K) = { L('k'), 'K', A('k'), A('k'), A('K'), C('K') }, + K(L) = { L('l'), 'L', A('l'), A('l'), A('L'), C('L') }, + K(M) = { L('m'), 'M', A('m'), A('m'), A('M'), C('M') }, + K(N) = { L('n'), 'N', A('n'), A('n'), A('N'), C('N') }, + K(O) = { L('o'), 'O', A('o'), A('o'), A('O'), C('O') }, + K(P) = { L('p'), 'P', A('p'), A('p'), A('P'), C('P') }, + K(Q) = { L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q') }, + K(R) = { L('r'), 'R', A('r'), A('r'), A('R'), C('R') }, + K(S) = { L('s'), 'S', A('s'), A('s'), A('S'), C('S') }, + K(T) = { L('t'), 'T', A('t'), A('t'), A('T'), C('T') }, + K(U) = { L('u'), 'U', A('u'), A('u'), A('U'), C('U') }, + K(V) = { L('v'), 'V', A('v'), A('v'), A('V'), C('V') }, + K(W) = { L('w'), 'W', A('w'), A('w'), A('W'), C('W') }, + K(X) = { L('x'), 'X', A('x'), A('x'), A('X'), C('X') }, + K(Y) = { L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y') }, + K(Z) = { L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z') }, + K(1) = { '1', '!', A('1'), A('1'), A('!'), C('A') }, + K(2) = { '2', '@', A('2'), A('2'), A('@'), C('@') }, + K(3) = { '3', '#', A('3'), A('3'), A('#'), C('C') }, + K(4) = { '4', '$', A('4'), A('4'), A('$'), C('D') }, + K(5) = { '5', '%', A('5'), A('5'), A('%'), C('E') }, + K(6) = { '6', '^', A('6'), A('6'), A('^'), C('^') }, + K(7) = { '7', '&', A('7'), A('7'), A('&'), C('G') }, + K(8) = { '8', '*', A('8'), A('8'), A('*'), C('H') }, + K(9) = { '9', '(', A('9'), A('9'), A('('), C('I') }, + K(0) = { '0', ')', A('0'), A('0'), A(')'), C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),CA('H'),CA('H'),DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), A(' '), A(' '), C('@') }, + K(DASH) = { '-', '_', A('-'), A('-'), A('_'), C('_') }, + K(EQUAL) = { '=', '+', A('='), A('='), A('+'), C('@') }, + K(OPEN_BRACKET) = { '[', '{', A('['), A('['), A('{'), C('[') }, + K(CLOSE_BRACKET) = { ']', '}', A(']'), A(']'), A('}'), C(']') }, + K(BACKSLASH) = { '\\', '|', A('\\'),A('\\'),A('|'), C('\\') }, + K(SEMICOLON) = { ';', ':', A(';'), A(';'), A(':'), C('@') }, + K(APOSTROPH) = { '\'', '"', A('\''),A('\''),A('"'), C('@') }, + K(GRAVE_ACCENT) = { '`', '~', A('`'), A('`'), A('~'), C('@') }, + K(COMMA) = { ',', '<', A(','), A(','), A('<'), C('@') }, + K(PERIOD) = { '.', '>', A('.'), A('.'), A('>'), C('@') }, + K(SLASH) = { '/', '?', A('/'), A('/'), A('?'), C('@') }, + K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), A(DEL), A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '/', '/', A('/'), A('/'), A('/'), C('@') }, + K(KP_STAR) = { '*', '*', A('*'), A('*'), A('*'), C('@') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, A('-'), CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, A('+'), CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, A('1'), CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, A('2'), CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, A('3'), CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, A('4'), CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, A('5'), CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, A('7'), CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, A('8'), CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, A('9'), CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, A('0'), CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), A(DEL), A('.'), DEL }, + K(EUROPE_2) = { '<', '>', A('<'), A('|'), A('>'), C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/keymaps/us-swap.src b/drivers/tty/keymaps/us-swap.src index e4be4dbfe..f42ab3f5d 100644 --- a/drivers/tty/keymaps/us-swap.src +++ b/drivers/tty/keymaps/us-swap.src @@ -2,131 +2,107 @@ /* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */ /* ==================================================================== */ -/* 00 - none */ 0, 0, 0, 0, 0, 0, -/* 01 - ESC */ C('['), C('['), CA('['),CA('['),CA('['),C('['), -/* 02 - '1' */ '1', '!', A('1'), A('1'), A('!'), C('A'), -/* 03 - '2' */ '2', '@', A('2'), A('2'), A('@'), C('@'), -/* 04 - '3' */ '3', '#', A('3'), A('3'), A('#'), C('C'), -/* 05 - '4' */ '4', '$', A('4'), A('4'), A('$'), C('D'), -/* 06 - '5' */ '5', '%', A('5'), A('5'), A('%'), C('E'), -/* 07 - '6' */ '6', '^', A('6'), A('6'), A('^'), C('^'), -/* 08 - '7' */ '7', '&', A('7'), A('7'), A('&'), C('G'), -/* 09 - '8' */ '8', '*', A('8'), A('8'), A('*'), C('H'), -/* 10 - '9' */ '9', '(', A('9'), A('9'), A('('), C('I'), -/* 11 - '0' */ '0', ')', A('0'), A('0'), A(')'), C('@'), -/* 12 - '-' */ '-', '_', A('-'), A('-'), A('_'), C('_'), -/* 13 - '=' */ '=', '+', A('='), A('='), A('+'), C('@'), -/* 14 - BS */ C('H'), C('H'), CA('H'),CA('H'),CA('H'),0177, -/* 15 - TAB */ C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I'), -/* 16 - 'q' */ L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q'), -/* 17 - 'w' */ L('w'), 'W', A('w'), A('w'), A('W'), C('W'), -/* 18 - 'e' */ L('e'), 'E', A('e'), A('e'), A('E'), C('E'), -/* 19 - 'r' */ L('r'), 'R', A('r'), A('r'), A('R'), C('R'), -/* 20 - 't' */ L('t'), 'T', A('t'), A('t'), A('T'), C('T'), -/* 21 - 'y' */ L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y'), -/* 22 - 'u' */ L('u'), 'U', A('u'), A('u'), A('U'), C('U'), -/* 23 - 'i' */ L('i'), 'I', A('i'), A('i'), A('I'), C('I'), -/* 24 - 'o' */ L('o'), 'O', A('o'), A('o'), A('O'), C('O'), -/* 25 - 'p' */ L('p'), 'P', A('p'), A('p'), A('P'), C('P'), -/* 26 - '[' */ '[', '{', A('['), A('['), A('{'), C('['), -/* 27 - ']' */ ']', '}', A(']'), A(']'), A('}'), C(']'), -/* 28 - CR/LF */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 29 - Ctrl */ CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, -/* 30 - 'a' */ L('a'), 'A', A('a'), A('a'), A('A'), C('A'), -/* 31 - 's' */ L('s'), 'S', A('s'), A('s'), A('S'), C('S'), -/* 32 - 'd' */ L('d'), 'D', A('d'), A('d'), A('D'), C('D'), -/* 33 - 'f' */ L('f'), 'F', A('f'), A('f'), A('F'), C('F'), -/* 34 - 'g' */ L('g'), 'G', A('g'), A('g'), A('G'), C('G'), -/* 35 - 'h' */ L('h'), 'H', A('h'), A('h'), A('H'), C('H'), -/* 36 - 'j' */ L('j'), 'J', A('j'), A('j'), A('J'), C('J'), -/* 37 - 'k' */ L('k'), 'K', A('k'), A('k'), A('K'), C('K'), -/* 38 - 'l' */ L('l'), 'L', A('l'), A('l'), A('L'), C('L'), -/* 39 - ';' */ ';', ':', A(';'), A(';'), A(':'), C('@'), -/* 40 - '\'' */ '\'', '"', A('\''),A('\''),A('"'), C('@'), -/* 41 - '`' */ '`', '~', A('`'), A('`'), A('~'), C('@'), -/* 42 - l. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 43 - '\\' */ '\\', '|', A('\\'),A('\\'),A('|'), C('\\'), -/* 44 - 'z' */ L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z'), -/* 45 - 'x' */ L('x'), 'X', A('x'), A('x'), A('X'), C('X'), -/* 46 - 'c' */ L('c'), 'C', A('c'), A('c'), A('C'), C('C'), -/* 47 - 'v' */ L('v'), 'V', A('v'), A('v'), A('V'), C('V'), -/* 48 - 'b' */ L('b'), 'B', A('b'), A('b'), A('B'), C('B'), -/* 49 - 'n' */ L('n'), 'N', A('n'), A('n'), A('N'), C('N'), -/* 50 - 'm' */ L('m'), 'M', A('m'), A('m'), A('M'), C('M'), -/* 51 - ',' */ ',', '<', A(','), A(','), A('<'), C('@'), -/* 52 - '.' */ '.', '>', A('.'), A('.'), A('>'), C('@'), -/* 53 - '/' */ '/', '?', A('/'), A('/'), A('?'), C('@'), -/* 54 - r. SHIFT*/ SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, SHIFT, -/* 55 - '*' */ '*', '*', A('*'), A('*'), A('*'), C('@'), -/* 56 - ALT */ ALT, ALT, ALT, ALT, ALT, ALT, -/* 57 - ' ' */ ' ', ' ', A(' '), A(' '), A(' '), C('@'), -/* 58 - CapsLck */ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, -/* 59 - F1 */ F1, SF1, AF1, AF1, ASF1, CF1, -/* 60 - F2 */ F2, SF2, AF2, AF2, ASF2, CF2, -/* 61 - F3 */ F3, SF3, AF3, AF3, ASF3, CF3, -/* 62 - F4 */ F4, SF4, AF4, AF4, ASF4, CF4, -/* 63 - F5 */ F5, SF5, AF5, AF5, ASF5, CF5, -/* 64 - F6 */ F6, SF6, AF6, AF6, ASF6, CF6, -/* 65 - F7 */ F7, SF7, AF7, AF7, ASF7, CF7, -/* 66 - F8 */ F8, SF8, AF8, AF8, ASF8, CF8, -/* 67 - F9 */ F9, SF9, AF9, AF9, ASF9, CF9, -/* 68 - F10 */ F10, SF10, AF10, AF10, ASF10, CF10, -/* 69 - NumLock */ NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, -/* 70 - ScrLock */ SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, -/* 71 - Home */ HOME, '7', AHOME, AHOME, A('7'), CHOME, -/* 72 - CurUp */ UP, '8', AUP, AUP, A('8'), CUP, -/* 73 - PgUp */ PGUP, '9', APGUP, APGUP, A('9'), CPGUP, -/* 74 - '-' */ NMIN, '-', ANMIN, ANMIN, A('-'), CNMIN, -/* 75 - Left */ LEFT, '4', ALEFT, ALEFT, A('4'), CLEFT, -/* 76 - MID */ MID, '5', AMID, AMID, A('5'), CMID, -/* 77 - Right */ RIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT, -/* 78 - '+' */ PLUS, '+', APLUS, APLUS, A('+'), CPLUS, -/* 79 - End */ END, '1', AEND, AEND, A('1'), CEND, -/* 80 - Down */ DOWN, '2', ADOWN, ADOWN, A('2'), CDOWN, -/* 81 - PgDown */ PGDN, '3', APGDN, APGDN, A('3'), CPGDN, -/* 82 - Insert */ INSRT, '0', AINSRT, AINSRT, A('0'), CINSRT, -/* 83 - Delete */ 0177, '.', A(0177),A(0177),A('.'), 0177, -/* 84 - Enter */ C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J'), -/* 85 - ??? */ 0, 0, 0, 0, 0, 0, -/* 86 - ??? */ '<', '>', A('<'), A('|'), A('>'), C('@'), -/* 87 - F11 */ F11, SF11, AF11, AF11, ASF11, CF11, -/* 88 - F12 */ F12, SF12, AF12, AF12, ASF12, CF12, -/* 89 - ??? */ 0, 0, 0, 0, 0, 0, -/* 90 - ??? */ 0, 0, 0, 0, 0, 0, -/* 91 - ??? */ 0, 0, 0, 0, 0, 0, -/* 92 - ??? */ 0, 0, 0, 0, 0, 0, -/* 93 - ??? */ 0, 0, 0, 0, 0, 0, -/* 94 - ??? */ 0, 0, 0, 0, 0, 0, -/* 95 - ??? */ 0, 0, 0, 0, 0, 0, -/* 96 - EXT_KEY */ EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, EXTKEY, -/* 97 - ??? */ 0, 0, 0, 0, 0, 0, -/* 98 - ??? */ 0, 0, 0, 0, 0, 0, -/* 99 - ??? */ 0, 0, 0, 0, 0, 0, -/*100 - ??? */ 0, 0, 0, 0, 0, 0, -/*101 - ??? */ 0, 0, 0, 0, 0, 0, -/*102 - ??? */ 0, 0, 0, 0, 0, 0, -/*103 - ??? */ 0, 0, 0, 0, 0, 0, -/*104 - ??? */ 0, 0, 0, 0, 0, 0, -/*105 - ??? */ 0, 0, 0, 0, 0, 0, -/*106 - ??? */ 0, 0, 0, 0, 0, 0, -/*107 - ??? */ 0, 0, 0, 0, 0, 0, -/*108 - ??? */ 0, 0, 0, 0, 0, 0, -/*109 - ??? */ 0, 0, 0, 0, 0, 0, -/*110 - ??? */ 0, 0, 0, 0, 0, 0, -/*111 - ??? */ 0, 0, 0, 0, 0, 0, -/*112 - ??? */ 0, 0, 0, 0, 0, 0, -/*113 - ??? */ 0, 0, 0, 0, 0, 0, -/*114 - ??? */ 0, 0, 0, 0, 0, 0, -/*115 - ??? */ 0, 0, 0, 0, 0, 0, -/*116 - ??? */ 0, 0, 0, 0, 0, 0, -/*117 - ??? */ 0, 0, 0, 0, 0, 0, -/*118 - ??? */ 0, 0, 0, 0, 0, 0, -/*119 - ??? */ 0, 0, 0, 0, 0, 0, -/*120 - ??? */ 0, 0, 0, 0, 0, 0, -/*121 - ??? */ 0, 0, 0, 0, 0, 0, -/*122 - ??? */ 0, 0, 0, 0, 0, 0, -/*123 - ??? */ 0, 0, 0, 0, 0, 0, -/*124 - ??? */ 0, 0, 0, 0, 0, 0, -/*125 - ??? */ 0, 0, 0, 0, 0, 0, -/*126 - ??? */ 0, 0, 0, 0, 0, 0, -/*127 - ??? */ 0, 0, 0, 0, 0, 0 + K(A) = { L('a'), 'A', A('a'), A('a'), A('A'), C('A') }, + K(B) = { L('b'), 'B', A('b'), A('b'), A('B'), C('B') }, + K(C) = { L('c'), 'C', A('c'), A('c'), A('C'), C('C') }, + K(D) = { L('d'), 'D', A('d'), A('d'), A('D'), C('D') }, + K(E) = { L('e'), 'E', A('e'), A('e'), A('E'), C('E') }, + K(F) = { L('f'), 'F', A('f'), A('f'), A('F'), C('F') }, + K(G) = { L('g'), 'G', A('g'), A('g'), A('G'), C('G') }, + K(H) = { L('h'), 'H', A('h'), A('h'), A('H'), C('H') }, + K(I) = { L('i'), 'I', A('i'), A('i'), A('I'), C('I') }, + K(J) = { L('j'), 'J', A('j'), A('j'), A('J'), C('J') }, + K(K) = { L('k'), 'K', A('k'), A('k'), A('K'), C('K') }, + K(L) = { L('l'), 'L', A('l'), A('l'), A('L'), C('L') }, + K(M) = { L('m'), 'M', A('m'), A('m'), A('M'), C('M') }, + K(N) = { L('n'), 'N', A('n'), A('n'), A('N'), C('N') }, + K(O) = { L('o'), 'O', A('o'), A('o'), A('O'), C('O') }, + K(P) = { L('p'), 'P', A('p'), A('p'), A('P'), C('P') }, + K(Q) = { L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q') }, + K(R) = { L('r'), 'R', A('r'), A('r'), A('R'), C('R') }, + K(S) = { L('s'), 'S', A('s'), A('s'), A('S'), C('S') }, + K(T) = { L('t'), 'T', A('t'), A('t'), A('T'), C('T') }, + K(U) = { L('u'), 'U', A('u'), A('u'), A('U'), C('U') }, + K(V) = { L('v'), 'V', A('v'), A('v'), A('V'), C('V') }, + K(W) = { L('w'), 'W', A('w'), A('w'), A('W'), C('W') }, + K(X) = { L('x'), 'X', A('x'), A('x'), A('X'), C('X') }, + K(Y) = { L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y') }, + K(Z) = { L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z') }, + K(1) = { '1', '!', A('1'), A('1'), A('!'), C('A') }, + K(2) = { '2', '@', A('2'), A('2'), A('@'), C('@') }, + K(3) = { '3', '#', A('3'), A('3'), A('#'), C('C') }, + K(4) = { '4', '$', A('4'), A('4'), A('$'), C('D') }, + K(5) = { '5', '%', A('5'), A('5'), A('%'), C('E') }, + K(6) = { '6', '^', A('6'), A('6'), A('^'), C('^') }, + K(7) = { '7', '&', A('7'), A('7'), A('&'), C('G') }, + K(8) = { '8', '*', A('8'), A('8'), A('*'), C('H') }, + K(9) = { '9', '(', A('9'), A('9'), A('('), C('I') }, + K(0) = { '0', ')', A('0'), A('0'), A(')'), C('@') }, + K(ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') }, + K(BACKSPACE) = { C('H'), C('H'), CA('H'),CA('H'),CA('H'),DEL }, + K(TAB) = { C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I') }, + K(SPACEBAR) = { ' ', ' ', A(' '), A(' '), A(' '), C('@') }, + K(DASH) = { '-', '_', A('-'), A('-'), A('_'), C('_') }, + K(EQUAL) = { '=', '+', A('='), A('='), A('+'), C('@') }, + K(OPEN_BRACKET) = { '[', '{', A('['), A('['), A('{'), C('[') }, + K(CLOSE_BRACKET) = { ']', '}', A(']'), A(']'), A('}'), C(']') }, + K(BACKSLASH) = { '\\', '|', A('\\'),A('\\'),A('|'), C('\\') }, + K(SEMICOLON) = { ';', ':', A(';'), A(';'), A(':'), C('@') }, + K(APOSTROPH) = { '\'', '"', A('\''),A('\''),A('"'), C('@') }, + K(GRAVE_ACCENT) = { '`', '~', A('`'), A('`'), A('~'), C('@') }, + K(COMMA) = { ',', '<', A(','), A(','), A('<'), C('@') }, + K(PERIOD) = { '.', '>', A('.'), A('.'), A('>'), C('@') }, + K(SLASH) = { '/', '?', A('/'), A('/'), A('?'), C('@') }, + K(CAPS_LOCK) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL }, + K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 }, + K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 }, + K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 }, + K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 }, + K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 }, + K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 }, + K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 }, + K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 }, + K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 }, + K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 }, + K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 }, + K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 }, + K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK }, + K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT }, + K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME }, + K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP }, + K(DELETE) = { DEL, DEL, A(DEL), A(DEL), A(DEL), DEL }, + K(END) = { END, END, AEND, AEND, AEND, CEND }, + K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN }, + K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT }, + K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT }, + K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN }, + K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP }, + K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK }, + K(KP_SLASH) = { '/', '/', A('/'), A('/'), A('/'), C('@') }, + K(KP_STAR) = { '*', '*', A('*'), A('*'), A('*'), C('@') }, + K(KP_DASH) = { '-', '-', AMIN, AMIN, A('-'), CMIN }, + K(KP_PLUS) = { '+', '+', APLUS, APLUS, A('+'), CPLUS }, + K(KP_ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(KP_1) = { NEND, '1', AEND, AEND, A('1'), CEND }, + K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, A('2'), CDOWN }, + K(KP_3) = { NPGDN, '3', APGDN, APGDN, A('3'), CPGDN }, + K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, A('4'), CLEFT }, + K(KP_5) = { NMID, '5', AMID, AMID, A('5'), CMID }, + K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT }, + K(KP_7) = { NHOME, '7', AHOME, AHOME, A('7'), CHOME }, + K(KP_8) = { NUP, '8', AUP, AUP, A('8'), CUP }, + K(KP_9) = { NPGUP, '9', APGUP, APGUP, A('9'), CPGUP }, + K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, A('0'), CINSRT }, + K(KP_PERIOD) = { NDEL, '.', A(DEL), A(DEL), A('.'), DEL }, + K(EUROPE_2) = { '<', '>', A('<'), A('|'), A('>'), C('@') }, + K(APPLICATION) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(SYSREQ) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') }, + K(LEFT_CTRL) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK }, + K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT }, + K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT }, + K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT }, + K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL }, + K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT }, + K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT }, + K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT } diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c index 2a16fd074..6f3d0fcdb 100644 --- a/drivers/tty/pty.c +++ b/drivers/tty/pty.c @@ -516,7 +516,7 @@ static int pty_slave_read(tty_t *tp, int try) } /* Input processing. */ - if (in_process(tp, &c, 1, -1) == 0) break; + if (in_process(tp, &c, 1) == 0) break; /* PTY writer bookkeeping. */ pp->wrcum++; diff --git a/drivers/tty/tty.c b/drivers/tty/tty.c index 655becf06..db3981068 100644 --- a/drivers/tty/tty.c +++ b/drivers/tty/tty.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include "tty.h" @@ -34,7 +35,6 @@ #include #include -unsigned long kbd_irq_set = 0; unsigned long rs_irq_set = 0; /* Address of a tty structure. */ @@ -171,10 +171,7 @@ int main(void) break; case HARDWARE: /* hardware interrupt notification */ - - /* fetch chars from keyboard */ - if (tty_mess.NOTIFY_ARG & kbd_irq_set) - kbd_interrupt(&tty_mess); + #if NR_RS_LINES > 0 /* serial I/O */ if (tty_mess.NOTIFY_ARG & rs_irq_set) @@ -196,8 +193,9 @@ int main(void) case TTY_FKEY_CONTROL: /* (un)register a fkey observer */ do_fkey_ctl(&tty_mess); continue; - case INPUT_EVENT: - do_kb_inject(&tty_mess); + case TTY_INPUT_UP: + case TTY_INPUT_EVENT: + do_input(&tty_mess); continue; default: /* should be a driver request */ ; /* do nothing; end switch */ @@ -212,10 +210,7 @@ int main(void) * All requests have a minor device number. */ line = tty_mess.CDEV_MINOR; - if (line == KBD_MINOR || line == KBDAUX_MINOR) { - do_kbd(&tty_mess, ipc_status); - continue; - } else if (line == VIDEO_MINOR) { + if (line == VIDEO_MINOR) { do_video(&tty_mess, ipc_status); continue; } else if (line - PTYPX_MINOR < NR_PTYS && @@ -270,7 +265,7 @@ line2tty(devminor_t line) if (line == CONS_MINOR || line == LOG_MINOR) line = consoleline; - if (line == KBD_MINOR || line == KBDAUX_MINOR || line == VIDEO_MINOR) { + if (line == VIDEO_MINOR) { return(NULL); } else if ((line - CONS_MINOR) < NR_CONS) { tp = tty_addr(line - CONS_MINOR); @@ -595,53 +590,20 @@ static int do_ioctl(devminor_t minor, unsigned long request, endpoint_t endpt, /* Perform an IOCTL on this terminal. POSIX termios calls are handled * by the IOCTL system call. */ + kio_bell_t bell; + clock_t ticks; tty_t *tp; int i, r; - size_t size; if ((tp = line2tty(minor)) == NULL) return ENXIO; - /* Size of the ioctl parameter. */ - switch (request) { - case TCGETS: /* Posix tcgetattr function */ - case TCSETS: /* Posix tcsetattr function, TCSANOW option */ - case TCSETSW: /* Posix tcsetattr function, TCSADRAIN option */ - case TCSETSF: /* Posix tcsetattr function, TCSAFLUSH option */ - size = sizeof(struct termios); - break; - - case TCSBRK: /* Posix tcsendbreak function */ - case TCFLOW: /* Posix tcflow function */ - case TCFLSH: /* Posix tcflush function */ - case TIOCGPGRP: /* Posix tcgetpgrp function */ - case TIOCSPGRP: /* Posix tcsetpgrp function */ - size = sizeof(int); - break; - - case TIOCGWINSZ: /* get window size (not Posix) */ - case TIOCSWINSZ: /* set window size (not Posix) */ - size = sizeof(struct winsize); - break; - - case KIOCSMAP: /* load keymap (Minix extension) */ - size = sizeof(keymap_t); - break; - - case TIOCSFON: /* load font (Minix extension) */ - size = sizeof(u8_t [8192]); - break; - - case TCDRAIN: /* Posix tcdrain function -- no parameter */ - default: size = 0; - } - r = OK; switch (request) { case TCGETS: /* Get the termios attributes. */ r = sys_safecopyto(endpt, grant, 0, (vir_bytes) &tp->tty_termios, - size); + sizeof(struct termios)); break; case TCSETSW: @@ -663,13 +625,13 @@ static int do_ioctl(devminor_t minor, unsigned long request, endpoint_t endpt, case TCSETS: /* Set the termios attributes. */ r = sys_safecopyfrom(endpt, grant, 0, (vir_bytes) &tp->tty_termios, - size); + sizeof(struct termios)); if (r != OK) break; setattr(tp); break; case TCFLSH: - r = sys_safecopyfrom(endpt, grant, 0, (vir_bytes) &i, size); + r = sys_safecopyfrom(endpt, grant, 0, (vir_bytes) &i, sizeof(i)); if (r != OK) break; switch (i) { case TCIFLUSH: tty_icancel(tp); break; @@ -680,7 +642,7 @@ static int do_ioctl(devminor_t minor, unsigned long request, endpoint_t endpt, break; case TCFLOW: - r = sys_safecopyfrom(endpt, grant, 0, (vir_bytes) &i, size); + r = sys_safecopyfrom(endpt, grant, 0, (vir_bytes) &i, sizeof(i)); if (r != OK) break; switch (i) { case TCOOFF: @@ -705,15 +667,29 @@ static int do_ioctl(devminor_t minor, unsigned long request, endpoint_t endpt, case TIOCGWINSZ: r = sys_safecopyto(endpt, grant, 0, (vir_bytes) &tp->tty_winsize, - size); + sizeof(struct winsize)); break; case TIOCSWINSZ: r = sys_safecopyfrom(endpt, grant, 0, (vir_bytes) &tp->tty_winsize, - size); + sizeof(struct winsize)); sigchar(tp, SIGWINCH, 0); break; + case KIOCBELL: + /* Sound bell (only /dev/console). */ + if (!isconsole(tp)) + break; + r = sys_safecopyfrom(endpt, grant, 0, (vir_bytes) &bell, sizeof(bell)); + if (r != OK) + break; + ticks = bell.kb_duration.tv_usec * system_hz / 1000000; + ticks += bell.kb_duration.tv_sec * system_hz; + if (!ticks) + ticks++; + beep_x(bell.kb_pitch, ticks); + break; + case KIOCSMAP: /* Load a new keymap (only /dev/console). */ if (isconsole(tp)) r = kbd_loadmap(endpt, grant); @@ -1034,27 +1010,10 @@ register tty_t *tp; /* pointer to terminal to read from */ /*===========================================================================* * in_process * *===========================================================================*/ -static void in_process_send_byte( - tty_t *tp, /* terminal on which character has arrived */ - int ch /* input character */ -) -{ - /* Save the character in the input queue. */ - *tp->tty_inhead++ = ch; - if (tp->tty_inhead == bufend(tp->tty_inbuf)) - tp->tty_inhead = tp->tty_inbuf; - tp->tty_incount++; - if (ch & IN_EOT) tp->tty_eotct++; - - /* Try to finish input if the queue threatens to overflow. */ - if (tp->tty_incount == buflen(tp->tty_inbuf)) in_transfer(tp); -} - -int in_process(tp, buf, count, scode) +int in_process(tp, buf, count) register tty_t *tp; /* terminal on which character has arrived */ char *buf; /* buffer with input characters */ int count; /* number of input characters */ -int scode; /* scan code */ { /* Characters have just been typed in. Process, save, and echo them. Return * the number of characters processed. @@ -1063,11 +1022,6 @@ int scode; /* scan code */ int ch, sig, ct; int timeset = FALSE; - /* Send scancode if requested */ - if (tp->tty_termios.c_iflag & SCANCODES) { - in_process_send_byte(tp, (scode & BYTE) | IN_EOT); - } - for (ct = 0; ct < count; ct++) { /* Take one character. */ ch = *buf++ & BYTE; @@ -1200,10 +1154,15 @@ int scode; /* scan code */ /* Perform the intricate function of echoing. */ if (tp->tty_termios.c_lflag & (ECHO|ECHONL)) ch = tty_echo(tp, ch); - /* Send processed byte of input unless scancodes sent instead */ - if (!(tp->tty_termios.c_iflag & SCANCODES)) { - in_process_send_byte(tp, ch); - } + /* Save the character in the input queue. */ + *tp->tty_inhead++ = ch; + if (tp->tty_inhead == bufend(tp->tty_inbuf)) + tp->tty_inhead = tp->tty_inbuf; + tp->tty_incount++; + if (ch & IN_EOT) tp->tty_eotct++; + + /* Try to finish input if the queue threatens to overflow. */ + if (tp->tty_incount == buflen(tp->tty_inbuf)) in_transfer(tp); } return ct; } @@ -1510,9 +1469,6 @@ tty_t *tp; /* Setting the output speed to zero hangs up the phone. */ if (tp->tty_termios.c_ospeed == B0) sigchar(tp, SIGHUP, 1); - /* SCANCODES is supported only for the console */ - if (!isconsole(tp)) tp->tty_termios.c_iflag &= ~SCANCODES; - /* Set new line speed, character size, etc at the device level. */ (*tp->tty_ioctl)(tp, 0); } diff --git a/drivers/tty/tty.h b/drivers/tty/tty.h index de5605b79..cd39700ea 100644 --- a/drivers/tty/tty.h +++ b/drivers/tty/tty.h @@ -3,15 +3,10 @@ #include #include -#undef lock -#undef unlock - /* First minor numbers for the various classes of TTY devices. */ #define CONS_MINOR 0 #define LOG_MINOR 15 #define RS232_MINOR 16 -#define KBD_MINOR 127 -#define KBDAUX_MINOR 126 #define VIDEO_MINOR 125 #define TTYPX_MINOR 128 #define PTYPX_MINOR 192 @@ -132,7 +127,7 @@ void handle_events(struct tty *tp); void sigchar(struct tty *tp, int sig, int mayflush); void tty_task(void); tty_t *line2tty(devminor_t minor); -int in_process(struct tty *tp, char *buf, int count, int scode); +int in_process(struct tty *tp, char *buf, int count); void out_process(struct tty *tp, char *bstart, char *bpos, char *bend, int *icount, int *ocount); void tty_wakeup(clock_t now); @@ -158,9 +153,7 @@ void kb_init(struct tty *tp); void kb_init_once(void); int kbd_loadmap(endpoint_t endpt, cp_grant_id_t grant); void do_fkey_ctl(message *m); -void kbd_interrupt(message *m); -void do_kbd(message *m, int ipc_status); -void do_kb_inject(message *m); +void do_input(message *m); /* pty.c */ void do_pty(message *m_ptr, int ipc_status); diff --git a/etc/Makefile b/etc/Makefile index f070c3a3b..e062fbe9e 100644 --- a/etc/Makefile +++ b/etc/Makefile @@ -303,7 +303,6 @@ CONFIGSYMLINKS+= \ /usr/tmp /var/tmp \ /usr/pkg/bin/clang /usr/bin/cc \ /usr/pkg/bin/strip /usr/bin/strip \ - /dev/kbdaux /dev/mouse \ /proc/mounts /etc/mtab .endif # !defined(__MINIX) diff --git a/etc/system.conf b/etc/system.conf index 91d66df30..854901574 100644 --- a/etc/system.conf +++ b/etc/system.conf @@ -181,7 +181,7 @@ service tty io ALL; # ALL I/O ranges allowed irq NONE; # No IRQ allowed sigmgr rs; # Signal manager is RS - scheduler sched; # Scheduler is sched + scheduler KERNEL; # Scheduler is KERNEL (prevents console stalls) priority 1; # priority queue 1 quantum 50; # default driver quantum }; @@ -514,6 +514,28 @@ service filter ; }; +service input +{ + ipc SYSTEM pm vfs rs ds tty vm; + priority 1; +}; + + +service pckbd +{ + system + IRQCTL # 19 + DEVIO # 21 + ; + io 60:8; # Keyboard, keyboard command/status + irq + 1 # Keyboard + 12 # Auxiliary input (mouse) + ; + ipc SYSTEM pm rs ds vm input; + priority 1; +}; + service hello { system diff --git a/include/minix/Makefile b/include/minix/Makefile index 030ebc387..46182de67 100644 --- a/include/minix/Makefile +++ b/include/minix/Makefile @@ -11,7 +11,8 @@ INCS+= acpi.h audio_fw.h bitmap.h \ debug.h devio.h devman.h dmap.h \ driver.h drivers.h drvlib.h ds.h \ endpoint.h fb.h fslib.h gpio.h gcov.h hash.h \ - hgfs.h i2c.h i2cdriver.h ioctl.h input.h ipc.h ipcconst.h \ + hgfs.h i2c.h i2cdriver.h ioctl.h input.h \ + inputdriver.h ipc.h ipcconst.h \ keymap.h log.h mmio.h mount.h mthread.h minlib.h \ netdriver.h optset.h padconf.h partition.h portio.h \ priv.h procfs.h profile.h queryparam.h \ diff --git a/include/minix/com.h b/include/minix/com.h index afe40b4d2..daecba69d 100644 --- a/include/minix/com.h +++ b/include/minix/com.h @@ -23,9 +23,9 @@ * 0x1000 - 0x10FF Notify messages * 0x1100 - 0x11FF USB * 0x1200 - 0x12FF Devman - * 0x1300 - 0x13FF TTY Requests + * 0x1300 - 0x13FF TTY requests * 0x1400 - 0x14FF VFS-FS transaction IDs - * 0x1500 - 0x15FF (unused) + * 0x1500 - 0x15FF Input server messages * 0x1600 - 0x16FF VirtualBox (VBOX) requests (see vboxif.h) * 0x1700 - 0x17FF Real Time Clock requests and responses * @@ -1229,18 +1229,11 @@ # define DEVMAN_RESULT m4_l1 /*===========================================================================* - * TTY REQUESTS * + * Messages for TTY * *===========================================================================*/ #define TTY_RQ_BASE 0x1300 -#define INPUT_EVENT (TTY_RQ_BASE + 0) - -# define INPUT_TYPE m4_l1 -# define INPUT_CODE m4_l2 -# define INPUT_VALUE m4_l3 - - #define TTY_FKEY_CONTROL (TTY_RQ_BASE + 1) /* control an F-key at TTY */ # define FKEY_REQUEST m2_i1 /* request to perform at TTY */ # define FKEY_MAP 10 /* observe function key */ @@ -1249,7 +1242,35 @@ # define FKEY_FKEYS m2_l1 /* F1-F12 keys pressed */ # define FKEY_SFKEYS m2_l2 /* Shift-F1-F12 keys pressed */ -#endif +#define TTY_INPUT_UP (TTY_RQ_BASE + 2) /* input server is up */ +/* This message uses no message fields. */ + +#define TTY_INPUT_EVENT (TTY_RQ_BASE + 3) /* relayed input event */ +/* This message shares its message fields with INPUT_EVENT. */ + +/*===========================================================================* + * Messages for input server and drivers * + *===========================================================================*/ + +/* The input protocol has no real replies. All messages are one-way. */ +#define INPUT_RQ_BASE 0x1500 /* from TTY to server, or server to driver */ +#define INPUT_RS_BASE 0x1580 /* from input driver to input server */ + +#define INPUT_CONF (INPUT_RQ_BASE + 0) /* configure driver */ +# define INPUT_KBD_ID m7_i1 /* keyboard device ID */ +# define INPUT_MOUSE_ID m7_i2 /* mouse device ID */ +# define INPUT_RSVD1_ID m7_i3 /* ID for as yet unallocated type */ +# define INPUT_RSVD2_ID m7_i4 /* ID for as yet unallocated type */ + +#define INPUT_SETLEDS (INPUT_RQ_BASE + 1) /* set keyboard LEDs */ +# define INPUT_LED_MASK m7_i1 /* status mask of LEDs */ + +#define INPUT_EVENT (INPUT_RS_BASE + 0) /* send input event */ +# define INPUT_ID m7_i1 /* device ID */ +# define INPUT_PAGE m7_i2 /* usage page */ +# define INPUT_CODE m7_i3 /* usage code */ +# define INPUT_VALUE m7_i4 /* event value */ +# define INPUT_FLAGS m7_i5 /* flags associated with value */ /*===========================================================================* * VFS-FS TRANSACTION IDs * @@ -1403,4 +1424,4 @@ #define SUSPEND -998 /* status to suspend caller, reply later */ -/* _MINIX_COM_H */ +#endif /* !_MINIX_COM_H */ diff --git a/include/minix/dmap.h b/include/minix/dmap.h index c7b59d11e..b4e560f89 100644 --- a/include/minix/dmap.h +++ b/include/minix/dmap.h @@ -11,9 +11,6 @@ enum dev_style { STYLE_NDEV, STYLE_DEV, STYLE_TTY, STYLE_CTTY }; * Major and minor device numbers * *===========================================================================*/ -/* Total number of different devices. */ -#define NR_DEVICES NR_SYS_PROCS /* number of (major) devices */ - /* Major device numbers. */ #define NONE_MAJOR 0 /* 0 = not used */ #define MEMORY_MAJOR 1 /* 1 = /dev/mem (memory devices) */ @@ -72,6 +69,9 @@ enum dev_style { STYLE_NDEV, STYLE_DEV, STYLE_TTY, STYLE_CTTY }; #define BMP085B2S77_MAJOR 54 /* 54 = /dev/bmp085b2s77 (bmp085) */ #define BMP085B3S77_MAJOR 55 /* 55 = /dev/bmp085b3s77 (bmp085) */ /* 56-63 = /dev/vnd[0-7] (vnd) */ +#define INPUT_MAJOR 64 /* 64 = /dev/input (input) */ + +#define NR_DEVICES 65 /* number of (major) devices */ /* Minor device numbers for memory driver. */ # define RAM_DEV_OLD 0 /* minor device for /dev/ram */ diff --git a/include/minix/input.h b/include/minix/input.h index 65d3ed504..f819294a6 100644 --- a/include/minix/input.h +++ b/include/minix/input.h @@ -1,8 +1,333 @@ #ifndef _MINIX_INPUT_H #define _MINIX_INPUT_H -#define INPUT_EV_KEY 0x1 -#define INPUT_EV_REL 0x2 -#define INPUT_EV_ABS 0x3 +#include + +#ifdef _SYSTEM + +/* Device type. */ +#define INPUT_DEV_KBD 0x01 /* keyboard device */ +#define INPUT_DEV_MOUSE 0x02 /* mouse device */ + +/* Known-invalid input device ID. */ +#define INVALID_INPUT_ID (-1) + +#endif /* _SYSTEM */ + +/* + * The input server heavily draws on the USB HID specification for events. + * Every driver should convert its event codes into this format. This also + * implies that we use the U.S. keyboard layout for key events. The mapping to + * localized keyboard layouts will be done at a different place (TTY, Xserver). + */ + +/* A single event, as read from one of the input devices. */ +struct input_event { + uint16_t page; /* event page (INPUT_PAGE_) */ + uint16_t code; /* page-specific event code */ + int32_t value; /* event value */ + uint16_t flags; /* event flags (INPUT_FLAG_) */ + uint16_t devid; /* identifier of source device */ + uint32_t rsvd[2]; /* reserved for a future timestamp */ +}; + +/* Event pages. */ +#define INPUT_PAGE_GD 0x0001 /* General Desktop page */ +#define INPUT_PAGE_KEY 0x0007 /* Keyboard/Keypad page */ +#define INPUT_PAGE_LED 0x0008 /* LED page */ +#define INPUT_PAGE_BUTTON 0x0009 /* Button page */ +#define INPUT_PAGE_CONS 0x000C /* Consumer page */ + +/* Event values. Not exhaustive. */ +#define INPUT_RELEASE 0 +#define INPUT_PRESS 1 + +/* Event flags. */ +#define INPUT_FLAG_ABS 0x00 /* absolute value (the default) */ +#define INPUT_FLAG_REL 0x04 /* relative value */ + +/* Page-specific event codes. */ +enum { + INPUT_GD_X = 0x0030, + INPUT_GD_Y, + + INPUT_GD_SYSTEM_POWER_DOWN = 0x0081, + INPUT_GD_SYSTEM_SLEEP, + INPUT_GD_SYSTEM_WAKE_UP +}; + +enum { + INPUT_KEY_A = 0x0004, + INPUT_KEY_B, + INPUT_KEY_C, + INPUT_KEY_D, + INPUT_KEY_E, + INPUT_KEY_F, + INPUT_KEY_G, + INPUT_KEY_H, + INPUT_KEY_I, + INPUT_KEY_J, + INPUT_KEY_K, + INPUT_KEY_L, + INPUT_KEY_M, + INPUT_KEY_N, + INPUT_KEY_O, + INPUT_KEY_P, + INPUT_KEY_Q, + INPUT_KEY_R, + INPUT_KEY_S, + INPUT_KEY_T, + INPUT_KEY_U, + INPUT_KEY_V, + INPUT_KEY_W, + INPUT_KEY_X, + INPUT_KEY_Y, + INPUT_KEY_Z, + INPUT_KEY_1, + INPUT_KEY_2, + INPUT_KEY_3, + INPUT_KEY_4, + INPUT_KEY_5, + INPUT_KEY_6, + INPUT_KEY_7, + INPUT_KEY_8, + INPUT_KEY_9, + INPUT_KEY_0, + + INPUT_KEY_ENTER, + INPUT_KEY_ESCAPE, + INPUT_KEY_BACKSPACE, + INPUT_KEY_TAB, + INPUT_KEY_SPACEBAR, + INPUT_KEY_DASH, + INPUT_KEY_EQUAL, + INPUT_KEY_OPEN_BRACKET, + INPUT_KEY_CLOSE_BRACKET, + INPUT_KEY_BACKSLASH, + INPUT_KEY_EUROPE_1, + INPUT_KEY_SEMICOLON, + INPUT_KEY_APOSTROPH, + INPUT_KEY_GRAVE_ACCENT, + INPUT_KEY_COMMA, + INPUT_KEY_PERIOD, + INPUT_KEY_SLASH, + INPUT_KEY_CAPS_LOCK, + + INPUT_KEY_F1, + INPUT_KEY_F2, + INPUT_KEY_F3, + INPUT_KEY_F4, + INPUT_KEY_F5, + INPUT_KEY_F6, + INPUT_KEY_F7, + INPUT_KEY_F8, + INPUT_KEY_F9, + INPUT_KEY_F10, + INPUT_KEY_F11, + INPUT_KEY_F12, + + INPUT_KEY_PRINT_SCREEN, + INPUT_KEY_SCROLL_LOCK, + INPUT_KEY_PAUSE, + INPUT_KEY_INSERT, + INPUT_KEY_HOME, + INPUT_KEY_PAGE_UP, + INPUT_KEY_DELETE, + INPUT_KEY_END, + INPUT_KEY_PAGE_DOWN, + INPUT_KEY_RIGHT_ARROW, + INPUT_KEY_LEFT_ARROW, + INPUT_KEY_DOWN_ARROW, + INPUT_KEY_UP_ARROW, + INPUT_KEY_NUM_LOCK, + + INPUT_KEY_KP_SLASH, + INPUT_KEY_KP_STAR, + INPUT_KEY_KP_DASH, + INPUT_KEY_KP_PLUS, + INPUT_KEY_KP_ENTER, + INPUT_KEY_KP_1, + INPUT_KEY_KP_2, + INPUT_KEY_KP_3, + INPUT_KEY_KP_4, + INPUT_KEY_KP_5, + INPUT_KEY_KP_6, + INPUT_KEY_KP_7, + INPUT_KEY_KP_8, + INPUT_KEY_KP_9, + INPUT_KEY_KP_0, + INPUT_KEY_KP_PERIOD, + + INPUT_KEY_EUROPE_2, + INPUT_KEY_APPLICATION, + INPUT_KEY_POWER, + INPUT_KEY_KP_EQUAL, + + INPUT_KEY_F13, + INPUT_KEY_F14, + INPUT_KEY_F15, + INPUT_KEY_F16, + INPUT_KEY_F17, + INPUT_KEY_F18, + INPUT_KEY_F19, + INPUT_KEY_F20, + INPUT_KEY_F21, + INPUT_KEY_F22, + INPUT_KEY_F23, + INPUT_KEY_F24, + + INPUT_KEY_EXECUTE, + INPUT_KEY_HELP, + INPUT_KEY_MENU, + INPUT_KEY_SELECT, + INPUT_KEY_STOP, + INPUT_KEY_AGAIN, + INPUT_KEY_UNDO, + INPUT_KEY_CUT, + INPUT_KEY_COPY, + INPUT_KEY_PASTE, + INPUT_KEY_FIND, + INPUT_KEY_MUTE, + INPUT_KEY_VOLUME_UP, + INPUT_KEY_VOLUME_DOWN, + INPUT_KEY_LOCKING_CAPS_LOCK, + INPUT_KEY_LOCKING_NUM_LOCK, + INPUT_KEY_LOCKING_SCROLL_LOCK, + INPUT_KEY_KP_COMMA, + INPUT_KEY_EQUAL_SIGN, + INPUT_KEY_I10L_1, + INPUT_KEY_I10L_2, + INPUT_KEY_I10L_3, + INPUT_KEY_I10L_4, + INPUT_KEY_I10L_5, + INPUT_KEY_I10L_6, + INPUT_KEY_I10L_7, + INPUT_KEY_I10L_8, + INPUT_KEY_I10L_9, + INPUT_KEY_LANG_1, + INPUT_KEY_LANG_2, + INPUT_KEY_LANG_3, + INPUT_KEY_LANG_4, + INPUT_KEY_LANG_5, + INPUT_KEY_LANG_6, + INPUT_KEY_LANG_7, + INPUT_KEY_LANG_8, + INPUT_KEY_LANG_9, + INPUT_KEY_ALT_ERASE, + INPUT_KEY_SYSREQ, + INPUT_KEY_CANCEL, + INPUT_KEY_CLEAR, + INPUT_KEY_PRIOR, + INPUT_KEY_RETURN, + INPUT_KEY_SEPARATOR, + INPUT_KEY_OUT, + INPUT_KEY_OPER, + INPUT_KEY_CLEAR_AGAIN, + INPUT_KEY_CR_SEL, + INPUT_KEY_EX_SEL, + + /* 0x00A5 -- 0x00AF RESERVED */ + + INPUT_KEY_KP_00 = 0x00B0, + INPUT_KEY_KP_000, + INPUT_KEY_THOUSANDS_SEP, + INPUT_KEY_DECIMAL_SEP, + INPUT_KEY_CURRENCY_UNIT, + INPUT_KEY_CURRENCY_SUBUNIT, + INPUT_KEY_KP_OPEN_PARENTHESIS, + INPUT_KEY_KP_CLOSE_PARENTHESIS, + INPUT_KEY_KP_OPEN_BRACE, + INPUT_KEY_KP_CLOSE_BRACE, + INPUT_KEY_KP_TAB, + INPUT_KEY_KP_BACKSPACE, + INPUT_KEY_KP_A, + INPUT_KEY_KP_B, + INPUT_KEY_KP_C, + INPUT_KEY_KP_D, + INPUT_KEY_KP_E, + INPUT_KEY_KP_F, + INPUT_KEY_KP_XOR, + INPUT_KEY_KP_CARET, + INPUT_KEY_KP_PERCENT, + INPUT_KEY_KP_SMALLER_THEN, + INPUT_KEY_KP_GREATER_THEN, + INPUT_KEY_KP_AMP, + INPUT_KEY_KP_DOUBLE_AMP, + INPUT_KEY_KP_PIPE, + INPUT_KEY_KP_DOUBLE_PIPE, + INPUT_KEY_KP_COLON, + INPUT_KEY_KP_NUMBER, + INPUT_KEY_KP_SPACE, + INPUT_KEY_KP_AT, + INPUT_KEY_KP_EXCLAMATION_MARK, + INPUT_KEY_KP_MEM_STORE, + INPUT_KEY_KP_MEM_RECALL, + INPUT_KEY_KP_MEM_CLEAR, + INPUT_KEY_KP_MEM_ADD, + INPUT_KEY_KP_MEM_SUBTRACT, + INPUT_KEY_KP_MEM_MULTIPLY, + INPUT_KEY_KP_MEM_DIVIDE, + INPUT_KEY_KP_PLUS_MINUS, + INPUT_KEY_KP_CLEAR, + INPUT_KEY_KP_CLEAR_ENTRY, + INPUT_KEY_KP_BIN, + INPUT_KEY_KP_OCT, + INPUT_KEY_KP_DEC, + INPUT_KEY_KP_HEX, + + /* 0x00DE, 0x00DF RESERVED */ + + INPUT_KEY_LEFT_CTRL = 0x00E0, + INPUT_KEY_LEFT_SHIFT, + INPUT_KEY_LEFT_ALT, + INPUT_KEY_LEFT_GUI, + INPUT_KEY_RIGHT_CTRL, + INPUT_KEY_RIGHT_SHIFT, + INPUT_KEY_RIGHT_ALT, + INPUT_KEY_RIGHT_GUI + + /* 0x00E8 -- 0xFFFF RESERVED */ +}; + +enum { + INPUT_LED_NUMLOCK = 0x0001, + INPUT_LED_CAPSLOCK, + INPUT_LED_SCROLLLOCK +}; + +enum { + INPUT_BUTTON_1 = 0x0001, +}; + +enum { + INPUT_CONS_SCAN_NEXT_TRACK = 0x00B5, + INPUT_CONS_SCAN_PREVIOUS_TRACK, + INPUT_CONS_STOP, + + INPUT_CONS_PLAY_PAUSE = 0x00CD, + + INPUT_CONS_MUTE = 0x00E2, + + INPUT_CONS_VOLUME_UP = 0x00E9, + INPUT_CONS_VOLUME_DOWN, + + INPUT_CONS_AL_MEDIA_SELECT = 0x0183, + + INPUT_CONS_AL_EMAIL_READER = 0x018A, + + INPUT_CONS_AL_CALCULATOR = 0x0192, + + INPUT_CONS_AL_LOCAL_BROWSER = 0x0194, + + INPUT_CONS_AC_SEARCH = 0x0221, + INPUT_CONS_AC_GO_TO, + INPUT_CONS_AC_HOME, + INPUT_CONS_AC_BACK, + INPUT_CONS_AC_FORWARD, + INPUT_CONS_AC_STOP, + INPUT_CONS_AC_REFRESH, + + INPUT_CONS_AC_BOOKMARKS = 0x022A +}; #endif diff --git a/include/minix/inputdriver.h b/include/minix/inputdriver.h new file mode 100644 index 000000000..f225a8cf1 --- /dev/null +++ b/include/minix/inputdriver.h @@ -0,0 +1,24 @@ +#ifndef _MINIX_INPUTDRIVER_H +#define _MINIX_INPUTDRIVER_H + +#include +#include + +/* Entry points into the device dependent code of input drivers. */ +struct inputdriver { + void (*idr_leds)(unsigned int leds); + void (*idr_intr)(unsigned int mask); + void (*idr_alarm)(clock_t stamp); + void (*idr_other)(message *m_ptr, int ipc_status); +}; + +/* Functions defined by libinputdriver. */ +void inputdriver_announce(unsigned int type); +void inputdriver_send_event(int mouse, unsigned short page, + unsigned short code, int value, int flags); +void inputdriver_process(struct inputdriver *idp, message *m_ptr, + int ipc_status); +void inputdriver_terminate(void); +void inputdriver_task(struct inputdriver *idp); + +#endif /* !_MINIX_INPUTDRIVER_H */ diff --git a/include/minix/keymap.h b/include/minix/keymap.h index 51cce8cbc..78802ffdf 100644 --- a/include/minix/keymap.h +++ b/include/minix/keymap.h @@ -3,21 +3,31 @@ #ifndef _SYS__KEYMAP_H #define _SYS__KEYMAP_H +#define K(k) [INPUT_KEY_ ## k] /* Map to key entry */ + #define C(c) ((c) & 0x1F) /* Map to control code */ #define A(c) ((c) | 0x80) /* Set eight bit (ALT) */ #define CA(c) A(C(c)) /* Control-Alt */ +#define N(c) ((c) | HASNUM) /* Add "Num Lock has effect" attribute */ #define L(c) ((c) | HASCAPS) /* Add "Caps Lock has effect" attribute */ #define EXT 0x0100 /* Normal function keys */ #define CTRL 0x0200 /* Control key */ #define SHIFT 0x0400 /* Shift key */ #define ALT 0x0800 /* Alternate key */ -#define EXTKEY 0x1000 /* extended keycode */ +#define HASNUM 0x4000 /* Num Lock has effect */ #define HASCAPS 0x8000 /* Caps Lock has effect */ -/* Scan code conversion. */ -#define KEY_RELEASE 0200 -#define ASCII_MASK 0177 +/* The left and right versions for the actual keys in the keymap. */ +#define LCTRL CTRL +#define RCTRL (CTRL | EXT) +#define LSHIFT SHIFT +#define RSHIFT (SHIFT | EXT) +#define LALT ALT +#define RALT (ALT | EXT) + +/* Delete key */ +#define DEL 0177 /* Numeric keypad */ #define HOME (0x01 + EXT) @@ -29,10 +39,23 @@ #define PGUP (0x07 + EXT) #define PGDN (0x08 + EXT) #define MID (0x09 + EXT) -#define NMIN (0x0A + EXT) -#define PLUS (0x0B + EXT) +/* UNUSED (0x0A + EXT) */ +/* UNUSED (0x0B + EXT) */ #define INSRT (0x0C + EXT) +/* Keys affected by Num Lock */ +#define NHOME N(HOME) +#define NEND N(END) +#define NUP N(UP) +#define NDOWN N(DOWN) +#define NLEFT N(LEFT) +#define NRIGHT N(RIGHT) +#define NPGUP N(PGUP) +#define NPGDN N(PGDN) +#define NMID N(MID) +#define NINSRT N(INSRT) +#define NDEL N(DEL) + /* Alt + Numeric keypad */ #define AHOME (0x01 + ALT) #define AEND (0x02 + ALT) @@ -43,7 +66,7 @@ #define APGUP (0x07 + ALT) #define APGDN (0x08 + ALT) #define AMID (0x09 + ALT) -#define ANMIN (0x0A + ALT) +#define AMIN (0x0A + ALT) #define APLUS (0x0B + ALT) #define AINSRT (0x0C + ALT) @@ -57,7 +80,7 @@ #define CPGUP (0x07 + CTRL) #define CPGDN (0x08 + CTRL) #define CMID (0x09 + CTRL) -#define CNMIN (0x0A + CTRL) +#define CMIN (0x0A + CTRL) #define CPLUS (0x0B + CTRL) #define CINSRT (0x0C + CTRL) @@ -137,9 +160,9 @@ #define ASF12 (0x1B + ALT + SHIFT) #define MAP_COLS 6 /* Number of columns in keymap */ -#define NR_SCAN_CODES 0x80 /* Number of scan codes (rows in keymap) */ +#define NR_SCAN_CODES 0xE8 /* Number of scan codes (rows in keymap) */ -typedef unsigned short keymap_t[NR_SCAN_CODES * MAP_COLS]; +typedef uint16_t keymap_t[NR_SCAN_CODES][MAP_COLS]; #define KEY_MAGIC "KMAZ" /* Magic number of keymap file */ diff --git a/include/minix/termios.h b/include/minix/termios.h index d4f58df29..3a0b6b88b 100644 --- a/include/minix/termios.h +++ b/include/minix/termios.h @@ -137,7 +137,6 @@ int tcsetattr(int _filedes, int _opt_actions, const struct termios /* Extensions to the termios c_iflag bit map. */ #define IXANY 0x0800 /* allow any key to continue ouptut */ -#define SCANCODES 0x1000 /* send scancodes */ /* Extensions to the termios c_oflag bit map. They are only active iff * OPOST is enabled. */ diff --git a/lib/Makefile b/lib/Makefile index ee718c68d..d6cd46396 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -43,7 +43,7 @@ SUBDIR+= libcompat_minix libblockdriver libchardriver \ libexec libdevman libusb libasyn librmt \ libddekit libminixfs libbdev libelf libminc libcrypt libterminfo \ libutil libbz2 libprop \ - libpuffs libsffs + libpuffs libsffs libinputdriver .if (${MKLWIP} == "yes") SUBDIR += liblwip libnetsock diff --git a/lib/libchardriver/chardriver.c b/lib/libchardriver/chardriver.c index 03d924537..28fbacaac 100644 --- a/lib/libchardriver/chardriver.c +++ b/lib/libchardriver/chardriver.c @@ -1,6 +1,6 @@ /* This file contains the device independent character driver interface. * - * Charaxter drivers support the following requests. Message format m10 is + * Character drivers support the following requests. Message format m10 is * used. Field names are prefixed with CDEV_. Separate field names are used for * the "access", "ops", "user", and "request" fields. * @@ -108,16 +108,16 @@ void chardriver_announce(void) */ #if USE_STATECTL if ((r = sys_statectl(SYS_STATE_CLEAR_IPC_REFS)) != OK) - panic("chardriver_init: sys_statectl failed: %d", r); + panic("chardriver_announce: sys_statectl failed: %d", r); #endif /* Publish a driver up event. */ if ((r = ds_retrieve_label_name(label, getprocnr())) != OK) - panic("chardriver_init: unable to get own label: %d", r); + panic("chardriver_announce: unable to get own label: %d", r); snprintf(key, DS_MAX_KEYLEN, "%s%s", driver_prefix, label); if ((r = ds_publish_u32(key, DS_DRIVER_UP, DSF_OVERWRITE)) != OK) - panic("chardriver_init: unable to publish driver up event: %d", r); + panic("chardriver_announce: unable to publish driver up event: %d", r); /* Expect an open for any device before serving regular driver requests. */ clear_open_devs(); @@ -522,21 +522,21 @@ void chardriver_terminate(void) *===========================================================================*/ void chardriver_task(struct chardriver *cdp) { -/* Main program of any device driver task. */ +/* Main program of any character device driver task. */ int r, ipc_status; message mess; running = TRUE; - /* Here is the main loop of the disk task. It waits for a message, carries - * it out, and sends a reply. + /* Here is the main loop of the character driver task. It waits for a + * message, carries it out, and sends a reply. */ while (running) { if ((r = sef_receive_status(ANY, &mess, &ipc_status)) != OK) { if (r == EINTR && !running) break; - panic("driver_receive failed: %d", r); + panic("chardriver: sef_receive_status failed: %d", r); } chardriver_process(cdp, &mess, ipc_status); diff --git a/lib/libinputdriver/Makefile b/lib/libinputdriver/Makefile new file mode 100644 index 000000000..3d42b72ae --- /dev/null +++ b/lib/libinputdriver/Makefile @@ -0,0 +1,8 @@ +# Makefile for libinputdriver +.include + +LIB= inputdriver + +SRCS= inputdriver.c + +.include diff --git a/lib/libinputdriver/inputdriver.c b/lib/libinputdriver/inputdriver.c new file mode 100644 index 000000000..eacd0921f --- /dev/null +++ b/lib/libinputdriver/inputdriver.c @@ -0,0 +1,206 @@ +/* This file contains the device independent input driver interface. */ +/* + * Changes: + * Sep 22, 2013 created (D.C. van Moolenbroek) + */ + +#include +#include +#include + +static endpoint_t input_endpt = NONE; +static int kbd_id = INVALID_INPUT_ID; +static int mouse_id = INVALID_INPUT_ID; + +static int running; + +/* + * Announce that we are up after a fresh start or restart. + */ +void +inputdriver_announce(unsigned int type) +{ + const char *driver_prefix = "drv.inp."; + char key[DS_MAX_KEYLEN]; + char label[DS_MAX_KEYLEN]; + int r; + + /* Publish a driver up event. */ + if ((r = ds_retrieve_label_name(label, getprocnr())) != OK) + panic("libinputdriver: unable to retrieve own label: %d", r); + + snprintf(key, sizeof(key), "%s%s", driver_prefix, label); + if ((r = ds_publish_u32(key, type, DSF_OVERWRITE)) != OK) + panic("libinputdriver: unable to publish up event: %d", r); + + /* Now we wait for the input server to contact us. */ +} + +/* + * Send an event to the input server. + */ +void +inputdriver_send_event(int mouse, unsigned short page, unsigned short code, + int value, int flags) +{ + message m; + int id; + + if (input_endpt == NONE) + return; + + id = mouse ? mouse_id : kbd_id; + if (id == INVALID_INPUT_ID) + return; + + memset(&m, 0, sizeof(m)); + + m.m_type = INPUT_EVENT; + m.INPUT_ID = id; + m.INPUT_PAGE = page; + m.INPUT_CODE = code; + m.INPUT_VALUE = value; + m.INPUT_FLAGS = flags; + + /* + * Use a blocking send call, for two reasons. First, this avoids the + * situation that we ever end up queuing too many asynchronous messages + * to the input server. Second, it allows us to detect trivially if + * the input server has crashed, in which case we should stop sending + * more messages to it. + */ + if (send(input_endpt, &m) != OK) + input_endpt = NONE; +} + +/* + * The input server requests that we configure the driver. This request should + * be sent to us once, although it may be sent multiple times if the input + * server crashes and recovers. The configuration consists of device IDs for + * use in keyboard and/or mouse events, one per each device type. + */ +static void +do_conf(message *m_ptr) +{ + endpoint_t ep; + int r; + + /* Make sure that the sender is actually the input server. */ + if ((r = ds_retrieve_label_endpt("input", &ep)) != OK) { + printf("libinputdriver: unable to get input endpoint (%d)\n", + r); + + return; /* ignore message */ + } + + if (ep != m_ptr->m_source) { + printf("libinputdriver: ignoring CONF request from %u\n", + m_ptr->m_source); + + return; + } + + /* Save the new state. */ + input_endpt = m_ptr->m_source; + kbd_id = m_ptr->INPUT_KBD_ID; + mouse_id = m_ptr->INPUT_MOUSE_ID; + + /* If the input server is "full" there's nothing for us to do. */ + if (kbd_id == INVALID_INPUT_ID && mouse_id == INVALID_INPUT_ID) + printf("libinputdriver: no IDs given, driver disabled\n"); +} + +/* + * The input server is telling us to change the LEDs to a particular mask. + * For now this is for keyboards only, so no device type is provided. + * This approach was chosen over sending toggle events for the individual LEDs + * for convenience reasons only. + */ +static void +do_setleds(struct inputdriver *idp, message *m_ptr) +{ + unsigned int mask; + + if (m_ptr->m_source != input_endpt) { + printf("libinputdriver: ignoring SETLEDS request from %u\n", + m_ptr->m_source); + + return; + } + + mask = m_ptr->INPUT_LED_MASK; + + if (idp->idr_leds) + idp->idr_leds(mask); +} + +/* + * Call the appropriate driver function, based on the type of message. + * All messages in the input protocol are one-way, so we never send a reply. + */ +void +inputdriver_process(struct inputdriver *idp, message *m_ptr, int ipc_status) +{ + /* Check for notifications first. */ + if (is_ipc_notify(ipc_status)) { + switch (_ENDPOINT_P(m_ptr->m_source)) { + case HARDWARE: + if (idp->idr_intr) + idp->idr_intr(m_ptr->NOTIFY_ARG); + break; + + case CLOCK: + if (idp->idr_alarm) + idp->idr_alarm(m_ptr->NOTIFY_TIMESTAMP); + break; + + default: + if (idp->idr_other) + idp->idr_other(m_ptr, ipc_status); + } + + return; + } + + switch (m_ptr->m_type) { + case INPUT_CONF: do_conf(m_ptr); break; + case INPUT_SETLEDS: do_setleds(idp, m_ptr); break; + default: + if (idp->idr_other) + idp->idr_other(m_ptr, ipc_status); + } +} + +/* + * Break out of the main loop after finishing the current request. + */ +void +inputdriver_terminate(void) +{ + running = FALSE; + + sef_cancel(); +} + +/* + * Main program of any input driver task. + */ +void +inputdriver_task(struct inputdriver *idp) +{ + message m; + int r, ipc_status; + + running = TRUE; + + while (running) { + if ((r = sef_receive_status(ANY, &m, &ipc_status)) != OK) { + if (r == EINTR && !running) + break; + + panic("libinputdriver: receive failed: %d", r); + } + + inputdriver_process(idp, &m, ipc_status); + } +} diff --git a/lib/libsys/Makefile b/lib/libsys/Makefile index ba6d96018..230aae7c5 100644 --- a/lib/libsys/Makefile +++ b/lib/libsys/Makefile @@ -18,7 +18,6 @@ SRCS+= \ getticks.c \ getsysinfo.c \ getuptime.c \ - input.c \ kernel_call.c \ kprintf.c \ kputc.c \ diff --git a/lib/libsys/input.c b/lib/libsys/input.c deleted file mode 100644 index abb4639a3..000000000 --- a/lib/libsys/input.c +++ /dev/null @@ -1,17 +0,0 @@ -#include "syslib.h" -#include -/***************************************************************************** - * tty_inject_event * - *****************************************************************************/ -int tty_inject_event(type, code, val) -int type; -int code; -int val; -{ - message msg; - msg.INPUT_TYPE = type; - msg.INPUT_CODE = code; - msg.INPUT_VALUE = val; - - return send(TTY_PROC_NR, &msg); -} diff --git a/lib/libvtreefs/inc.h b/lib/libvtreefs/inc.h index a9727f344..15249f1d8 100644 --- a/lib/libvtreefs/inc.h +++ b/lib/libvtreefs/inc.h @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include diff --git a/man/man4/tty.4 b/man/man4/tty.4 index 1306ed63b..db3fb8f1a 100644 --- a/man/man4/tty.4 +++ b/man/man4/tty.4 @@ -315,30 +315,6 @@ is set a break is input as a single '\e0', or if .B PARMRK is set as '\e377', '\e0', '\e0'. (Breaks are always ignored.) -.TP -.B SCANCODES -Send input as keyboard scancodes rather than processed ASCII characters. This -flag only applies to consoles; to check whether the flag is supported use the -.B tcgetattr -function after setting it and test whether -.B c_iflag -still contains the -.B SCANCODES -flag. Scancodes are provided directly and without any processing. As a -consequence, the -.B ISTRIP -, -.B IGNCR -, -.B ICRNL -, -.B INLCR -, -.B ICANON -and -.B IEXTEN -flags no longer influence input if this flag is specified. However, they may -still influence echoing if enabled. (MINIX 3 specific.) .SS "Output Modes" The .B c_oflag diff --git a/man/man5/keymap.5 b/man/man5/keymap.5 index 4e0ac079c..aba13743d 100644 --- a/man/man5/keymap.5 +++ b/man/man5/keymap.5 @@ -9,8 +9,9 @@ is the compressed mapping from keyboard scan codes to ASCII. It is made from a keymap source file consisting of MAP_COLS columns (MINIX assigns the value 6 to MAX_COLS, corresponding to key pressed, key+SHIFT, key+LEFT_ALT, key+RIGHT_ALT, key+ALT+SHIFT and key+CTRL) and -NR_SCAN_CODES rows (MINIX assigns the value 0x80 to NR_SCAN_CODES, -corresponding to the number of scan codes to be provided by the keyboard), +NR_SCAN_CODES rows (MINIX assigns the value 0xE8 to NR_SCAN_CODES, +corresponding to the range of defined USB HID key codes, which is the +set of key codes that is to be provided by all keyboard drivers), and each element is 2 bytes in length (see u16_t in type definitions). The low order byte corresponds to the character represented by the scan code, and the high order byte corresponds to the special meaning (when @@ -25,8 +26,20 @@ utility. and .B u16_t types, corresponding to 8 and 16 bit values. +.SS "Keys: " +This header file contains the list of keys, prefixed by a +.B INPUT_KEY_ +prefix. The +.B K +macro (see below) automatically adds the +.B INPUT_KEY_ +prefix to the given key name. Input types from pages other than the key page +are not supported by TTY. .SS "Macros: " .TP +.BI "K(" k ") - Key" +Maps to the entry for the key in the bitmap +.TP .BI "C(" c ") - Control" Maps to control code .TP @@ -49,17 +62,22 @@ The .BI "L(" c ")" macro is used in column 0 to tell that the Caps Lock key is active for this key. (Caps Lock should only have effect on letters.) +Similarly, some keys in column 0 have a +.B N +prefix to indicate that they are affected by the Num Lock key. .SS "Definitions: " contains a large number of definitions for special keys, like function keys, and keys on the numeric keypad. They are: .PP -Escape key and modifiers: -.BR EXT , -.BR CTRL , -.BR SHIFT , -.BR ALT . +Modifier keys: +.BR LCTRL , +.BR RCTRL , +.BR LSHIFT , +.BR RSHIFT , +.BR LALT , +.BR RALT . .PP -Numeric keypad keys: +Special keys: .BR HOME , .BR END , .BR UP , @@ -69,8 +87,16 @@ Numeric keypad keys: .BR PGUP , .BR PGDN , .BR MID " (numeric '5')," +.BR MIN " (only with " A " or " C " prefix)," .BR PLUS , -.BR INSRT . +.BR INSRT , +.BR DEL . +.PP +Special keys affected by Num Lock: +.BR NHOME , +.BR NEND ", ..." +.BR NINSRT , +.BR NDEL . .PP ALT + numpad key: .BR AHOME , @@ -107,15 +133,6 @@ ALT - SHIFT - function key: .BR ASF1 ", ...," .BR ASF12 . .PP -There is one key definition that isn't a key at all: -.BR EXTKEY . -This keycode is sent by the keyboard as an indicator that the next keycode -is special. For instance both ALT keys have the same keycode, but the right -ALT key is sent by the keyboard preceded by the EXTKEY keycode. The same is -true for the '/' key on the numeric pad versus the other '/' key on the US -keyboard. (On other keyboards this key may have a different symbol.) The -keyboard driver knows that a different key is presses if it is preceded by -EXTKEY. .SS "Creating/changing keyboard mapping" You can create your own keyboard mapping by copying one of the existing keymap source files (Standard Minix: diff --git a/servers/Makefile b/servers/Makefile index 5b4b29676..b4ce396ea 100644 --- a/servers/Makefile +++ b/servers/Makefile @@ -5,11 +5,11 @@ .if ${MKIMAGEONLY} == "yes" -SUBDIR= ds init mfs pfs pm rs sched vfs vm +SUBDIR= ds init input mfs pfs pm rs sched vfs vm .else -SUBDIR= ds ext2 inet init ipc is iso9660fs \ +SUBDIR= ds ext2 inet init input ipc is iso9660fs \ mfs pfs pm procfs rs sched vfs vm devman .if ${MACHINE_ARCH} == "i386" diff --git a/servers/ds/inc.h b/servers/ds/inc.h index f34cfedb7..946bfafa7 100644 --- a/servers/ds/inc.h +++ b/servers/ds/inc.h @@ -20,7 +20,6 @@ #include #include #include -#include #include #include diff --git a/servers/input/Makefile b/servers/input/Makefile new file mode 100644 index 000000000..192400063 --- /dev/null +++ b/servers/input/Makefile @@ -0,0 +1,14 @@ +# Makefile for the input server + +PROG= input +SRCS= input.c + +DPADD+= ${LIBCHARDRIVER} ${LIBSYS} +LDADD+= -lchardriver -lsys + +MAN= + +BINDIR?= /sbin + +.include + diff --git a/servers/input/input.c b/servers/input/input.c new file mode 100644 index 000000000..a8389c8e4 --- /dev/null +++ b/servers/input/input.c @@ -0,0 +1,696 @@ +/* Keyboard/mouse input server. */ +#include +#include +#include +#include +#include + +#include "input.h" + +#define INPUT_DEBUG 0 + +static int input_open(devminor_t, int, endpoint_t); +static int input_close(devminor_t); +static ssize_t input_read(devminor_t, u64_t, endpoint_t, cp_grant_id_t, size_t, + int, cdev_id_t); +static int input_ioctl(devminor_t, unsigned long, endpoint_t, cp_grant_id_t, + int, endpoint_t, cdev_id_t); +static int input_cancel(devminor_t, endpoint_t, cdev_id_t); +static int input_select(devminor_t, unsigned int, endpoint_t); +static void input_other(message *, int); + +static struct input_dev devs[INPUT_DEV_MAX]; + +#define input_dev_active(dev) ((dev)->owner != NONE || \ + (dev)->minor == KBDMUX_MINOR || \ + (dev)->minor == MOUSEMUX_MINOR) +#define input_dev_buf_empty(dev) ((dev)->count == 0) +#define input_dev_buf_full(dev) ((dev)->count == EVENTBUF_SIZE) + +/* Entry points to the input driver. */ +static struct chardriver input_tab = { + .cdr_open = input_open, + .cdr_close = input_close, + .cdr_read = input_read, + .cdr_ioctl = input_ioctl, + .cdr_cancel = input_cancel, + .cdr_select = input_select, + .cdr_other = input_other +}; + +/* + * Map a minor number to an input device structure. + */ +static struct input_dev * +input_map(devminor_t minor) +{ + /* + * The minor device numbers were chosen not to be equal to the array + * slots, so that more keyboards can be added without breaking backward + * compatibility later. + */ + if (minor == KBDMUX_MINOR) + return &devs[KBDMUX_DEV]; + else if (minor >= KBD0_MINOR && minor < KBD0_MINOR + KBD_MINORS) + return &devs[FIRST_KBD_DEV + (minor - KBD0_MINOR)]; + else if (minor == MOUSEMUX_MINOR) + return &devs[MOUSEMUX_DEV]; + else if (minor >= MOUSE0_MINOR && minor < MOUSE0_MINOR + MOUSE_MINORS) + return &devs[FIRST_MOUSE_DEV + (minor - MOUSE0_MINOR)]; + else + return NULL; +} + +/* + * Map an input device structure index to a minor number. + */ +static devminor_t +input_revmap(int id) +{ + if (id == KBDMUX_DEV) + return KBDMUX_MINOR; + else if (id >= FIRST_KBD_DEV && id <= LAST_KBD_DEV) + return KBD0_MINOR + (id - FIRST_KBD_DEV); + else if (id == MOUSEMUX_DEV) + return MOUSEMUX_MINOR; + else if (id >= FIRST_MOUSE_DEV && id <= LAST_MOUSE_DEV) + return MOUSE0_MINOR + (id - FIRST_MOUSE_DEV); + else + panic("reverse-mapping invalid ID %d", id); +} + +/* + * Open an input device. + */ +static int +input_open(devminor_t minor, int UNUSED(access), endpoint_t UNUSED(user_endpt)) +{ + struct input_dev *input_dev; + + if ((input_dev = input_map(minor)) == NULL) + return ENXIO; + + if (!input_dev_active(input_dev)) + return ENXIO; + + if (input_dev->opened) + return EBUSY; + + input_dev->opened = TRUE; + + return OK; +} + +/* + * Close an input device. + */ +static int +input_close(devminor_t minor) +{ + struct input_dev *input_dev; + + if ((input_dev = input_map(minor)) == NULL) + return ENXIO; + + if (!input_dev->opened) { + printf("INPUT: closing already-closed device %d\n", minor); + return EINVAL; + } + + input_dev->opened = FALSE; + input_dev->tail = 0; + input_dev->count = 0; + + return OK; +} + +/* + * Copy input events to a reader. + */ +static ssize_t +input_copy_events(endpoint_t endpt, cp_grant_id_t grant, + unsigned int event_count, struct input_dev *input_dev) +{ + int r, nbytes, wrap_left; + size_t event_size = sizeof(*input_dev->eventbuf); + + if (input_dev->count < event_count) + panic("input_copy_events: not enough input is ready"); + + wrap_left = input_dev->tail + event_count - EVENTBUF_SIZE; + nbytes = (wrap_left <= 0 ? event_count : + EVENTBUF_SIZE - input_dev->tail) * event_size; + + if ((r = sys_safecopyto(endpt, grant, 0, + (vir_bytes)(input_dev->eventbuf + input_dev->tail), nbytes)) != OK) + return r; + + /* Copy possible remaining part if we wrap over. */ + if (wrap_left > 0 && (r = sys_safecopyto(endpt, grant, nbytes, + (vir_bytes) input_dev->eventbuf, wrap_left * event_size)) != OK) + return r; + + input_dev->tail = (input_dev->tail + event_count) % EVENTBUF_SIZE; + input_dev->count -= event_count; + + return event_size * event_count; /* bytes copied */ +} + +/* + * Read from an input device. + */ +static ssize_t +input_read(devminor_t minor, u64_t UNUSED(position), endpoint_t endpt, + cp_grant_id_t grant, size_t size, int flags, cdev_id_t id) +{ + unsigned int event_count; + struct input_dev *input_dev; + + if ((input_dev = input_map(minor)) == NULL) + return ENXIO; + + /* We cannot accept more than one pending read request at once. */ + if (!input_dev_active(input_dev) || input_dev->suspended) + return EIO; + + /* The caller's buffer must have room for at least one whole event. */ + event_count = size / sizeof(*input_dev->eventbuf); + if (event_count == 0) + return EIO; + + /* No data available? Suspend the caller, unless we shouldn't block. */ + if (input_dev_buf_empty(input_dev)) { + if (flags & CDEV_NONBLOCK) + return EAGAIN; + + input_dev->suspended = TRUE; + input_dev->caller = endpt; + input_dev->grant = grant; + input_dev->req_id = id; + + /* We should now wake up any selector, but that's lame.. */ + return EDONTREPLY; + } + + if (event_count > input_dev->count) + event_count = input_dev->count; + + return input_copy_events(endpt, grant, event_count, input_dev); +} + +/* + * Set keyboard LEDs on one or all keyboards. + */ +static void +input_set_leds(devminor_t minor, unsigned int mask) +{ + struct input_dev *dev; + message m; + int i, r; + + /* Prepare the request message */ + memset(&m, 0, sizeof(m)); + + m.m_type = INPUT_SETLEDS; + m.INPUT_LED_MASK = mask; + + /* + * Send the request to all matching keyboard devices. As side effect, + * this approach discards the request on mouse devices. + */ + for (i = FIRST_KBD_DEV; i <= LAST_KBD_DEV; i++) { + dev = &devs[i]; + + if (minor != KBDMUX_MINOR && minor != dev->minor) + continue; + + /* Save the new state; the driver might (re)start later. */ + dev->leds = mask; + + if (dev->owner != NONE) { + if ((r = asynsend3(dev->owner, &m, AMF_NOREPLY)) != OK) + printf("INPUT: asynsend to %u failed (%d)\n", + dev->owner, r); + } + } +} + +/* + * Process an IOCTL request. + */ +static int +input_ioctl(devminor_t minor, unsigned long request, endpoint_t endpt, + cp_grant_id_t grant, int flags, endpoint_t user_endpt, cdev_id_t id) +{ + struct input_dev *input_dev; + kio_leds_t leds; + unsigned int mask; + int r; + + if ((input_dev = input_map(minor)) == NULL) + return ENXIO; + + if (!input_dev_active(input_dev)) + return EIO; + + switch (request) { + case KIOCSLEDS: + if ((r = sys_safecopyfrom(endpt, grant, 0, (vir_bytes) &leds, + sizeof(leds))) != OK) + return r; + + mask = 0; + if (leds.kl_bits & KBD_LEDS_NUM) + mask |= (1 << INPUT_LED_NUMLOCK); + if (leds.kl_bits & KBD_LEDS_CAPS) + mask |= (1 << INPUT_LED_CAPSLOCK); + if (leds.kl_bits & KBD_LEDS_SCROLL) + mask |= (1 << INPUT_LED_SCROLLLOCK); + + input_set_leds(minor, mask); + + return OK; + + default: + return ENOTTY; + } +} + +/* + * Cancel a suspended read request. + */ +static int +input_cancel(devminor_t minor, endpoint_t endpt, cdev_id_t id) +{ + struct input_dev *input_dev; + + if ((input_dev = input_map(minor)) == NULL) + return ENXIO; + + if (input_dev->suspended && input_dev->caller == endpt && + input_dev->req_id == id) { + input_dev->suspended = FALSE; + + return EINTR; + } + + return EDONTREPLY; +} + +/* + * Perform a select call on an input device. + */ +static int +input_select(devminor_t minor, unsigned int ops, endpoint_t endpt) +{ + struct input_dev *input_dev; + int ready_ops; + + if ((input_dev = input_map(minor)) == NULL) + return ENXIO; + + ready_ops = 0; + + if (ops & CDEV_OP_RD) { + if (!input_dev_active(input_dev) || input_dev->suspended) + ready_ops |= CDEV_OP_RD; /* immediate error */ + else if (!input_dev_buf_empty(input_dev)) + ready_ops |= CDEV_OP_RD; /* data available */ + else if (ops & CDEV_NOTIFY) + input_dev->selector = endpt; /* report later */ + } + + if (ops & CDEV_OP_WR) ready_ops |= CDEV_OP_WR; /* immediate error */ + + return ready_ops; +} + +/* + * An input device receives an input event. Enqueue it, and possibly unsuspend + * a read request or wake up a selector. + */ +static void +input_process(struct input_dev *input_dev, const message *m) +{ + unsigned int next; + int r; + + if (input_dev_buf_full(input_dev)) { + /* Overflow. Overwrite the oldest event. */ + input_dev->tail = (input_dev->tail + 1) % EVENTBUF_SIZE; + input_dev->count--; + +#if INPUT_DEBUG + printf("INPUT: overflow on device %u\n", input_dev - devs); +#endif + } + next = (input_dev->tail + input_dev->count) % EVENTBUF_SIZE; + input_dev->eventbuf[next].page = m->INPUT_PAGE; + input_dev->eventbuf[next].code = m->INPUT_CODE; + input_dev->eventbuf[next].value = m->INPUT_VALUE; + input_dev->eventbuf[next].flags = m->INPUT_FLAGS; + input_dev->eventbuf[next].devid = m->INPUT_ID; + input_dev->eventbuf[next].rsvd[0] = 0; + input_dev->eventbuf[next].rsvd[1] = 0; + input_dev->count++; + + /* + * There is new input. Revive a suspended reader if there was one. + * Otherwise see if we should reply to a select query. + */ + if (input_dev->suspended) { + r = input_copy_events(input_dev->caller, input_dev->grant, 1, + input_dev); + chardriver_reply_task(input_dev->caller, input_dev->req_id, r); + input_dev->suspended = FALSE; + } else if (input_dev->selector != NONE) { + chardriver_reply_select(input_dev->selector, input_dev->minor, + CDEV_OP_RD); + input_dev->selector = NONE; + } +} + +/* + * An input event has arrived from a driver. + */ +static void +input_event(message *m) +{ + struct input_dev *input_dev, *mux_dev; + int r, id; + + /* Unlike minor numbers, device IDs are in fact array indices. */ + id = m->INPUT_ID; + if (id < 0 || id >= INPUT_DEV_MAX) + return; + + /* The sender must owner the device. */ + input_dev = &devs[id]; + if (input_dev->owner != m->m_source) + return; + + /* Input events are also delivered to the respective multiplexer. */ + if (input_dev->minor >= KBD0_MINOR && + input_dev->minor < KBD0_MINOR + KBD_MINORS) + mux_dev = &devs[KBDMUX_DEV]; + else + mux_dev = &devs[MOUSEMUX_DEV]; + + /* + * Try to deliver the event to the input device or otherwise the + * corresponding multiplexer. If neither are opened, forward the event + * to TTY. + */ + if (input_dev->opened) + input_process(input_dev, m); + else if (mux_dev->opened) + input_process(mux_dev, m); + else { + m->m_type = TTY_INPUT_EVENT; + + if ((r = send(TTY_PROC_NR, m)) != OK) + printf("INPUT: send to TTY failed (%d)\n", r); + } +} + +/* + * Allocate a device structure for an input driver of the given type, and + * return its ID. If the given label already owns a device ID of the right + * type, update that entry instead. If no device ID could be allocated, return + * INVALID_INPUT_ID. + */ +static int +input_alloc_id(int mouse, endpoint_t owner, const char *label) +{ + int n, id, start, end; + + if (!mouse) { + start = FIRST_KBD_DEV; + end = LAST_KBD_DEV; + } else { + start = FIRST_MOUSE_DEV; + end = LAST_MOUSE_DEV; + } + + id = INVALID_INPUT_ID; + for (n = start; n <= end; n++) { + if (devs[n].owner != NONE) { + if (!strcmp(devs[n].label, label)) { + devs[n].owner = owner; + return n; + } + /* Do not allocate the ID of a disconnected but open device. */ + } else if (!devs[n].opened && id == INVALID_INPUT_ID) { + id = n; + } + } + + if (id != INVALID_INPUT_ID) { + devs[id].owner = owner; + strlcpy(devs[id].label, label, sizeof(devs[id].label)); + +#if INPUT_DEBUG + printf("INPUT: connected device %u to %u (%s)\n", id, + owner, label); +#endif + } else { + printf("INPUT: out of %s slots for new driver %d\n", + mouse ? "mouse" : "keyboard", owner); + } + + return id; +} + +/* + * Register keyboard and/or a mouse devices for a driver. + */ +static void +input_connect(endpoint_t owner, char *labelp, int typemask) +{ + message m; + char label[DS_MAX_KEYLEN]; + int r, kbd_id, mouse_id; + +#if INPUT_DEBUG + printf("INPUT: connect request from %u (%s) for mask %x\n", owner, + labelp, typemask); +#endif + + /* Check the driver's label. */ + if ((r = ds_retrieve_label_name(label, owner)) != OK) { + printf("INPUT: unable to get label for %u: %d\n", owner, r); + return; + } + if (strcmp(label, labelp)) { + printf("INPUT: ignoring driver %s label %s\n", label, labelp); + return; + } + + kbd_id = INVALID_INPUT_ID; + mouse_id = INVALID_INPUT_ID; + + /* + * We ignore allocation failures here, thus possibly sending invalid + * IDs to the driver even for either or both the devices types it + * requested. As a result, the driver will not send us input for these + * device types, possibly effectively disabling the driver altogether. + * Theoretically we could still admit events to the multiplexers for + * such drivers, but that would lead to unexpected behavior with + * respect to keyboard LEDs, for example. + */ + if (typemask & INPUT_DEV_KBD) + kbd_id = input_alloc_id(FALSE /*mouse*/, owner, label); + if (typemask & INPUT_DEV_MOUSE) + mouse_id = input_alloc_id(TRUE /*mouse*/, owner, label); + + memset(&m, 0, sizeof(m)); + + m.m_type = INPUT_CONF; + m.INPUT_KBD_ID = kbd_id; + m.INPUT_MOUSE_ID = mouse_id; + m.INPUT_RSVD1_ID = INVALID_INPUT_ID; /* reserved (joystick?) */ + m.INPUT_RSVD2_ID = INVALID_INPUT_ID; /* reserved for future use */ + + if ((r = asynsend3(owner, &m, AMF_NOREPLY)) != OK) + printf("INPUT: asynsend to %u failed (%d)\n", owner, r); + + /* If a keyboard was registered, also set its initial LED state. */ + if (kbd_id != INVALID_INPUT_ID) + input_set_leds(devs[kbd_id].minor, devs[kbd_id].leds); +} + +/* + * Disconnect a device. + */ +static void +input_disconnect(struct input_dev *input_dev) +{ +#if INPUT_DEBUG + printf("INPUT: disconnected device %u\n", input_dev - devs); +#endif + + if (input_dev->suspended) { + chardriver_reply_task(input_dev->caller, input_dev->req_id, + EIO); + input_dev->suspended = FALSE; + } + + if (input_dev->selector != NONE) { + chardriver_reply_select(input_dev->selector, input_dev->minor, + CDEV_OP_RD); + input_dev->selector = NONE; + } + + input_dev->owner = NONE; +} + +/* + * Check for driver status changes in the data store. + */ +static void +input_check(void) +{ + char key[DS_MAX_KEYLEN], *label; + const char *driver_prefix = "drv.inp."; + u32_t value; + size_t len; + int i, r, type; + endpoint_t owner; + + len = strlen(driver_prefix); + + /* Check for new (input driver) entries. */ + while (ds_check(key, &type, &owner) == OK) { + if ((r = ds_retrieve_u32(key, &value)) != OK) { + printf("INPUT: ds_retrieve_u32 failed (%d)\n", r); + continue; + } + + /* Only check for input driver registration events. */ + if (strncmp(key, driver_prefix, len)) + continue; + + /* The prefix is followed by the driver's own label. */ + label = &key[len]; + + input_connect(owner, label, value); + } + + /* Check for removed (label) entries. */ + for (i = 0; i < INPUT_DEV_MAX; i++) { + /* This also skips the multiplexers. */ + if (devs[i].owner == NONE) + continue; + + r = ds_retrieve_label_endpt(devs[i].label, &owner); + + if (r == OK) + devs[i].owner = owner; /* not really necessary */ + else if (r == ESRCH) + input_disconnect(&devs[i]); + else + printf("INPUT: ds_retrieve_label_endpt failed (%d)\n", + r); + } +} + +/* + * Process messages not part of the character driver protocol. + */ +static void +input_other(message *m, int ipc_status) +{ + if (is_ipc_notify(ipc_status)) { + switch (m->m_source) { + case DS_PROC_NR: + input_check(); + break; + default: + printf("INPUT: unexpected notify from %d\n", + m->m_source); + } + return; + } + + /* An input event from a registered driver. */ + switch (m->m_type) { + case INPUT_EVENT: + input_event(m); + + break; + + case INPUT_SETLEDS: + if (m->m_source == TTY_PROC_NR) { + input_set_leds(KBDMUX_MINOR, m->INPUT_LED_MASK); + + break; + } + /* FALLTHROUGH */ + default: + printf("INPUT: unexpected message %d from %d\n", + m->m_type, m->m_source); + } +} + +/* + * Initialize the input server. + */ +static int +input_init(int UNUSED(type), sef_init_info_t *UNUSED(info)) +{ + message m; + int i, r; + + /* Initialize input device structures. */ + for (i = 0; i < INPUT_DEV_MAX; i++) { + devs[i].minor = input_revmap(i); + devs[i].owner = NONE; + devs[i].tail = 0; + devs[i].count = 0; + devs[i].opened = FALSE; + devs[i].suspended = FALSE; + devs[i].selector = NONE; + devs[i].leds = 0; + } + + /* Subscribe to driver registration events for input drivers. */ + if ((r = ds_subscribe("drv\\.inp\\..*", DSF_INITIAL)) != OK) + panic("INPUT: can't subscribe to driver events (%d)", r); + + /* Announce our presence to VFS. */ + chardriver_announce(); + + /* Announce our presence to TTY. */ + memset(&m, 0, sizeof(m)); + + m.m_type = TTY_INPUT_UP; + + if ((r = send(TTY_PROC_NR, &m)) != OK) + printf("INPUT: send to TTY failed (%d)\n", r); + + return OK; +} + +/* + * Set callbacks and invoke SEF startup. + */ +static void +input_startup(void) +{ + sef_setcb_init_fresh(input_init); + + sef_startup(); +} + +/* + * Main program of the input server. + */ +int +main(void) +{ + input_startup(); + + chardriver_task(&input_tab); + + return 0; +} diff --git a/servers/input/input.h b/servers/input/input.h new file mode 100644 index 000000000..1cb4e84a0 --- /dev/null +++ b/servers/input/input.h @@ -0,0 +1,45 @@ +#ifndef _SERVERS_INPUT_H +#define _SERVERS_INPUT_H + +#include + +/* Configuration. */ +#define EVENTBUF_SIZE 32 + +#define KBDMUX_MINOR 0 +#define KBD0_MINOR 1 +#define KBD_MINORS 4 + +#define MOUSEMUX_MINOR 64 +#define MOUSE0_MINOR 65 +#define MOUSE_MINORS 4 + +/* Constants. */ +#define KBDMUX_DEV 0 +#define FIRST_KBD_DEV 1 +#define LAST_KBD_DEV (FIRST_KBD_DEV + KBD_MINORS - 1) + +#define MOUSEMUX_DEV (LAST_KBD_DEV + 1) +#define FIRST_MOUSE_DEV (MOUSEMUX_DEV + 1) +#define LAST_MOUSE_DEV (FIRST_MOUSE_DEV + MOUSE_MINORS - 1) + +#define INPUT_DEV_MAX (1 + KBD_MINORS + 1 + MOUSE_MINORS) + +/* Input device state structure. */ +struct input_dev { + devminor_t minor; /* minor number of this device */ + endpoint_t owner; /* owning driver endpoint, or NONE */ + char label[DS_MAX_KEYLEN]; /* label of owning driver */ + struct input_event eventbuf[EVENTBUF_SIZE]; /* event ring buffer */ + unsigned int tail; /* tail into ring buffer */ + unsigned int count; /* number of elements in ring buffer */ + int opened; /* has a process opened the device? */ + int suspended; /* is a process suspended on a read? */ + endpoint_t caller; /* endpoint for suspended read */ + cp_grant_id_t grant; /* grant for suspended read */ + cdev_id_t req_id; /* request ID for suspended read */ + endpoint_t selector; /* read-selecting endpoint, or NONE */ + unsigned int leds; /* LED mask - saved across connects */ +}; + +#endif /* !_SERVERS_INPUT_H */ diff --git a/servers/iso9660fs/inc.h b/servers/iso9660fs/inc.h index 7883cba51..764236477 100644 --- a/servers/iso9660fs/inc.h +++ b/servers/iso9660fs/inc.h @@ -17,7 +17,6 @@ #include #include #include -#include #include #include diff --git a/servers/pfs/inc.h b/servers/pfs/inc.h index 0aa5f05e4..104cca665 100644 --- a/servers/pfs/inc.h +++ b/servers/pfs/inc.h @@ -24,7 +24,6 @@ #include #include #include -#include #include #include diff --git a/servers/pm/main.c b/servers/pm/main.c index 60d7b9486..abfc1360a 100644 --- a/servers/pm/main.c +++ b/servers/pm/main.c @@ -10,7 +10,6 @@ */ #include "pm.h" -#include #include #include #include diff --git a/servers/procfs/inc.h b/servers/procfs/inc.h index da784d16f..5333358f8 100644 --- a/servers/procfs/inc.h +++ b/servers/procfs/inc.h @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/rs/inc.h b/servers/rs/inc.h index 676b2aa80..90a4a98db 100644 --- a/servers/rs/inc.h +++ b/servers/rs/inc.h @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vfs/main.c b/servers/vfs/main.c index 619d9839a..0ab76ddbf 100644 --- a/servers/vfs/main.c +++ b/servers/vfs/main.c @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vfs/mount.c b/servers/vfs/mount.c index ea47ed31d..46b21760d 100644 --- a/servers/vfs/mount.c +++ b/servers/vfs/mount.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vfs/path.c b/servers/vfs/path.c index 3ecdd2c5b..584d937cb 100644 --- a/servers/vfs/path.c +++ b/servers/vfs/path.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/break.c b/servers/vm/break.c index d3d762fae..d35349199 100644 --- a/servers/vm/break.c +++ b/servers/vm/break.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/exit.c b/servers/vm/exit.c index cc9a79538..ea829d7a6 100644 --- a/servers/vm/exit.c +++ b/servers/vm/exit.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/fdref.h b/servers/vm/fdref.h index 1ed37c320..001fbb0ee 100644 --- a/servers/vm/fdref.h +++ b/servers/vm/fdref.h @@ -8,7 +8,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/fork.c b/servers/vm/fork.c index 5b9b319c4..50d9ea4bd 100644 --- a/servers/vm/fork.c +++ b/servers/vm/fork.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/main.c b/servers/vm/main.c index 58fe36a6c..0266a9c32 100644 --- a/servers/vm/main.c +++ b/servers/vm/main.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/mmap.c b/servers/vm/mmap.c index 8985fcdcd..2ba8021fe 100644 --- a/servers/vm/mmap.c +++ b/servers/vm/mmap.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/pagefaults.c b/servers/vm/pagefaults.c index 1cba5e2e9..95e1142cc 100644 --- a/servers/vm/pagefaults.c +++ b/servers/vm/pagefaults.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/pagetable.c b/servers/vm/pagetable.c index 57963f5ca..192fcd6c6 100644 --- a/servers/vm/pagetable.c +++ b/servers/vm/pagetable.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/queryexit.c b/servers/vm/queryexit.c index b70efc837..e8f82c16a 100644 --- a/servers/vm/queryexit.c +++ b/servers/vm/queryexit.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/region.h b/servers/vm/region.h index 656a6de7c..29982abbd 100644 --- a/servers/vm/region.h +++ b/servers/vm/region.h @@ -8,7 +8,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/rs.c b/servers/vm/rs.c index b3be72785..c520d3708 100644 --- a/servers/vm/rs.c +++ b/servers/vm/rs.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/servers/vm/slaballoc.c b/servers/vm/slaballoc.c index 9bdfe8f56..61a7ff849 100644 --- a/servers/vm/slaballoc.c +++ b/servers/vm/slaballoc.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include diff --git a/test/scancodes/Makefile b/test/scancodes/Makefile deleted file mode 100644 index 4d0f0d51c..000000000 --- a/test/scancodes/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -all: test-scancodes - -clean: - rm -f *.o test-scancodes - -test-scancodes: test-scancodes.o - -test-scancodes.o: test-scancodes.c - - diff --git a/test/scancodes/test-scancodes.c b/test/scancodes/test-scancodes.c deleted file mode 100644 index 599bc2a12..000000000 --- a/test/scancodes/test-scancodes.c +++ /dev/null @@ -1,410 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -/* list of scancodes to demonstrate whether the keycodes are correct; - * source: http://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html - */ -static char *keydescr[] = { - NULL, /* 0x00 */ - "Esc", /* 0x01 */ - "1!", /* 0x02 */ - "2@", /* 0x03 */ - "3#", /* 0x04 */ - "4$", /* 0x05 */ - "5%", /* 0x06 */ - "6^", /* 0x07 */ - "7&", /* 0x08 */ - "8*", /* 0x09 */ - "9(", /* 0x0a */ - "0)", /* 0x0b */ - "-_", /* 0x0c */ - "=+", /* 0x0d */ - "Backspace", /* 0x0e */ - "Tab", /* 0x0f */ - "Q", /* 0x10 */ - "W", /* 0x11 */ - "E", /* 0x12 */ - "R", /* 0x13 */ - "T", /* 0x14 */ - "Y", /* 0x15 */ - "U", /* 0x16 */ - "I", /* 0x17 */ - "O", /* 0x18 */ - "P", /* 0x19 */ - "[{", /* 0x1a */ - "]}", /* 0x1b */ - "Enter", /* 0x1c */ - "LCtrl", /* 0x1d */ - "A", /* 0x1e */ - "S", /* 0x1f */ - "D", /* 0x20 */ - "F", /* 0x21 */ - "G", /* 0x22 */ - "H", /* 0x23 */ - "J", /* 0x24 */ - "K", /* 0x25 */ - "L", /* 0x26 */ - ";:", /* 0x27 */ - "'\"", /* 0x28 */ - "`~", /* 0x29 */ - "LShift", /* 0x2a */ - "\\|", /* 0x2b */ - "Z", /* 0x2c */ - "X", /* 0x2d */ - "C", /* 0x2e */ - "V", /* 0x2f */ - "B", /* 0x30 */ - "N", /* 0x31 */ - "M", /* 0x32 */ - ",<", /* 0x33 */ - ".>", /* 0x34 */ - "/?", /* 0x35 */ - "RShift", /* 0x36 */ - "Keypad-*", /* 0x37 */ - "LAlt", /* 0x38 */ - "Space bar", /* 0x39 */ - "CapsLock", /* 0x3a */ - "F1", /* 0x3b */ - "F2", /* 0x3c */ - "F3", /* 0x3d */ - "F4", /* 0x3e */ - "F5", /* 0x3f */ - "F6", /* 0x40 */ - "F7", /* 0x41 */ - "F8", /* 0x42 */ - "F9", /* 0x43 */ - "F10", /* 0x44 */ - "NumLock", /* 0x45 */ - "ScrollLock", /* 0x46 */ - "Keypad-7/Home",/* 0x47 */ - "Keypad-8/Up", /* 0x48 */ - "Keypad-9/PgUp",/* 0x49 */ - "Keypad--", /* 0x4a */ - "Keypad-4/Left",/* 0x4b */ - "Keypad-5", /* 0x4c */ - "Keypad-6/Right",/* 0x4d */ - "Keypad-+", /* 0x4e */ - "Keypad-1/End", /* 0x4f */ - "Keypad-2/Down",/* 0x50 */ - "Keypad-3/PgDn",/* 0x51 */ - "Keypad-0/Ins", /* 0x52 */ - "Keypad-./Del", /* 0x53 */ - "Alt-SysRq", /* 0x54 */ - NULL, /* 0x55 */ - NULL, /* 0x56 */ - "F11", /* 0x57 */ - "F12", /* 0x58 */ - NULL, /* 0x59 */ - NULL, /* 0x5a */ - NULL, /* 0x5b */ - NULL, /* 0x5c */ - NULL, /* 0x5d */ - NULL, /* 0x5e */ - NULL, /* 0x5f */ - NULL, /* 0x60 */ - NULL, /* 0x61 */ - NULL, /* 0x62 */ - NULL, /* 0x63 */ - NULL, /* 0x64 */ - NULL, /* 0x65 */ - NULL, /* 0x66 */ - NULL, /* 0x67 */ - NULL, /* 0x68 */ - NULL, /* 0x69 */ - NULL, /* 0x6a */ - NULL, /* 0x6b */ - NULL, /* 0x6c */ - NULL, /* 0x6d */ - NULL, /* 0x6e */ - NULL, /* 0x6f */ - NULL, /* 0x70 */ - NULL, /* 0x71 */ - NULL, /* 0x72 */ - NULL, /* 0x73 */ - NULL, /* 0x74 */ - NULL, /* 0x75 */ - NULL, /* 0x76 */ - NULL, /* 0x77 */ - NULL, /* 0x78 */ - NULL, /* 0x79 */ - NULL, /* 0x7a */ - NULL, /* 0x7b */ - NULL, /* 0x7c */ - NULL, /* 0x7d */ - NULL, /* 0x7e */ - NULL, /* 0x7f */ -}; - -static char *keydescresc[] = { - NULL, /* 0xe0 0x00 */ - NULL, /* 0xe0 0x01 */ - NULL, /* 0xe0 0x02 */ - NULL, /* 0xe0 0x03 */ - NULL, /* 0xe0 0x04 */ - NULL, /* 0xe0 0x05 */ - NULL, /* 0xe0 0x06 */ - NULL, /* 0xe0 0x07 */ - NULL, /* 0xe0 0x08 */ - NULL, /* 0xe0 0x09 */ - NULL, /* 0xe0 0x0a */ - NULL, /* 0xe0 0x0b */ - NULL, /* 0xe0 0x0c */ - NULL, /* 0xe0 0x0d */ - NULL, /* 0xe0 0x0e */ - NULL, /* 0xe0 0x0f */ - NULL, /* 0xe0 0x10 */ - NULL, /* 0xe0 0x11 */ - NULL, /* 0xe0 0x12 */ - NULL, /* 0xe0 0x13 */ - NULL, /* 0xe0 0x14 */ - NULL, /* 0xe0 0x15 */ - NULL, /* 0xe0 0x16 */ - NULL, /* 0xe0 0x17 */ - NULL, /* 0xe0 0x18 */ - NULL, /* 0xe0 0x19 */ - NULL, /* 0xe0 0x1a */ - NULL, /* 0xe0 0x1b */ - "Keypad Enter", /* 0xe0 0x1c */ - "RCtrl", /* 0xe0 0x1d */ - NULL, /* 0xe0 0x1e */ - NULL, /* 0xe0 0x1f */ - NULL, /* 0xe0 0x20 */ - NULL, /* 0xe0 0x21 */ - NULL, /* 0xe0 0x22 */ - NULL, /* 0xe0 0x23 */ - NULL, /* 0xe0 0x24 */ - NULL, /* 0xe0 0x25 */ - NULL, /* 0xe0 0x26 */ - NULL, /* 0xe0 0x27 */ - NULL, /* 0xe0 0x28 */ - NULL, /* 0xe0 0x29 */ - "fake LShift", /* 0xe0 0x2a */ - NULL, /* 0xe0 0x2b */ - NULL, /* 0xe0 0x2c */ - NULL, /* 0xe0 0x2d */ - NULL, /* 0xe0 0x2e */ - NULL, /* 0xe0 0x2f */ - NULL, /* 0xe0 0x30 */ - NULL, /* 0xe0 0x31 */ - NULL, /* 0xe0 0x32 */ - NULL, /* 0xe0 0x33 */ - NULL, /* 0xe0 0x34 */ - "Keypad-/", /* 0xe0 0x35 */ - "fake RShift", /* 0xe0 0x36 */ - "Ctrl-PrtScn", /* 0xe0 0x37 */ - "RAlt", /* 0xe0 0x38 */ - NULL, /* 0xe0 0x39 */ - NULL, /* 0xe0 0x3a */ - NULL, /* 0xe0 0x3b */ - NULL, /* 0xe0 0x3c */ - NULL, /* 0xe0 0x3d */ - NULL, /* 0xe0 0x3e */ - NULL, /* 0xe0 0x3f */ - NULL, /* 0xe0 0x40 */ - NULL, /* 0xe0 0x41 */ - NULL, /* 0xe0 0x42 */ - NULL, /* 0xe0 0x43 */ - NULL, /* 0xe0 0x44 */ - NULL, /* 0xe0 0x45 */ - "Ctrl-Break", /* 0xe0 0x46 */ - "Grey Home", /* 0xe0 0x47 */ - "Grey Up", /* 0xe0 0x48 */ - "Grey PgUp", /* 0xe0 0x49 */ - NULL, /* 0xe0 0x4a */ - "Grey Left", /* 0xe0 0x4b */ - NULL, /* 0xe0 0x4c */ - "Grey Right", /* 0xe0 0x4d */ - NULL, /* 0xe0 0x4e */ - "Grey End", /* 0xe0 0x4f */ - "Grey Down", /* 0xe0 0x50 */ - "Grey PgDn", /* 0xe0 0x51 */ - "Grey Insert", /* 0xe0 0x52 */ - "Grey Delete", /* 0xe0 0x53 */ - NULL, /* 0xe0 0x54 */ - NULL, /* 0xe0 0x55 */ - NULL, /* 0xe0 0x56 */ - NULL, /* 0xe0 0x57 */ - NULL, /* 0xe0 0x58 */ - NULL, /* 0xe0 0x59 */ - NULL, /* 0xe0 0x5a */ - "LeftWindow", /* 0xe0 0x5b */ - "RightWindow", /* 0xe0 0x5c */ - "Menu", /* 0xe0 0x5d */ - "Power", /* 0xe0 0x5e */ - "Sleep", /* 0xe0 0x5f */ - NULL, /* 0xe0 0x60 */ - NULL, /* 0xe0 0x61 */ - NULL, /* 0xe0 0x62 */ - "Wake", /* 0xe0 0x63 */ - NULL, /* 0xe0 0x64 */ - NULL, /* 0xe0 0x65 */ - NULL, /* 0xe0 0x66 */ - NULL, /* 0xe0 0x67 */ - NULL, /* 0xe0 0x68 */ - NULL, /* 0xe0 0x69 */ - NULL, /* 0xe0 0x6a */ - NULL, /* 0xe0 0x6b */ - NULL, /* 0xe0 0x6c */ - NULL, /* 0xe0 0x6d */ - NULL, /* 0xe0 0x6e */ - NULL, /* 0xe0 0x6f */ - NULL, /* 0xe0 0x70 */ - NULL, /* 0xe0 0x71 */ - NULL, /* 0xe0 0x72 */ - NULL, /* 0xe0 0x73 */ - NULL, /* 0xe0 0x74 */ - NULL, /* 0xe0 0x75 */ - NULL, /* 0xe0 0x76 */ - NULL, /* 0xe0 0x77 */ - NULL, /* 0xe0 0x78 */ - NULL, /* 0xe0 0x79 */ - NULL, /* 0xe0 0x7a */ - NULL, /* 0xe0 0x7b */ - NULL, /* 0xe0 0x7c */ - NULL, /* 0xe0 0x7d */ - NULL, /* 0xe0 0x7e */ - NULL, /* 0xe0 0x7f */ -}; - -#define CHECK(r) check((r), #r, __FILE__, __LINE__) - -int check(long r, const char *expr, const char *file, int line) -{ - char buffer[256]; - if (r < 0) { - snprintf(buffer, sizeof(buffer), "%s:%d: %s: result %ld, %s", - file, line, expr, r, strerror(errno)); - exit(-1); - } - return r; -} - -#define SCODE_ESC 0xe0 -#define SCODE_BREAK 0x80 - -static int testscancode(int fd) -{ - static int escape, lctrl, rctrl; - ssize_t count; - unsigned char scode; - char *scodedescr; - - /* read a scancode and test for EOF */ - CHECK(count = read(fd, &scode, sizeof(scode))); - if (count < sizeof(scode)) { - return 0; - } - - /* print scancode */ - printf("0x%.2x ", scode); - fflush(stdout); - - /* test for escape */ - if (!escape && scode == SCODE_ESC) { - escape = 1; - return 1; - } - - /* describe scancode */ - scodedescr = (escape ? keydescresc : keydescr)[scode & ~SCODE_BREAK]; - if (scodedescr) - printf("[%s] ", scodedescr); - - if (scode & SCODE_BREAK) - printf("up\n"); - else - printf("down\n"); - - fflush(stdout); - - /* exit on ctrl-C */ - if ((scode & ~SCODE_BREAK) == 0x1d) { - if (escape) - rctrl = !(scode & SCODE_BREAK); - else - lctrl = !(scode & SCODE_BREAK); - } - if ((lctrl || rctrl) && !escape && scode == 0x2e) { - return 0; - } - - /* next key is not escaped */ - escape = 0; - - return 1; -} - -static volatile int terminate; - -static void set_terminate(int signum) -{ - terminate = signum; -} - -static int testscancodes(int fd) -{ - struct termios termios_old, termios_scan; - - /* this test only works with a TTY as stdin */ - if (!CHECK(isatty(fd))) { - printf("warning: this test can only be run from a console\n"); - return 0; - } - - /* catch fatal signals to restore the console */ - CHECK((signal(SIGHUP, set_terminate) == SIG_ERR) ? -1 : 0); - CHECK((signal(SIGINT, set_terminate) == SIG_ERR) ? -1 : 0); - CHECK((signal(SIGQUIT, set_terminate) == SIG_ERR) ? -1 : 0); - CHECK((signal(SIGABRT, set_terminate) == SIG_ERR) ? -1 : 0); - CHECK((signal(SIGPIPE, set_terminate) == SIG_ERR) ? -1 : 0); - CHECK((signal(SIGTERM, set_terminate) == SIG_ERR) ? -1 : 0); - - /* configure tty in raw input mode with scancodes and no echo */ - CHECK(tcgetattr(fd, &termios_old)); - termios_scan = termios_old; - termios_scan.c_iflag &= ~(BRKINT | ICRNL | IGNBRK | IGNCR | IGNPAR); - termios_scan.c_iflag &= ~(INLCR | INPCK | ISTRIP); - termios_scan.c_iflag &= ~(IXOFF | IXON | PARMRK); - termios_scan.c_iflag |= SCANCODES; - termios_scan.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL); - termios_scan.c_lflag &= ~(ICANON | IEXTEN | ISIG | NOFLSH); - CHECK(tcsetattr(fd, TCSANOW, &termios_scan)); - - /* test: is scancode input supported? */ - CHECK(tcgetattr(fd, &termios_scan)); - if (termios_scan.c_iflag & SCANCODES) { - while (!terminate && CHECK(testscancode(fd))) ; - } else { - printf("warning: cannot enable SCANCODES " - "(are you running from a console?)\n"); - } - - /* report if closed by a signal */ - if (terminate) { - printf("received signal %d, shutting down\n", terminate); - } - - /* restore original input mode */ - CHECK(tcsetattr(fd, TCSANOW, &termios_old)); - - /* clear buffered input */ - CHECK(tcflush(fd, TCIFLUSH)); -} - -int main(void) -{ - printf("try out some keys to find out whether SCANCODES works\n"); - printf("press CTRL+C to end this test\n"); - printf("please note that this test only works from a console tty\n"); - - /* perform test using stdin */ - if (testscancodes(STDIN_FILENO) < 0) - return -1; - else - return 0; -}