触摸屏被识别为鼠标

触摸屏被识别为鼠标

我将 3M 触摸屏插入 Linux PC。它似乎将其识别为鼠标。这是我的xinput输出:

xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse                id=13   [slave  pointer  (2)]
⎜   ↳ 3M 3M USB Touchscreen - 36955             id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Logitech USB Keyboard                     id=10   [slave  keyboard (3)]
    ↳ Logitech USB Keyboard                     id=11   [slave  keyboard (3)]
    ↳ HP WMI hotkeys                            id=14   [slave  keyboard (3)

触摸后# modprobe -r usbtouchscreen设备停止工作。

在 Windows 7 上,安装驱动程序后即可运行本网站所以我也尝试从这里安装 Linux 驱动程序(Linux,单点触控,64 位)。我认为安装过程失败了,因为它在我接受许可证后立即中断(退出代码为 0)。

我测试我的触摸屏Qt FingerPaint 示例(在 Windows 上也有效,在 Ubuntu 上无效)。调试表明多点触控输入会生成鼠标事件。

我使用内核为 4.10.0-35-generic 的 Ubuntu 16.04,并尝试了 Unity 和 Cinnamon 环境。我需要这个环境来满足编程目的。

编辑:

一些诊断工具输出:

# lsinput
...some other devices...
/dev/input/event12
bustype : BUS_USB
vendor  : 0x596
product : 0x1
version : 1088
name    : "3M 3M USB Touchscreen - 36955"
phys    : "usb-0000:00:14.0-3/input0"
bits ev : EV_SYN EV_KEY EV_ABS


# mtdev-test /dev/input/event12
015ee1f66c7c 00 1 014a 1
015ee1f66c7c 00 3 0000 12183
015ee1f66c7c 00 3 0001 7962
015ee1f66c7c 00 0 0000 0
015ee1f66c80 00 3 0000 12193
... etc ...

编辑:

$ xinput list-props 12
Device '3M 3M USB Touchscreen - 36955':
    Device Enabled (143):   1
    Coordinate Transformation Matrix (145): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (268): 0
    Device Accel Constant Deceleration (269):   1.000000
    Device Accel Adaptive Deceleration (270):   1.000000
    Device Accel Velocity Scaling (271):    10.000000
    Device Product ID (262):    1430, 1
    Device Node (263):  "/dev/input/event12"
    Evdev Axis Inversion (272): 0, 0
    Evdev Axis Calibration (273):   <no items>
    Evdev Axes Swap (274):  0
    Axis Labels (275):  "Abs X" (266), "Abs Y" (267)
    Button Labels (276):    "Button Unknown" (265), "Button Unknown" (265), "Button Unknown" (265), "Button Wheel Up" (149), "Button Wheel Down" (150)
    Evdev Scrolling Distance (277): 0, 0, 0
    Evdev Middle Button Emulation (278):    0
    Evdev Middle Button Timeout (279):  50
    Evdev Third Button Emulation (280): 0
    Evdev Third Button Emulation Timeout (281): 1000
    Evdev Third Button Emulation Button (282):  3
    Evdev Third Button Emulation Threshold (283):   20
    Evdev Wheel Emulation (284):    0
    Evdev Wheel Emulation Axes (285):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (286):    10
    Evdev Wheel Emulation Timeout (287):    200
    Evdev Wheel Emulation Button (288): 4
    Evdev Drag Lock Buttons (289):  0

和 evtest:

sudo evtest /dev/input/event12
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x596 product 0x1 version 0x440
Input device name: "3M 3M USB Touchscreen - 36955"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value   6684
      Min        0
      Max    16384
    Event code 1 (ABS_Y)
      Value   6185
      Min        0
      Max    16384
Properties:
Testing ... (interrupt to exit)
Event: time 1507280785.112401, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1507280785.112401, type 3 (EV_ABS), code 0 (ABS_X), value 5971
Event: time 1507280785.112401, type 3 (EV_ABS), code 1 (ABS_Y), value 6240
Event: time 1507280785.112401, -------------- SYN_REPORT ------------
Event: time 1507280785.116364, type 3 (EV_ABS), code 0 (ABS_X), value 5953
Event: time 1507280785.116364, -------------- SYN_REPORT ------------
Event: time 1507280785.118359, type 3 (EV_ABS), code 0 (ABS_X), value 5968
Event: time 1507280785.118359, -------------- SYN_REPORT ------------
# ...........
Event: time 1507280785.156333, -------------- SYN_REPORT ------------
Event: time 1507280785.158356, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1507280785.158356, -------------- SYN_REPORT ------------

答案1

您需要安装新内核来检查新内核是否有固件。首先使用以下命令验证系统中的当前内核是什么:

uname -a

您可以手动安装内核 4.13,因为它是当前稳定的版本。

  1. 继续ubuntu 内核 4.13

  2. 根据您的 uname -a 输出,确保您的系统/操作系统架构是什么,如果是 X86_64,那么它是 64 位,如果是 X86,那么它是 32 位。

  3. 在系统某处创建一个文件夹,将其命名为 4.13,您也可以使用该命令

    mkdir 4.13
    
  4. 进入 4.13 目录,现在根据您的架构选择文件

    您可以将任一列表保存在文本文件中,例如“kernel_files.list”。现在在终端中使用 wget 下载此文件。

    wget -i kernel_files.list
    

    这将使用 wget 下载整个列表。

  5. 现在继续安装它们

    sudo dpkg -i *.deb
    

    这将一起安装所有 3 个内核组件,最后您将看到所有内核都已编译。

  6. 重新启动系统以使用新内核

    reboot
    
  7. 通过发出命令来验证新内核的安装

    uname -a
    

现在检查触摸屏是否正常工作。

检查系统是否正在通过它获取输入

dmesg

如果仍然失败,则安装

make,gcc,g++,build-utils 

通过发出命令

sudo apt install make gcc g++ build-utils

然后重新安装触摸屏驱动程序。

注释 #1:如果你不确定手动安装新内核,那么你可以使用 ukuu,

安装 ukuu

sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install ukuu

然后运行 ​​ukuu 并使用 ukuu 仪表板安装 4.13 内核。

笔记2:您可以随时在基于 Ubuntu 的机器启动时通过发出 C 来切换回以前的内核。

注释 #3:保持触摸屏和屏幕无尘,且不应有水分、油、污垢等。

注释 #4:使用触摸笔,因为它比手指更准确。

注释 #5:内核 4.14 正在测试中,因此不要安装它

相关内容