XQuartz: Updated Tablet code to include ranges for valuators and added cursor and erasor
(cherry picked from commit 6bca787609
)
This commit is contained in:
parent
7542c00b96
commit
fafcafd6de
|
@ -923,12 +923,48 @@ static void send_nsevent(NSEvent *e) {
|
||||||
tilt_x = [e tilt].x;
|
tilt_x = [e tilt].x;
|
||||||
tilt_y = [e tilt].y;
|
tilt_y = [e tilt].y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if([e subtype] != NSTabletProximityEventSubtype) {
|
||||||
|
switch([e pointingDeviceType]) {
|
||||||
|
case NSEraserPointingDevice:
|
||||||
|
darwinTabletCurrent=darwinTabletEraser;
|
||||||
|
break;
|
||||||
|
case NSPenPointingDevice:
|
||||||
|
darwinTabletCurrent=darwinTabletStylus;
|
||||||
|
break;
|
||||||
|
case NSCursorPointingDevice:
|
||||||
|
case NSUnknownPointingDevice:
|
||||||
|
default:
|
||||||
|
darwinTabletCurrent=darwinTabletCursor;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DarwinSendProximityEvents([e isEnteringProximity]?ProximityIn:ProximityOut,
|
||||||
|
pointer_x, pointer_y);
|
||||||
|
}
|
||||||
|
|
||||||
DarwinSendPointerEvents(ev_type, ev_button, pointer_x, pointer_y,
|
DarwinSendPointerEvents(ev_type, ev_button, pointer_x, pointer_y,
|
||||||
pressure, tilt_x, tilt_y);
|
pressure, tilt_x, tilt_y);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSTabletProximity:
|
case NSTabletProximity:
|
||||||
|
if([e subtype] != NSTabletProximityEventSubtype) {
|
||||||
|
switch([e pointingDeviceType]) {
|
||||||
|
case NSEraserPointingDevice:
|
||||||
|
darwinTabletCurrent=darwinTabletEraser;
|
||||||
|
break;
|
||||||
|
case NSPenPointingDevice:
|
||||||
|
darwinTabletCurrent=darwinTabletStylus;
|
||||||
|
break;
|
||||||
|
case NSCursorPointingDevice:
|
||||||
|
case NSUnknownPointingDevice:
|
||||||
|
default:
|
||||||
|
darwinTabletCurrent=darwinTabletCursor;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DarwinSendProximityEvents([e isEnteringProximity]?ProximityIn:ProximityOut,
|
DarwinSendProximityEvents([e isEnteringProximity]?ProximityIn:ProximityOut,
|
||||||
pointer_x, pointer_y);
|
pointer_x, pointer_y);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -121,9 +121,12 @@ int darwinAppKitModMask = 0; // Any of these bits
|
||||||
int windowItemModMask = NX_COMMANDMASK;
|
int windowItemModMask = NX_COMMANDMASK;
|
||||||
|
|
||||||
// devices
|
// devices
|
||||||
DeviceIntPtr darwinPointer = NULL;
|
|
||||||
DeviceIntPtr darwinTablet = NULL;
|
|
||||||
DeviceIntPtr darwinKeyboard = NULL;
|
DeviceIntPtr darwinKeyboard = NULL;
|
||||||
|
DeviceIntPtr darwinPointer = NULL;
|
||||||
|
DeviceIntPtr darwinTabletCurrent = NULL;
|
||||||
|
DeviceIntPtr darwinTabletStylus = NULL;
|
||||||
|
DeviceIntPtr darwinTabletCursor = NULL;
|
||||||
|
DeviceIntPtr darwinTabletEraser = NULL;
|
||||||
|
|
||||||
// Common pixmap formats
|
// Common pixmap formats
|
||||||
static PixmapFormatRec formats[] = {
|
static PixmapFormatRec formats[] = {
|
||||||
|
@ -355,7 +358,8 @@ static int DarwinMouseProc(DeviceIntPtr pPointer, int what) {
|
||||||
GetMotionHistory,
|
GetMotionHistory,
|
||||||
(PtrCtrlProcPtr)NoopDDA,
|
(PtrCtrlProcPtr)NoopDDA,
|
||||||
GetMotionHistorySize(), 2);
|
GetMotionHistorySize(), 2);
|
||||||
pPointer->name = strdup("Quartz Pointing Device");
|
InitAbsoluteClassDeviceStruct(pPointer);
|
||||||
|
pPointer->valuator->mode = Absolute; // Relative
|
||||||
break;
|
break;
|
||||||
case DEVICE_ON:
|
case DEVICE_ON:
|
||||||
pPointer->public.on = TRUE;
|
pPointer->public.on = TRUE;
|
||||||
|
@ -382,10 +386,22 @@ static int DarwinTabletProc(DeviceIntPtr pPointer, int what) {
|
||||||
InitPointerDeviceStruct((DevicePtr)pPointer, map, 3,
|
InitPointerDeviceStruct((DevicePtr)pPointer, map, 3,
|
||||||
GetMotionHistory,
|
GetMotionHistory,
|
||||||
(PtrCtrlProcPtr)NoopDDA,
|
(PtrCtrlProcPtr)NoopDDA,
|
||||||
GetMotionHistorySize(), 7);
|
GetMotionHistorySize(), 5);
|
||||||
|
pPointer->valuator->mode = Absolute; // Relative
|
||||||
InitProximityClassDeviceStruct(pPointer);
|
InitProximityClassDeviceStruct(pPointer);
|
||||||
// InitAbsoluteClassDeviceStruct(pPointer);
|
InitAbsoluteClassDeviceStruct(pPointer);
|
||||||
pPointer->name = strdup("pen");
|
|
||||||
|
// InitValuatorAxisStruct(pPointer, 0, 0, 1440, 1, 0, 1);
|
||||||
|
// InitValuatorAxisStruct(pPointer, 1, 0, 900, 1, 0, 1);
|
||||||
|
InitValuatorAxisStruct(pPointer, 2, 0, 1023, 1, 0, 1);
|
||||||
|
InitValuatorAxisStruct(pPointer, 3, -64, 64, 1, 0, 1);
|
||||||
|
InitValuatorAxisStruct(pPointer, 4, -64, 64, 1, 0, 1);
|
||||||
|
// InitValuatorAxisStruct(pPointer, 2, 0, 240, 49999, 49999, 49999);
|
||||||
|
// InitValuatorAxisStruct(pPointer, 3, -64, 63, 128, 128, 128);
|
||||||
|
// InitValuatorAxisStruct(pPointer, 4, -64, 63, 128, 128, 128);
|
||||||
|
// InitValuatorAxisStruct(pPointer, 5, 0, 1023, 128, 128, 128);
|
||||||
|
|
||||||
|
// pPointer->use = IsXExtensionDevice;
|
||||||
break;
|
break;
|
||||||
case DEVICE_ON:
|
case DEVICE_ON:
|
||||||
pPointer->public.on = TRUE;
|
pPointer->public.on = TRUE;
|
||||||
|
@ -409,7 +425,6 @@ static int DarwinKeybdProc( DeviceIntPtr pDev, int onoff )
|
||||||
switch ( onoff ) {
|
switch ( onoff ) {
|
||||||
case DEVICE_INIT:
|
case DEVICE_INIT:
|
||||||
DarwinKeyboardInit( pDev );
|
DarwinKeyboardInit( pDev );
|
||||||
pDev->name = strdup("Quartz Keyboard");
|
|
||||||
break;
|
break;
|
||||||
case DEVICE_ON:
|
case DEVICE_ON:
|
||||||
pDev->public.on = TRUE;
|
pDev->public.on = TRUE;
|
||||||
|
@ -531,15 +546,28 @@ int DarwinParseModifierList(const char *constmodifiers, int separatelr)
|
||||||
*/
|
*/
|
||||||
void InitInput( int argc, char **argv )
|
void InitInput( int argc, char **argv )
|
||||||
{
|
{
|
||||||
darwinPointer = AddInputDevice(DarwinMouseProc, TRUE);
|
|
||||||
RegisterPointerDevice( darwinPointer );
|
|
||||||
|
|
||||||
darwinTablet = AddInputDevice(DarwinTabletProc, TRUE);
|
|
||||||
RegisterPointerDevice( darwinTablet );
|
|
||||||
|
|
||||||
darwinKeyboard = AddInputDevice(DarwinKeybdProc, TRUE);
|
darwinKeyboard = AddInputDevice(DarwinKeybdProc, TRUE);
|
||||||
RegisterKeyboardDevice( darwinKeyboard );
|
RegisterKeyboardDevice( darwinKeyboard );
|
||||||
|
darwinKeyboard->name = strdup("Quartz Keyboard");
|
||||||
|
|
||||||
|
darwinPointer = AddInputDevice(DarwinMouseProc, TRUE);
|
||||||
|
RegisterPointerDevice( darwinPointer );
|
||||||
|
darwinPointer->name = strdup("Quartz Pointing Device");
|
||||||
|
|
||||||
|
darwinTabletStylus = AddInputDevice(DarwinTabletProc, TRUE);
|
||||||
|
RegisterPointerDevice( darwinTabletStylus );
|
||||||
|
darwinTabletStylus->name = strdup("stylus");
|
||||||
|
|
||||||
|
darwinTabletCursor = AddInputDevice(DarwinTabletProc, TRUE);
|
||||||
|
RegisterPointerDevice( darwinTabletCursor );
|
||||||
|
darwinTabletCursor->name = strdup("cursor");
|
||||||
|
|
||||||
|
darwinTabletEraser = AddInputDevice(DarwinTabletProc, TRUE);
|
||||||
|
RegisterPointerDevice( darwinTabletEraser );
|
||||||
|
darwinTabletEraser->name = strdup("eraser");
|
||||||
|
|
||||||
|
darwinTabletCurrent = darwinTabletStylus;
|
||||||
|
|
||||||
DarwinEQInit();
|
DarwinEQInit();
|
||||||
|
|
||||||
QuartzInitInput(argc, argv);
|
QuartzInitInput(argc, argv);
|
||||||
|
|
|
@ -71,7 +71,10 @@ extern io_connect_t darwinParamConnect;
|
||||||
extern int darwinEventReadFD;
|
extern int darwinEventReadFD;
|
||||||
extern int darwinEventWriteFD;
|
extern int darwinEventWriteFD;
|
||||||
extern DeviceIntPtr darwinPointer;
|
extern DeviceIntPtr darwinPointer;
|
||||||
extern DeviceIntPtr darwinTablet;
|
extern DeviceIntPtr darwinTabletCurrent;
|
||||||
|
extern DeviceIntPtr darwinTabletCursor;
|
||||||
|
extern DeviceIntPtr darwinTabletStylus;
|
||||||
|
extern DeviceIntPtr darwinTabletEraser;
|
||||||
extern DeviceIntPtr darwinKeyboard;
|
extern DeviceIntPtr darwinKeyboard;
|
||||||
|
|
||||||
// User preferences
|
// User preferences
|
||||||
|
|
|
@ -70,7 +70,7 @@ in this Software without prior written authorization from The Open Group.
|
||||||
|
|
||||||
/* These values were chosen to match the output of xinput under Linux */
|
/* These values were chosen to match the output of xinput under Linux */
|
||||||
#define SCALEFACTOR_TILT 64.0
|
#define SCALEFACTOR_TILT 64.0
|
||||||
#define SCALEFACTOR_PRESSURE 1000.0
|
#define SCALEFACTOR_PRESSURE 1023.0
|
||||||
|
|
||||||
#define _APPLEWM_SERVER_
|
#define _APPLEWM_SERVER_
|
||||||
#include "applewmExt.h"
|
#include "applewmExt.h"
|
||||||
|
@ -416,7 +416,7 @@ void DarwinSendPointerEvents(int ev_type, int ev_button, int pointer_x, int poin
|
||||||
if (pressure == 0 && tilt_x == 0 && tilt_y == 0)
|
if (pressure == 0 && tilt_x == 0 && tilt_y == 0)
|
||||||
dev = darwinPointer;
|
dev = darwinPointer;
|
||||||
else
|
else
|
||||||
dev = darwinTablet;
|
dev = darwinTabletCurrent;
|
||||||
|
|
||||||
screen = miPointerGetScreen(dev);
|
screen = miPointerGetScreen(dev);
|
||||||
if(!screen) {
|
if(!screen) {
|
||||||
|
@ -459,7 +459,7 @@ void DarwinSendPointerEvents(int ev_type, int ev_button, int pointer_x, int poin
|
||||||
DarwinPrepareValuators(valuators, screen, pointer_x, pointer_y, pressure, tilt_x, tilt_y);
|
DarwinPrepareValuators(valuators, screen, pointer_x, pointer_y, pressure, tilt_x, tilt_y);
|
||||||
darwinEvents_lock(); {
|
darwinEvents_lock(); {
|
||||||
num_events = GetPointerEvents(darwinEvents, dev, ev_type, ev_button,
|
num_events = GetPointerEvents(darwinEvents, dev, ev_type, ev_button,
|
||||||
POINTER_ABSOLUTE, 0, dev==darwinTablet?5:2, valuators);
|
POINTER_ABSOLUTE, 0, dev==darwinTabletCurrent?5:2, valuators);
|
||||||
for(i=0; i<num_events; i++) mieqEnqueue (dev, &darwinEvents[i]);
|
for(i=0; i<num_events; i++) mieqEnqueue (dev, &darwinEvents[i]);
|
||||||
DarwinPokeEQ();
|
DarwinPokeEQ();
|
||||||
} darwinEvents_unlock();
|
} darwinEvents_unlock();
|
||||||
|
@ -496,7 +496,7 @@ void DarwinSendKeyboardEvents(int ev_type, int keycode) {
|
||||||
void DarwinSendProximityEvents(int ev_type, int pointer_x, int pointer_y) {
|
void DarwinSendProximityEvents(int ev_type, int pointer_x, int pointer_y) {
|
||||||
int i, num_events;
|
int i, num_events;
|
||||||
ScreenPtr screen;
|
ScreenPtr screen;
|
||||||
DeviceIntPtr dev = darwinTablet;
|
DeviceIntPtr dev = darwinTabletCurrent;
|
||||||
int valuators[5];
|
int valuators[5];
|
||||||
|
|
||||||
DEBUG_LOG("DarwinSendProximityEvents(%d, %d, %d)\n", ev_type, pointer_x, pointer_y);
|
DEBUG_LOG("DarwinSendProximityEvents(%d, %d, %d)\n", ev_type, pointer_x, pointer_y);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user