Отключите внешнюю клавиатуру из сценария

Я прокрутил этот сценарий, который делает рекурсивный поиск шаблона из текущего каталога. Это использует busybox's sh и sed. Протестированный с busybox 1.17.1; Ваш пробег может варьироваться на 1,00.

#!/bin/busybox sh

sed="busybox sed"

search_in()
{
    searchterm="$1"
    searchdir="$2"
    prefix="$3"

    (
        cd "$searchdir"
        for file in *
        do
            if [ -d "$file" ]
            then
                # recurse into subdirectory
                search_in "$searchterm" "$file" "$prefix\\/$file"
            else
                # use sed like grep
                $sed -rn '/'"$searchterm"'/s/(.*)/'"$prefix\\/$file"': \1/gp' "$file"
            fi
        done

    )
}

# search for command-line search term, starting in current directory (`.`)
search_in "$1" . "."
5
16.01.2014, 13:49
2 ответа

Ну, можно отключить любое USB-устройство, в этом случае, клавиатуру. Перейдите к каталогу /sys/bus/usb/drivers/usbhid

Это перечислит все число устройства HID USB. Для Вашей клавиатуры узнайте корректное число и выполните команду:

echo -n 2-1.4:1.0 > unbind

Это развяжет (отключают) базовые аппаратные средства USB, Чтобы включить его снова, выполниться

echo -n 2-1.4:1.0 > bind

Здесь, проблема должна узнать корректное число. Но это может быть решено путем знания поставщика и идентификатора продукта

1
27.01.2020, 20:40
  • 1
    Thnks для Вашего воспроизведения SHW. Право, этот способ отключить мою клавиатуру. Но одна проблема, я развязываю свою клавиатуру после нескольких секунд, которые она автоматически связывает снова. –  ibasaran 15.01.2014, 14:07
  • 2
    IIRC, только UDEV может связать аппаратные средства. Случайно, Вы перезагружаете правила ИЛИ перезапускаете UDEVD? –  SHW 15.01.2014, 14:32
  • 3
    , когда я развязываю устройство, udev связывающий снова, но я не правила reloadig снова. это случается автоматически. –  ibasaran 15.01.2014, 15:21
  • 4
    также я развязываю устройство хранения данных. устройство хранения данных, не связывающее снова, но клавиатурная привязка снова. –  ibasaran 15.01.2014, 15:33
  • 5
    я попробовал в своем (пользовательском) дистрибутиве. Это работает как ожидалось на клавиатуру USB. Версия 197 Udev здесь. Можно ли отправить dmesg вывод и/или/var/log/syslog содержание файла? –  SHW 16.01.2014, 10:41

Используя сценарий

Один метод был бы с помощью сценария, который вызывается как сценарий от UDEV. Метод, который я взял бы, я изложил в деталях в этом названные Вопросы и ответы U&L: Как отключить клавиатуру?.

Существуют довольно хорошие направления при включении/отключении клавиатуры здесь также, названы: Отключите / включают клавиатуру и мышь в Linux.

Пример

Можно перечислить устройства с этой командой.

$ xinput --list
"Virtual core pointer"  id=0    [XPointer]
"Virtual core keyboard" id=1    [XKeyboard]
"Keyboard2"     id=2    [XExtensionKeyboard]
"Mouse2"        id=3    [XExtensionKeyboard]

И отключите клавиатуру с этим:

$ xinput set-int-prop 2 "Device Enabled" 8 0

И включите его с этим:

$ xinput set-int-prop 2 "Device Enabled" 8 1

Таким образом, Вы могли поместить вышеупомянутые команды в сценарии, что UDEV мог назвать их.

Примечание: Это только работает на отключение клавиатуры до X. Таким образом, если Вы будете в системе, которая не работает X, то это не будет работать.

Использование UDEV

Я думаю, что Вы смогли адаптировать одно из этих правил отключить основанную на USB клавиатуру с помощью правила, подобного этому:

BUS=="usb", KERNEL=="hdb", OPTIONS+="ignore_device"

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

3
27.01.2020, 20:40
  • 1
    благодарит за Ваш ответ slm., я знаю, что мы можем отключить клавиатуру через xinput, но как я могу получить идентификационную информацию от udev? –  ibasaran 20.12.2013, 12:26
  • 2
    @ibasaran - необходимо пройти вывод, который Вы отправили, и определите, какое устройство является Вашей клавиатурой. Можно затем сделать соответствие .rules файл и место это в /etc/udev/rules.d/. Ключевая информация является потребностями правила иметь OPTIONS+="ignore_device" в нем так, чтобы UDEV эффективно отключил устройство клавиатуры. –  slm♦ 20.12.2013, 14:51
  • 3
    , жаль о позднем ответе, ignore_device не работающий больше. lists.ubuntu.com/archives/kubuntu-users/2010-November / … –  ibasaran 09.01.2014, 17:45
  • 4
    @ibasaran - можно ли уточнить? Не работая, как? –  slm♦ 09.01.2014, 17:46
  • 5
    lwn.net/Articles/364728 Больше не существует, "игнорируют устройство" –  ibasaran 09.01.2014, 17:54

Теги

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