Does anyone know about Surface Dial on Linux? Can these functions working on Ubuntu?
- Media control (Volume control/next/prev/pause/play).
- Add Custom keys with it.
- Working on Krita.
- Does it work on touchscreen monitors?
Does anyone know about Surface Dial on Linux? Can these functions working on Ubuntu?
Interesting topic! I know of no kernel support for this device, but it may just be a question of time. However, implementation in other software and in some cases hardware is another problem.
This could also be an opportunity to start an Open Source hardware project to create a rotary encoder tool for any OS. Dial and buttons, fully configurable through standardized software.
On Kernel 4.19 was added support for Surface Dial https://kernelnewbies.org/Linux_4.19.
Surface Dial is being recognised now in Linux with kernel 4.19.
evtest is giving now output as follow:
...
/dev/input/event6: Surface Dial System Multi Axis
/dev/input/event7: Surface Dial System Control
...
Testing results are as follow:
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)
Rotating right:
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 ------------
Rotating left:
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 ------------
Button press and release
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 ------------
How can those events be used in WM KDE? My goal is to use it for scrolling text\webs.
I try experimenting with udev rules to categorise Dial as input device keyboard and then mouse. Neither help, won't produce anything in xev.
Xorg.0.log is showing something like that:
[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
How one can make use of those events now to let say control scroll up/down or zoom in/out etc? Unfortunately I do now know how to take it from here.