rockchip android11中实现双屏异触的功能

在定制客户需求的时候,很多客户的需求需要用到双屏异触的功能,当客户的两个屏幕都是usb的触摸屏时,我们可以用以下的方法来实现这一需求:

代码路径是frameworks/native

两个usb的触摸屏,PID:0x0001主屏,PID:0x0eee副屏

diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
--- a/services/inputflinger/reader/EventHub.cpp
+++ b/services/inputflinger/reader/EventHub.cpp
@@ -1466,7 +1466,19 @@ status_t EventHub::openDeviceLocked(const char* devicePath) {
 
     // Determine whether the device is external or internal.
     if (isExternalDeviceLocked(device)) {
-        device->classes |= INPUT_DEVICE_CLASS_EXTERNAL;
+        static int extend_pid = 0x0eee;
+        if((device->classes & 0x14) == (INPUT_DEVICE_CLASS_TOUCH | INPUT_DEVICE_CLASS_TOUCH_MT)) {
+			ALOGE("techvision: usb touch device %s id:%d  productid:%04x or %04x?\n", device->identifier.name.c_str(), device->id, device->identifier.product, identifier.product);
+            if(device->identifier.product == extend_pid) {
+                device->classes |= INPUT_DEVICE_CLASS_EXTERNAL;
+                ALOGE("techvision: set external device %d  name: \"%s\" location: \"%s\"  id : %d productid:%04x or %04x?, device_class:%x  \n",
+                        __LINE__, device->identifier.name.c_str(),identifier.location.c_str(), device->identifier.product, identifier.product, device->id,device->classes);
+            }
+        } else if ((device->classes & 0x08) == INPUT_DEVICE_CLASS_CURSOR) {
+            device->classes |= INPUT_DEVICE_CLASS_CURSOR;
+        } else {
+            device->classes |= INPUT_DEVICE_CLASS_EXTERNAL;
+        }
     }
 
     if (device->classes & (INPUT_DEVICE_CLASS_JOYSTICK | INPUT_DEVICE_CLASS_DPAD) &&

这样就可以实现双屏异触啦,小伙伴可以试试

你可能感兴趣的:(java)