mirror of
https://github.com/X11Libre/xf86-input-evdev.git
synced 2026-03-27 11:08:29 +00:00
Move the axis to button map code back into the rel code.
This might solve some problems, but should at least prevent some odd behavior.
This commit is contained in:
@@ -174,12 +174,12 @@ typedef struct {
|
||||
int v[REL_MAX];
|
||||
int count;
|
||||
int map[REL_MAX];
|
||||
int btnMap[REL_MAX][2];
|
||||
} evdevRelRec, *evdevRelPtr;
|
||||
|
||||
typedef struct {
|
||||
int axes;
|
||||
int v[ABS_MAX];
|
||||
int btnMap[ABS_MAX][2];
|
||||
} evdevAxesRec, *evdevAxesPtr;
|
||||
|
||||
typedef struct {
|
||||
|
||||
@@ -156,14 +156,7 @@ EvdevAxesRealSyn (InputInfoPtr pInfo, int absolute, int skip_xy)
|
||||
evdevDevicePtr pEvdev = pInfo->private;
|
||||
evdevStatePtr state = &pEvdev->state;
|
||||
evdevAxesPtr axes = state->axes;
|
||||
int i, btn;
|
||||
|
||||
for (i = 0; i < state->axes->axes; i++) {
|
||||
if ((state->axes->v[i] > 0) && (btn = state->axes->btnMap[i][0]))
|
||||
EvdevBtnPostFakeClicks (pInfo, btn, state->axes->v[i]);
|
||||
else if ((state->axes->v[i] < 0) && (btn = state->axes->btnMap[i][1]))
|
||||
EvdevBtnPostFakeClicks (pInfo, btn, -state->axes->v[i]);
|
||||
}
|
||||
int i;
|
||||
|
||||
/*
|
||||
if (skip_xy && (axes->v[0] || axes->v[1]))
|
||||
@@ -226,16 +219,12 @@ EvdevAxesAbsSyn (InputInfoPtr pInfo)
|
||||
{
|
||||
evdevDevicePtr pEvdev = pInfo->private;
|
||||
evdevStatePtr state = &pEvdev->state;
|
||||
int i, n;
|
||||
int i = 0, n = state->abs->n++ & 1;
|
||||
Bool skip_xy = 0;
|
||||
|
||||
if (!state->axes || !state->abs || !state->abs->count)
|
||||
return;
|
||||
|
||||
n = state->abs->n & 1;
|
||||
state->abs->n++;
|
||||
i = 0;
|
||||
|
||||
if (state->mode == Relative && state->abs->axes >= 2) {
|
||||
if (!state->abs->use_touch || state->abs->touch) {
|
||||
if (state->abs->reset) {
|
||||
@@ -277,18 +266,26 @@ EvdevAxesRelSyn (InputInfoPtr pInfo)
|
||||
{
|
||||
evdevDevicePtr pEvdev = pInfo->private;
|
||||
evdevStatePtr state = &pEvdev->state;
|
||||
int i;
|
||||
evdevRelPtr rel = state->rel;
|
||||
int i, btn;
|
||||
|
||||
if (!state->axes || !state->rel || !state->rel->count)
|
||||
return;
|
||||
|
||||
for (i = 0; i < REL_MAX; i++) {
|
||||
state->axes->v[i] = state->rel->v[i];
|
||||
state->rel->v[i] = 0;
|
||||
if (rel->btnMap[i][0] || rel->btnMap[i][1]) {
|
||||
if ((rel->v[i] > 0) && (btn = rel->btnMap[i][0]))
|
||||
EvdevBtnPostFakeClicks (pInfo, btn, rel->v[i]);
|
||||
else if ((rel->v[i] < 0) && (btn = rel->btnMap[i][1]))
|
||||
EvdevBtnPostFakeClicks (pInfo, btn, -rel->v[i]);
|
||||
}
|
||||
|
||||
state->axes->v[i] = rel->v[i];
|
||||
rel->v[i] = 0;
|
||||
}
|
||||
|
||||
EvdevAxesRealSyn (pInfo, 0, 0);
|
||||
state->rel->count = 0;
|
||||
rel->count = 0;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -530,13 +527,13 @@ EvdevAxisRelNew0(InputInfoPtr pInfo)
|
||||
|
||||
k = state->rel->map[i];
|
||||
|
||||
if (!s || (sscanf(s, "%d %d", &state->axes->btnMap[k][0],
|
||||
&state->axes->btnMap[k][1]) != 2))
|
||||
state->axes->btnMap[k][0] = state->axes->btnMap[k][1] = 0;
|
||||
if (!s || (sscanf(s, "%d %d", &state->rel->btnMap[k][0],
|
||||
&state->rel->btnMap[k][1]) != 2))
|
||||
state->rel->btnMap[k][0] = state->rel->btnMap[k][1] = 0;
|
||||
|
||||
if (state->axes->btnMap[k][0] || state->axes->btnMap[k][1])
|
||||
if (state->rel->btnMap[k][0] || state->rel->btnMap[k][1])
|
||||
xf86Msg(X_CONFIG, "%s: %s: %d %d.\n", pInfo->name, option,
|
||||
state->axes->btnMap[k][0], state->axes->btnMap[k][1]);
|
||||
state->rel->btnMap[k][0], state->rel->btnMap[k][1]);
|
||||
|
||||
j++;
|
||||
}
|
||||
|
||||
@@ -215,12 +215,12 @@ EvdevBtnCalcRemap (InputInfoPtr pInfo)
|
||||
do {
|
||||
clear = 1;
|
||||
for (j = 0; j < REL_MAX; j++) {
|
||||
if (state->axes->btnMap[j][0] == (i + base)) {
|
||||
if (state->rel->btnMap[j][0] == (i + base)) {
|
||||
base++;
|
||||
clear = 0;
|
||||
break;
|
||||
}
|
||||
if (state->axes->btnMap[j][1] == (i + base)) {
|
||||
if (state->rel->btnMap[j][1] == (i + base)) {
|
||||
base++;
|
||||
clear = 0;
|
||||
break;
|
||||
@@ -243,10 +243,10 @@ EvdevBtnCalcRemap (InputInfoPtr pInfo)
|
||||
|
||||
if (state->rel) {
|
||||
for (i = 0; i < REL_MAX; i++) {
|
||||
if (state->axes->btnMap[i][0] > state->btn->buttons)
|
||||
state->btn->buttons = state->axes->btnMap[i][0];
|
||||
if (state->axes->btnMap[i][1] > state->btn->buttons)
|
||||
state->btn->buttons = state->axes->btnMap[i][1];
|
||||
if (state->rel->btnMap[i][0] > state->btn->buttons)
|
||||
state->btn->buttons = state->rel->btnMap[i][0];
|
||||
if (state->rel->btnMap[i][1] > state->btn->buttons)
|
||||
state->btn->buttons = state->rel->btnMap[i][1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user