Source to iokit/IOKit/hidsystem/IOHIDTypes.h
/*
* Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* The contents of this file constitute Original Code as defined in and
* are subject to the Apple Public Source License Version 1.1 (the
* "License"). You may not use this file except in compliance with the
* License. Please obtain a copy of the License at
* http://www.apple.com/publicsource and read it before using this file.
*
* This Original Code and all software distributed under the License are
* distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
* License for the specific language governing rights and limitations
* under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
/******************************************************************************
ev_types.h
Data types for the events status driver.
This file contains public API.
mpaque 11Oct91
Copyright 1991 NeXT Computer, Inc.
Modified:
******************************************************************************/
#ifndef _DEV_EV_TYPES_H
#define _DEV_EV_TYPES_H
#include <mach/boolean.h>
#include <IOKit/IOSharedLock.h>
#include <IOKit/graphics/IOGraphicsTypes.h>
/* Shared memory versions */
#define EVENT_SYSTEM_VERSION 2
/* Maximum length of SetMouseScaling arrays */
#define NX_MAXMOUSESCALINGS 20
typedef struct evsioKeymapping /* Match old struct names in kernel */
{
int size;
char *mapping;
} NXKeyMapping;
typedef struct evsioMouseScaling /* Match old struct names in kernel */
{
int numScaleLevels;
short scaleThresholds[NX_MAXMOUSESCALINGS];
short scaleFactors[NX_MAXMOUSESCALINGS];
} NXMouseScaling;
typedef enum {
NX_OneButton,
NX_LeftButton,
NX_RightButton
} NXMouseButton;
/*
* NXEventSystemInfo() information structures. These are designed to
* allow for expansion.
*
* The current implementation of NXEventSystemInfo() uses an ioctl call.
* THIS WILL CHANGE.
*/
/*
* Generic query max size and typedefs.
*
* The maximum size is selected to support anticipated future extensions
* of request flavors. Certain flavors planned for future releases may
* require roughtly 800 ints to represent. We allow a little extra, in
* case further growth is needed.
*/
typedef int *NXEventSystemInfoType;
#define NX_EVS_INFO_MAX (1024) /* Max array size */
typedef int NXEventSystemInfoData[NX_EVS_INFO_MAX];
/* Event System Devices query */
#define NX_EVS_DEVICE_MAX 16
/* Interface types */
#define NX_EVS_DEVICE_INTERFACE_OTHER 0
#define NX_EVS_DEVICE_INTERFACE_NeXT 1 // NeXT custom, in older sys
#define NX_EVS_DEVICE_INTERFACE_ADB 2 // NeXT/fruit keybds/mice
#define NX_EVS_DEVICE_INTERFACE_ACE 3 // For x86 PC keyboards
#define NX_EVS_DEVICE_INTERFACE_SERIAL_ACE 4 // For PC serial mice
#define NX_EVS_DEVICE_INTERFACE_BUS_ACE 5 // For PC bus mice
#define NX_EVS_DEVICE_INTERFACE_HIL 6 // For HIL hp keyboard
#define NX_EVS_DEVICE_INTERFACE_TYPE5 7 // For Sun Type5 keyboard
/*
* Note! if any new interface types are added above, the following
* definition of the number of interfaces supported must reflect this.
* This is used in the libkeymap project (storemap.c module) which needs
* to be cognizant of the number of new devices coming online
* via support for heterogeneous architecture platforms.
* e.g., PCs, HP's HIL, Sun's Type5 keyboard,...
*/
#define NUM_SUPPORTED_INTERFACES (NX_EVS_DEVICE_INTERFACE_TYPE5 + 1)
// Other, NeXT, ADB, ACE,...
/* Device types */
#define NX_EVS_DEVICE_TYPE_OTHER 0
#define NX_EVS_DEVICE_TYPE_KEYBOARD 1
#define NX_EVS_DEVICE_TYPE_MOUSE 2 // Relative position devices
#define NX_EVS_DEVICE_TYPE_TABLET 3 // Absolute position devices
typedef struct {
int interface; /* NeXT, ADB, other */
int interface_addr; /* Device address on the interface */
int dev_type; /* Keyboard, mouse, tablet, other */
int id; /* manufacturer's device handler ID */
} NXEventSystemDevice;
typedef struct {
NXEventSystemDevice dev[NX_EVS_DEVICE_MAX];
} NXEventSystemDeviceList;
#define __OLD_NX_EVS_DEVICE_INFO 1
#define NX_EVS_DEVICE_INFO "Evs_EventDeviceInfo"
#define NX_EVS_DEVICE_INFO_COUNT \
(sizeof (NXEventSystemDeviceList) / sizeof (int))
/*
* Types used in evScreen protocol compliant operations.
*/
typedef enum {EVNOP, EVHIDE, EVSHOW, EVMOVE, EVLEVEL} EvCmd; /* Cursor state */
#define EV_SCREEN_MIN_BRIGHTNESS 0
#define EV_SCREEN_MAX_BRIGHTNESS 64
/* Scale should lie between MIN_BRIGHTNESS and MAX_BRIGHTNESS */
#define EV_SCALE_BRIGHTNESS( scale, datum ) \
((((unsigned long)(datum))*((unsigned long)scale)) >> 6)
/*
* Definition of a tick, as a time in milliseconds. This controls how
* often the event system periodic jobs are run. All actual tick times
* are derived from the nanosecond timer. These values are typically used
* as part of computing mouse velocity for acceleration purposes.
*/
#define EV_TICK_TIME 16 /* 16 milliseconds */
#define EV_TICKS_PER_SEC (1000/EV_TICK_TIME) /* ~ 62 Hz */
/* Mouse Button bits, as passed from an EventSrc to the Event Driver */
#define EV_RB (0x01)
#define EV_LB (0x04)
#define EV_MOUSEBUTTONMASK (EV_LB | EV_RB)
/* Tablet Pressure Constants, as passed from an EventSrc to the Event Driver */
#define EV_MINPRESSURE 0
#define EV_MAXPRESSURE 255
/* Cursor size in pixels */
#define EV_CURSOR_WIDTH 16
#define EV_CURSOR_HEIGHT 16
#endif /* !_DEV_EV_TYPES_H */