Linux 上的 Microsoft Surface Dial

Linux 上的 Microsoft Surface Dial

有人知道 Linux 上的 Surface Dial 吗?这些功能可以在 Ubuntu 上运行吗?

  1. 媒体控制(音量控制/下一个/上一个/暂停/播放)。
  2. 添加自定义键。
  3. 使用 Krita 进行工作。
  4. 它可以在触摸屏显示器上使用吗?

答案1

有趣的话题!我知道没有内核支持此设备,但这可能只是时间问题。然而,在其他软件和某些情况下的硬件中实现又是另一个问题。

  1. 理论上有内核支持是可行的(目前还不行)
  2. 这需要软件和内核的支持,所以可能性更小。
  3. 再次,软件支持,但对于像 Krita 这样的特定项目,如果有硬件的内核支持,开发人员可以添加对源代码的支持。
  4. 不!表盘需要专用硬件才能与屏幕配合使用,仅靠触摸灵敏度不足以识别表盘。理论上,您可以通过在 Surface Studio 上安装 Linux 来实现这一点……

这也可能是一个启动开源硬件项目的机会,以便为任何操作系统创建旋转编码器工具。表盘和按钮,完全可通过标准化软件进行配置。

答案2

内核 4.19 添加了对 Surface Dial 的支持https://kernelnewbies.org/Linux_4.19

答案3

Surface Dial 现已在内核为 4.19 的 Linux 中被识别。 evtest现在给出的输出如下:

...
/dev/input/event6:      Surface Dial System Multi Axis
/dev/input/event7:      Surface Dial System Control
...

测试结果如下:

Select the device event number [0-7]: 6
Input driver version is 1.0.1
Input device ID: bus 0x5 vendor 0x45e product 0x91b version 0x108
Input device name: "Surface Dial System Multi Axis"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 256 (BTN_0)
Event type 2 (EV_REL)
Event code 7 (REL_DIAL)
Event type 4 (EV_MSC)
Event code 4 (MSC_SCAN)

向右旋转:

Event: time 1576958667.062349, -------------- SYN_REPORT ------------
Event: time 1576958667.100180, type 2 (EV_REL), code 7 (REL_DIAL), value 1
Event: time 1576958667.100180, -------------- SYN_REPORT ------------

向左旋转:

Eent: time 1576958712.249904, -------------- SYN_REPORT ------------
Event: time 1576958712.274887, type 2 (EV_REL), code 7 (REL_DIAL), value -1
Event: time 1576958712.274887, -------------- SYN_REPORT ------------

按下并释放按钮

Event: time 1576958828.106521, -------------- SYN_REPORT ------------
Event: time 1576958829.500202, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90001
Event: time 1576958829.500202, type 1 (EV_KEY), code 256 (BTN_0), value 1
Event: time 1576958829.500202, -------------- SYN_REPORT ------------
Event: time 1576958829.687451, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90001
Event: time 1576958829.687451, type 1 (EV_KEY), code 256 (BTN_0), value 0
Event: time 1576958829.687451, -------------- SYN_REPORT ------------

如何在 WM KDE 中使用这些事件?我的目标是使用它来滚动文本\网页。

我尝试使用 udev 规则将 Dial 归类为输入设备键盘,然后是鼠标。这两种方法都无济于事,在 xev 中不会产生任何结果。

Xorg.0.log 显示类似这样的内容:

[31.536] (II) config/udev: Adding input device Surface Dial System Multi Axis (/dev/input/event6)
[31.536] (**) Surface Dial System Multi Axis: Applying InputClass "evdev pointer catchall"
[31.536] (**) Surface Dial System Multi Axis: Applying InputClass "libinput pointer catchall"
[31.537] (II) Using input driver 'libinput' for 'Surface Dial System Multi Axis'
[31.537] (**) Surface Dial System Multi Axis: always reports core events
[31.537] (**) Option "Device" "/dev/input/event6"
[31.537] (**) Option "_source" "server/udev"
[31.539] (II) event6  - Surface Dial System Multi Axis: is tagged by udev as: Mouse
[31.539] (II) event6  - Surface Dial System Multi Axis: device is a pointer
[31.540] (II) event6  - Surface Dial System Multi Axis: device removed
[31.575] (**) Option "config_info" "udev:/sys/devices/virtual/misc/uhid/0005:045E:091B.0002/input/input12/event6"
[31.575] (II) XINPUT: Adding extended input device "Surface Dial System Multi Axis" (type: MOUSE, id 12)
[31.577] (**) Option "AccelerationScheme" "none"
[31.579] (**) Surface Dial System Multi Axis: (accel) selected scheme none/0
[31.579] (**) Surface Dial System Multi Axis: (accel) acceleration factor: 2.000
[31.579] (**) Surface Dial System Multi Axis: (accel) acceleration threshold: 4
[31.582] (II) event6  - Surface Dial System Multi Axis: is tagged by udev as: Mouse
[31.583] (II) event6  - Surface Dial System Multi Axis: device is a pointer
[59.464] (II) config/udev: removing device Surface Dial System Multi Axis

现在如何利用这些事件来控制上下滚动或放大/缩小等?不幸的是,我现在不知道如何从这里开始。

相关内容