blob: 9a3191f8575a8abc7140cfc3a6b9a206d18d96d3 [file] [log] [blame]
/*
* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef _CMT_H_
#define _CMT_H_
#include <linux/input.h>
#include <gesture.h>
#include <properties.h>
// todo(denniskempin): allow libevdev to be included before X headers
#include <libevdev/libevdev.h>
#define DBG_VERB 7
#define DBG(info, format, ...) \
xf86IDrvMsgVerb((info), X_INFO, DBG_VERB, "%s():%d: " format, \
__FUNCTION__, __LINE__, ##__VA_ARGS__)
#define PROBE_DBG(info, format, ...) \
xf86IDrvMsgVerb((info), X_PROBED, DBG_VERB, "%s():%d: " format, \
__FUNCTION__, __LINE__, ##__VA_ARGS__)
#define CONFIG_DBG(info, format, ...) \
xf86IDrvMsgVerb((info), X_CONFIG, DBG_VERB, "%s():%d: " format, \
__FUNCTION__, __LINE__, ##__VA_ARGS__)
#define ERR(info, ...) \
xf86IDrvMsg((info), X_ERROR, ##__VA_ARGS__)
#define LONG_BITS (sizeof(long) * 8)
/* Number of longs needed to hold the given number of bits */
#define NLONGS(x) (((x) + LONG_BITS - 1) / LONG_BITS)
/* Axes numbers. */
enum CMT_AXIS {
CMT_AXIS_X = 0,
CMT_AXIS_Y,
CMT_AXIS_ORDINAL_X,
CMT_AXIS_ORDINAL_Y,
CMT_AXIS_SCROLL_X,
CMT_AXIS_SCROLL_Y,
CMT_AXIS_FLING_STATE,
CMT_AXIS_DBL_FLING_VX,
CMT_AXIS_DBL_FLING_VY,
CMT_AXIS_METRICS_TYPE,
CMT_AXIS_METRICS_DATA1,
CMT_AXIS_METRICS_DATA2,
CMT_AXIS_DBL_START_TIME,
CMT_AXIS_DBL_END_TIME,
CMT_AXIS_FINGER_COUNT,
CMT_AXIS_MT_POSITION_X,
CMT_AXIS_MT_POSITION_Y,
CMT_AXIS_MT_PRESSURE,
CMT_AXIS_MT_TOUCH_MAJOR,
CMT_AXIS_TOUCH_TIMESTAMP
};
#define CMT_NUM_AXES (CMT_AXIS_TOUCH_TIMESTAMP - CMT_AXIS_X + 1)
#define CMT_NUM_MT_AXES (CMT_AXIS_TOUCH_TIMESTAMP - CMT_AXIS_MT_POSITION_X + 1)
/* Button numbers. */
enum CMT_BUTTON {
CMT_BTN_LEFT = 1,
CMT_BTN_MIDDLE,
CMT_BTN_RIGHT,
CMT_BTN_BACK,
CMT_BTN_FORWARD
};
#define CMT_NUM_BUTTONS (CMT_BTN_FORWARD - CMT_BTN_LEFT + 1)
typedef struct {
CmtProperties props;
EventStateRec evstate;
GestureRec gesture;
GesturesProp* prop_list;
Evdev evdev;
char* device;
long handlers;
unsigned long prev_key_state[NLONGS(KEY_CNT)];
} CmtDeviceRec, *CmtDevicePtr;
#endif