Динамическое скрытие курсора мыши при использовании сенсорного экрана

21

У меня ноутбук с сенсорным экраном, и я хочу скрыть указатель всякий раз, когда я касаюсь экрана. Я знаю решение , как Unclutter и startx -nocursorно я хочу указатель , чтобы скрыть / показать динамически, скрытие , если я использовать сенсорный экран и показывают , когда я использую аппаратный курсор.

Я думал о создании двух отдельных указателей и применении одного из двух вышеупомянутых решений к указателю сенсорного экрана, но ни одно из этих решений не упоминало, как нацелить один указатель, а наличие нескольких указателей делает вещи странными, и это не скрывает аппаратное обеспечение. курсор мыши

Я полагаю, что наиболее разумно сделать это, выполнив что-то вроде этого , отслеживая текущий механизм ввода и выполняя xinput -cursor [transparent cursor]каждый раз, когда используется сенсорный экран и xinput -cursor [normal cursor]когда используется обычная мышь.

Я посмотрел на xinput, и похоже, что и аппаратная мышь, и сенсорный экран подчинены одному и тому же указателю, оба они регистрируют одни и те же события в xev, поэтому я не совсем уверен, где взять информацию, необходимую для различения касания. от щелчка мышью. Является ли это возможным?

э.и.м.
источник

Ответы:

5

Вы могли бы использовать

Чтобы использовать, установите его

sudo apt-get install unclutter

затем запустите

unclutter -idle 0.01 -root

Обратите внимание, что число после простоя означает время до его скрытия. В этом случае его устанавливают на 1/100 секунды. Вы можете попробовать изменить его на значение, которое всегда будет скрыто.

Это будет скрывать курсор, когда вы не перемещаете его. Я уверен, что есть возможность полностью скрыть это.

КодСерфинг145
источник
Я видел решения, использующие unclutter, но это не делает различий между использованием сенсорного экрана и мыши.
э.и.м.
2

Я полагаю, что вы используете сенсорный экран, когда у вас нет мыши, и подключите его к системе, если вы хотите его использовать. В этом случае вы можете использовать udevправила для управления указателем соответственно:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/usr/bin/xinput -cursor [transparent cursor]", RUN+="/usr/bin/xinput -cursor [normal cursor]"

Условия, используемые для различения мыши, заимствованы из этого ответа .

Имейте в виду, что отдельные приложения могут переопределять курсор динамически, поэтому ваш курсор может снова стать видимым при наведении на них окна. unclutterВместо этого вы можете запускать / останавливать, если хотите, чтобы все курсоры были везде скрыты:

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/user/.Xauthority", ENV{REMOVE_CMD}="/bin/sh -c unclutter&", RUN+="/usr/bin/killall unclutter"

Лично я бы вообще отключил сенсорный экран, когда мышь подключена, чтобы случайное прикосновение к нему не мешало курсору, когда вы ожидаете, что он будет следовать за мышью.

Дмитрий Григорьев
источник
Это хороший вариант, за исключением того, что я хочу, чтобы такое поведение было для моего трекпада, а не только для подключенных мышей. Я считаю, что udev влияет только на устройства, которые динамически добавляются / удаляются?
erp
Вы имеете в виду, что ваш трекпад - это ваша "аппаратная мышь"? Я бы сказал, что вам придется попробовать и посмотреть, работает ли это. Сенсорная панель может фактически рассматриваться udevкак удаленная, когда вы отключаете ее с помощью кнопки Fn (при условии, что она есть).
Дмитрий Григорьев
1

Существует вилка инструмента Unclutter-фиксирует с помощью nowrep можно посмотреть здесь . В этой версии добавлена -touchопция автоматического скрытия курсора при обнаружении сенсорного ввода. (Оригинальный репозиторий unclutter-xfixes находится здесь )

Одна вещь, о которой нужно знать, это то, что она по-прежнему включает в себя поведение скрытия курсора после определенного периода времени. Вы можете просто установить --timeoutопцию на очень высокое значение, чтобы обойти это.

Это должно работать идеально для вас. В моем случае у меня был внешний сенсорный экран, и когда я возвращаюсь к обычному монитору, курсор будет на сенсорном экране, поэтому я должен переместить его обратно на монитор с того места, к которому я прикоснулся. Приятно то, что после того, как я начну двигать мышь, появится курсор, чтобы я знал, где он находится.

Приятным преимуществом этой опции является то, что я все еще могу использовать свою мышь как обычно на сенсорном экране, если хочу, но скрываю ее, когда не хочу.

bpedman
источник