Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Apr 1996 09:19:24 EST
From:      "Kaleb S. KEITHLEY" <kaleb@x.org>
To:        J Wunsch <j@uriah.heep.sax.de>
Cc:        hackers@freefall.FreeBSD.org
Subject:   kernel support for keyboards
Message-ID:  <199604151319.JAA21967@exalt.x.org>

next in thread | raw e-mail | index | archive | help

No comments from the FreeBSD core tem in 48 hours. Maybe that's too early.

Diffs are relative to 2.1.0R but look like they should apply cleanly
to -current. kbdcontrol changes next, and then I'll give changes to
XFree86 for the server.

*** i386/include/cpu.h.orig	Sun Apr 14 13:24:41 1996
--- i386/include/cpu.h	Mon Apr 15 09:10:56 1996
***************
*** 114,126 ****
  #define CPU_CONSDEV		1	/* dev_t: console terminal device */
  #define	CPU_ADJKERNTZ		2	/* int:	timezone offset	for resettodr()	*/
  #define	CPU_DISRTCSET		3	/* int:	disable	resettodr() call */
! #define CPU_MAXID               4       /* number of valid machdep ids */
  
  #define CTL_MACHDEP_NAMES { \
  	{ 0, 0 }, \
  	{ "console_device", CTLTYPE_STRUCT }, \
  	{ "adjkerntz", CTLTYPE_INT }, \
  	{ "disable_rtc_set", CTLTYPE_INT }, \
  }
  
  #ifdef KERNEL
--- 114,141 ----
  #define CPU_CONSDEV		1	/* dev_t: console terminal device */
  #define	CPU_ADJKERNTZ		2	/* int:	timezone offset	for resettodr()	*/
  #define	CPU_DISRTCSET		3	/* int:	disable	resettodr() call */
! #define CPU_KEYMAPNAME		4	/* string: keymap name */
! #define CPU_KEYMAP		5	/* struct: keymap */
! #define CPU_KBDTYPE		6	/* int: keyboard type */
! #define CPU_MAXID               7       /* number of valid machdep ids */
! 
! #define KBDTYPE_84		0	/* Xt-style 84 key keyboard */
! #define KBDTYPE_101		1	/* Generic 101 key keyboard */
! #define KBDTYPE_102		2	/* Euro 102 key keyboard */
! #define KBDTYPE_104		3	/* 104 key keyboard */
! #define KBDTYPE_104E		4	/* 104 key ergo keyboard */
! #define KBDTYPE_MARQUARDT	5	/* Marquardt ergo keyboard */
! #define KBDTYPE_FLEXPRO		6	/* Key Tronic Flexpro ergo keyboard */
! #define KBDTYPE_DATAHAND	7	/* DataHand ergo keyboard */
  
  #define CTL_MACHDEP_NAMES { \
  	{ 0, 0 }, \
  	{ "console_device", CTLTYPE_STRUCT }, \
  	{ "adjkerntz", CTLTYPE_INT }, \
  	{ "disable_rtc_set", CTLTYPE_INT }, \
+ 	{ "keymap_name", CTLTYPE_STRING }, \
+ 	{ "keymap", CTLTYPE_STRUCT }, \
+ 	{ "kbd_type", CTLTYPE_INT }, \
  }
  
  #ifdef KERNEL
*** i386/i386/machdep.c.orig	Mon Apr 15 08:43:31 1996
--- i386/i386/machdep.c	Sun Apr 14 14:19:52 1996
***************
*** 117,122 ****
--- 117,123 ----
  #include <machine/specialreg.h>
  #include <machine/sysarch.h>
  #include <machine/cons.h>
+ #include <machine/console.h>
  #include <machine/devconf.h>
  #include <machine/bootinfo.h>
  #include <machine/md_var.h>
***************
*** 188,193 ****
--- 189,216 ----
  void dumpsys __P((void));
  void setup_netisrs __P((struct linker_set *)); /* XXX declare elsewhere */
  
+ static int kbdtype = KBDTYPE_101;
+ static char keymapname[MAXPATHLEN] = 
+ #ifdef DKKEYMAP
+ "danish.iso.kbd";	/* s/b "dk.iso.kbd" */
+ #endif
+ #ifdef UKKEYMAP		/* s/b GBKEYMAP */
+ "uk.iso.kbd";		/* s/b "gb.iso.kbd" */
+ #endif
+ #ifdef GRKEYMAP		/* s/b DEKEYMAP */
+ "german.iso.kbd";	/* s/b "de.iso.kbd" */
+ #endif
+ #ifdef SWKEYMAP		/* s/b SEKEYMAP */
+ "swedish.iso.kbd";	/* s/b se.iso.kbd */
+ #endif
+ #ifdef RUKEYMAP
+ "ru.koi8-r.kbd";	/* just a guess */
+ #endif
+ #if !defined(DKKEYMAP) && !defined(UKKEYMAP) && !defined(GRKEYMAP) && !defined(SWKEYMAP) && !defined(RUKEYMAP)
+ "us.iso.kbd";
+ #endif
+ extern keymap_t key_map;
+ 
  vm_offset_t buffer_sva, buffer_eva;
  vm_offset_t clean_sva, clean_eva;
  vm_offset_t pager_sva, pager_eva;
***************
*** 1031,1036 ****
--- 1054,1067 ----
  		return error;
  	case CPU_DISRTCSET:
  		return (sysctl_int(oldp, oldlenp, newp,	newlen,	&disable_rtc_set));
+ 	case CPU_KEYMAPNAME:
+ 		return (sysctl_string(oldp, oldlenp, newp, newlen,
+ 				      keymapname, sizeof keymapname));
+ 	case CPU_KEYMAP:
+ 		return (sysctl_struct(oldp, oldlenp, newp, newlen,
+ 				      &key_map, sizeof key_map));
+ 	case CPU_KBDTYPE:
+ 		return (sysctl_int(oldp, oldlenp, newp, newlen, &kbdtype));
  	default:
  		return (EOPNOTSUPP);
  	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199604151319.JAA21967>