Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

84 lines
3.9 KiB

/****************************************************************************/
// aimapi.h
//
// Input manager API include file
//
// Copyright(c) Microsoft, PictureTel 1993-1997
// Copyright (c) 1997-1999 Microsoft Corporation
/****************************************************************************/
#ifndef _H_AIMAPI
#define _H_AIMAPI
/****************************************************************************/
/* The maximum amount of time that we expect an injected event to take to */
/* pass through USER, in units of 100ns */
/****************************************************************************/
#define IM_EVENT_PERCOLATE_TIME 300 * 10000
/****************************************************************************/
/* For managing our key state arrays. */
/* */
/* Note that the key state array only needs to have 256 elements for the */
/* actual keys, but since we're using scan codes we lose the virtual keys */
/* for the mouse button and the Toggles. Instead we put these states */
/* at the end of the array using our own invented scan codes */
/****************************************************************************/
#define IM_KEY_STATE_SIZE 266
#define IM_SC_LBUTTON 256
#define IM_SC_RBUTTON 257
#define IM_SC_MBUTTON 258
#define IM_SC_CAPITAL 259
#define IM_SC_NUMLOCK 260
#define IM_SC_SCROLL 261
#define IM_SC_RCONTROL 262
#define IM_SC_RALT 263
#define IM_SC_XBUTTON1 264
#define IM_SC_XBUTTON2 265
/****************************************************************************/
/* These are the real scan codes for Control and ALT. */
/****************************************************************************/
#define IM_SC_LCONTROL 29
#define IM_SC_LALT 56
/****************************************************************************/
/* Macro to convert from logical mouse co-ordinates to the full 16-bit */
/* range co-ordinates expected from us. */
/* */
/* The macro below IS right! Consider a VGA screen. There are 640 */
/* possible horizontal mouse positions, which we can look at as cells with */
/* the mouse being at the centre of each, ie at co-ords 0.5, 1.5, ... */
/* 638.5, 639.5. */
/* */
/* We want to scale this to the range 0 - 65535, so we need 640 cells, */
/* 65536/640 wide (which is 1024). This gives the range of mouse positions */
/* as 512, 1536, ... 65024. */
/* */
/* Hence we do the conversion by scaling the postion by 65536/640 and */
/* adding on half the width of a cell */
/* */
/****************************************************************************/
#define IM_MOUSEPOS_LOG_TO_OS_ABS(coord, size) \
(((65536L * (UINT32)coord) + 32768L) / (UINT32)size)
/****************************************************************************/
/* Used to set and check values in key state arrays. */
/****************************************************************************/
#define IM_KEY_STATE_IS_UP(A) (!(A))
#define IM_KEY_STATE_IS_DOWN(A) (A)
#define IM_SET_KEY_DOWN(A) (A) = TRUE
#define IM_SET_KEY_UP(A) (A) = FALSE
#endif /* _H_AIMAPI */