从触摸屏启用Chrome中的触摸事件

时间:2013-04-04 09:19:08

标签: google-chrome ubuntu chromium touchscreen xinput

我有一台带有24英寸触摸屏的Ubuntu机器,它工作正常。我可以移动鼠标,做几个触摸点的手势等硬件工作正常。现在我想知道是否可以制作一个浏览器将事件解释为触摸而不是mousedown,mousedrag等.HTML5对触摸和多点触摸有很好的支持,我想为这个设置开发Web应用程序。有没有人知道如何做到这一点?我已经尝试启用--enable-touch-events开关没有成功。看起来这只是在ms windows版本中实现的。

~$ xinput -version
xinput version 1.6.0
XI version on server: 2.2

~$ xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Advanced Silicon S.A CoolTouch(TM) System id=9    [slave  pointer  (2)]
⎜   ↳ USBest Technology SiS HID Touch Controller    id=10   [slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse                id=11   [slave  pointer  (2)]
⎜   ↳ MCE IR Keyboard/Mouse (nuvoton-cir)       id=14   [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)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ CHICONY HP Basic USB Keyboard             id=12   [slave  keyboard (3)]
    ↳ Nuvoton w836x7hg Infrared Remote Transceiver  id=13   [slave  keyboard (3)]

我已经阅读了有关使用touch-UI标志进行构建的信息,但是我不会这样做会有所帮助吗?

2 个答案:

答案 0 :(得分:2)

当使用GTK构建Chrome时,Chrome不支持Linux上的触摸屏。从Chrome 35开始,Linux不再使用GTK,而是基于Windows和ChromeOS上使用的相同UI框架(“Aura”)。这意味着它现在应该正确支持触摸屏(虽然我经常在Ubuntu中看到触摸屏错误 - 尤其是在使用多个显示器时)。

答案 1 :(得分:1)

请参阅 http://www.html5rocks.com/en/mobile/touchandmouse/ 为你的问题提供良好的答案。

你说

  

我已尝试启用--enable-touch-events开关

您是否使用该命令行开关启动了chrome?

也许您指的是以下内容,因为您希望接收真正的触摸事件,因此在您的案例中使用不会是错误的。

https://developers.google.com/chrome-developer-tools/docs/mobile-emulation#emulate-touch-events

尝试在JavaScript控制台中进行试验,并为您感兴趣的任何事件类型安装一个小事件处理程序(见下文)。

["click", "mousemove", "touchmove"].forEach(function(value, index, object) {
    document.addEventListener(value, function(event) {
        console.log(JSON.stringify([event.type,
            event.srcElement.localName + (event.srcElement.id ? '#'
            + event.srcElement.id : "")
            + (event.srcElement.classList.length ? '[class='
            + event.srcElement.classList + ']' : ""),
            (new Date(event.timeStamp)).toJSON()]));
    }, false);
});

这有帮助吗?