Merge branch 'master' into xi2
Conflicts: Xi/chdevhier.c include/input.h
This commit is contained in:
commit
057fc9a4f8
15
Xext/xtest.c
15
Xext/xtest.c
|
@ -54,6 +54,7 @@
|
||||||
|
|
||||||
extern int DeviceValuator;
|
extern int DeviceValuator;
|
||||||
extern int DeviceMotionNotify;
|
extern int DeviceMotionNotify;
|
||||||
|
extern DevPrivateKey XTstDevicePrivateKey;
|
||||||
|
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
#include "panoramiX.h"
|
#include "panoramiX.h"
|
||||||
|
@ -160,6 +161,7 @@ ProcXTestFakeInput(ClientPtr client)
|
||||||
int i;
|
int i;
|
||||||
int base = 0;
|
int base = 0;
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
|
DeviceIntPtr xtstdevice;
|
||||||
|
|
||||||
nev = (stuff->length << 2) - sizeof(xReq);
|
nev = (stuff->length << 2) - sizeof(xReq);
|
||||||
if ((nev % sizeof(xEvent)) || !nev)
|
if ((nev % sizeof(xEvent)) || !nev)
|
||||||
|
@ -268,6 +270,8 @@ ProcXTestFakeInput(ClientPtr client)
|
||||||
|
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
|
DeviceIntPtr it;
|
||||||
|
|
||||||
if (nev != 1)
|
if (nev != 1)
|
||||||
return BadLength;
|
return BadLength;
|
||||||
switch (type)
|
switch (type)
|
||||||
|
@ -294,8 +298,14 @@ ProcXTestFakeInput(ClientPtr client)
|
||||||
return BadValue;
|
return BadValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev->u.lastSlave)
|
/* When faking core events through XTest, we always fake through the
|
||||||
dev = dev->u.lastSlave;
|
* virtual test device.
|
||||||
|
*/
|
||||||
|
for(it = inputInfo.devices; it ; it = it->next )
|
||||||
|
if( !it->isMaster && it->u.master == dev &&
|
||||||
|
dixLookupPrivate(&it->devPrivates, XTstDevicePrivateKey ))
|
||||||
|
break;
|
||||||
|
dev= it;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If the event has a time set, wait for it to pass */
|
/* If the event has a time set, wait for it to pass */
|
||||||
|
@ -403,6 +413,7 @@ ProcXTestFakeInput(ClientPtr client)
|
||||||
for (i = 0; i < nevents; i++)
|
for (i = 0; i < nevents; i++)
|
||||||
mieqProcessDeviceEvent(dev, (events+i)->event, NULL);
|
mieqProcessDeviceEvent(dev, (events+i)->event, NULL);
|
||||||
|
|
||||||
|
miPointerUpdateSprite(dev);
|
||||||
return client->noClientException;
|
return client->noClientException;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
111
Xi/chdevhier.c
111
Xi/chdevhier.c
|
@ -54,6 +54,8 @@
|
||||||
|
|
||||||
#include "chdevhier.h"
|
#include "chdevhier.h"
|
||||||
|
|
||||||
|
extern DevPrivateKey XTstDevicePrivateKey;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send the current state of the device hierarchy to all clients.
|
* Send the current state of the device hierarchy to all clients.
|
||||||
*/
|
*/
|
||||||
|
@ -119,7 +121,7 @@ int SProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXIChangeDeviceHierarchy(ClientPtr client)
|
ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
{
|
{
|
||||||
DeviceIntPtr ptr, keybd;
|
DeviceIntPtr ptr, keybd, xtstptr, xtstkeybd;
|
||||||
xXIAnyHierarchyChangeInfo *any;
|
xXIAnyHierarchyChangeInfo *any;
|
||||||
int required_len = sizeof(xXIChangeDeviceHierarchyReq);
|
int required_len = sizeof(xXIChangeDeviceHierarchyReq);
|
||||||
char n;
|
char n;
|
||||||
|
@ -154,7 +156,7 @@ ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
strncpy(name, (char*)&c[1], c->name_len);
|
strncpy(name, (char*)&c[1], c->name_len);
|
||||||
|
|
||||||
|
|
||||||
rc = AllocMasterDevice(client, name, &ptr, &keybd);
|
rc = AllocDevicePair(client, name, &ptr, &keybd, TRUE);
|
||||||
if (rc != Success)
|
if (rc != Success)
|
||||||
{
|
{
|
||||||
xfree(name);
|
xfree(name);
|
||||||
|
@ -164,14 +166,33 @@ ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
if (!c->send_core)
|
if (!c->send_core)
|
||||||
ptr->coreEvents = keybd->coreEvents = FALSE;
|
ptr->coreEvents = keybd->coreEvents = FALSE;
|
||||||
|
|
||||||
|
/* Allocate virtual slave devices for xtest events */
|
||||||
|
rc = AllocXtstDevice(client, name, &xtstptr, &xtstkeybd);
|
||||||
|
if (rc != Success)
|
||||||
|
{
|
||||||
|
|
||||||
|
xfree(name);
|
||||||
|
goto unwind;
|
||||||
|
}
|
||||||
|
|
||||||
ActivateDevice(ptr);
|
ActivateDevice(ptr);
|
||||||
ActivateDevice(keybd);
|
ActivateDevice(keybd);
|
||||||
|
ActivateDevice(xtstptr);
|
||||||
|
ActivateDevice(xtstkeybd);
|
||||||
|
|
||||||
if (c->enable)
|
if (c->enable)
|
||||||
{
|
{
|
||||||
EnableDevice(ptr);
|
EnableDevice(ptr);
|
||||||
EnableDevice(keybd);
|
EnableDevice(keybd);
|
||||||
|
EnableDevice(xtstptr);
|
||||||
|
EnableDevice(xtstkeybd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Attach the XTest virtual devices to the newly
|
||||||
|
created master device */
|
||||||
|
AttachDevice(NULL, xtstptr, ptr);
|
||||||
|
AttachDevice(NULL, xtstkeybd, keybd);
|
||||||
|
|
||||||
xfree(name);
|
xfree(name);
|
||||||
flags |= HF_MasterAdded;
|
flags |= HF_MasterAdded;
|
||||||
}
|
}
|
||||||
|
@ -179,6 +200,7 @@ ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
case CH_RemoveMasterDevice:
|
case CH_RemoveMasterDevice:
|
||||||
{
|
{
|
||||||
xXIRemoveMasterInfo* r = (xXIRemoveMasterInfo*)any;
|
xXIRemoveMasterInfo* r = (xXIRemoveMasterInfo*)any;
|
||||||
|
DeviceIntPtr xtstdevice;
|
||||||
|
|
||||||
if (r->return_mode != AttachToMaster &&
|
if (r->return_mode != AttachToMaster &&
|
||||||
r->return_mode != Floating)
|
r->return_mode != Floating)
|
||||||
|
@ -204,7 +226,17 @@ ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
goto unwind;
|
goto unwind;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* disable keyboards first */
|
for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next )
|
||||||
|
if( !xtstdevice->isMaster && xtstdevice->u.master == ptr &&
|
||||||
|
dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey ))
|
||||||
|
break;
|
||||||
|
|
||||||
|
rc = dixLookupDevice(&xtstptr, xtstdevice->id, client,
|
||||||
|
DixDestroyAccess);
|
||||||
|
if (rc != Success)
|
||||||
|
goto unwind;
|
||||||
|
|
||||||
|
/* find keyboards to destroy */
|
||||||
if (IsPointerDevice(ptr))
|
if (IsPointerDevice(ptr))
|
||||||
{
|
{
|
||||||
rc = dixLookupDevice(&keybd,
|
rc = dixLookupDevice(&keybd,
|
||||||
|
@ -213,6 +245,7 @@ ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
DixDestroyAccess);
|
DixDestroyAccess);
|
||||||
if (rc != Success)
|
if (rc != Success)
|
||||||
goto unwind;
|
goto unwind;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -223,8 +256,47 @@ ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
DixDestroyAccess);
|
DixDestroyAccess);
|
||||||
if (rc != Success)
|
if (rc != Success)
|
||||||
goto unwind;
|
goto unwind;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* handle xtst pointer / keyboard slave devices */
|
||||||
|
if ( IsPointerDevice(xtstptr))
|
||||||
|
{
|
||||||
|
/* Search the matching keyboard */
|
||||||
|
for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next )
|
||||||
|
if( !xtstdevice->isMaster &&
|
||||||
|
xtstdevice->u.master == keybd &&
|
||||||
|
IsKeyboardDevice(xtstdevice) &&
|
||||||
|
dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey ))
|
||||||
|
break;
|
||||||
|
|
||||||
|
rc = dixLookupDevice(&xtstkeybd,
|
||||||
|
xtstdevice->id,
|
||||||
|
client,
|
||||||
|
DixDestroyAccess);
|
||||||
|
|
||||||
|
if (rc != Success)
|
||||||
|
goto unwind;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xtstkeybd = xtstptr;
|
||||||
|
/* Search the matching pointer */
|
||||||
|
for(xtstdevice = inputInfo.devices; xtstdevice ; xtstdevice = xtstdevice->next )
|
||||||
|
if( !xtstdevice->isMaster &&
|
||||||
|
xtstdevice->u.master == ptr &&
|
||||||
|
IsPointerDevice(xtstdevice) &&
|
||||||
|
dixLookupPrivate(&xtstdevice->devPrivates, XTstDevicePrivateKey )
|
||||||
|
)
|
||||||
|
break;
|
||||||
|
rc = dixLookupDevice(&xtstptr,
|
||||||
|
xtstdevice->id,
|
||||||
|
client,
|
||||||
|
DixDestroyAccess);
|
||||||
|
|
||||||
|
if (rc != Success)
|
||||||
|
goto unwind;
|
||||||
|
}
|
||||||
|
|
||||||
/* Disabling sends the devices floating, reattach them if
|
/* Disabling sends the devices floating, reattach them if
|
||||||
* desired. */
|
* desired. */
|
||||||
|
@ -274,9 +346,18 @@ ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
/* can't disable until we removed pairing */
|
/* can't disable until we removed pairing */
|
||||||
keybd->spriteInfo->paired = NULL;
|
keybd->spriteInfo->paired = NULL;
|
||||||
ptr->spriteInfo->paired = NULL;
|
ptr->spriteInfo->paired = NULL;
|
||||||
|
xtstptr->spriteInfo->paired = NULL;
|
||||||
|
xtstkeybd->spriteInfo->paired = NULL;
|
||||||
|
|
||||||
|
/* disable the remove the devices, xtst devices must be done first
|
||||||
|
else the sprites they rely on will be destroyed */
|
||||||
|
DisableDevice(xtstptr);
|
||||||
|
DisableDevice(xtstkeybd);
|
||||||
DisableDevice(keybd);
|
DisableDevice(keybd);
|
||||||
DisableDevice(ptr);
|
DisableDevice(ptr);
|
||||||
|
|
||||||
|
RemoveDevice(xtstptr);
|
||||||
|
RemoveDevice(xtstkeybd);
|
||||||
RemoveDevice(keybd);
|
RemoveDevice(keybd);
|
||||||
RemoveDevice(ptr);
|
RemoveDevice(ptr);
|
||||||
flags |= HF_MasterRemoved;
|
flags |= HF_MasterRemoved;
|
||||||
|
@ -285,6 +366,7 @@ ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
case CH_DetachSlave:
|
case CH_DetachSlave:
|
||||||
{
|
{
|
||||||
xXIDetachSlaveInfo* c = (xXIDetachSlaveInfo*)any;
|
xXIDetachSlaveInfo* c = (xXIDetachSlaveInfo*)any;
|
||||||
|
DeviceIntPtr *xtstdevice;
|
||||||
|
|
||||||
rc = dixLookupDevice(&ptr, c->deviceid, client,
|
rc = dixLookupDevice(&ptr, c->deviceid, client,
|
||||||
DixWriteAccess);
|
DixWriteAccess);
|
||||||
|
@ -298,6 +380,17 @@ ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
goto unwind;
|
goto unwind;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xtstdevice = dixLookupPrivate( &ptr->devPrivates,
|
||||||
|
XTstDevicePrivateKey );
|
||||||
|
|
||||||
|
/* Don't allow changes to Xtst Devices, these are fixed */
|
||||||
|
if( xtstdevice )
|
||||||
|
{
|
||||||
|
client->errorValue = c->deviceid;
|
||||||
|
rc = BadDevice;
|
||||||
|
goto unwind;
|
||||||
|
}
|
||||||
|
|
||||||
AttachDevice(client, ptr, NULL);
|
AttachDevice(client, ptr, NULL);
|
||||||
flags |= HF_SlaveDetached;
|
flags |= HF_SlaveDetached;
|
||||||
}
|
}
|
||||||
|
@ -306,6 +399,7 @@ ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
{
|
{
|
||||||
xXIAttachSlaveInfo* c = (xXIAttachSlaveInfo*)any;
|
xXIAttachSlaveInfo* c = (xXIAttachSlaveInfo*)any;
|
||||||
DeviceIntPtr newmaster;
|
DeviceIntPtr newmaster;
|
||||||
|
DeviceIntPtr *xtstdevice;
|
||||||
|
|
||||||
rc = dixLookupDevice(&ptr, c->deviceid, client,
|
rc = dixLookupDevice(&ptr, c->deviceid, client,
|
||||||
DixWriteAccess);
|
DixWriteAccess);
|
||||||
|
@ -319,6 +413,17 @@ ProcXIChangeDeviceHierarchy(ClientPtr client)
|
||||||
goto unwind;
|
goto unwind;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xtstdevice = dixLookupPrivate( &ptr->devPrivates,
|
||||||
|
XTstDevicePrivateKey );
|
||||||
|
|
||||||
|
/* Don't allow changes to Xtst Devices, these are fixed */
|
||||||
|
if( xtstdevice )
|
||||||
|
{
|
||||||
|
client->errorValue = c->deviceid;
|
||||||
|
rc = BadDevice;
|
||||||
|
goto unwind;
|
||||||
|
}
|
||||||
|
|
||||||
rc = dixLookupDevice(&newmaster, c->new_master,
|
rc = dixLookupDevice(&newmaster, c->new_master,
|
||||||
client, DixWriteAccess);
|
client, DixWriteAccess);
|
||||||
if (rc != Success)
|
if (rc != Success)
|
||||||
|
|
|
@ -90,9 +90,24 @@ SOFTWARE.
|
||||||
|
|
||||||
static int CoreDevicePrivateKeyIndex;
|
static int CoreDevicePrivateKeyIndex;
|
||||||
DevPrivateKey CoreDevicePrivateKey = &CoreDevicePrivateKeyIndex;
|
DevPrivateKey CoreDevicePrivateKey = &CoreDevicePrivateKeyIndex;
|
||||||
/* Used to sture classes currently not in use by an MD */
|
/* Used to store classes currently not in use by an MD */
|
||||||
static int UnusedClassesPrivateKeyIndex;
|
static int UnusedClassesPrivateKeyIndex;
|
||||||
DevPrivateKey UnusedClassesPrivateKey = &UnusedClassesPrivateKeyIndex;
|
DevPrivateKey UnusedClassesPrivateKey = &UnusedClassesPrivateKeyIndex;
|
||||||
|
/* Used to store if a device is an XTest Virtual device */
|
||||||
|
static int XTstDevicePrivateKeyIndex;
|
||||||
|
DevPrivateKey XTstDevicePrivateKey = &XTstDevicePrivateKeyIndex;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* vxtstpointer
|
||||||
|
* is the virtual pointer for XTest. It is the first slave
|
||||||
|
* device of the VCP.
|
||||||
|
* vxtstkeyboard
|
||||||
|
* is the virtual keyboard for XTest. It is the first slave
|
||||||
|
* device of the VCK
|
||||||
|
*
|
||||||
|
* Neither of these devices can be deleted.
|
||||||
|
*/
|
||||||
|
DeviceIntPtr vxtstpointer, vxtstkeyboard;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -549,9 +564,9 @@ CorePointerProc(DeviceIntPtr pDev, int what)
|
||||||
void
|
void
|
||||||
InitCoreDevices(void)
|
InitCoreDevices(void)
|
||||||
{
|
{
|
||||||
if (AllocMasterDevice(serverClient, "Virtual core",
|
if (AllocDevicePair(serverClient, "Virtual core",
|
||||||
&inputInfo.pointer,
|
&inputInfo.pointer, &inputInfo.keyboard,
|
||||||
&inputInfo.keyboard) != Success)
|
TRUE) != Success)
|
||||||
FatalError("Failed to allocate core devices");
|
FatalError("Failed to allocate core devices");
|
||||||
|
|
||||||
if (ActivateDevice(inputInfo.pointer) != Success ||
|
if (ActivateDevice(inputInfo.pointer) != Success ||
|
||||||
|
@ -560,6 +575,25 @@ InitCoreDevices(void)
|
||||||
if (!EnableDevice(inputInfo.pointer) ||
|
if (!EnableDevice(inputInfo.pointer) ||
|
||||||
!EnableDevice(inputInfo.keyboard))
|
!EnableDevice(inputInfo.keyboard))
|
||||||
FatalError("Failed to enable core devices.");
|
FatalError("Failed to enable core devices.");
|
||||||
|
|
||||||
|
/*
|
||||||
|
Allocate an virtual slave device for xtest events, this
|
||||||
|
is a slave device to inputInfo master devices
|
||||||
|
*/
|
||||||
|
if(AllocXtstDevice(serverClient, "Virtual core",
|
||||||
|
&vxtstpointer,
|
||||||
|
&vxtstkeyboard) != Success)
|
||||||
|
FatalError("Failed to allocate XTst devices");
|
||||||
|
|
||||||
|
if (ActivateDevice(vxtstpointer) != Success ||
|
||||||
|
ActivateDevice(vxtstkeyboard) != Success)
|
||||||
|
FatalError("Failed to activate xtst core devices.");
|
||||||
|
if (!EnableDevice(vxtstpointer) ||
|
||||||
|
!EnableDevice(vxtstkeyboard))
|
||||||
|
FatalError("Failed to enable xtst core devices.");
|
||||||
|
|
||||||
|
AttachDevice(NULL, vxtstpointer, inputInfo.pointer);
|
||||||
|
AttachDevice(NULL, vxtstkeyboard, inputInfo.keyboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2273,12 +2307,16 @@ GetPairedDevice(DeviceIntPtr dev)
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new master device (== one pointer, one keyboard device).
|
* Create a new device pair (== one pointer, one keyboard device).
|
||||||
* Only allocates the devices, you will need to call ActivateDevice() and
|
* Only allocates the devices, you will need to call ActivateDevice() and
|
||||||
* EnableDevice() manually.
|
* EnableDevice() manually.
|
||||||
|
* Either a master or a slave device can be created depending on
|
||||||
|
* the value for master.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
AllocMasterDevice(ClientPtr client, char* name, DeviceIntPtr* ptr, DeviceIntPtr* keybd)
|
AllocDevicePair (ClientPtr client, char* name,
|
||||||
|
DeviceIntPtr* ptr, DeviceIntPtr* keybd,
|
||||||
|
Bool master)
|
||||||
{
|
{
|
||||||
DeviceIntPtr pointer;
|
DeviceIntPtr pointer;
|
||||||
DeviceIntPtr keyboard;
|
DeviceIntPtr keyboard;
|
||||||
|
@ -2302,7 +2340,7 @@ AllocMasterDevice(ClientPtr client, char* name, DeviceIntPtr* ptr, DeviceIntPtr*
|
||||||
pointer->spriteInfo->spriteOwner = TRUE;
|
pointer->spriteInfo->spriteOwner = TRUE;
|
||||||
|
|
||||||
pointer->u.lastSlave = NULL;
|
pointer->u.lastSlave = NULL;
|
||||||
pointer->isMaster = TRUE;
|
pointer->isMaster = master;
|
||||||
|
|
||||||
keyboard = AddInputDevice(client, CoreKeyboardProc, TRUE);
|
keyboard = AddInputDevice(client, CoreKeyboardProc, TRUE);
|
||||||
if (!keyboard)
|
if (!keyboard)
|
||||||
|
@ -2324,7 +2362,7 @@ AllocMasterDevice(ClientPtr client, char* name, DeviceIntPtr* ptr, DeviceIntPtr*
|
||||||
keyboard->spriteInfo->spriteOwner = FALSE;
|
keyboard->spriteInfo->spriteOwner = FALSE;
|
||||||
|
|
||||||
keyboard->u.lastSlave = NULL;
|
keyboard->u.lastSlave = NULL;
|
||||||
keyboard->isMaster = TRUE;
|
keyboard->isMaster = master;
|
||||||
|
|
||||||
|
|
||||||
/* The ClassesRec stores the device classes currently not used. */
|
/* The ClassesRec stores the device classes currently not used. */
|
||||||
|
@ -2338,3 +2376,31 @@ AllocMasterDevice(ClientPtr client, char* name, DeviceIntPtr* ptr, DeviceIntPtr*
|
||||||
|
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate a device pair that is initialised as a slave
|
||||||
|
* device with properties that identify the devices as belonging
|
||||||
|
* to XTest subsystem.
|
||||||
|
* This only creates the pair, Activate/Enable Device
|
||||||
|
* still need to be called.
|
||||||
|
*/
|
||||||
|
int AllocXtstDevice (ClientPtr client, char* name,
|
||||||
|
DeviceIntPtr* ptr, DeviceIntPtr* keybd)
|
||||||
|
{
|
||||||
|
int retval;
|
||||||
|
int len = strlen(name);
|
||||||
|
char *xtstname = xcalloc(len + 6, 1 );
|
||||||
|
|
||||||
|
strncpy( xtstname, name, len);
|
||||||
|
strncat( xtstname, " Xtst", 5 );
|
||||||
|
|
||||||
|
retval = AllocDevicePair( client, xtstname, ptr, keybd, FALSE);
|
||||||
|
if ( retval == Success ){
|
||||||
|
dixSetPrivate(&((*ptr)->devPrivates), XTstDevicePrivateKey, (void *)True );
|
||||||
|
dixSetPrivate(&((*keybd)->devPrivates), XTstDevicePrivateKey,(void *)True);
|
||||||
|
}
|
||||||
|
|
||||||
|
xfree( xtstname );
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
|
@ -296,6 +296,13 @@ R021 RANDR:SetCrtcConfig
|
||||||
R022 RANDR:GetCrtcGammaSize
|
R022 RANDR:GetCrtcGammaSize
|
||||||
R023 RANDR:GetCrtcGamma
|
R023 RANDR:GetCrtcGamma
|
||||||
R024 RANDR:SetCrtcGamma
|
R024 RANDR:SetCrtcGamma
|
||||||
|
R025 RANDR:GetScreenResourcesCurrent
|
||||||
|
R026 RANDR:SetCrtcTransform
|
||||||
|
R027 RANDR:GetCrtcTransform
|
||||||
|
R028 RANDR:GetPanning
|
||||||
|
R029 RANDR:SetPanning
|
||||||
|
R030 RANDR:SetOutputPrimary
|
||||||
|
R031 RANDR:GetOutputPrimary
|
||||||
V000 RANDR:ScreenChangeNotify
|
V000 RANDR:ScreenChangeNotify
|
||||||
V001 RANDR:Notify
|
V001 RANDR:Notify
|
||||||
E000 RANDR:BadRROutput
|
E000 RANDR:BadRROutput
|
||||||
|
@ -937,6 +944,10 @@ R032 XInputExtension:DeviceBell
|
||||||
R033 XInputExtension:SetDeviceValuators
|
R033 XInputExtension:SetDeviceValuators
|
||||||
R034 XInputExtension:GetDeviceControl
|
R034 XInputExtension:GetDeviceControl
|
||||||
R035 XInputExtension:ChangeDeviceControl
|
R035 XInputExtension:ChangeDeviceControl
|
||||||
|
R036 XInputExtension:ListDeviceProperties
|
||||||
|
R037 XInputExtension:ChangeDeviceProperty
|
||||||
|
R038 XInputExtension:DeleteDeviceProperty
|
||||||
|
R039 XInputExtension:GetDeviceProperty
|
||||||
V000 XInputExtension:DeviceValuator
|
V000 XInputExtension:DeviceValuator
|
||||||
V001 XInputExtension:DeviceKeyPress
|
V001 XInputExtension:DeviceKeyPress
|
||||||
V002 XInputExtension:DeviceKeyRelease
|
V002 XInputExtension:DeviceKeyRelease
|
||||||
|
@ -953,6 +964,7 @@ V012 XInputExtension:ChangeDeviceNotify
|
||||||
V013 XInputExtension:DeviceKeystateNotify
|
V013 XInputExtension:DeviceKeystateNotify
|
||||||
V014 XInputExtension:DeviceButtonstateNotify
|
V014 XInputExtension:DeviceButtonstateNotify
|
||||||
V015 XInputExtension:DevicePresenceNotify
|
V015 XInputExtension:DevicePresenceNotify
|
||||||
|
V016 XInputExtension:DevicePropertyNotify
|
||||||
E000 XInputExtension:BadDevice
|
E000 XInputExtension:BadDevice
|
||||||
E001 XInputExtension:BadEvent
|
E001 XInputExtension:BadEvent
|
||||||
E002 XInputExtension:BadMode
|
E002 XInputExtension:BadMode
|
||||||
|
|
11
exa/exa.c
11
exa/exa.c
|
@ -289,7 +289,7 @@ exaCreatePixmap(ScreenPtr pScreen, int w, int h, int depth,
|
||||||
return NullPixmap;
|
return NullPixmap;
|
||||||
|
|
||||||
swap(pExaScr, pScreen, CreatePixmap);
|
swap(pExaScr, pScreen, CreatePixmap);
|
||||||
if (!pExaScr->info->CreatePixmap) {
|
if (!pExaScr->info->CreatePixmap && !pExaScr->info->CreatePixmap2) {
|
||||||
pPixmap = pScreen->CreatePixmap (pScreen, w, h, depth, usage_hint);
|
pPixmap = pScreen->CreatePixmap (pScreen, w, h, depth, usage_hint);
|
||||||
} else {
|
} else {
|
||||||
driver_alloc = 1;
|
driver_alloc = 1;
|
||||||
|
@ -324,7 +324,10 @@ exaCreatePixmap(ScreenPtr pScreen, int w, int h, int depth,
|
||||||
*/
|
*/
|
||||||
pPixmap->devPrivate.ptr = NULL;
|
pPixmap->devPrivate.ptr = NULL;
|
||||||
|
|
||||||
pExaPixmap->driverPriv = pExaScr->info->CreatePixmap(pScreen, datasize, 0);
|
if (pExaScr->info->CreatePixmap2)
|
||||||
|
pExaPixmap->driverPriv = pExaScr->info->CreatePixmap2(pScreen, w, h, depth, usage_hint, bpp);
|
||||||
|
else
|
||||||
|
pExaPixmap->driverPriv = pExaScr->info->CreatePixmap(pScreen, datasize, 0);
|
||||||
if (!pExaPixmap->driverPriv) {
|
if (!pExaPixmap->driverPriv) {
|
||||||
swap(pExaScr, pScreen, DestroyPixmap);
|
swap(pExaScr, pScreen, DestroyPixmap);
|
||||||
pScreen->DestroyPixmap (pPixmap);
|
pScreen->DestroyPixmap (pPixmap);
|
||||||
|
@ -1261,7 +1264,7 @@ exaDriverInit (ScreenPtr pScreen,
|
||||||
wrap(pExaScr, pScreen, DestroyPixmap, exaDestroyPixmap);
|
wrap(pExaScr, pScreen, DestroyPixmap, exaDestroyPixmap);
|
||||||
|
|
||||||
wrap(pExaScr, pScreen, ModifyPixmapHeader, exaModifyPixmapHeader);
|
wrap(pExaScr, pScreen, ModifyPixmapHeader, exaModifyPixmapHeader);
|
||||||
if (!pExaScr->info->CreatePixmap) {
|
if (!(pExaScr->info->flags & EXA_HANDLES_PIXMAPS)) {
|
||||||
LogMessage(X_INFO, "EXA(%d): Offscreen pixmap area of %lu bytes\n",
|
LogMessage(X_INFO, "EXA(%d): Offscreen pixmap area of %lu bytes\n",
|
||||||
pScreen->myNum,
|
pScreen->myNum,
|
||||||
pExaScr->info->memorySize - pExaScr->info->offScreenBase);
|
pExaScr->info->memorySize - pExaScr->info->offScreenBase);
|
||||||
|
@ -1274,7 +1277,7 @@ exaDriverInit (ScreenPtr pScreen,
|
||||||
else
|
else
|
||||||
LogMessage(X_INFO, "EXA(%d): No offscreen pixmaps\n", pScreen->myNum);
|
LogMessage(X_INFO, "EXA(%d): No offscreen pixmaps\n", pScreen->myNum);
|
||||||
|
|
||||||
if (!pExaScr->info->CreatePixmap) {
|
if (!(pExaScr->info->flags & EXA_HANDLES_PIXMAPS)) {
|
||||||
DBG_PIXMAP(("============== %ld < %ld\n", pExaScr->info->offScreenBase,
|
DBG_PIXMAP(("============== %ld < %ld\n", pExaScr->info->offScreenBase,
|
||||||
pExaScr->info->memorySize));
|
pExaScr->info->memorySize));
|
||||||
if (pExaScr->info->offScreenBase < pExaScr->info->memorySize) {
|
if (pExaScr->info->offScreenBase < pExaScr->info->memorySize) {
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
#include "fb.h"
|
#include "fb.h"
|
||||||
|
|
||||||
#define EXA_VERSION_MAJOR 2
|
#define EXA_VERSION_MAJOR 2
|
||||||
#define EXA_VERSION_MINOR 4
|
#define EXA_VERSION_MINOR 5
|
||||||
#define EXA_VERSION_RELEASE 0
|
#define EXA_VERSION_RELEASE 0
|
||||||
|
|
||||||
typedef struct _ExaOffscreenArea ExaOffscreenArea;
|
typedef struct _ExaOffscreenArea ExaOffscreenArea;
|
||||||
|
@ -704,6 +704,8 @@ typedef struct _ExaDriver {
|
||||||
int depth, int bitsPerPixel, int devKind,
|
int depth, int bitsPerPixel, int devKind,
|
||||||
pointer pPixData);
|
pointer pPixData);
|
||||||
|
|
||||||
|
void *(*CreatePixmap2)(ScreenPtr pScreen, int width, int height,
|
||||||
|
int depth, int usage_hint, int bitsPerPixel);
|
||||||
/** @} */
|
/** @} */
|
||||||
} ExaDriverRec, *ExaDriverPtr;
|
} ExaDriverRec, *ExaDriverPtr;
|
||||||
|
|
||||||
|
|
|
@ -371,6 +371,9 @@ exaEnableDisableFBAccess (int index, Bool enable)
|
||||||
ScreenPtr pScreen = screenInfo.screens[index];
|
ScreenPtr pScreen = screenInfo.screens[index];
|
||||||
ExaScreenPriv (pScreen);
|
ExaScreenPriv (pScreen);
|
||||||
|
|
||||||
|
if (pExaScr->info->flags & EXA_HANDLES_PIXMAPS)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!enable && pExaScr->disableFbCount++ == 0) {
|
if (!enable && pExaScr->disableFbCount++ == 0) {
|
||||||
if (pExaScr->info->exa_minor < 1)
|
if (pExaScr->info->exa_minor < 1)
|
||||||
ExaOffscreenSwapOut (pScreen);
|
ExaOffscreenSwapOut (pScreen);
|
||||||
|
|
|
@ -1086,7 +1086,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
if (!DRIGetDeviceInfo(pScreen, &hFB, &junk,
|
if (!DRIGetDeviceInfo(pScreen, &hFB, &junk,
|
||||||
&framebuffer.size, &framebuffer.stride,
|
&framebuffer.size, &framebuffer.stride,
|
||||||
&framebuffer.dev_priv_size, &framebuffer.dev_priv)) {
|
&framebuffer.dev_priv_size, &framebuffer.dev_priv)) {
|
||||||
LogMessage(X_ERROR, "AIGLX error: XF86DRIGetDeviceInfo failed");
|
LogMessage(X_ERROR, "AIGLX error: XF86DRIGetDeviceInfo failed\n");
|
||||||
goto handle_error;
|
goto handle_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1097,7 +1097,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
status = drmMap(fd, hFB, framebuffer.size,
|
status = drmMap(fd, hFB, framebuffer.size,
|
||||||
(drmAddressPtr)&framebuffer.base);
|
(drmAddressPtr)&framebuffer.base);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
LogMessage(X_ERROR, "AIGLX error: drmMap of framebuffer failed (%s)",
|
LogMessage(X_ERROR, "AIGLX error: drmMap of framebuffer failed (%s)\n",
|
||||||
strerror(-status));
|
strerror(-status));
|
||||||
goto handle_error;
|
goto handle_error;
|
||||||
}
|
}
|
||||||
|
@ -1107,7 +1107,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
*/
|
*/
|
||||||
status = drmMap(fd, hSAREA, SAREA_MAX, &pSAREA);
|
status = drmMap(fd, hSAREA, SAREA_MAX, &pSAREA);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
LogMessage(X_ERROR, "AIGLX error: drmMap of SAREA failed (%s)",
|
LogMessage(X_ERROR, "AIGLX error: drmMap of SAREA failed (%s)\n",
|
||||||
strerror(-status));
|
strerror(-status));
|
||||||
goto handle_error;
|
goto handle_error;
|
||||||
}
|
}
|
||||||
|
@ -1125,7 +1125,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
screen);
|
screen);
|
||||||
|
|
||||||
if (screen->driScreen == NULL) {
|
if (screen->driScreen == NULL) {
|
||||||
LogMessage(X_ERROR, "AIGLX error: Calling driver entry point failed");
|
LogMessage(X_ERROR,
|
||||||
|
"AIGLX error: Calling driver entry point failed\n");
|
||||||
goto handle_error;
|
goto handle_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -443,9 +443,17 @@ dri2GetBuffers(__DRIdrawable *driDrawable,
|
||||||
return private->buffers;
|
return private->buffers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dri2FlushFrontBuffer(__DRIdrawable *driDrawable, void *loaderPrivate)
|
||||||
|
{
|
||||||
|
(void) driDrawable;
|
||||||
|
__glXDRIdrawableWaitGL((__GLXdrawable *) loaderPrivate);
|
||||||
|
}
|
||||||
|
|
||||||
static const __DRIdri2LoaderExtension loaderExtension = {
|
static const __DRIdri2LoaderExtension loaderExtension = {
|
||||||
{ __DRI_DRI2_LOADER, __DRI_DRI2_LOADER_VERSION },
|
{ __DRI_DRI2_LOADER, __DRI_DRI2_LOADER_VERSION },
|
||||||
dri2GetBuffers,
|
dri2GetBuffers,
|
||||||
|
dri2FlushFrontBuffer,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const __DRIextension *loader_extensions[] = {
|
static const __DRIextension *loader_extensions[] = {
|
||||||
|
|
|
@ -499,7 +499,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||||
screen);
|
screen);
|
||||||
|
|
||||||
if (screen->driScreen == NULL) {
|
if (screen->driScreen == NULL) {
|
||||||
LogMessage(X_ERROR, "AIGLX error: Calling driver entry point failed");
|
LogMessage(X_ERROR,
|
||||||
|
"AIGLX error: Calling driver entry point failed\n");
|
||||||
goto handle_error;
|
goto handle_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,8 +79,8 @@ ProcDRI2QueryVersion(ClientPtr client)
|
||||||
rep.type = X_Reply;
|
rep.type = X_Reply;
|
||||||
rep.length = 0;
|
rep.length = 0;
|
||||||
rep.sequenceNumber = client->sequence;
|
rep.sequenceNumber = client->sequence;
|
||||||
rep.majorVersion = DRI2_MAJOR;
|
rep.majorVersion = 1;
|
||||||
rep.minorVersion = DRI2_MINOR;
|
rep.minorVersion = 0;
|
||||||
|
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
swaps(&rep.sequenceNumber, n);
|
swaps(&rep.sequenceNumber, n);
|
||||||
|
|
|
@ -170,6 +170,11 @@ static Bool quirk_detailed_use_maximum_size (int scrnIndex, xf86MonPtr DDC)
|
||||||
(DDC->vendor.prod_id == 0 || DDC->vendor.prod_id == 0x2a00))
|
(DDC->vendor.prod_id == 0 || DDC->vendor.prod_id == 0x2a00))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
/* Bug #21324: Iiyama Vision Master 450 */
|
||||||
|
if (memcmp (DDC->vendor.name, "IVM", 4) == 0 &&
|
||||||
|
DDC->vendor.prod_id == 6400)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -191,8 +191,10 @@ static void message_kit_thread (SEL selector, NSObject *arg) {
|
||||||
size_t i;
|
size_t i;
|
||||||
DEBUG_LOG("state=%d, _x_active=%d, \n", state, _x_active)
|
DEBUG_LOG("state=%d, _x_active=%d, \n", state, _x_active)
|
||||||
if (state) {
|
if (state) {
|
||||||
if(bgMouseLocationUpdated)
|
if(bgMouseLocationUpdated) {
|
||||||
DarwinSendPointerEvents(darwinPointer, MotionNotify, 0, bgMouseLocation.x, bgMouseLocation.y, 0.0, 0.0, 0.0);
|
DarwinSendPointerEvents(darwinPointer, MotionNotify, 0, bgMouseLocation.x, bgMouseLocation.y, 0.0, 0.0, 0.0);
|
||||||
|
bgMouseLocationUpdated = FALSE;
|
||||||
|
}
|
||||||
DarwinSendDDXEvent(kXquartzActivate, 0);
|
DarwinSendDDXEvent(kXquartzActivate, 0);
|
||||||
|
|
||||||
if (!_x_active) {
|
if (!_x_active) {
|
||||||
|
@ -1064,32 +1066,34 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!quartzServerVisible && noTestExtensions) {
|
if(!quartzServerVisible && noTestExtensions) {
|
||||||
if(ev_button == 0) {
|
|
||||||
#if defined(XPLUGIN_VERSION) && XPLUGIN_VERSION > 0
|
#if defined(XPLUGIN_VERSION) && XPLUGIN_VERSION > 0
|
||||||
/* Older libXplugin (Tiger/"Stock" Leopard) aren't thread safe, so we can't call xp_find_window from the Appkit thread */
|
/* Older libXplugin (Tiger/"Stock" Leopard) aren't thread safe, so we can't call xp_find_window from the Appkit thread */
|
||||||
xp_window_id wid = 0;
|
xp_window_id wid = 0;
|
||||||
xp_error e;
|
xp_error e;
|
||||||
|
|
||||||
/* Sigh. Need to check that we're really over one of
|
/* Sigh. Need to check that we're really over one of
|
||||||
* our windows. (We need to receive pointer events while
|
* our windows. (We need to receive pointer events while
|
||||||
* not in the foreground, but we don't want to receive them
|
* not in the foreground, but we don't want to receive them
|
||||||
* when another window is over us or we might show a tooltip)
|
* when another window is over us or we might show a tooltip)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
e = xp_find_window(location.x, location.y, 0, &wid);
|
e = xp_find_window(location.x, location.y, 0, &wid);
|
||||||
|
|
||||||
if (e == XP_Success && wid == 0)
|
if (e != XP_Success || (e == XP_Success && wid == 0))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
bgMouseLocation = location;
|
bgMouseLocation = location;
|
||||||
bgMouseLocationUpdated = TRUE;
|
bgMouseLocationUpdated = TRUE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
bgMouseLocationUpdated = FALSE;
|
|
||||||
|
if(bgMouseLocationUpdated) {
|
||||||
|
if(!(ev_type == MotionNotify && ev_button == 0)) {
|
||||||
DarwinSendPointerEvents(pDev, MotionNotify, 0, location.x,
|
DarwinSendPointerEvents(pDev, MotionNotify, 0, location.x,
|
||||||
location.y, pressure, tilt.x, tilt.y);
|
location.y, pressure, tilt.x, tilt.y);
|
||||||
}
|
}
|
||||||
|
bgMouseLocationUpdated = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
DarwinSendPointerEvents(pDev, ev_type, ev_button, location.x, location.y,
|
DarwinSendPointerEvents(pDev, ev_type, ev_button, location.x, location.y,
|
||||||
|
@ -1122,6 +1126,7 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe
|
||||||
* first, since we aren't getting them on background mouse motion
|
* first, since we aren't getting them on background mouse motion
|
||||||
*/
|
*/
|
||||||
if(!quartzServerVisible && noTestExtensions) {
|
if(!quartzServerVisible && noTestExtensions) {
|
||||||
|
bgMouseLocationUpdated = FALSE;
|
||||||
DarwinSendPointerEvents(darwinPointer, MotionNotify, 0, location.x,
|
DarwinSendPointerEvents(darwinPointer, MotionNotify, 0, location.x,
|
||||||
location.y, pressure, tilt.x, tilt.y);
|
location.y, pressure, tilt.x, tilt.y);
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>nl</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>fr</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>de</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>it</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>ja</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>76</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>es</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>da</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>fi</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>ko</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>no</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>pl</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>pt</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>pt_PT</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>ru</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>sv</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>zh_CN</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>75.1</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LprojCompatibleVersion</key>
|
||||||
|
<string>66.2</string>
|
||||||
|
<key>LprojLocale</key>
|
||||||
|
<string>zh_TW</string>
|
||||||
|
<key>LprojRevisionLevel</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>LprojVersion</key>
|
||||||
|
<string>73</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -469,10 +469,11 @@ extern int AttachDevice(ClientPtr client,
|
||||||
|
|
||||||
extern _X_EXPORT DeviceIntPtr GetPairedDevice(DeviceIntPtr kbd);
|
extern _X_EXPORT DeviceIntPtr GetPairedDevice(DeviceIntPtr kbd);
|
||||||
|
|
||||||
extern int AllocMasterDevice(ClientPtr client,
|
extern int AllocDevicePair(ClientPtr client,
|
||||||
char* name,
|
char* name,
|
||||||
DeviceIntPtr* ptr,
|
DeviceIntPtr* ptr,
|
||||||
DeviceIntPtr* keybd);
|
DeviceIntPtr* keybd,
|
||||||
|
Bool master);
|
||||||
extern void DeepCopyDeviceClasses(DeviceIntPtr from,
|
extern void DeepCopyDeviceClasses(DeviceIntPtr from,
|
||||||
DeviceIntPtr to);
|
DeviceIntPtr to);
|
||||||
|
|
||||||
|
@ -481,6 +482,10 @@ extern int generate_modkeymap(ClientPtr client, DeviceIntPtr dev,
|
||||||
KeyCode **modkeymap, int *max_keys_per_mod);
|
KeyCode **modkeymap, int *max_keys_per_mod);
|
||||||
extern int change_modmap(ClientPtr client, DeviceIntPtr dev, KeyCode *map,
|
extern int change_modmap(ClientPtr client, DeviceIntPtr dev, KeyCode *map,
|
||||||
int max_keys_per_mod);
|
int max_keys_per_mod);
|
||||||
|
extern int AllocXtstDevice(ClientPtr client,
|
||||||
|
char* name,
|
||||||
|
DeviceIntPtr* ptr,
|
||||||
|
DeviceIntPtr* keybd);
|
||||||
|
|
||||||
/* misc event helpers */
|
/* misc event helpers */
|
||||||
extern Mask GetEventFilter(DeviceIntPtr dev, xEvent *event);
|
extern Mask GetEventFilter(DeviceIntPtr dev, xEvent *event);
|
||||||
|
|
|
@ -438,7 +438,7 @@ mieqProcessInputEvents(void)
|
||||||
mieqProcessDeviceEvent(dev, event, screen);
|
mieqProcessDeviceEvent(dev, event, screen);
|
||||||
|
|
||||||
/* Update the sprite now. Next event may be from different device. */
|
/* Update the sprite now. Next event may be from different device. */
|
||||||
if (event->u.any.type == ET_Motion && (master || dev->isMaster))
|
if (event->u.any.type == ET_Motion && master)
|
||||||
miPointerUpdateSprite(dev);
|
miPointerUpdateSprite(dev);
|
||||||
|
|
||||||
#ifdef XQUARTZ
|
#ifdef XQUARTZ
|
||||||
|
|
|
@ -594,6 +594,7 @@ InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet *rmlvo,
|
||||||
InitFocusClassDeviceStruct(dev);
|
InitFocusClassDeviceStruct(dev);
|
||||||
|
|
||||||
xkbi->kbdProc = ctrl_func;
|
xkbi->kbdProc = ctrl_func;
|
||||||
|
dev->kbdfeed->BellProc = bell_func;
|
||||||
dev->kbdfeed->CtrlProc = XkbDDXKeybdCtrlProc;
|
dev->kbdfeed->CtrlProc = XkbDDXKeybdCtrlProc;
|
||||||
|
|
||||||
dev->kbdfeed->ctrl = defaultKeyboardControl;
|
dev->kbdfeed->ctrl = defaultKeyboardControl;
|
||||||
|
|
Loading…
Reference in New Issue