Отключить сенсорный экран в Wayland (путем разбора /proc/bus/input/devices через awk)

Попробуйте:

alias bw 'bjobs -w | awk '\''{print $7}'\'''

cshцитирование болезненно.

0
18.05.2020, 09:06
2 ответа

Это должен быть подходящий awk-скрипт:

device=$( cat /proc/bus/input/devices |
  awk '
  /"ELAN0732:00 04F3:264C"/{ inside = 1 }
  /Handlers=/  { if(match($0,"event([0-9]+)",group))event = group[1] }
  /^$/         { if(inside && event!="")print "/dev/input/event" event
                 inside = 0; event = ""
  }')
if [ -n "$device" ]
then sudo evtest --grab "$device" > /dev/null &
fi

Первая строка соответствует искомой строке и устанавливает переменную inside, чтобы отметить, что мы находимся в правильной строфе. Следующая строка находит Handlersи использует match(string, regexp, returnarray)для поиска регулярного выражения event[0-9]+и записывает цифры ()в массив group, а затем устанавливает переменную event.

Наконец, мы сопоставляем пустую строку в конце каждой строфы (, включая последнюю ), и, если мы находимся внутри и имеем номер события, выводим путь к устройству, объединенный с номером события.

Если ваш awk использует POSIX, а не GNU, замените строку Handlers на

/Handlers=/{ if(split($0,part,"event"))event = part[2]+0 }

который разбивает строку на слово "событие",затем преобразует следующие символы в число.

Если приведенный выше сценарий записывается непосредственно на /etc/rc.local, убедитесь, что вы запустили sudo chmod +x /etc/rc.local, иначе он не будет выполняться.

&в конце команды необходимо, чтобы Systemd не зависал при загрузке (, так как он ожидает выхода перед продолжением, и вместо этого нам нужно, чтобы он работал в течение всего времени безотказной работы ). /dev/nullпытается игнорировать стандартный вывод, который evtestиспользует для сообщения об использовании сенсорного экрана, чтобы сэкономить память. Добавление /dev/nullможет быть тривиальным, но не повредит.

3
28.04.2021, 23:13

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

Принятое решение красивое, крутое и все такое, но я просто хотел что-то очень простое, что я действительно могу понять. Так что с обычной оболочкой может быть так:

sudo evtest --grab /dev/input/$(grep "SYNA2393" -A 5 /proc/bus/input/devices | grep "Handlers=" | cut -d" " -f 3)

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

1
24.11.2021, 17:31

Теги

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