Для чего это стоит, основываясь на предыдущих ответах и моей собственной игре, я создал следующий скрипт, который я называю 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