Временно заблокировать / отключить клавиатуру [duplicate]

Неделю назад я пролил содержимое своей чашки на клавиатуру для ноутбука. Половина ключей больше не работает, кроме одного! Буква Q, которая очень активна регулярно.

Это очень тревожно, когда я работаю.

Есть ли способ отключить внутреннюю клавиатуру ноутбука?

Возможно ли это с xmodmap?

63
задан 25 February 2014 в 04:37

18 ответов

Вы можете использовать xinput для плавания устройства ввода в X.

Выполните команду xinput list, чтобы перечислить ваши устройства ввода. Найдите AT Translated Set 2 keyboard и обратите внимание на его номер id; это будет использоваться для отключения клавиатуры. Также обратите внимание на число в конце, [slave keyboard (#)]; это номер идентификатора master, который будет использоваться для повторной активации вашей клавиатуры. Чтобы отключить клавиатуру, выполните команду xinput float <id#>, где <id#> - номер вашей клавиатуры. Например, если id был 10, тогда команда будет xinput float 10. Чтобы снова включить клавиатуру, выполните команду xinput reattach <id#> <master#>, где master - это второй номер, который мы отметили. Поэтому, если число было 3, вы сделали бы xinput reattach 10 3.

Вот демонстрация:

$ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)] ⎜ ↳ Logitech USB-PS/2 Optical Mouse id=12 [slave pointer (2)] ⎜ ↳ Logitech Unifying Device. Wireless PID:4004 id=13 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Acer CrystalEye webcam id=9 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)] $ xinput float 10 $ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)] ⎜ ↳ Logitech USB-PS/2 Optical Mouse id=12 [slave pointer (2)] ⎜ ↳ Logitech Unifying Device. Wireless PID:4004 id=13 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Acer CrystalEye webcam id=9 [slave keyboard (3)] ∼ AT Translated Set 2 keyboard id=10 [floating slave] $ xinput reattach 10 3 $ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)] ⎜ ↳ Logitech USB-PS/2 Optical Mouse id=12 [slave pointer (2)] ⎜ ↳ Logitech Unifying Device. Wireless PID:4004 id=13 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Acer CrystalEye webcam id=9 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
102
ответ дан 18 July 2018 в 00:32

Вы можете использовать xinput для плавания устройства ввода в X.

Выполните команду xinput list, чтобы перечислить ваши устройства ввода. Найдите AT Translated Set 2 keyboard и обратите внимание на его номер id; это будет использоваться для отключения клавиатуры. Также обратите внимание на число в конце, [slave keyboard (#)]; это номер идентификатора master, который будет использоваться для повторной активации вашей клавиатуры. Чтобы отключить клавиатуру, выполните команду xinput float <id#>, где <id#> - номер вашей клавиатуры. Например, если id был 10, тогда команда будет xinput float 10. Чтобы снова включить клавиатуру, выполните команду xinput reattach <id#> <master#>, где master - это второй номер, который мы отметили. Поэтому, если число было 3, вы сделали бы xinput reattach 10 3.

Вот демонстрация:

$ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)] ⎜ ↳ Logitech USB-PS/2 Optical Mouse id=12 [slave pointer (2)] ⎜ ↳ Logitech Unifying Device. Wireless PID:4004 id=13 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Acer CrystalEye webcam id=9 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)] $ xinput float 10 $ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)] ⎜ ↳ Logitech USB-PS/2 Optical Mouse id=12 [slave pointer (2)] ⎜ ↳ Logitech Unifying Device. Wireless PID:4004 id=13 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Acer CrystalEye webcam id=9 [slave keyboard (3)] ∼ AT Translated Set 2 keyboard id=10 [floating slave] $ xinput reattach 10 3 $ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)] ⎜ ↳ Logitech USB-PS/2 Optical Mouse id=12 [slave pointer (2)] ⎜ ↳ Logitech Unifying Device. Wireless PID:4004 id=13 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Acer CrystalEye webcam id=9 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
102
ответ дан 24 July 2018 в 17:14

Устройство id, полученное из xinput list, как предлагается в принятом ответе, иногда каким-то образом изменяется при перезагрузке (по крайней мере, на моем ПК), что привело к отключению неправильного устройства.

Вот почему я [ ve закончил использование device name вместо id, например:

xinput disable "AT Translated Set 2 keyboard"
3
ответ дан 18 July 2018 в 00:32

Попробуйте запустить xmodmap -e 'keycode 24=', чтобы отключить только Q-ключ. Если это сработает, вы можете добавить его в свой ~/.bashrc или глобальный /etc/bash.bashrc файл. Я получил эту идею отсюда, где показаны все сопоставления клавиш.

3
ответ дан 18 July 2018 в 00:32

Один верный способ отключить его - отключить сигнальный кабель. Для этого вам нужно открыть клавиатуру. Для получения информации о том, как это сделать, ознакомьтесь с руководством по обслуживанию и обслуживанию для ноутбуков HP Pavilion dv9000 и dv9200.

Теперь есть способ отключить клавиатуру, используя xinput. T сделайте это, просто нажмите Ctrl + Alt + T на клавиатуре, чтобы открыть терминал. Когда он открывается, запустите следующие команды.

Чтобы перечислить устройства, ваш X

xinput --list

Чтобы отключить клавиатуру:

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

Чтобы включить клавиатура снова:

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

Если вы получили ошибку о разрешениях, используйте команды выше с sudo.

8
ответ дан 18 July 2018 в 00:32

Я подумал о двух способах сделать это:

Установив неправильную модель для вашей клавиатуры ноутбука в xorg.conf? Установив Lock-keyboard-for-Baby

`Lock-keyboard-for-Baby или lk4b, это небольшая программа, которая блокирует вашу клавиатуру, но оставляет вашу мышь свободной. Я написал это, потому что моя племянница любит уходить на клавиатуру, когда она видит, как я сажусь на нее. Клавиши, набранные на клавиатуре, могут иметь катастрофические последствия, и я не хотел постоянно блокировать экран с помощью скринсейвера.

При запуске lock-keyboard-for-baby открывает небольшое окно, которое захватывает клавиатуры и эхо-ключи, которые печатаются. По умолчанию он сообщает вам, что вводить для выхода («Quit Now»).

В отличие от заставки, ваш экран не блокируется, и мышь все еще частично работает, поэтому вы все еще можете видеть, что на вашем экране - продолжать смотреть телевизор / видео и / или читать документ с помощью мыши для прокрутки . [[d]]

Требования:

· GTK> = 2.x · perl GTK2 привязки (perl-gtk2 или gtk2-perl в зависимости от вашей системы)

12
ответ дан 18 July 2018 в 00:32

У меня была проблема с застрявшим ключом, есть где-то команда, которую вы можете положить в терминал, и она будет автоматически отключать ее каждый раз при запуске, я не программист, и я не могу вспомнить i (я просто копирую и вставьте в терминал, я понятия не имею, как вы, ребята, знаете это, или как все вы можете придумать разные версии lol), если бы он был на монетном дворе 17, но я также знаю, что есть тот, который вы можете даже положить, чтобы он отключил его даже до входа в систему, хотя я никогда не делал этого, поскольку он больше задействован

Но то, что я сделал, - это войти в настройки, клавиатуру (на монетном дворе 18 xfce вы нажимаете назад, где раньше было меню начала и перейдите в систему, а затем клавиатуру), и вы можете отключить клавиши повтора, это всего лишь поле, которое вы снимете, вы увидите его, вам все равно придется использовать клавиатуру usb, как если бы вы использовали другую, она будет перепечатывать оскорбительное письмо каждый другой ключ , но он отлично выполняет работу

Кстати, спасибо всем за то, что помогли мне с компьютерами на протяжении многих лет, кем бы вы ни были, рок, победили 8 и мой компьютер, как ev eryone elses, у которого был сенсорный экран для ноутбука, просто не мог справиться с этим, и благодаря вашим обсуждениям здесь я продолжал идти, вы герои:)

-1
ответ дан 18 July 2018 в 00:32

Для чего это стоит, основываясь на предыдущих ответах и ​​моей собственной игре, я создал следующий скрипт, который я называю toggle_keyboard.sh и размещаю на своем пути ~/bin. У меня есть комбинация клавиш, которая запускает его для CtrlWinK.

Некоторые проблемы с предыдущими ответами и преимуществами моего скрипта:

Опираясь на номер id с xinput, не удается при перезагрузке и номер идентификатора изменяется. Это случилось со мной при запуске xinput float 13. В итоге я отключил неправильное оборудование. Если вы перезагрузитесь, файл будет удерживать включенное / отключенное состояние. Файл скажет вам, что клавиатура отключена (если вы отключили ее со сценарием), но после перезагрузки она снова будет включена. Мое решение получает информацию о включении / отключении от синтаксической команды xinput. Мой скрипт будет работать с любым xinput-устройством, которое появляется при вводе xinput list --name-only. Просто получите имя и отредактируйте первые четыре переменные. Я использую его для клавиатуры ноутбука, веб-камеры, сенсорного монитора и нескольких других вещей, которые я использую только раз в то время. #!/bin/bash # Toggle the laptop keyboard either on or off and notify the user about it # Device name can be found by typing this command: xinput list --name-only DEVICE_NAME="AT Translated Set 2 keyboard" # The display name of the device in the notify-send popup DEVICE_DISPLAY_NAME="Laptop Keyboard" # Set these to the icons you want to use. # If they are not found, the notification will still work. ICON_ENABLE="$HOME/.icons/keyboard.png" ICON_DISABLE="$HOME/.icons/keyboard_disabled.png" function xinput_set_prop() { xinput set-prop "$DEVICE_NAME" "Device Enabled" $1 } function notify_change() { if [ -f "$1" ]; then notify-send --urgency=low --icon="$1" "$2" else notify-send --urgency=low "$2" fi } # Returns 1 if device is enabled, 0 if disabled is_enabled=$(xinput list-props "$DEVICE_NAME" | grep "Device Enabled" | awk '{ print $4 }' | sed 's/[^0-9]*//g') if [ $is_enabled -eq 1 ]; then # device is enabled, so disable it xinput_set_prop 0 notify_change "$ICON_DISABLE" "$DEVICE_DISPLAY_NAME Disabled" else # device is disabled, so enable it xinput_set_prop 1 notify_change "$ICON_ENABLE" "$DEVICE_DISPLAY_NAME Enabled" fi
0
ответ дан 18 July 2018 в 00:32

Вот небольшая кнопка для включения и отключения конкретной клавиатуры. Во-первых, вам нужно найти идентификатор вашей клавиатуры с помощью xinput или xinput-list.

Сценарий Bash для включения / выключения клавиатуры

#!/bin/bash Icon="/PATH/TO/ICON_ON" Icoff="/PATH_TO_ICON_OFF" fconfig=".keyboard" id=12 if [ ! -f $fconfig ]; then echo "Creating config file" echo "enabled" > $fconfig var="enabled" else read -r var< $fconfig echo "keyboard is : $var" fi if [ $var = "disabled" ]; then notify-send -i $Icon "Enabling keyboard..." \ "ON - Keyboard connected !"; echo "enable keyboard..." xinput enable $id echo "enabled" > $fconfig elif [ $var = "enabled" ]; then notify-send -i $Icoff "Disabling Keyboard" \ "OFF - Keyboard disconnected"; echo "disable keyboard" xinput disable $id echo 'disabled' > $fconfig fi

Конфигурация

Icon как путь к значку, отображаемому при включении (например, /home/user/path/icon.png) Icoff в качестве пути к значку, отображаемому при отключении. Я использовал следующие значки: id в качестве идентификатора клавиатуры (нашел его с xinput) fconfig путь к файлу конфигурации. Измените, если вы хотите создать файл конфигурации в другом каталоге

Не пытайтесь запустить сценарий, если вы не можете запустить его снова без использования вашей клавиатуры (если у вас нет другой клавиатуры, конечно). Создайте следующую пусковую установку (в home/user/.local/share/applications) и добавьте ее в единицу:

Рабочий стол (Unity launcher)

[Desktop Entry] Version=1.0 Type=Application Name=Clavier ON-OFF Icon=PATH/TO/YOUR/ICON Exec=bash NAME_OF_YOUR_SCRIPT.sh Path=PATH/TO/YOUR/SCRIPT NoDisplay=false Categories=Utility; StartupNotify=false Terminal=false

РЕЗУЛЬТАТ:

Не пытайтесь запустить сценарий, если вы не можете запустить его снова без использования вашей клавиатуры

Уведомления:

enter image description here [!d23]

12
ответ дан 18 July 2018 в 00:32

Чтобы отключить внутреннюю клавиатуру ноутбука постоянно На Ubuntu необходимо передать этот параметр i8042.nokbd Kernel, чтобы не проверять / создавать порт клавиатуры

i8042.nokbd [HW] Don't check/create keyboard port

Открыть терминал и запустить следующая команда

$sudo gedit /etc/default/grub

Попробуйте найти следующую строку

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Добавить параметр i8042.nokbd, вышеприведенная строка должна выглядеть так:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nokbd"

Обновить grub как следующую команду

$sudo update-grub

Затем reboot ваш портативный компьютер.

4
ответ дан 18 July 2018 в 00:32

Устройство id, полученное из xinput list, как предлагается в принятом ответе, иногда каким-то образом изменяется при перезагрузке (по крайней мере, на моем ПК), что привело к отключению неправильного устройства.

Вот почему я [ ve закончил использование device name вместо id, например:

xinput disable "AT Translated Set 2 keyboard"
3
ответ дан 24 July 2018 в 17:14

Попробуйте запустить xmodmap -e 'keycode 24=', чтобы отключить только Q-ключ. Если это сработает, вы можете добавить его в свой ~/.bashrc или глобальный /etc/bash.bashrc файл. Я получил эту идею отсюда, где показаны все сопоставления клавиш.

3
ответ дан 24 July 2018 в 17:14
  • 1
    Разве это не отключит q на внешней клавиатуре? – Sparhawk 30 August 2013 в 10:07

Один верный способ отключить его - отключить сигнальный кабель. Для этого вам нужно открыть клавиатуру. Для получения информации о том, как это сделать, ознакомьтесь с руководством по обслуживанию и обслуживанию для ноутбуков HP Pavilion dv9000 и dv9200.

Теперь есть способ отключить клавиатуру, используя xinput. T сделайте это, просто нажмите Ctrl + Alt + T на клавиатуре, чтобы открыть терминал. Когда он открывается, запустите следующие команды.

Чтобы перечислить устройства, ваш X

xinput --list

Чтобы отключить клавиатуру:

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

Чтобы включить клавиатура снова:

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

Если вы получили ошибку о разрешениях, используйте команды выше с sudo.

8
ответ дан 24 July 2018 в 17:14

Я подумал о двух способах сделать это:

Установив неправильную модель для вашей клавиатуры ноутбука в xorg.conf? Установив Lock-keyboard-for-Baby

`Lock-keyboard-for-Baby или lk4b, это небольшая программа, которая блокирует вашу клавиатуру, но оставляет вашу мышь свободной. Я написал это, потому что моя племянница любит уходить на клавиатуру, когда она видит, как я сажусь на нее. Клавиши, набранные на клавиатуре, могут иметь катастрофические последствия, и я не хотел постоянно блокировать экран с помощью скринсейвера.

При запуске lock-keyboard-for-baby открывает небольшое окно, которое захватывает клавиатуры и эхо-ключи, которые печатаются. По умолчанию он сообщает вам, что вводить для выхода («Quit Now»).

В отличие от заставки, ваш экран не блокируется, и мышь все еще частично работает, поэтому вы все еще можете видеть, что на вашем экране - продолжать смотреть телевизор / видео и / или читать документ с помощью мыши для прокрутки . [[d]]

Требования:

· GTK> = 2.x · perl GTK2 привязки (perl-gtk2 или gtk2-perl в зависимости от вашей системы)

12
ответ дан 24 July 2018 в 17:14
  • 1
    это не совсем то, что мне нужно, мне нужно использовать мою клавиатуру usb, но ваш код очень полезен! ;) – atmon3r 22 August 2012 в 03:28
  • 2
    Lock-keyboard-for-Baby позволит вам отключить внутреннюю клавиатуру, сохраняя при этом использование внешнего – LnxSlck 22 August 2012 в 05:49
  • 3
    Brilliant. Lock-Keyboard-For-Baby работает в Ubuntu 16.04. Я предпочитаю кодировать, используя ручку и бумажную книгу, сохраняя ее на клавиатуре. Эта крошечная утилита решила мою проблему. Для других вам может потребоваться запустить sudo apt-get install libgtk2-perl перед запуском скрипта perl – mac 1 February 2017 в 12:05

У меня была проблема с застрявшим ключом, есть где-то команда, которую вы можете положить в терминал, и она будет автоматически отключать ее каждый раз при запуске, я не программист, и я не могу вспомнить i (я просто копирую и вставьте в терминал, я понятия не имею, как вы, ребята, знаете это, или как все вы можете придумать разные версии lol), если бы он был на монетном дворе 17, но я также знаю, что есть тот, который вы можете даже положить, чтобы он отключил его даже до входа в систему, хотя я никогда не делал этого, поскольку он больше задействован

Но то, что я сделал, - это войти в настройки, клавиатуру (на монетном дворе 18 xfce вы нажимаете назад, где раньше было меню начала и перейдите в систему, а затем клавиатуру), и вы можете отключить клавиши повтора, это всего лишь поле, которое вы снимете, вы увидите его, вам все равно придется использовать клавиатуру usb, как если бы вы использовали другую, она будет перепечатывать оскорбительное письмо каждый другой ключ , но он отлично выполняет работу

Кстати, спасибо всем за то, что помогли мне с компьютерами на протяжении многих лет, кем бы вы ни были, рок, победили 8 и мой компьютер, как ev eryone elses, у которого был сенсорный экран для ноутбука, просто не мог справиться с этим, и благодаря вашим обсуждениям здесь я продолжал идти, вы герои:)

-1
ответ дан 24 July 2018 в 17:14

Для чего это стоит, основываясь на предыдущих ответах и ​​моей собственной игре, я создал следующий скрипт, который я называю toggle_keyboard.sh и размещаю на своем пути ~/bin. У меня есть комбинация клавиш, которая запускает его для CtrlWinK.

Некоторые проблемы с предыдущими ответами и преимуществами моего скрипта:

Опираясь на номер id с xinput, не удается при перезагрузке и номер идентификатора изменяется. Это случилось со мной при запуске xinput float 13. В итоге я отключил неправильное оборудование. Если вы перезагрузитесь, файл будет удерживать включенное / отключенное состояние. Файл скажет вам, что клавиатура отключена (если вы отключили ее со сценарием), но после перезагрузки она снова будет включена. Мое решение получает информацию о включении / отключении от синтаксической команды xinput. Мой скрипт будет работать с любым xinput-устройством, которое появляется при вводе xinput list --name-only. Просто получите имя и отредактируйте первые четыре переменные. Я использую его для клавиатуры ноутбука, веб-камеры, сенсорного монитора и нескольких других вещей, которые я использую только раз в то время. #!/bin/bash # Toggle the laptop keyboard either on or off and notify the user about it # Device name can be found by typing this command: xinput list --name-only DEVICE_NAME="AT Translated Set 2 keyboard" # The display name of the device in the notify-send popup DEVICE_DISPLAY_NAME="Laptop Keyboard" # Set these to the icons you want to use. # If they are not found, the notification will still work. ICON_ENABLE="$HOME/.icons/keyboard.png" ICON_DISABLE="$HOME/.icons/keyboard_disabled.png" function xinput_set_prop() { xinput set-prop "$DEVICE_NAME" "Device Enabled" $1 } function notify_change() { if [ -f "$1" ]; then notify-send --urgency=low --icon="$1" "$2" else notify-send --urgency=low "$2" fi } # Returns 1 if device is enabled, 0 if disabled is_enabled=$(xinput list-props "$DEVICE_NAME" | grep "Device Enabled" | awk '{ print $4 }' | sed 's/[^0-9]*//g') if [ $is_enabled -eq 1 ]; then # device is enabled, so disable it xinput_set_prop 0 notify_change "$ICON_DISABLE" "$DEVICE_DISPLAY_NAME Disabled" else # device is disabled, so enable it xinput_set_prop 1 notify_change "$ICON_ENABLE" "$DEVICE_DISPLAY_NAME Enabled" fi
0
ответ дан 24 July 2018 в 17:14

Вот небольшая кнопка для включения и отключения конкретной клавиатуры. Во-первых, вам нужно найти идентификатор вашей клавиатуры с помощью xinput или xinput-list.

Сценарий Bash для включения / выключения клавиатуры

#!/bin/bash Icon="/PATH/TO/ICON_ON" Icoff="/PATH_TO_ICON_OFF" fconfig=".keyboard" id=12 if [ ! -f $fconfig ]; then echo "Creating config file" echo "enabled" > $fconfig var="enabled" else read -r var< $fconfig echo "keyboard is : $var" fi if [ $var = "disabled" ]; then notify-send -i $Icon "Enabling keyboard..." \ "ON - Keyboard connected !"; echo "enable keyboard..." xinput enable $id echo "enabled" > $fconfig elif [ $var = "enabled" ]; then notify-send -i $Icoff "Disabling Keyboard" \ "OFF - Keyboard disconnected"; echo "disable keyboard" xinput disable $id echo 'disabled' > $fconfig fi

Конфигурация

Icon как путь к значку, отображаемому при включении (например, /home/user/path/icon.png) Icoff в качестве пути к значку, отображаемому при отключении. Я использовал следующие значки: id в качестве идентификатора клавиатуры (нашел его с xinput) fconfig путь к файлу конфигурации. Измените, если вы хотите создать файл конфигурации в другом каталоге

Не пытайтесь запустить сценарий, если вы не можете запустить его снова без использования вашей клавиатуры (если у вас нет другой клавиатуры, конечно). Создайте следующую пусковую установку (в home/user/.local/share/applications) и добавьте ее в единицу:

Рабочий стол (Unity launcher)

[Desktop Entry] Version=1.0 Type=Application Name=Clavier ON-OFF Icon=PATH/TO/YOUR/ICON Exec=bash NAME_OF_YOUR_SCRIPT.sh Path=PATH/TO/YOUR/SCRIPT NoDisplay=false Categories=Utility; StartupNotify=false Terminal=false

РЕЗУЛЬТАТ:

Не пытайтесь запустить сценарий, если вы не можете запустить его снова без использования вашей клавиатуры

Уведомления:

enter image description here [!d23]

12
ответ дан 24 July 2018 в 17:14
  • 1
    Это хорошо работает, благодарю вас за разъяснение этого. Есть одна вещь, которую я не понимаю: как изменить значок в соответствии с логикой сценария оболочки. Я думаю, что это частично определяется «Icon = PATH / TO / YOUR / ICON». в записи «Рабочий стол» я использовал абсолютный путь, «/ home /.../ icon_on.png». поскольку я не знаю, как еще использовать «.desktop». хотя я вижу, что это может помешать переключению значков. Может ли кто-нибудь дать подсказку, пожалуйста? – Puffin 13 December 2016 в 00:03
  • 2
    Привет, вы правы в абсолютном пути в файле .desktop. Извините, но я не знаю, как сделать динамические изменения для значка запуска. Согласно этому ответу, вообще невозможно: askubuntu.com/a/244951/458410 . Значок в моем скрипте изменяется только в уведомлениях. – mxdsp 20 December 2016 в 14:00
  • 3
    Ах, да, хорошо, что имеет смысл, мой делает то же самое, спасибо. – Puffin 20 December 2016 в 22:47
  • 4
    Возможное улучшение: вместо сохранения состояния в файле вы можете напрямую проверить, отключена ли клавиатура с помощью этой команды: function is-disabled() { xinput --list --long | grep -A 1 "id=$1" | grep -q disabled }. Таким образом, все работает, даже если клавиатура включена / отключена другой программой. – dshepherd 26 February 2017 в 15:21
  • 5
    fconfig=".keyboard" if [ ! -f $fconfig ]; Здесь, что .keyboard? И оба fconfig и $fconfig одинаковы? А также что означает ! -f $fconfig? Я новичок в сценариях bash. Благодаря :) – sphoenix 16 September 2017 в 21:01

Чтобы отключить внутреннюю клавиатуру ноутбука постоянно На Ubuntu необходимо передать этот параметр i8042.nokbd Kernel, чтобы не проверять / создавать порт клавиатуры

i8042.nokbd [HW] Don't check/create keyboard port

Открыть терминал и запустить следующая команда

$sudo gedit /etc/default/grub

Попробуйте найти следующую строку

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Добавить параметр i8042.nokbd, вышеприведенная строка должна выглядеть так:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nokbd"

Обновить grub как следующую команду

$sudo update-grub

Затем reboot ваш портативный компьютер.

4
ответ дан 24 July 2018 в 17:14

Другие вопросы по тегам:

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