Предотвращение создания определенных узлов / dev / input / event

Оказывается, подчеркивание, которое вы хотите заменить, ВСЕГДА стоит после точки . , за которой следует одна цифра [0-9].

sed 's|\.\([0-9]\)_|.\1\t|'

Здесь будет искаться буквальная точка \. за которой следует одна цифра, которую мы сохраним в группе \([0-9]\) за которой следует знак подчеркивания _. Замените это точкой, первой группой, которую мы сохранили \1 и табуляцией \t.

2
13.04.2017, 15:36
1 ответ

Хорошо, мне удалось найти довольно простой способ обойти эту проблему. Идеальным решением (на мой взгляд) было бы предотвратить создание / dev / input / event1 и 2 , но я не заставил правила udev работать так, как я хотел.

Вместо этого я использовал EVIOCGRAB в моем приложении Qt. У меня есть «глобальный» фильтр событий вверху, который определяет, прикоснулся ли пользователь к устройству, и затемняет дисплей после пары минут бездействия. Добавив в конструктор:

QString dev1 = QLatin1String("/dev/input/event1");
QString dev2 = QLatin1String("/dev/input/event2");

int fd1 = QT_OPEN(dev1.toLocal8Bit().constData(), O_RDONLY | O_NDELAY, 0);
if(fd1 >= 0)
{
    ::ioctl(fd1, EVIOCGRAB, 1);
    qDebug() << "Grabbed " << dev1;
}

int fd2 = QT_OPEN(dev2.toLocal8Bit().constData(), O_RDONLY | O_NDELAY, 0);
if(fd2 >= 0)
{
    ::ioctl(fd2, EVIOCGRAB, 1);
    qDebug() << "Grabbed " << dev2;
}

и больше ничего не делая, я получил нужный мне результат. Входные данные из event1 и event2 больше не отображаются в моем приложении (и недоступны для evtest ), и если я выхожу из приложения, то устройства событий снова стать «активным».

Работает как шарм!

// Андерс

1
27.01.2020, 22:19

Теги

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