Microsoft Surface Dial на Linux
Кто-нибудь знает про Surface Dial на Linux? Могут ли эти функции работать на Ubuntu?
- Регулятор медиа (регулятор громкости / следующий / предыдущий / пауза / воспроизведение).
- Добавьте пользовательские ключи с ним.
- Работаю на Крите.
- Работает ли на сенсорных мониторах?
2 ответа
Интересная тема! Я не знаю никакой поддержки ядра для этого устройства, но это может быть просто вопросом времени. Однако реализация в другом программном обеспечении и в некоторых случаях аппаратном обеспечении является другой проблемой.
- Теоретически возможно с поддержкой ядра (не в данный момент)
- Это требует как программного обеспечения, так и поддержки ядра, поэтому еще менее вероятно.
- Опять же, поддержка программного обеспечения, но для конкретных проектов, таких как Krita, разработчики могут добавить поддержку исходного кода, если есть поддержка ядра для аппаратного обеспечения.
- Нет! Для работы с экраном циферблату требуется специальное аппаратное обеспечение, и одной лишь чувствительности к прикосновению недостаточно для регистрации наличия циферблата. Теоретически это можно сделать, установив Linux на Surface Studio...
Это также может стать возможностью запустить аппаратный проект с открытым исходным кодом, чтобы создать инструмент с вращающимся кодировщиком для любой ОС. Циферблат и кнопки, полностью настраиваемые с помощью стандартизированного программного обеспечения.
В ядре 4.19 была добавлена поддержка Surface Dial https://kernelnewbies.org/Linux_4.19.
Surface Dial теперь распознается в Linux с ядром 4.19.
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
Как можно использовать эти события сейчас, чтобы, скажем, управлять прокруткой вверх / вниз или увеличением / уменьшением и т. Д.? К сожалению, теперь я знаю, как это сделать.