Precedence of & and >> is not the same and is not left to right. shift has higher precedence and should be done after the mask. Here the shifts are unnecessary and a non-zero value can be used as the test to set 1 or zero. Signed-off-by: Joe Perches <joe@xxxxxxxxxxx> --- drivers/input/tablet/aiptek.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/input/tablet/aiptek.c b/drivers/input/tablet/aiptek.c index e7f966d..dee2bb9 100644 --- a/drivers/input/tablet/aiptek.c +++ b/drivers/input/tablet/aiptek.c @@ -489,9 +489,9 @@ static void aiptek_irq(struct urb *urb) */ jitterable = data[1] & 0x07; - left = (data[1] & aiptek->curSetting.mouseButtonLeft >> 2) != 0 ? 1 : 0; - right = (data[1] & aiptek->curSetting.mouseButtonRight >> 2) != 0 ? 1 : 0; - middle = (data[1] & aiptek->curSetting.mouseButtonMiddle >> 2) != 0 ? 1 : 0; + left = data[1] & aiptek->curSetting.mouseButtonLeft ? 1 : 0; + right = data[1] & aiptek->curSetting.mouseButtonRight ? 1 : 0; + middle = data[1] & aiptek->curSetting.mouseButtonMiddle ? 1 : 0; input_report_key(inputdev, BTN_LEFT, left); input_report_key(inputdev, BTN_MIDDLE, middle); -- 2.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html