PointerEvents 未检测到 Wacom 数位板

PointerEvents not detecting Wacom Tablet

我正在尝试使用指针事件检测绘图板输入,包括笔压,但 Chrome 和 Firefox 似乎无法正确读取绘图板设备 (Wacom Intuos 4)。所有指针事件都返回与我的鼠标相同的 pointerId 和 pointerType,默认压力读数为 0.5。我使用的代码看起来像这样:

container.addEventListener("pointerdown", (event) => {
    console.log(event.pointerId);
    console.log(event.pointerType);
    console.log(event.pressure);
}, true);

这会输出“1”、"mouse" 和“0.5”。这发生在 "pointerdown"、"pointermove" 和 "pointerup" 事件中。

我已经在 Windows 和 Linux 上都试过了,并安装了适当的驱动程序,其他应用程序可以检测笔压(例如 Krita)。

难道 Chrome 和 Firefox 还没有正确支持图形输入板,还是我只是做错了什么?

回答你的问题:

Do Chrome and Firefox not support graphics tablets properly yet, or am I simply doing something wrong?

不,你没有做错任何事。

最现代browsers support Pointer Events。我发现(就像其他所有基于浏览器的东西一样)"support" 的程度可能会有所不同。

这回避了问题,"how do we avoid the browser incompatibility nonsense?" 对于这种特殊情况,我建议 Pressure.js

要查看实际效果(并使用您选择的设备进行测试),请查看 the Pressure.js examples

尝试使用如下函数来确定是否检测到不同的指针类型:

targetElement.addEventListener("pointerdown", function(ev) {
   // Call the appropriate pointer type handler
   switch (ev.pointerType) {
     case "mouse": 
       process_pointer_mouse(ev); 
       break;
     case "pen": 
       process_pointer_pen(ev); 
       break;
     case "touch": 
       process_pointer_touch(ev); 
       break;
     default:
       console.log("pointerType " + ev.pointerType + " is Not suported");
   }
 }, false);

Mozilla 有很多关于鼠标、笔和触摸的指针事件的文档。

https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events

https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerType

如果您 enable/disable Windows Ink and/or 为您的元素添加以下 CSS,您可能会得到更好的结果。

div {
  touch-action: none;
}