Как отключить клавиатуру за исключением некоторых клавиш в Ubuntu? Всем привет. Возникла следующая проблема: необходимо в Ubuntu 16.04 в рантайме уметь отключать клавиатуру (за исключением нескольких отдельных клавиш) и включать обратно. Пробовал два способа: 1) - Отключаем клавиатуру: $ xinput float %id (где %id - это код клавиатуры "AT Translated Set 2 keyboard" из $ xinput list) - Биндим необходимые кнопки: $ xmodmap -e 'keycode code = ACTION' Но судя по всему первой командой клавиатура отключается наглухо, поэтому последующие не имеют никакого эффекта. Т.ч. по факту имеем: клавиатура отключается, но часть кнопок включить обратно не получается. 2) пробовал создать два конфига для xmodmap: один с дефолтными биндингами кнопок, во втором для всех кнопок, кроме необходимых, выставлен NoSymbol. В целом работает, но т.к. есть необходимость в рантайме переключаться между этими конфигами, то напрягает то, что xmodmap подхватывает новый конфиг с задержкой в несколько секунд. Как итог - неудобства в использовании. Может кто-то в курсе, как решить данную задачу правильно? Заранее спасибо.
Создайте два файла с расширением .sh, например, disable_keyboard.sh и enable_keyboard.sh.
В disable_keyboard.sh добавьте следующий код для отключения клавиатуры за исключением необходимых клавиш:
#!/bin/bash xinput float %id xmodmap -e 'keycode code = ACTION'В enable_keyboard.sh добавьте следующий код для включения клавиатуры:#!/bin/bash xinput reattach %id 2 xmodmap -e 'keycode code = default_action'
Замените %id на код клавиатуры "AT Translated Set 2 keyboard" и замените code, ACTION и default_action на нужные вам значения.
Сделайте файлы исполняемыми с помощью команды:
chmod +x disable_keyboard.sh chmod +x enable_keyboard.shТеперь в рантайме вы можете запускать disable_keyboard.sh для отключения клавиатуры и запускать enable_keyboard.sh для включения клавиатуры снова.
Надеюсь, это поможет вам решить вашу проблему. Если у вас есть еще вопросы, не стесняйтесь спрашивать.
Можете попробовать следующий способ:
Создайте два файла с расширением .sh, например, disable_keyboard.sh и enable_keyboard.sh.
В disable_keyboard.sh добавьте следующий код для отключения клавиатуры за исключением необходимых клавиш:
#!/bin/bashxinput float %id
xmodmap -e 'keycode code = ACTION'В enable_keyboard.sh добавьте следующий код для включения клавиатуры:#!/bin/bash
xinput reattach %id 2
xmodmap -e 'keycode code = default_action'
Замените %id на код клавиатуры "AT Translated Set 2 keyboard" и замените code, ACTION и default_action на нужные вам значения.
Сделайте файлы исполняемыми с помощью команды:
chmod +x disable_keyboard.shchmod +x enable_keyboard.shТеперь в рантайме вы можете запускать disable_keyboard.sh для отключения клавиатуры и запускать enable_keyboard.sh для включения клавиатуры снова.
Надеюсь, это поможет вам решить вашу проблему. Если у вас есть еще вопросы, не стесняйтесь спрашивать.