Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 58481
b: refs/heads/master
c: 1e7b3fa
h: refs/heads/master
i:
  58479: b87e9ff
v: v3
  • Loading branch information
Rene van Paassen authored and Dmitry Torokhov committed Jul 10, 2007
1 parent 239db92 commit 5cb5f8e
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 52 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0112db36ef95e5632db071297f7df130725c47b9
refs/heads/master: 1e7b3faed1793e7637a774240ae22541c5ba6ca0
97 changes: 46 additions & 51 deletions trunk/drivers/input/tablet/aiptek.c
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,11 @@ static void aiptek_irq(struct urb *urb)
aiptek->curSetting.wheel);
aiptek->curSetting.wheel = AIPTEK_WHEEL_DISABLE;
}
if (aiptek->lastMacro != -1) {
input_report_key(inputdev,
macroKeyEvents[aiptek->lastMacro], 0);
aiptek->lastMacro = -1;
}
input_sync(inputdev);
}
}
Expand Down Expand Up @@ -589,6 +594,11 @@ static void aiptek_irq(struct urb *urb)
}
}
input_report_abs(inputdev, ABS_MISC, p | AIPTEK_REPORT_TOOL_STYLUS);
if (aiptek->lastMacro != -1) {
input_report_key(inputdev,
macroKeyEvents[aiptek->lastMacro], 0);
aiptek->lastMacro = -1;
}
input_sync(inputdev);
}
}
Expand Down Expand Up @@ -647,6 +657,11 @@ static void aiptek_irq(struct urb *urb)
}
}
input_report_abs(inputdev, ABS_MISC, p | AIPTEK_REPORT_TOOL_MOUSE);
if (aiptek->lastMacro != -1) {
input_report_key(inputdev,
macroKeyEvents[aiptek->lastMacro], 0);
aiptek->lastMacro = -1;
}
input_sync(inputdev);
}
}
Expand All @@ -662,10 +677,10 @@ static void aiptek_irq(struct urb *urb)
bs = (data[1] & aiptek->curSetting.stylusButtonLower) != 0 ? 1 : 0;
pck = (data[1] & aiptek->curSetting.stylusButtonUpper) != 0 ? 1 : 0;

macro = data[3];
macro = dv && p && tip && !(data[3] & 1) ? (data[3] >> 1) : -1;
z = le16_to_cpu(get_unaligned((__le16 *) (data + 4)));

if (dv != 0) {
if (dv) {
/* If the selected tool changed, reset the old
* tool key, and set the new one.
*/
Expand All @@ -679,30 +694,20 @@ static void aiptek_irq(struct urb *urb)
aiptek->previousToolMode =
aiptek->curSetting.toolMode;
}
}

if (p != 0) {
input_report_key(inputdev, BTN_TOUCH, tip);
input_report_key(inputdev, BTN_STYLUS, bs);
input_report_key(inputdev, BTN_STYLUS2, pck);
input_report_abs(inputdev, ABS_PRESSURE, z);
}
if (aiptek->lastMacro != -1 && aiptek->lastMacro != macro) {
input_report_key(inputdev, macroKeyEvents[aiptek->lastMacro], 0);
aiptek->lastMacro = -1;
}

/* For safety, we're sending key 'break' codes for the
* neighboring macro keys.
*/
if (macro > 0) {
input_report_key(inputdev,
macroKeyEvents[macro - 1], 0);
}
if (macro < 25) {
input_report_key(inputdev,
macroKeyEvents[macro + 1], 0);
}
input_report_key(inputdev, macroKeyEvents[macro], p);
input_report_abs(inputdev, ABS_MISC,
p | AIPTEK_REPORT_TOOL_STYLUS);
input_sync(inputdev);
if (macro != -1 && macro != aiptek->lastMacro) {
input_report_key(inputdev, macroKeyEvents[macro], 1);
aiptek->lastMacro = macro;
}
input_report_abs(inputdev, ABS_MISC,
p | AIPTEK_REPORT_TOOL_STYLUS);
input_sync(inputdev);
}
/* Report 5s come from the macro keys when pressed by mouse
*/
Expand All @@ -714,46 +719,35 @@ static void aiptek_irq(struct urb *urb)
left = (data[1]& aiptek->curSetting.mouseButtonLeft) != 0 ? 1 : 0;
right = (data[1] & aiptek->curSetting.mouseButtonRight) != 0 ? 1 : 0;
middle = (data[1] & aiptek->curSetting.mouseButtonMiddle) != 0 ? 1 : 0;
macro = data[3];
macro = dv && p && left && !(data[3] & 1) ? (data[3] >> 1) : 0;

if (dv != 0) {
if (dv) {
/* If the selected tool changed, reset the old
* tool key, and set the new one.
*/
if (aiptek->previousToolMode !=
aiptek->curSetting.toolMode) {
input_report_key(inputdev,
input_report_key(inputdev,
aiptek->previousToolMode, 0);
input_report_key(inputdev,
aiptek->curSetting.toolMode,
1);
aiptek->previousToolMode =
aiptek->curSetting.toolMode;
}

if (p != 0) {
input_report_key(inputdev, BTN_LEFT, left);
input_report_key(inputdev, BTN_MIDDLE, middle);
input_report_key(inputdev, BTN_RIGHT, right);
input_report_key(inputdev,
aiptek->curSetting.toolMode, 1);
aiptek->previousToolMode = aiptek->curSetting.toolMode;
}
}

/* For safety, we're sending key 'break' codes for the
* neighboring macro keys.
*/
if (macro > 0) {
input_report_key(inputdev,
macroKeyEvents[macro - 1], 0);
}
if (macro < 25) {
input_report_key(inputdev,
macroKeyEvents[macro + 1], 0);
}
if (aiptek->lastMacro != -1 && aiptek->lastMacro != macro) {
input_report_key(inputdev, macroKeyEvents[aiptek->lastMacro], 0);
aiptek->lastMacro = -1;
}

if (macro != -1 && macro != aiptek->lastMacro) {
input_report_key(inputdev, macroKeyEvents[macro], 1);
input_report_rel(inputdev, ABS_MISC,
p | AIPTEK_REPORT_TOOL_MOUSE);
input_sync(inputdev);
aiptek->lastMacro = macro;
}

input_report_abs(inputdev, ABS_MISC,
p | AIPTEK_REPORT_TOOL_MOUSE);
input_sync(inputdev);
}
/* We have no idea which tool can generate a report 6. Theoretically,
* neither need to, having been given reports 4 & 5 for such use.
Expand Down Expand Up @@ -1710,6 +1704,7 @@ aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id)
aiptek->inDelay = 0;
aiptek->endDelay = 0;
aiptek->previousJitterable = 0;
aiptek->lastMacro = -1;

/* Set up the curSettings struct. Said struct contains the current
* programmable parameters. The newSetting struct contains changes
Expand Down

0 comments on commit 5cb5f8e

Please sign in to comment.