summaryrefslogtreecommitdiffstats
path: root/sys/dev/uart/uart_kbd_sun.h
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2006-11-02 00:01:15 +0000
committermarius <marius@FreeBSD.org>2006-11-02 00:01:15 +0000
commitabfeec800f7ea83b4710e561d5d32f92765da464 (patch)
treecb3d7574d0e76f24b497c965e22a0110a6fbe651 /sys/dev/uart/uart_kbd_sun.h
parent1f52d4e246f70457aa645838551ddd4bec519ca8 (diff)
downloadFreeBSD-src-abfeec800f7ea83b4710e561d5d32f92765da464.zip
FreeBSD-src-abfeec800f7ea83b4710e561d5d32f92765da464.tar.gz
- In sunkbd_probe_keyboard() don't bother to determine the keyboard layout
as we have no use for that info. Instead let this function return the keyboard ID and verify at its invocation in sunkbd_configure() that we're talking to a Sun type 4/5/6 keyboard, i.e. a keyboard supported by this driver. - Add an option SUNKBD_EMULATE_ATKBD whose code is based on the respective code in ukbd(4) and like UKBD_EMULATE_ATSCANCODE causes this driver to emit AT keyboard/KB_101 compatible scan codes in K_RAW mode as assumed by kbdmux(4). Unlike UKBD_EMULATE_ATSCANCODE, SUNKBD_EMULATE_ATKBD also triggers the use of AT keyboard maps and thus allows to use the map files in share/syscons/keymaps with this driver at the cost of an additional translation (in ukbd(4) this just is the way of operation). - Implement an option SUNKBD_DFLT_KEYMAP, which like the equivalent options of the other keyboard drivers allows to specify the default in-kernel keyboard map. For obvious reasons this made to only work when also using SUNKBD_EMULATE_ATKBD. - Implement sunkbd_check(), sunkbd_check_char() and sunkbd_clear_state(), which are also required for interoperability with kbdmux(4). - Implement K_CODE mode and FreeBSD keypad compose. - As a minor hack define KBD_DFLT_KEYMAP also in the !SUNKBD_EMULATE_ATKBD case so we can obtain fkey_tab from <dev/kbd/kbdtables.h> rather than having to duplicate it and #ifdef some more code. - Don't use the TX-buffer for writing the two command bytes for setting the keyboard LEDs as this consequently requires a hardware FIFO that is at least two bytes in depth, which the NMOS-variant of the Zilog SCCs doesn't have. Thus use an inlined version of uart_putc() to consecutively write the command bytes (a cleaner approach would be to do this via the soft interrupt handler but that variant wouldn't work while in ddb(4)). [1] - Fix some minor style(9) bugs. PR: 90316 [1] Reviewed by: marcel [1]
Diffstat (limited to 'sys/dev/uart/uart_kbd_sun.h')
-rw-r--r--sys/dev/uart/uart_kbd_sun.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/dev/uart/uart_kbd_sun.h b/sys/dev/uart/uart_kbd_sun.h
index 603d257..84b5553 100644
--- a/sys/dev/uart/uart_kbd_sun.h
+++ b/sys/dev/uart/uart_kbd_sun.h
@@ -63,3 +63,6 @@
#define KB_SUN2 2 /* type 2 keyboard */
#define KB_SUN3 3 /* type 3 keyboard */
#define KB_SUN4 4 /* type 4/5/6 keyboard */
+
+#define SKBD_KEY_RELEASE 0x80
+#define SKBD_KEY_CHAR(c) ((c) & 0x7f)
OpenPOWER on IntegriCloud