Ограничить графический планшет основным дисплеем

Обычный совет ставить двойные кавычки вокруг расширений переменных связан с тем, что $foo вне кавычек означает "взять значение foo, разделить его на пробелы¹ и расширить каждое полученное слово как шаблон подстановки, если оно соответствует хотя бы одному файлу", а не "взять значение foo". В частности, когда переменная foo содержит имя файла, "$foo" - это то, что вам нужно. Но здесь переменные ARCHIVE_FILEMASK и FILEMASK содержат шаблоны подстановки. Поэтому при их использовании необходимо расширить их, поэтому их следует использовать без кавычек. Таким образом, они будут интерпретированы как список шаблонов, разделенных пробелами; в данном случае это не имеет значения, поскольку в значении этих переменных нет пробелов.

Переменные f и extractDir содержат имена файлов, поэтому они должны оставаться в двойных кавычках.

for f in ${ARCHIVE_FILEMASK}
do
    if 7z e -aoa -o"${extractDir}" "$f"; then
        mv "${extractDir}/"${FILEMASK}.xml "$dest"
    fi
done

Поскольку вы используете bash, вы можете вызвать shopt -s nullglob, чтобы заставить шаблон "${extractDir}/"${FILEMASK}.xml расшириться до пустого списка, если он не соответствует ни одному файлу. Команда mv будет жаловаться, что ей не хватает файла, если вы не передадите ей исходный файл; вы можете решить эту проблему, вызывая ее только при наличии хотя бы одного совпадения.

shopt -s nullglob
for f in ${ARCHIVE_FILEMASK}
do
    if 7z e -aoa -o"${extractDir}" "$f"; then
        matches=("${extractDir}/"${FILEMASK}.xml)
        if ((${#matches[@]})); then
            mv "${matches[@]}" "$dest"
        fi
    fi
done

¹ Или в более общем виде, как указано в IFS.

0
07.03.2018, 17:14
3 ответа

Mi sistema de visualización dual está configurado para que las ventanas puedan moverse sin problemas entre las pantallas; es decir, el servidor X lo ve como una gran pantalla con quizás diferentes resoluciones en diferentes partes. Desde esta perspectiva, lo que está pidiendo es restringir el acceso del puntero a solo una parte de la "pantalla". Estoy bastante seguro de que no hay manera de hacer esto.

0
28.01.2020, 02:43

также ознакомьтесь с ответом бибопа здесь :https://askubuntu.com/questions/839161/limit-a-graphics-tablet-to-one-monitor
его более длинная версия с некоторыми дополнениями. Для БЫСТРОЙ И ГРЯЗНОЙ ВЕРСИИ:

Нашел это, это решило мою проблему, которая звучала похожей на вашу.
https://forum.kde.org/viewtopic.php?f=139&t=125532

Это код для HUION New 1060, например :HID 256c :006e Pad
Первый тип:

xinput  # get the IDs for all relevant pieces of my tablet.   

бла-бла :HID 256c :006e Pad id=17 может/должно быть два устройства, Pad и Pen. Затем выполните:

xrandr  # get the names of my displays  

ищите те, которые показывают «подключено», например HDMI -A -0 подключено и, возможно, DisplayPort -2 подключен

Затем вы указываете xinput прикрепить идентификаторы к экрану, на котором вы хотите включить Krita или Photoshop, например, если вы используете порт HDMI для подключения к главному экрану:

xinput map-to-output 13 HDMI-A-0
xinput map-to-output 14 HDMI-A-0  

это было мое. сбрасывается после перезагрузки. спасибо этому пользователю timotimo!

9
28.01.2020, 02:43

Чтобы добавить к ответ JRR , я обнаружил, что после выполнения его инструкций, запустив

xinput list-props [device id]

вы можете получить свойство «Матрица преобразования координат», а затем создать файл в /etc/X11/xorg.conf.d/xx-tablet.confсо следующим:

Section "InputClass"
        Identifier      "Tablet Screen Restriction"
        MatchProduct    "[device name]"
        Option          "Coordinate Transformation Matrix"      "output of xinput list-props [device id]"
EndSection

Выполнение этого должно сохранить вашу конфигурацию после перезагрузки.

2
02.03.2021, 02:14

Теги

Похожие вопросы