У меня есть экран планшета, который я использую на 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
Кто-либо может сказать мне, если что-то изменилось с форматом, ожидаемым xinput для этого, между 16,04 и 18.04? Или если так или иначе мои числа вычисляются неправильно, и это только что разоблачено (я действительно изменял конфигурацию монитора, но не много!)
Править: В дальнейшем расследовании я замечаю, что даже 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
О, дорогой, стыдно, оказывается, имя устройства было изменено. Мой вывод 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)]
, и соответствующее устройство всегда было «Tablet Monitor Pen» в 16.04. Тем не менее, на самом деле сейчас работает «Pen Monitor Pen Pen (0)». Таким образом, учитывая это изменение в целевом устройстве, все возвращается к работе ...