summaryrefslogtreecommitdiff
path: root/hw/dmx/input/dmxinputinit.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/dmx/input/dmxinputinit.c')
-rw-r--r--hw/dmx/input/dmxinputinit.c113
1 files changed, 102 insertions, 11 deletions
diff --git a/hw/dmx/input/dmxinputinit.c b/hw/dmx/input/dmxinputinit.c
index 0519d2b72..cf680517f 100644
--- a/hw/dmx/input/dmxinputinit.c
+++ b/hw/dmx/input/dmxinputinit.c
@@ -72,6 +72,7 @@
#include "input.h"
#include "mipointer.h"
#include "windowstr.h"
+#include "mi.h"
#ifdef XINPUT
#include <X11/extensions/XI.h>
@@ -222,6 +223,57 @@ static DMXLocalInputInfoRec DMXLocalDevices[] = {
{ NULL } /* Must be last */
};
+
+#if 11 /*BP*/
+void
+DDXRingBell(int volume, int pitch, int duration)
+{
+ /* NO-OP */
+}
+
+/* taken from kdrive/src/kinput.c: */
+static void
+dmxKbdCtrl (DeviceIntPtr pDevice, KeybdCtrl *ctrl)
+{
+#if 0
+ KdKeyboardInfo *ki;
+
+ for (ki = kdKeyboards; ki; ki = ki->next) {
+ if (ki->dixdev && ki->dixdev->id == pDevice->id)
+ break;
+ }
+
+ if (!ki || !ki->dixdev || ki->dixdev->id != pDevice->id || !ki->driver)
+ return;
+
+ KdSetLeds(ki, ctrl->leds);
+ ki->bellPitch = ctrl->bell_pitch;
+ ki->bellDuration = ctrl->bell_duration;
+#endif
+}
+
+/* taken from kdrive/src/kinput.c: */
+static void
+dmxBell(int volume, DeviceIntPtr pDev, pointer arg, int something)
+{
+#if 0
+ KeybdCtrl *ctrl = arg;
+ KdKeyboardInfo *ki = NULL;
+
+ for (ki = kdKeyboards; ki; ki = ki->next) {
+ if (ki->dixdev && ki->dixdev->id == pDev->id)
+ break;
+ }
+
+ if (!ki || !ki->dixdev || ki->dixdev->id != pDev->id || !ki->driver)
+ return;
+
+ KdRingBell(ki, volume, ctrl->bell_pitch, ctrl->bell_duration);
+#endif
+}
+
+#endif /*BP*/
+
static void _dmxChangePointerControl(DMXLocalInputInfoPtr dmxLocal,
PtrCtrl *ctrl)
{
@@ -420,14 +472,24 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
memset(&info, 0, sizeof(info));
switch (what) {
case DEVICE_INIT:
- if (dmxLocal->init) dmxLocal->init(pDev);
- if (dmxLocal->get_info) dmxLocal->get_info(pDev, &info);
+ if (dmxLocal->init)
+ dmxLocal->init(pDev);
+ if (dmxLocal->get_info)
+ dmxLocal->get_info(pDev, &info);
if (info.keyboard) { /* XKEYBOARD makes this a special case */
dmxKeyboardOn(pDevice, &info);
break;
}
if (info.keyClass) {
+#if 00 /*BP*/
InitKeyClassDeviceStruct(pDevice, &info.keySyms, info.modMap);
+#else
+ DevicePtr pDev = (DevicePtr) pDevice;
+ InitKeyboardDeviceStruct(pDev,
+ &info.keySyms,
+ info.modMap,
+ dmxBell, dmxKbdCtrl);
+#endif
}
if (info.buttonClass) {
InitButtonClassDeviceStruct(pDevice, info.numButtons, info.map);
@@ -435,13 +497,19 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
if (info.valuatorClass) {
if (info.numRelAxes && dmxLocal->sendsCore) {
InitValuatorClassDeviceStruct(pDevice, info.numRelAxes,
+#if 00 /*BP*/
miPointerGetMotionEvents,
miPointerGetMotionBufferSize(),
+#else
+ GetMotionHistory,
+ GetMaximumEventsNum(),
+#endif
Relative);
+ ErrorF("MOTION BUFFER SIZE %d\n", GetMaximumEventsNum());
#ifdef XINPUT
for (i = 0; i < info.numRelAxes; i++)
InitValuatorAxisStruct(pDevice, i, info.minval[0],
- info.maxval[0], info.res[0],
+ 1280/*info.maxval[0]*/, info.res[0],
info.minres[0], info.maxres[0]);
#endif
} else if (info.numRelAxes) {
@@ -452,7 +520,7 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
#ifdef XINPUT
for (i = 0; i < info.numRelAxes; i++)
InitValuatorAxisStruct(pDevice, i, info.minval[0],
- info.maxval[0], info.res[0],
+ 1280/*info.maxval[0]*/, info.res[0],
info.minres[0], info.maxres[0]);
#endif
} else if (info.numAbsAxes) {
@@ -463,7 +531,7 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
#ifdef XINPUT
for (i = 0; i < info.numAbsAxes; i++)
InitValuatorAxisStruct(pDevice, i+info.numRelAxes,
- info.minval[i+1], info.maxval[i+1],
+ info.minval[i+1], 1280/*info.maxval[i+1]*/,
info.res[i+1], info.minres[i+1],
info.maxres[i+1]);
#endif
@@ -520,12 +588,27 @@ static void dmxProcessInputEvents(DMXInputInfo *dmxInput)
{
int i;
+ /*
+ ErrorF("%s\n", __FUNCTION__);
+ */
+
dmxeqProcessInputEvents();
+#if 00 /*BP*/
miPointerUpdate();
- if (dmxInput->detached) return;
+#endif
+ if (dmxInput->detached)
+ return;
for (i = 0; i < dmxInput->numDevs; i += dmxInput->devs[i]->binding)
- if (dmxInput->devs[i]->process_input)
+ if (dmxInput->devs[i]->process_input) {
+#if 11 /*BP*/
+ miPointerUpdateSprite(dmxInput->devs[i]->pDevice);
+#endif
dmxInput->devs[i]->process_input(dmxInput->devs[i]->private);
+ }
+
+#if 11 /*BP*/
+ mieqProcessInputEvents();
+#endif
}
static void dmxUpdateWindowInformation(DMXInputInfo *dmxInput,
@@ -553,7 +636,8 @@ static void dmxUpdateWindowInformation(DMXInputInfo *dmxInput,
}
#endif
- if (dmxInput->detached) return;
+ if (dmxInput->detached)
+ return;
for (i = 0; i < dmxInput->numDevs; i += dmxInput->devs[i]->binding)
if (dmxInput->devs[i]->update_info)
dmxInput->devs[i]->update_info(dmxInput->devs[i]->private,
@@ -564,7 +648,8 @@ static void dmxCollectAll(DMXInputInfo *dmxInput)
{
int i;
- if (dmxInput->detached) return;
+ if (dmxInput->detached)
+ return;
for (i = 0; i < dmxInput->numDevs; i += dmxInput->devs[i]->binding)
if (dmxInput->devs[i]->collect_events)
dmxInput->devs[i]->collect_events(&dmxInput->devs[i]
@@ -661,7 +746,8 @@ static DeviceIntPtr dmxAddDevice(DMXLocalInputInfoPtr dmxLocal)
char *devname;
DMXInputInfo *dmxInput;
- if (!dmxLocal) return NULL;
+ if (!dmxLocal)
+ return NULL;
dmxInput = &dmxInputs[dmxLocal->inputIdx];
if (dmxLocal->sendsCore) {
@@ -710,8 +796,13 @@ static DeviceIntPtr dmxAddDevice(DMXLocalInputInfoPtr dmxLocal)
registerProcPtr(pDevice);
- if (dmxLocal->isCore && dmxLocal->type == DMX_LOCAL_MOUSE)
+ if (dmxLocal->isCore && dmxLocal->type == DMX_LOCAL_MOUSE) {
+#if 00 /*BP*/
miRegisterPointerDevice(screenInfo.screens[0], pDevice);
+#else
+ /* Nothing? dmxDeviceOnOff() should get called to init, right? */
+#endif
+ }
if (dmxLocal->create_private)
dmxLocal->private = dmxLocal->create_private(pDevice);