首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟Stylus输入

模拟Stylus输入
EN

Stack Overflow用户
提问于 2016-01-20 09:19:09
回答 1查看 1.3K关注 0票数 4

我正在寻找一种将wacom输入注入正在运行的X服务器的方法。我一开始就被困在寻找关于这个话题的任何资源上。

有很多关于如何注入击键和鼠标输入的信息,但这不是我想要的,它似乎不简单的wacom东西。

有人有关于这个话题的信息吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-23 18:22:55

在Linux上,各种输入设备生成一个各种事件

例如,

代码语言:javascript
复制
Keyboards - EV_KEY
Mice      - EV_REL
Tablets   - EV_ABS

任何特定输入设备支持/生成的事件都可以通过在系统上运行xinput来标识,输入设备与其连接如下:

代码语言:javascript
复制
xinput --list <name of the connected input device>

通过连接Wacom tablet创建的输入设备示例列表:

代码语言:javascript
复制
$ > xinput --list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=14   [slave  pointer  (2)]
⎜   ↳ Wacom Intuos4 6x9 eraser                  id=17   [slave  pointer  (2)]
⎜   ↳ Wacom Intuos4 6x9 cursor                  id=18   [slave  pointer  (2)]
⎜   ↳ Wacom Intuos4 6x9 pad                     id=19   [slave  pointer  (2)]
⎜   ↳ Wacom Intuos4 6x9 stylus                  id=20   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]

..and由4个Wacom设备中的一个支持/生成的输入事件列表,这些设备注册为从Wacom输入事件:

代码语言:javascript
复制
$ > xinput --list "Wacom Intuos4 6x9 eraser"
Wacom Intuos4 6x9 eraser                    id=17   [slave  pointer  (2)]
    Reporting 8 classes:
        Class originated from: 17
        Buttons supported: 9
        Button labels: None None None None None None None None None
        Button state:
        Class originated from: 17
        Keycodes supported: 248
        Class originated from: 17
        Detail for Valuator 0:
          Label: Abs X
          Range: 0.000000 - 44704.000000
          Resolution: 200000 units/m
          Mode: absolute
          Current value: 0.000000
        Class originated from: 17
        Detail for Valuator 1:
          Label: Abs Y
          Range: 0.000000 - 27940.000000
          Resolution: 200000 units/m
          Mode: absolute
          Current value: 0.000000
        Class originated from: 17
        Detail for Valuator 2:
          Label: Abs Pressure
          Range: 0.000000 - 2048.000000
          Resolution: 1 units/m
          Mode: absolute
          Current value: 0.000000
        Class originated from: 17
        Detail for Valuator 3:
          Label: Abs Tilt X
          Range: -64.000000 - 63.000000
          Resolution: 1 units/m
          Mode: absolute
          Current value: 0.000000
        Class originated from: 17
        Detail for Valuator 4:
          Label: Abs Tilt Y
          Range: -64.000000 - 63.000000
          Resolution: 1 units/m
          Mode: absolute
          Current value: 0.000000
        Class originated from: 17
        Detail for Valuator 5:
          Label: Abs Tilt Y
          Range: -64.000000 - 63.000000
          Resolution: 1 units/m
          Mode: absolute
          Current value: 0.000000

上面显示了9个按钮,以及每种类型的输入事件的对应min/max值的几个轴(由它们的标签所引用)。

例如,绝对x轴的最小/最大值为0- 44704单位,有20000个单位/米。据推测,EV_ABS类型的输入事件仅在X轴的此范围内生成。

一旦识别了由输入设备生成的事件类型,就很容易使用uinput框架将假事件注入Xinput队列。一个简单的例子是可用的这里

当您打算模拟一个Wacom平板时,您可能需要注入一个典型的Wacom在使用时生成的所有输入事件。

xinput可用于监视由实际设备生成的输入事件的顺序和时间,如本回答所示。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34895938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档