Вопрос или проблема
У меня есть сенсорное устройство, подключенное к ПК через USB, его идентификатор постоянно изменяется, так как у нас нет других вводимых устройств, которые были бы подключены к нему постоянно, поэтому я не могу сопоставить его с его xinput ID, однако мне нужно изменить его ориентацию.
Как я делал это в прошлом, так это с помощью простой команды
xinput set-prop "Touchscreen" --type=float "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1
Однако проблема с этим заключается в его названии:
Touch Touch Device ^MF40WH00U-CT-A1-6P
С фактическим переводом строки посередине, что делает, казалось бы, невозможным сопоставить его с xinput
. Есть ли способ это обойти?
Ответ или решение
Решение проблемы с именем устройства Xinput, содержащим специальные символы
Если вы столкнулись с проблемой использования команды xinput
для управления сенсорным устройством с именем, включающим символ возврата каретки, это действительно может быть вызов. Но не стоит отчаиваться — есть способы обойти это ограничение.
1. Определение устройства
Для начала, вам нужно определить идентификатор и свойства вашего устройства для дальнейшей работы. Выполните следующую команду в терминале:
xinput list
Вы должны увидеть список всех подключенных устройств ввода. Найдите ваше сенсорное устройство в этом списке. Однако, как вы отметили, принимая во внимание наличие символов возврата каретки, его имя будет несколько необычным. Возможно, вам потребуется немного манипулировать выводом.
2. Устранение специального символа
Специальные символы, такие как возврат каретки, могут затруднять использование имени устройства в командах. Чтобы обойти это, можно использовать xinput
для поиска устройства по частичному совпадению его имени. В вашем случае имя сенсорного устройства включает строку "Touch Touch Device". Вы можете использовать команду grep
, чтобы отфильтровать имя и обеспечить более стабильный доступ к вашему устройству.
Вот пример команды, которая поможет вам найти ID вашего сенсорного устройства:
xinput list | grep "Touch Touch Device"
3. Использование команды с ID устройства
Теперь, зная ID устройства, полученный с помощью предыдущей команды, вы сможете использовать xinput set-prop
с каждой сессией подключения устройства. Обратите внимание, что вам нужно будет обработать результат команды grep
, извлекая ID устройства. Например:
DEVICE_ID=$(xinput list | grep "Touch Touch Device" | awk '{print $6}' | sed 's/id=//')
Эта команда извлекла бы ID устройства, который мы будем использовать в следующем шаге.
4. Изменение свойств устройства
После получения идентификатора устройства вы можете использовать его в вашей команде xinput set-prop
, но с использованием переменной, как показано ниже:
xinput set-prop "$DEVICE_ID" --type=float "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1
При использовании двойных кавычек "$DEVICE_ID"
вы предотвратите возможные проблемы с пробелами или специальными символами в имени.
5. Автоматизация и скриптование
Если устройство часто подключается и отключается, вы можете автоматизировать этот процесс, создав bash-скрипт. Скрипт может выполняться каждый раз, когда вы подключаете устройство, или вы можете добавить его в автозагрузку:
#!/bin/bash
DEVICE_ID=$(xinput list | grep "Touch Touch Device" | awk '{print $6}' | sed 's/id=//')
if [ ! -z "$DEVICE_ID" ]; then
xinput set-prop "$DEVICE_ID" --type=float "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1
else
echo "Устройство не найдено"
fi
Сохраните этот скрипт в файл (например, set_touchscreen_orientation.sh
), сделайте его исполняемым:
chmod +x set_touchscreen_orientation.sh
И теперь вы можете запускать его каждый раз, когда подключаете ваше устройство.
Заключение
Несмотря на присутствие специальных символов в имени вашего устройства, существуют методы, позволяющие не только определить его, но и успешно изменить его свойства. Используя команду grep
для фильтрации имен и автоматизируя процесс с помощью скриптов, вы можете упростить взаимодействие с этим устройством и упростить его использование.