Skip to contentSkip to conversation

Decode mouse dz event

PATCH Applied Pat Campbell 2 participants 3 messages Dec 10, 2007 Xen hypervisor interface

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Decode mouse dz event

Decodes mouse event packet dz value and passes it as a wheel event into the input stream.

Please apply to linux-2.6.18-xen

Signed- off- by: Pat Campbell <[email protected]>

drivers/xen/fbfront/xenkbd.c +15 -5
diff -r 69d413abd6c0 drivers/xen/fbfront/xenkbd.c
@@ -64,8 +64,13 @@ static irqreturn_t input_handler(int rq,
 		dev = info->ptr;
 		switch (event->type) {
 		case XENKBD_TYPE_MOTION:
-			input_report_rel(dev, REL_X, event->motion.rel_x);
-			input_report_rel(dev, REL_Y, event->motion.rel_y);
+			if ( event->motion.rel_z == 1 || event->motion.rel_z == -1 ) {
+				input_report_rel(dev, REL_WHEEL, 0 - event->motion.rel_z);
+			}           
+			else {
+				input_report_rel(dev, REL_X, event->motion.rel_x);
+				input_report_rel(dev, REL_Y, event->motion.rel_y);
+			}
 			break;
 		case XENKBD_TYPE_KEY:
 			dev = NULL;
@@ -81,8 +86,13 @@ static irqreturn_t input_handler(int rq,
 				       event->key.keycode);
 			break;
 		case XENKBD_TYPE_POS:
-			input_report_abs(dev, ABS_X, event->pos.abs_x);
-			input_report_abs(dev, ABS_Y, event->pos.abs_y);
+			if ( event->pos.abs_z == 1 || event->pos.abs_z == -1 ) {
+				input_report_rel(dev, REL_WHEEL, 0 - event->pos.abs_z);
+			}
+			else {
+				input_report_abs(dev, ABS_X, event->pos.abs_x);
+				input_report_abs(dev, ABS_Y, event->pos.abs_y);
+			}
 			break;
 		}
 		if (dev)
@@ -152,7 +162,7 @@ int __devinit xenkbd_probe(struct xenbus
 	ptr->evbit[0] = BIT(EV_KEY) | BIT(EV_REL) | BIT(EV_ABS);
 	for (i = BTN_LEFT; i <= BTN_TASK; i++)
 		set_bit(i, ptr->keybit);
-	ptr->relbit[0] = BIT(REL_X) | BIT(REL_Y);
+	ptr->relbit[0] = BIT(REL_X) | BIT(REL_Y) | BIT(REL_WHEEL);
 	input_set_abs_params(ptr, ABS_X, 0, XENFB_WIDTH, 0, 0);
 	input_set_abs_params(ptr, ABS_Y, 0, XENFB_HEIGHT, 0, 0);
 

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

Applied
#1 lore raw

Applied.

Can the frontend driver be sure that the dz field will have a sane value with older backends that do not support the field? Or should this new field be advertised via xenstore?

-- Keir

Quoted 14 lines · Pat Campbell

Decodes mouse event packet dz value and passes it as a wheel event into the input stream.

Please apply to linux-2.6.18-xen

Signed- off- by: Pat Campbell <[email protected]>

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

#2 lore raw
Quoted 6 lines · <[email protected]> wrote:

Applied.

Can the frontend driver be sure that the dz field will have a sane value with older backends that do not support the field? Or should this new field be advertised via xenstore?

Patch is backwards compatible. Packet size has not changed and packet was fortunately zero filled in the older code before setting the position values. Newer frontend coupled with an older backend will always see dz as zero, no wheel event.

Pat

Quoted 18 lines

-- Keir

Quoted 14 lines · Pat Campbell

Decodes mouse event packet dz value and passes it as a wheel event into the input stream.

Please apply to linux- 2.6.18- xen

Signed- off- by: Pat Campbell <[email protected]>

_______________________________________________
Xen- devel mailing list
Xen- [email protected]
http://lists.xensource.com/xen- devel