平板电脑输入设备的 xinput 映射失败 18.04

平板电脑输入设备的 xinput 映射失败 18.04

我有一个在 18.04 上使用的平板电脑屏幕。它的行为基本上类似于绝对位置鼠标(它是 Huion,而不是 Wacom),但我使用多个显示器运行,因此我必须将转换矩阵应用于设备。

我编写了一个程序来计算变换矩阵,它在 16.04 上运行良好,但现在在 18.04 上,每当我尝试使用它时,它都会失败,并抱怨 BadMatch。我记得在创建程序时,如果数字缺失或错误,它就会这样做,但由于之前已经测试过,所以这似乎不合理。这是我的程序产生的命令,以及产生的错误消息:

~$ xinput set-prop 'Tablet Monitor Pen' 'Coordinate Transformation Matrix' 0.333333 0.000000 0.166667 0.000000 0.486692 0.513308 0 0 1
  X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  131 (XInputExtension)
  Minor opcode of failed request:  57 ()
  Serial number of failed request:  20
  Current serial number in output stream:  21

我认为 xrandr 中与数字相关的元素是:

Screen 0: minimum 320 x 200, current 3840 x 2104, maximum 8192 x 8192
...
DP-1 connected 1280x1024+640+1080 (normal left inverted right x axis y axis) 760mm x 450mm

有人能告诉我,在 16.04 和 18.04 之间,xinput 所期望的格式是否发生了变化?或者我的数字是否以某种方式计算不正确,并且只是显示出来(我确实更改了显示器配置,但变化不大!)

编辑:在进一步调查中,我注意到即使默认/现有的 CTM 也被拒绝。请求当前状态如下所示:

$ xinput list-props 'Tablet Monitor Pen' | grep "Coordinate Transformation Matrix"
    Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000

将这些值放回去(带或不带逗号)会导致:

xinput set-prop 'Tablet Monitor Pen' 'Coordinate Transformation Matrix' 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  131 (XInputExtension)
  Minor opcode of failed request:  57 ()
  Serial number of failed request:  20
  Current serial number in output stream:  21

使用数据列表中的逗号执行此操作(以前是不允许的)会导致相同的结果:

$ xinput set-prop 'Tablet Monitor Pen' 'Coordinate Transformation Matrix' 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  131 (XInputExtension)
  Minor opcode of failed request:  57 ()
  Serial number of failed request:  20
  Current serial number in output stream:  21

答案1

哦天哪,很尴尬,原来设备名称已经更改了。我的 xinput -list 输出包括:

    $ xinput -list
    ⎡ Virtual core pointer                      id=2    [master pointer  (3)]
    ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
    ⎜   ↳ 2.4G wireless USB Device 2.4G wireless USB Device id=11   [slave  pointer  (2)]
    ⎜   ↳ Tablet Monitor Pad                        id=10   [slave  pointer  (2)]
    ⎜   ↳ Tablet Monitor Pen Pen (0)                id=16   [slave  pointer  (2)]
 Virtual core keyboard                      id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Tablet Monitor Pen                        id=9    [slave  keyboard (3)]

并且相关设备在 16.04 中一直是“平板显示器笔”。然而,现在实际上是“平板显示器笔 (0)”在工作。因此,考虑到目标设备的这一变化,一切都恢复正常了……

相关内容