From 5c4c6bf0ff050933db62f0657c384ee7b904da75 Mon Sep 17 00:00:00 2001 From: sos Date: Thu, 17 Nov 1994 22:03:18 +0000 Subject: Added support for the MicroSoft Natural keyboard Add support for ws_xpixel & ws_ypixel in winsize. Submitted by: Natural support suggested by Kaleb Keithley (kaleb@x.org) --- sys/dev/kbd/kbdtables.h | 43 +++++++++++++++++++++++++++++++------------ sys/dev/syscons/syscons.c | 27 ++++++++++++++++++++++++--- sys/i386/isa/kbdtables.h | 43 +++++++++++++++++++++++++++++++------------ sys/i386/isa/syscons.c | 27 ++++++++++++++++++++++++--- sys/isa/kbdtables.h | 43 +++++++++++++++++++++++++++++++------------ sys/isa/syscons.c | 27 ++++++++++++++++++++++++--- 6 files changed, 165 insertions(+), 45 deletions(-) (limited to 'sys') diff --git a/sys/dev/kbd/kbdtables.h b/sys/dev/kbd/kbdtables.h index a48b6a6..6eb677e 100644 --- a/sys/dev/kbd/kbdtables.h +++ b/sys/dev/kbd/kbdtables.h @@ -25,13 +25,13 @@ * (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: kbdtables.h,v 1.14 1994/09/29 08:29:17 sos Exp $ + * $Id: kbdtables.h,v 1.15 1994/10/01 02:56:17 davidg Exp $ */ #define SET8 0x80 /* eight bit for emacs SET8-key */ #ifdef DKKEYMAP -keymap_t key_map = { 0x69, /* DK iso8859 keymap */ +keymap_t key_map = { 0x6C, /* DK iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -142,11 +142,14 @@ keymap_t key_map = { 0x69, /* DK iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef UKKEYMAP -keymap_t key_map = { 0x69, /* uk iso8859 keymap */ +keymap_t key_map = { 0x6C, /* uk iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -257,11 +260,14 @@ keymap_t key_map = { 0x69, /* uk iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef GRKEYMAP -keymap_t key_map = { 0x69, /* german iso8859 keymap */ +keymap_t key_map = { 0x6C, /* german iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -372,11 +378,14 @@ keymap_t key_map = { 0x69, /* german iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef SWKEYMAP -keymap_t key_map = { 0x69, /* swedish iso8859 keymap */ +keymap_t key_map = { 0x6C, /* swedish iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -487,11 +496,14 @@ keymap_t key_map = { 0x69, /* swedish iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef RUKEYMAP -keymap_t key_map = { 0xe9, /* keys number */ +keymap_t key_map = { 0xEC, /* keys number */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -602,9 +614,9 @@ keymap_t key_map = { 0xe9, /* keys number */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), 0x7F, 0x7F, SET8|0x7F, SET8|0x7F, RBT, SET8|0x7F, 0xC2, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, -/* sc=69 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, -/* sc=6a */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, -/* sc=6b */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, /* sc=6c */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, /* sc=6d */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, /* sc=6e */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, @@ -731,12 +743,15 @@ keymap_t key_map = { 0xe9, /* keys number */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), 0x7F, 0x7F, SET8|0x7F, SET8|0x7F, RBT, SET8|0x7F, 0xC2, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #if !defined(DKKEYMAP) && !defined(UKKEYMAP) && !defined(GRKEYMAP) && !defined(SWKEYMAP) && !defined(RUKEYMAP) -keymap_t key_map = { 0x69, /* US iso8859 keymap */ +keymap_t key_map = { 0x6C, /* US iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -847,11 +862,14 @@ keymap_t key_map = { 0x69, /* US iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif -fkeytab_t fkey_tab[60] = { +fkeytab_t fkey_tab[63] = { /* 00-03 */ {"\033[M", 3}, {"\033[N", 3}, {"\033[O", 3}, {"\033[P", 3}, /* 04-07 */ {"\033[Q", 3}, {"\033[R", 3}, {"\033[S", 3}, {"\033[T", 3}, /* 08-0B */ {"\033[U", 3}, {"\033[V", 3}, {"\033[W", 3}, {"\033[X", 3}, @@ -866,5 +884,6 @@ fkeytab_t fkey_tab[60] = { /* 2C-2F */ {"\033[o", 3}, {"\033[p", 3}, {"\033[q", 3}, {"\033[r", 3}, /* 30-33 */ {"\033[H", 3}, {"\033[A", 3}, {"\033[I", 3}, {"-" , 1}, /* 34-37 */ {"\033[D", 3}, {"\177" , 1}, {"\033[C", 3}, {"+" , 1}, -/* 38-3B */ {"\033[F", 3}, {"\033[B", 3}, {"\033[G", 3}, {"\033[L", 3} +/* 38-3B */ {"\033[F", 3}, {"\033[B", 3}, {"\033[G", 3}, {"\033[L", 3}, +/* 3C-3E */ {"\033[s", 3}, {"\033[t", 3}, {"\033[u", 3} }; diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c index a5b6577..586f5e5 100644 --- a/sys/dev/syscons/syscons.c +++ b/sys/dev/syscons/syscons.c @@ -35,7 +35,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: syscons.c,v 1.75 1994/11/03 11:40:01 ache Exp $ + * $Id: syscons.c,v 1.76 1994/11/06 00:30:16 bde Exp $ */ #include "sc.h" @@ -734,9 +734,19 @@ pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) scp->mode = cmd & 0xFF; scp->status |= UNKNOWN_MODE; /* graphics mode */ - if (scp == cur_console) + scp->xsize = (*(video_mode_ptr + (scp->mode*64))) * 8; + scp->ysize = (*(video_mode_ptr + (scp->mode*64) + 1) + 1) + * (*(video_mode_ptr + (scp->mode*64) + 2)); + if (scp == cur_console) { set_mode(scp); - /* clear_graphics();*/ + /* clear_graphics();*/ + } + if (tp->t_winsize.ws_xpixel != scp->xsize + || tp->t_winsize.ws_ypixel != scp->ysize) { + tp->t_winsize.ws_xpixel = scp->xsize; + tp->t_winsize.ws_ypixel = scp->ysize; + pgsignal(tp->t_pgrp, SIGWINCH, 1); + } return 0; case VT_SETMODE: /* set screen switcher mode */ @@ -2339,6 +2349,17 @@ next_code: case 0x53: /* grey delete key */ keycode = 0x67; break; + + /* the following 3 are only used on the MS "Natural" keyboard */ + case 0x5b: /* left Window key */ + keycode = 0x69; + break; + case 0x5c: /* right Window key */ + keycode = 0x6a; + break; + case 0x5d: /* menu key */ + keycode = 0x6b; + break; default: /* ignore everything else */ goto next_code; } diff --git a/sys/i386/isa/kbdtables.h b/sys/i386/isa/kbdtables.h index a48b6a6..6eb677e 100644 --- a/sys/i386/isa/kbdtables.h +++ b/sys/i386/isa/kbdtables.h @@ -25,13 +25,13 @@ * (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: kbdtables.h,v 1.14 1994/09/29 08:29:17 sos Exp $ + * $Id: kbdtables.h,v 1.15 1994/10/01 02:56:17 davidg Exp $ */ #define SET8 0x80 /* eight bit for emacs SET8-key */ #ifdef DKKEYMAP -keymap_t key_map = { 0x69, /* DK iso8859 keymap */ +keymap_t key_map = { 0x6C, /* DK iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -142,11 +142,14 @@ keymap_t key_map = { 0x69, /* DK iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef UKKEYMAP -keymap_t key_map = { 0x69, /* uk iso8859 keymap */ +keymap_t key_map = { 0x6C, /* uk iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -257,11 +260,14 @@ keymap_t key_map = { 0x69, /* uk iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef GRKEYMAP -keymap_t key_map = { 0x69, /* german iso8859 keymap */ +keymap_t key_map = { 0x6C, /* german iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -372,11 +378,14 @@ keymap_t key_map = { 0x69, /* german iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef SWKEYMAP -keymap_t key_map = { 0x69, /* swedish iso8859 keymap */ +keymap_t key_map = { 0x6C, /* swedish iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -487,11 +496,14 @@ keymap_t key_map = { 0x69, /* swedish iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef RUKEYMAP -keymap_t key_map = { 0xe9, /* keys number */ +keymap_t key_map = { 0xEC, /* keys number */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -602,9 +614,9 @@ keymap_t key_map = { 0xe9, /* keys number */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), 0x7F, 0x7F, SET8|0x7F, SET8|0x7F, RBT, SET8|0x7F, 0xC2, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, -/* sc=69 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, -/* sc=6a */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, -/* sc=6b */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, /* sc=6c */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, /* sc=6d */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, /* sc=6e */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, @@ -731,12 +743,15 @@ keymap_t key_map = { 0xe9, /* keys number */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), 0x7F, 0x7F, SET8|0x7F, SET8|0x7F, RBT, SET8|0x7F, 0xC2, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #if !defined(DKKEYMAP) && !defined(UKKEYMAP) && !defined(GRKEYMAP) && !defined(SWKEYMAP) && !defined(RUKEYMAP) -keymap_t key_map = { 0x69, /* US iso8859 keymap */ +keymap_t key_map = { 0x6C, /* US iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -847,11 +862,14 @@ keymap_t key_map = { 0x69, /* US iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif -fkeytab_t fkey_tab[60] = { +fkeytab_t fkey_tab[63] = { /* 00-03 */ {"\033[M", 3}, {"\033[N", 3}, {"\033[O", 3}, {"\033[P", 3}, /* 04-07 */ {"\033[Q", 3}, {"\033[R", 3}, {"\033[S", 3}, {"\033[T", 3}, /* 08-0B */ {"\033[U", 3}, {"\033[V", 3}, {"\033[W", 3}, {"\033[X", 3}, @@ -866,5 +884,6 @@ fkeytab_t fkey_tab[60] = { /* 2C-2F */ {"\033[o", 3}, {"\033[p", 3}, {"\033[q", 3}, {"\033[r", 3}, /* 30-33 */ {"\033[H", 3}, {"\033[A", 3}, {"\033[I", 3}, {"-" , 1}, /* 34-37 */ {"\033[D", 3}, {"\177" , 1}, {"\033[C", 3}, {"+" , 1}, -/* 38-3B */ {"\033[F", 3}, {"\033[B", 3}, {"\033[G", 3}, {"\033[L", 3} +/* 38-3B */ {"\033[F", 3}, {"\033[B", 3}, {"\033[G", 3}, {"\033[L", 3}, +/* 3C-3E */ {"\033[s", 3}, {"\033[t", 3}, {"\033[u", 3} }; diff --git a/sys/i386/isa/syscons.c b/sys/i386/isa/syscons.c index a5b6577..586f5e5 100644 --- a/sys/i386/isa/syscons.c +++ b/sys/i386/isa/syscons.c @@ -35,7 +35,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: syscons.c,v 1.75 1994/11/03 11:40:01 ache Exp $ + * $Id: syscons.c,v 1.76 1994/11/06 00:30:16 bde Exp $ */ #include "sc.h" @@ -734,9 +734,19 @@ pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) scp->mode = cmd & 0xFF; scp->status |= UNKNOWN_MODE; /* graphics mode */ - if (scp == cur_console) + scp->xsize = (*(video_mode_ptr + (scp->mode*64))) * 8; + scp->ysize = (*(video_mode_ptr + (scp->mode*64) + 1) + 1) + * (*(video_mode_ptr + (scp->mode*64) + 2)); + if (scp == cur_console) { set_mode(scp); - /* clear_graphics();*/ + /* clear_graphics();*/ + } + if (tp->t_winsize.ws_xpixel != scp->xsize + || tp->t_winsize.ws_ypixel != scp->ysize) { + tp->t_winsize.ws_xpixel = scp->xsize; + tp->t_winsize.ws_ypixel = scp->ysize; + pgsignal(tp->t_pgrp, SIGWINCH, 1); + } return 0; case VT_SETMODE: /* set screen switcher mode */ @@ -2339,6 +2349,17 @@ next_code: case 0x53: /* grey delete key */ keycode = 0x67; break; + + /* the following 3 are only used on the MS "Natural" keyboard */ + case 0x5b: /* left Window key */ + keycode = 0x69; + break; + case 0x5c: /* right Window key */ + keycode = 0x6a; + break; + case 0x5d: /* menu key */ + keycode = 0x6b; + break; default: /* ignore everything else */ goto next_code; } diff --git a/sys/isa/kbdtables.h b/sys/isa/kbdtables.h index a48b6a6..6eb677e 100644 --- a/sys/isa/kbdtables.h +++ b/sys/isa/kbdtables.h @@ -25,13 +25,13 @@ * (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: kbdtables.h,v 1.14 1994/09/29 08:29:17 sos Exp $ + * $Id: kbdtables.h,v 1.15 1994/10/01 02:56:17 davidg Exp $ */ #define SET8 0x80 /* eight bit for emacs SET8-key */ #ifdef DKKEYMAP -keymap_t key_map = { 0x69, /* DK iso8859 keymap */ +keymap_t key_map = { 0x6C, /* DK iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -142,11 +142,14 @@ keymap_t key_map = { 0x69, /* DK iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef UKKEYMAP -keymap_t key_map = { 0x69, /* uk iso8859 keymap */ +keymap_t key_map = { 0x6C, /* uk iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -257,11 +260,14 @@ keymap_t key_map = { 0x69, /* uk iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef GRKEYMAP -keymap_t key_map = { 0x69, /* german iso8859 keymap */ +keymap_t key_map = { 0x6C, /* german iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -372,11 +378,14 @@ keymap_t key_map = { 0x69, /* german iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef SWKEYMAP -keymap_t key_map = { 0x69, /* swedish iso8859 keymap */ +keymap_t key_map = { 0x6C, /* swedish iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -487,11 +496,14 @@ keymap_t key_map = { 0x69, /* swedish iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #ifdef RUKEYMAP -keymap_t key_map = { 0xe9, /* keys number */ +keymap_t key_map = { 0xEC, /* keys number */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -602,9 +614,9 @@ keymap_t key_map = { 0xe9, /* keys number */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), 0x7F, 0x7F, SET8|0x7F, SET8|0x7F, RBT, SET8|0x7F, 0xC2, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, -/* sc=69 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, -/* sc=6a */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, -/* sc=6b */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, /* sc=6c */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, /* sc=6d */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, /* sc=6e */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00, @@ -731,12 +743,15 @@ keymap_t key_map = { 0xe9, /* keys number */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), 0x7F, 0x7F, SET8|0x7F, SET8|0x7F, RBT, SET8|0x7F, 0xC2, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif #if !defined(DKKEYMAP) && !defined(UKKEYMAP) && !defined(GRKEYMAP) && !defined(SWKEYMAP) && !defined(RUKEYMAP) -keymap_t key_map = { 0x69, /* US iso8859 keymap */ +keymap_t key_map = { 0x6C, /* US iso8859 keymap */ /* alt * scan cntrl alt alt cntrl * code base shift cntrl shift alt shift cntrl shift spcl flgs @@ -847,11 +862,14 @@ keymap_t key_map = { 0x69, /* US iso8859 keymap */ /* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00, /* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00, /* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00, +/* sc=69 */ F(61), F(61), F(61), F(61), F(61), F(61), F(61), F(61), 0xFF, 0x00, +/* sc=6a */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00, +/* sc=6b */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00, }; #endif -fkeytab_t fkey_tab[60] = { +fkeytab_t fkey_tab[63] = { /* 00-03 */ {"\033[M", 3}, {"\033[N", 3}, {"\033[O", 3}, {"\033[P", 3}, /* 04-07 */ {"\033[Q", 3}, {"\033[R", 3}, {"\033[S", 3}, {"\033[T", 3}, /* 08-0B */ {"\033[U", 3}, {"\033[V", 3}, {"\033[W", 3}, {"\033[X", 3}, @@ -866,5 +884,6 @@ fkeytab_t fkey_tab[60] = { /* 2C-2F */ {"\033[o", 3}, {"\033[p", 3}, {"\033[q", 3}, {"\033[r", 3}, /* 30-33 */ {"\033[H", 3}, {"\033[A", 3}, {"\033[I", 3}, {"-" , 1}, /* 34-37 */ {"\033[D", 3}, {"\177" , 1}, {"\033[C", 3}, {"+" , 1}, -/* 38-3B */ {"\033[F", 3}, {"\033[B", 3}, {"\033[G", 3}, {"\033[L", 3} +/* 38-3B */ {"\033[F", 3}, {"\033[B", 3}, {"\033[G", 3}, {"\033[L", 3}, +/* 3C-3E */ {"\033[s", 3}, {"\033[t", 3}, {"\033[u", 3} }; diff --git a/sys/isa/syscons.c b/sys/isa/syscons.c index a5b6577..586f5e5 100644 --- a/sys/isa/syscons.c +++ b/sys/isa/syscons.c @@ -35,7 +35,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: syscons.c,v 1.75 1994/11/03 11:40:01 ache Exp $ + * $Id: syscons.c,v 1.76 1994/11/06 00:30:16 bde Exp $ */ #include "sc.h" @@ -734,9 +734,19 @@ pcioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) scp->mode = cmd & 0xFF; scp->status |= UNKNOWN_MODE; /* graphics mode */ - if (scp == cur_console) + scp->xsize = (*(video_mode_ptr + (scp->mode*64))) * 8; + scp->ysize = (*(video_mode_ptr + (scp->mode*64) + 1) + 1) + * (*(video_mode_ptr + (scp->mode*64) + 2)); + if (scp == cur_console) { set_mode(scp); - /* clear_graphics();*/ + /* clear_graphics();*/ + } + if (tp->t_winsize.ws_xpixel != scp->xsize + || tp->t_winsize.ws_ypixel != scp->ysize) { + tp->t_winsize.ws_xpixel = scp->xsize; + tp->t_winsize.ws_ypixel = scp->ysize; + pgsignal(tp->t_pgrp, SIGWINCH, 1); + } return 0; case VT_SETMODE: /* set screen switcher mode */ @@ -2339,6 +2349,17 @@ next_code: case 0x53: /* grey delete key */ keycode = 0x67; break; + + /* the following 3 are only used on the MS "Natural" keyboard */ + case 0x5b: /* left Window key */ + keycode = 0x69; + break; + case 0x5c: /* right Window key */ + keycode = 0x6a; + break; + case 0x5d: /* menu key */ + keycode = 0x6b; + break; default: /* ignore everything else */ goto next_code; } -- cgit v1.1