92 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
/* Keyboard mode control program for 386BSD */
 | 
						|
 | 
						|
#include <sys/types.h>
 | 
						|
#include <fcntl.h>
 | 
						|
#include <errno.h>
 | 
						|
#include <unistd.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include <ctype.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <string.h>
 | 
						|
 | 
						|
#include <X11/X.h>
 | 
						|
#include "input.h"
 | 
						|
#include "scrnintstr.h"
 | 
						|
 | 
						|
#include "xf86.h"
 | 
						|
#include "xf86Priv.h"
 | 
						|
#include "xf86_OSlib.h"
 | 
						|
 | 
						|
static int fd;
 | 
						|
 | 
						|
void
 | 
						|
msg (char* s)
 | 
						|
{
 | 
						|
  perror (s);
 | 
						|
  close (fd);
 | 
						|
  exit (-1);
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
main(int argc, char** argv)
 | 
						|
{
 | 
						|
#if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT)
 | 
						|
    vtmode_t vtmode;
 | 
						|
#endif
 | 
						|
    Bool syscons = FALSE;
 | 
						|
 | 
						|
    if ((fd = open("/dev/vga",O_RDONLY,0)) <0)
 | 
						|
      msg ("Cannot open /dev/vga");
 | 
						|
 | 
						|
#if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT)
 | 
						|
    /* Check if syscons */
 | 
						|
    if (ioctl(fd, VT_GETMODE, &vtmode) >= 0)
 | 
						|
      syscons = TRUE;
 | 
						|
#endif
 | 
						|
    
 | 
						|
    if (0 == strcmp (argv[1], "-u"))
 | 
						|
      {
 | 
						|
	if (syscons)
 | 
						|
	  {
 | 
						|
#if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT)
 | 
						|
	    ioctl (fd, KDSKBMODE, K_RAW);
 | 
						|
#endif
 | 
						|
	  }
 | 
						|
	else
 | 
						|
	  {
 | 
						|
	    if (ioctl (fd, CONSOLE_X_MODE_ON, 0) < 0)
 | 
						|
	      {
 | 
						|
	        close (fd);
 | 
						|
	        exit (0);  /* Assume codrv, so nothing to do */
 | 
						|
	      }
 | 
						|
          }
 | 
						|
      }
 | 
						|
    else if (0 == strcmp (argv[1], "-a"))
 | 
						|
      {
 | 
						|
	if (syscons)
 | 
						|
	  {
 | 
						|
#if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT)
 | 
						|
	    ioctl (fd, KDSKBMODE, K_XLATE);
 | 
						|
#endif
 | 
						|
	  }
 | 
						|
	else
 | 
						|
	  {
 | 
						|
	    if (ioctl (fd, CONSOLE_X_MODE_OFF, 0) < 0)
 | 
						|
	      {
 | 
						|
	        close (fd);
 | 
						|
	        exit (0);  /* Assume codrv, so nothing to do */
 | 
						|
	      }
 | 
						|
          }
 | 
						|
      }
 | 
						|
    else
 | 
						|
      {
 | 
						|
	close (fd);
 | 
						|
	fprintf (stderr,"Usage: %s [-u|-a]\n",argv[0]);
 | 
						|
	fprintf (stderr,"-u for sending up down key events in x mode.\n");
 | 
						|
	fprintf (stderr,"-a for sending ascii keys in normal use.\n");
 | 
						|
	exit (-1);
 | 
						|
      }
 | 
						|
    close (fd);
 | 
						|
    exit (0);
 | 
						|
}
 |