Beispiel #1
0
/*
** xf86HypConfig
** Reads the HyperPen section from the XF86Config file
*/
static Bool
xf86HypConfig(LocalDevicePtr *array, int inx, int max, LexPtr val)
{
    LocalDevicePtr	dev = array[inx];
    HyperPenDevicePtr	priv = (HyperPenDevicePtr)(dev->private);
    int			token;
    int			mtoken;

    DBG(1, ErrorF("xf86HypConfig\n"));

    priv->AutoPT=1;
    priv->PMax=1000;

    while ((token = xf86GetToken(HypTab)) != ENDSUBSECTION) {
	switch(token) {
	case DEVICENAME:
	    if (xf86GetToken(NULL) != STRING)
		xf86ConfigError("Option string expected");
	    else {
		dev->name = strdup(val->str);
		if (xf86Verbose)
		    ErrorF("%s HyperPen X device name is %s\n", XCONFIG_GIVEN,
			   dev->name);
	    }
	    break;

	case PORT:
	    if (xf86GetToken(NULL) != STRING)
		xf86ConfigError("Option string expected");
	    else {
		priv->hypDevice = strdup(val->str);
		if (xf86Verbose)
		    ErrorF("%s HyperPen port is %s\n", XCONFIG_GIVEN,
			   priv->hypDevice);
	    }
	    break;

	case THE_MODE:
	    mtoken = xf86GetToken(HypModeTabRec);
	    if ((mtoken == EOF) || (mtoken == STRING) || (mtoken == NUMBER)) 
		xf86ConfigError("Mode type token expected");
	    else {
		switch (mtoken) {
		case ABSOLUTE:
		    priv->flags |= ABSOLUTE_FLAG;
		    break;
		case RELATIVE:
		    priv->flags &= ~ABSOLUTE_FLAG;
		    break;
		default:
		    xf86ConfigError("Illegal Mode type");
		    break;
		}
	    }
	    break;

	case CURSOR:
	    mtoken = xf86GetToken(HypPointTabRec);
	    if ((mtoken == EOF) || (mtoken == STRING) || (mtoken == NUMBER)) 
		xf86ConfigError("Cursor token expected");
	    else {
		switch (mtoken) {
		case STYLUS:
		    priv->flags |= STYLUS_FLAG;
		    break;
		case PUCK:
		    priv->flags &= ~STYLUS_FLAG;
		    break;
		default:
		    xf86ConfigError("Illegal cursor type");
		    break;
		}
	    }
	    break;

	case DEBUG_LEVEL:
	    if (xf86GetToken(NULL) != NUMBER)
		xf86ConfigError("Option number expected");
	    debug_level = val->num;
	    if (xf86Verbose) {
#if DEBUG
		ErrorF("%s HyperPen debug level set to %d\n", XCONFIG_GIVEN,
		       debug_level);
#else
		ErrorF("%s HyperPen debug level not set to %d because"
		       " debugging is not compiled with the xf86HyperPen driver\n", XCONFIG_GIVEN,
		       debug_level);
#endif
	    }
	    break;

	case HISTORY_SIZE:
	    if (xf86GetToken(NULL) != NUMBER)
		xf86ConfigError("Option number expected");
	    dev->history_size = val->num;
	    if (xf86Verbose)
		ErrorF("%s HyperPen Motion history size is %d\n", XCONFIG_GIVEN,
		       dev->history_size);      
	    break;

	case ALWAYS_CORE:
	    xf86AlwaysCore(dev, TRUE);
	    if (xf86Verbose)
		ErrorF("%s HyperPen device always stays core pointer\n",
		       XCONFIG_GIVEN);
	    break;

	case ACTIVE_AREA:
	    if (xf86GetToken(NULL) != NUMBER)
		xf86ConfigError("Option number expected");
	    priv->hypXSize = val->realnum * 100;
	    if (xf86GetToken(NULL) != NUMBER)
		xf86ConfigError("Option number expected");
	    priv->hypYSize = val->realnum * 100;
	    if (xf86Verbose)
		ErrorF("%s HyperPen active area: %d.%02dx%d.%02d"
		       " inches\n", XCONFIG_GIVEN, priv->hypXSize / 100,
		       priv->hypXSize % 100, priv->hypYSize / 100,
		       priv->hypYSize % 100);
	    break;

	case ACTIVE_OFFSET:
	    if (xf86GetToken(NULL) != NUMBER)
		xf86ConfigError("Option number expected");
	    priv->hypXOffset = val->realnum * 100;
	    if (xf86GetToken(NULL) != NUMBER)
		xf86ConfigError("Option number expected");
	    priv->hypYOffset = val->realnum * 100;
	    if (xf86Verbose)
		ErrorF("%s HyperPen active area offsets: %d.%02d %d.%02d"
		       " inches\n", XCONFIG_GIVEN, priv->hypXOffset / 100,
		       priv->hypXOffset % 100, priv->hypYOffset / 100,
		       priv->hypYOffset % 100);
	    break;
	case INVX:
	    priv->flags |= INVX_FLAG;
	    break;
	case INVY:
	    priv->flags |= INVY_FLAG;
	    break;
	case BAUD_RATE:
	    if (xf86GetToken(NULL) != NUMBER)
		xf86ConfigError("Option number expected");
	    switch (val->num) {
		case 19200:
		   priv->flags |= BAUD_19200_FLAG;
		   break;
		case 9600:
		   priv->flags &= ~BAUD_19200_FLAG;
		   break;
		default:
		    xf86ConfigError("Illegal speed value");
		    break;
	    }
	    break;
	case PMIN:
	    if (xf86GetToken(NULL) != NUMBER)
		xf86ConfigError("Option number expected");
	    if (val->num < 2)
		xf86ConfigError("Illegal minimum pressure");
	    else
	      {
		priv->AutoPT = 0;  /* desactivate auto threshold adjustment*/
		priv->PT = val->num;
	      };
	    break;
	case PMAX:
	    if (xf86GetToken(NULL) != NUMBER)
		xf86ConfigError("Option number expected");
	    if (val->num < 3)
		xf86ConfigError("Illegal maximum pressure");
	    else
	        priv->PMax = val->num;
	    break;
	case EOF:
	    FatalError("Unexpected EOF (missing EndSubSection)");
	    break;

	default:
	    xf86ConfigError("HyperPen subsection keyword expected");
	    break;
	}
    }

    DBG(1, ErrorF("xf86HypConfig name=%s\n", priv->hypDevice));

    return Success;
}
Beispiel #2
0
/*
 * xf86Ps2padConfig --
 *      Configure the device.
 */
static Bool
xf86Ps2padConfig(LocalDevicePtr    *array,
               int               index,
               int               max,
               LexPtr            val)
{
  LocalDevicePtr        dev = array[index];
  Ps2PadDevPtr        priv = (Ps2PadDevPtr)(dev->private);
  int token;
  
  DBG(1, ErrorF("xf86Ps2padConfig\n"));
      
  /* Set defaults */
  priv->saveX = 0;
  priv->saveY = 0;
  priv->saveButton = 0xffff;
  priv->padFd = -1;
  priv->padTimeout = 16;

  while ((token = xf86GetToken(Ps2padTab)) != ENDSUBSECTION) {
    switch(token) {
    case DEVICENAME:
      if (xf86GetToken(NULL) != STRING) xf86ConfigError("Option string expected");
      dev->name = strdup(val->str);
      break;
      
    case PORT:
      if (xf86GetToken(NULL) != STRING) xf86ConfigError("Option string expected");
      priv->padDevice = strdup(val->str);
      break;

    case TIMEOUT:
      if (xf86GetToken(NULL) != NUMBER) xf86ConfigError("Ps2Pad Timeout expected");
      priv->padTimeout = val->num;
     break;

    case MSBUTTON1:
      if ((token = xf86GetToken(Ps2padButtonTab)) == ERROR_TOKEN)
        xf86ConfigError("Ps2Pad Button1 expected");
      priv->button1 = token;
     break;

    case MSBUTTON2:
      if ((token = xf86GetToken(Ps2padButtonTab)) == ERROR_TOKEN)
        xf86ConfigError("Ps2Pad Button2 expected");
      priv->button2 = token;
     break;

    case MSBUTTON3:
      if ((token = xf86GetToken(Ps2padButtonTab)) == ERROR_TOKEN)
        xf86ConfigError("Ps2Pad Button3 expected");
      priv->button3 = token;
     break;

    case CENTERX:
      if (xf86GetToken(NULL) != NUMBER)
        xf86ConfigError("Ps2Pad CenterX expected");
      priv->CenterX = val->num;
     break;
      
    case CENTERY:
      if (xf86GetToken(NULL) != NUMBER)
        xf86ConfigError("Ps2Pad CenterY expected");
      priv->CenterY = val->num;
     break;
      
    case DEADZONE:
      if (xf86GetToken(NULL) != NUMBER)
        xf86ConfigError("Ps2Pad DeadZone expected");
      priv->DeadZone = val->num;
     break;
      
    case DGTCOUNT:
      if (xf86GetToken(NULL) != NUMBER)
        xf86ConfigError("Ps2Pad DgtCount expected");
      priv->DgtCount = val->num;
     break;
      
    case SCALE:
      if (xf86GetToken(NULL) != NUMBER)
        xf86ConfigError("Ps2Pad Scale expected");
      priv->Scale = val->realnum;
     break;
      
    case DEBUG_LEVEL:
	if (xf86GetToken(NULL) != NUMBER)
	    xf86ConfigError("Option number expected");
	debug_level = val->num;
	if (xf86Verbose) {
#if DEBUG
	    ErrorF("%s Ps2Pad debug level sets to %d\n", XCONFIG_GIVEN,
		   debug_level);      
#else
	    ErrorF("%s Ps2Pad debug level not sets to %d because debugging is not compiled\n",
		   XCONFIG_GIVEN, debug_level);
#endif
	}
        break;

    case ALWAYS_CORE:
	xf86AlwaysCore(dev, TRUE);
	if (xf86Verbose)
	    ErrorF("%s Ps2Pad device always stays core pointer\n",
		   XCONFIG_GIVEN);
	break;

    case EOF:
      FatalError("Unexpected EOF (missing EndSubSection)");
      break; /* :-) */

    default:
      xf86ConfigError("Ps2Pad subsection keyword expected");
      break;
    }
  }

/*  if (xf86Verbose) {
    ErrorF("%s %s: timeout=%d port=%s maxx=%d maxy=%d minx=%d miny=%d\n"
	   "\tcenterx=%d centery=%d delta=%d\n", XCONFIG_GIVEN, dev->name,
	   priv->padTimeout, priv->padDevice, priv->padMaxX, priv->padMaxY,
	   priv->padMinX, priv->padMinY, priv->padCenterX, priv->padCenterY,
	   priv->padDelta);
  }*/
  return Success;
}