diff options
-rw-r--r-- | sys/alpha/include/console.h | 3 | ||||
-rw-r--r-- | sys/dev/syscons/syscons.c | 19 | ||||
-rw-r--r-- | sys/dev/syscons/syscons.h | 19 | ||||
-rw-r--r-- | sys/i386/include/console.h | 3 | ||||
-rw-r--r-- | sys/i386/isa/syscons.c | 19 | ||||
-rw-r--r-- | sys/i386/isa/syscons.h | 19 | ||||
-rw-r--r-- | sys/isa/syscons.c | 19 | ||||
-rw-r--r-- | sys/isa/syscons.h | 19 |
8 files changed, 79 insertions, 41 deletions
diff --git a/sys/alpha/include/console.h b/sys/alpha/include/console.h index a700eaa0901e..cbeb2c4f82b2 100644 --- a/sys/alpha/include/console.h +++ b/sys/alpha/include/console.h @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: console.h,v 1.30 1997/08/08 22:52:25 sos Exp $ + * $Id: console.h,v 1.31 1997/09/04 09:05:17 kato Exp $ */ #ifndef _MACHINE_CONSOLE_H_ @@ -153,6 +153,7 @@ struct mouse_info { #define K_RAW 0 /* keyboard returns scancodes */ #define K_XLATE 1 /* keyboard returns ascii */ +#define K_CODE 2 /* keyboard returns keycodes */ #define KB_84 1 /* 'old' 84 key AT-keyboard */ #define KB_101 2 /* MF-101 or MF-102 keyboard */ diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c index fa0c28aa5f14..c92bb36a41d4 100644 --- a/sys/dev/syscons/syscons.c +++ b/sys/dev/syscons/syscons.c @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: syscons.c,v 1.232 1997/09/14 03:19:27 peter Exp $ + * $Id: syscons.c,v 1.233 1997/09/26 15:27:55 itojun Exp $ */ #include "sc.h" @@ -1408,13 +1408,19 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) case KDSKBMODE: /* set keyboard mode */ switch (*data) { case K_RAW: /* switch to RAW scancode mode */ + scp->status &= ~KBD_CODE_MODE; scp->status |= KBD_RAW_MODE; return 0; + case K_CODE: /* switch to CODE mode */ + scp->status &= ~KBD_RAW_MODE; + scp->status |= KBD_CODE_MODE; + return 0; + case K_XLATE: /* switch to XLT ascii mode */ if (scp == cur_console && scp->status & KBD_RAW_MODE) shfts = ctls = alts = agrs = metas = 0; - scp->status &= ~KBD_RAW_MODE; + scp->status &= ~(KBD_RAW_MODE | KBD_CODE_MODE); return 0; default: return EINVAL; @@ -1422,7 +1428,8 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) /* NOT REACHED */ case KDGKBMODE: /* get keyboard mode */ - *data = (scp->status & KBD_RAW_MODE) ? K_RAW : K_XLATE; + *data = (scp->status & KBD_RAW_MODE) ? K_RAW : + ((scp->status & KBD_CODE_MODE) ? K_CODE : K_XLATE); return 0; case KDMKTONE: /* sound the bell */ @@ -1992,7 +1999,8 @@ exchange_scr(void) set_destructive_cursor(new_scp); if ((old_scp->status & UNKNOWN_MODE) && crtc_vga) load_palette(palette); - if (old_scp->status & KBD_RAW_MODE || new_scp->status & KBD_RAW_MODE) + if (old_scp->status & KBD_RAW_MODE || new_scp->status & KBD_RAW_MODE || + old_scp->status & KBD_CODE_MODE || new_scp->status & KBD_CODE_MODE) shfts = ctls = alts = agrs = metas = 0; update_leds(new_scp->status); delayed_next_scr = FALSE; @@ -3026,6 +3034,9 @@ next_code: break; } + if (cur_console->status & KBD_CODE_MODE) + return (keycode | (scancode & 0x80)); + /* if scroll-lock pressed allow history browsing */ if (cur_console->history && cur_console->status & SLKED) { int i; diff --git a/sys/dev/syscons/syscons.h b/sys/dev/syscons/syscons.h index 578a71e0b222..0c74c32868c2 100644 --- a/sys/dev/syscons/syscons.h +++ b/sys/dev/syscons/syscons.h @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: syscons.h,v 1.32 1997/08/25 23:21:55 bde Exp $ + * $Id: syscons.h,v 1.33 1997/09/04 23:01:06 yokota Exp $ */ #ifndef _I386_ISA_SYSCONS_H_ @@ -56,14 +56,15 @@ #define LED_MASK 0x00007 #define UNKNOWN_MODE 0x00010 #define KBD_RAW_MODE 0x00020 -#define SWITCH_WAIT_REL 0x00040 -#define SWITCH_WAIT_ACQ 0x00080 -#define BUFFER_SAVED 0x00100 -#define CURSOR_ENABLED 0x00200 -#define MOUSE_ENABLED 0x00400 -#define MOUSE_MOVED 0x00800 -#define MOUSE_CUTTING 0x01000 -#define MOUSE_VISIBLE 0x02000 +#define KBD_CODE_MODE 0x00040 +#define SWITCH_WAIT_REL 0x00080 +#define SWITCH_WAIT_ACQ 0x00100 +#define BUFFER_SAVED 0x00200 +#define CURSOR_ENABLED 0x00400 +#define MOUSE_ENABLED 0x00800 +#define MOUSE_MOVED 0x01000 +#define MOUSE_CUTTING 0x02000 +#define MOUSE_VISIBLE 0x04000 /* configuration flags */ #define VISUAL_BELL 0x00001 diff --git a/sys/i386/include/console.h b/sys/i386/include/console.h index a700eaa0901e..cbeb2c4f82b2 100644 --- a/sys/i386/include/console.h +++ b/sys/i386/include/console.h @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: console.h,v 1.30 1997/08/08 22:52:25 sos Exp $ + * $Id: console.h,v 1.31 1997/09/04 09:05:17 kato Exp $ */ #ifndef _MACHINE_CONSOLE_H_ @@ -153,6 +153,7 @@ struct mouse_info { #define K_RAW 0 /* keyboard returns scancodes */ #define K_XLATE 1 /* keyboard returns ascii */ +#define K_CODE 2 /* keyboard returns keycodes */ #define KB_84 1 /* 'old' 84 key AT-keyboard */ #define KB_101 2 /* MF-101 or MF-102 keyboard */ diff --git a/sys/i386/isa/syscons.c b/sys/i386/isa/syscons.c index fa0c28aa5f14..c92bb36a41d4 100644 --- a/sys/i386/isa/syscons.c +++ b/sys/i386/isa/syscons.c @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: syscons.c,v 1.232 1997/09/14 03:19:27 peter Exp $ + * $Id: syscons.c,v 1.233 1997/09/26 15:27:55 itojun Exp $ */ #include "sc.h" @@ -1408,13 +1408,19 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) case KDSKBMODE: /* set keyboard mode */ switch (*data) { case K_RAW: /* switch to RAW scancode mode */ + scp->status &= ~KBD_CODE_MODE; scp->status |= KBD_RAW_MODE; return 0; + case K_CODE: /* switch to CODE mode */ + scp->status &= ~KBD_RAW_MODE; + scp->status |= KBD_CODE_MODE; + return 0; + case K_XLATE: /* switch to XLT ascii mode */ if (scp == cur_console && scp->status & KBD_RAW_MODE) shfts = ctls = alts = agrs = metas = 0; - scp->status &= ~KBD_RAW_MODE; + scp->status &= ~(KBD_RAW_MODE | KBD_CODE_MODE); return 0; default: return EINVAL; @@ -1422,7 +1428,8 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) /* NOT REACHED */ case KDGKBMODE: /* get keyboard mode */ - *data = (scp->status & KBD_RAW_MODE) ? K_RAW : K_XLATE; + *data = (scp->status & KBD_RAW_MODE) ? K_RAW : + ((scp->status & KBD_CODE_MODE) ? K_CODE : K_XLATE); return 0; case KDMKTONE: /* sound the bell */ @@ -1992,7 +1999,8 @@ exchange_scr(void) set_destructive_cursor(new_scp); if ((old_scp->status & UNKNOWN_MODE) && crtc_vga) load_palette(palette); - if (old_scp->status & KBD_RAW_MODE || new_scp->status & KBD_RAW_MODE) + if (old_scp->status & KBD_RAW_MODE || new_scp->status & KBD_RAW_MODE || + old_scp->status & KBD_CODE_MODE || new_scp->status & KBD_CODE_MODE) shfts = ctls = alts = agrs = metas = 0; update_leds(new_scp->status); delayed_next_scr = FALSE; @@ -3026,6 +3034,9 @@ next_code: break; } + if (cur_console->status & KBD_CODE_MODE) + return (keycode | (scancode & 0x80)); + /* if scroll-lock pressed allow history browsing */ if (cur_console->history && cur_console->status & SLKED) { int i; diff --git a/sys/i386/isa/syscons.h b/sys/i386/isa/syscons.h index 578a71e0b222..0c74c32868c2 100644 --- a/sys/i386/isa/syscons.h +++ b/sys/i386/isa/syscons.h @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: syscons.h,v 1.32 1997/08/25 23:21:55 bde Exp $ + * $Id: syscons.h,v 1.33 1997/09/04 23:01:06 yokota Exp $ */ #ifndef _I386_ISA_SYSCONS_H_ @@ -56,14 +56,15 @@ #define LED_MASK 0x00007 #define UNKNOWN_MODE 0x00010 #define KBD_RAW_MODE 0x00020 -#define SWITCH_WAIT_REL 0x00040 -#define SWITCH_WAIT_ACQ 0x00080 -#define BUFFER_SAVED 0x00100 -#define CURSOR_ENABLED 0x00200 -#define MOUSE_ENABLED 0x00400 -#define MOUSE_MOVED 0x00800 -#define MOUSE_CUTTING 0x01000 -#define MOUSE_VISIBLE 0x02000 +#define KBD_CODE_MODE 0x00040 +#define SWITCH_WAIT_REL 0x00080 +#define SWITCH_WAIT_ACQ 0x00100 +#define BUFFER_SAVED 0x00200 +#define CURSOR_ENABLED 0x00400 +#define MOUSE_ENABLED 0x00800 +#define MOUSE_MOVED 0x01000 +#define MOUSE_CUTTING 0x02000 +#define MOUSE_VISIBLE 0x04000 /* configuration flags */ #define VISUAL_BELL 0x00001 diff --git a/sys/isa/syscons.c b/sys/isa/syscons.c index fa0c28aa5f14..c92bb36a41d4 100644 --- a/sys/isa/syscons.c +++ b/sys/isa/syscons.c @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: syscons.c,v 1.232 1997/09/14 03:19:27 peter Exp $ + * $Id: syscons.c,v 1.233 1997/09/26 15:27:55 itojun Exp $ */ #include "sc.h" @@ -1408,13 +1408,19 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) case KDSKBMODE: /* set keyboard mode */ switch (*data) { case K_RAW: /* switch to RAW scancode mode */ + scp->status &= ~KBD_CODE_MODE; scp->status |= KBD_RAW_MODE; return 0; + case K_CODE: /* switch to CODE mode */ + scp->status &= ~KBD_RAW_MODE; + scp->status |= KBD_CODE_MODE; + return 0; + case K_XLATE: /* switch to XLT ascii mode */ if (scp == cur_console && scp->status & KBD_RAW_MODE) shfts = ctls = alts = agrs = metas = 0; - scp->status &= ~KBD_RAW_MODE; + scp->status &= ~(KBD_RAW_MODE | KBD_CODE_MODE); return 0; default: return EINVAL; @@ -1422,7 +1428,8 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) /* NOT REACHED */ case KDGKBMODE: /* get keyboard mode */ - *data = (scp->status & KBD_RAW_MODE) ? K_RAW : K_XLATE; + *data = (scp->status & KBD_RAW_MODE) ? K_RAW : + ((scp->status & KBD_CODE_MODE) ? K_CODE : K_XLATE); return 0; case KDMKTONE: /* sound the bell */ @@ -1992,7 +1999,8 @@ exchange_scr(void) set_destructive_cursor(new_scp); if ((old_scp->status & UNKNOWN_MODE) && crtc_vga) load_palette(palette); - if (old_scp->status & KBD_RAW_MODE || new_scp->status & KBD_RAW_MODE) + if (old_scp->status & KBD_RAW_MODE || new_scp->status & KBD_RAW_MODE || + old_scp->status & KBD_CODE_MODE || new_scp->status & KBD_CODE_MODE) shfts = ctls = alts = agrs = metas = 0; update_leds(new_scp->status); delayed_next_scr = FALSE; @@ -3026,6 +3034,9 @@ next_code: break; } + if (cur_console->status & KBD_CODE_MODE) + return (keycode | (scancode & 0x80)); + /* if scroll-lock pressed allow history browsing */ if (cur_console->history && cur_console->status & SLKED) { int i; diff --git a/sys/isa/syscons.h b/sys/isa/syscons.h index 578a71e0b222..0c74c32868c2 100644 --- a/sys/isa/syscons.h +++ b/sys/isa/syscons.h @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: syscons.h,v 1.32 1997/08/25 23:21:55 bde Exp $ + * $Id: syscons.h,v 1.33 1997/09/04 23:01:06 yokota Exp $ */ #ifndef _I386_ISA_SYSCONS_H_ @@ -56,14 +56,15 @@ #define LED_MASK 0x00007 #define UNKNOWN_MODE 0x00010 #define KBD_RAW_MODE 0x00020 -#define SWITCH_WAIT_REL 0x00040 -#define SWITCH_WAIT_ACQ 0x00080 -#define BUFFER_SAVED 0x00100 -#define CURSOR_ENABLED 0x00200 -#define MOUSE_ENABLED 0x00400 -#define MOUSE_MOVED 0x00800 -#define MOUSE_CUTTING 0x01000 -#define MOUSE_VISIBLE 0x02000 +#define KBD_CODE_MODE 0x00040 +#define SWITCH_WAIT_REL 0x00080 +#define SWITCH_WAIT_ACQ 0x00100 +#define BUFFER_SAVED 0x00200 +#define CURSOR_ENABLED 0x00400 +#define MOUSE_ENABLED 0x00800 +#define MOUSE_MOVED 0x01000 +#define MOUSE_CUTTING 0x02000 +#define MOUSE_VISIBLE 0x04000 /* configuration flags */ #define VISUAL_BELL 0x00001 |