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

Вопрос или проблема

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

Это очень беспокоит, так как я работаю.

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

Можно ли это сделать с помощью xmodmap?

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

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

Вот небольшой переключатель для включения и отключения конкретной клавиатуры.

Сначала вы должны найти идентификатор вашей клавиатуры с помощью 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 "Создание конфигурационного файла"
  echo "enabled" > $fconfig
  var="enabled"
else
  read -r var< $fconfig
  echo "клавиатура: $var"
fi

if [ "$var" = "disabled" ]; then
  notify-send -i $Icon "Включение клавиатуры..." \ "ВКЛ - Клавиатура подключена!";
  echo "включение клавиатуры..."
  xinput enable $id
  echo "enabled" > $fconfig
elif [ "$var" = "enabled" ]; then
  notify-send -i $Icoff "Отключение клавиатуры" \ "ВЫКЛ - Клавиатура отключена";
  echo "отключение клавиатуры"
  xinput disable $id
  echo 'disabled' > $fconfig
fi

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

  • Icon как путь к значку для отображения при включении (например, /home/user/path/icon.png)

  • Icoff как путь к значку для отображения при отключении

  • Я использовал следующие значки :

    скриншот
    скриншот

  • id как идентификатор клавиатуры (найдите его с помощью xinput)

  • fconfig путь к конфигурационному файлу. Измените, если хотите создать конфигурационный файл в другой директории

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

Запись на рабочем столе (запускатель Unity, Ubuntu 17.10 и ниже)

[Desktop Entry]
Version=1.0
Type=Application
Name=Клавиатура ВКЛ-ВЫКЛ
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

Результат

Запускатель:

[скриншот3

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

[скриншот4
[скриншот5

Идентификаторы устройств id, полученные с помощью xinput list как предложено в принятом ответе, иногда изменяются при перезагрузке (по крайней мере, на моем ПК), что приводит к отключению неправильного устройства.

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

xinput disable "AT Translated Set 2 keyboard"

Чтобы постоянно отключить внутреннюю клавиатуру вашего ноутбука, используйте параметр ядра i8042.nokbd, который отключает проверку и создание порта клавиатуры:

i8042.nokbd [HW] Не проверять/создавать порт клавиатуры

Откройте терминал и выполните следующую команду:

$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     

Затем перезагрузите ноутбук.

Я подумал о 2 способах, как вы можете это сделать:

  1. Настроив неправильную модель для клавиатуры вашего ноутбука в xorg.conf ?

  2. Установив Lock-keyboard-for-Baby

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

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

В отличие от скринсейвера, ваш экран не блокируется, и мышь все еще работает частично, так что вы все равно можете видеть, что на экране – продолжайте смотреть телевизор / видео и/или читать документ, используя мышь для прокрутки.`

Требования:

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

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

Теперь есть способ отключить клавиатуру, используя xinput. Для этого просто нажмите 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.

В результате я обнаружил:

$ xinput float id#;sleep t;xinput reattach id# master#

t -время для сна в секундах

id# и master# упомянуты выше (вверху страницы)

Например, в моем терминале:

$ xinput float 11;sleep 5;xinput reattach 11 3

Индикатор устройства ввода позволяет вам включать и/или отключать ваши устройства из меню. Он использует xinput внутренне, но вам не нужно открывать терминал, перечислять вручную, вводить команду и т.д.

Меню со списком устройств, которые можно отключить или включить.

Он находится в PPA, так что вы можете установить его с помощью

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 03BBACDA765F39D9A14EEDE4425F3F9343B40373
sudo add-apt-repository ppa:brandizzi/ppa
sudo apt install input-device-indicator

Чтобы вызвать его, вам просто нужно выполнить input-device-indicator (который можно добавить в программу автозапуска) или найти “Индикатор устройства ввода” через HUD (или как это называется в наши дни).

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

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

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

  • Опора на номер идентификатора с xinput не работает при перезагрузке, когда номер идентификатора изменяется. Это случилось со мной, когда я запустил xinput float 13. Я в итоге отключил неправильное оборудование.
  • Опора на файл для хранения состояния включенной/выключенной клавиатуры также не сработает при перезагрузке. Файл будет говорить вам, что клавиатура отключена (если вы отключили ее с помощью скрипта), но после перезагрузки она снова будет включена. Мое решение получает информацию о включенном/выключенном состоянии из проанализированной команды xinput.
  • Мой скрипт будет работать с любым устройством xinput, которое появляется, когда вы вводите xinput list --name-only. Просто получите имя и отредактируйте верхние четыре переменные. Я использую его для своей клавиатуры ноутбука, веб-камеры, сенсорного монитора и нескольких других вещей, которые использую только время от времени.

#!/bin/bash
# Переключить клавиатуру ноутбука либо включенной, либо отключенной и уведомить пользователя об этом

# Имя устройства можно найти, выполнив эту команду: xinput list --name-only
DEVICE_NAME="AT Translated Set 2 keyboard"
# Отображаемое имя устройства в уведомлении
DEVICE_DISPLAY_NAME="Клавиатура ноутбука"

# Установите эти значения на значки, которые вы хотите использовать.
# Если они не найдены, уведомление все равно будет работать.
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
}

# Возвращает 1, если устройство включено, 0, если отключено
is_enabled=$(xinput list-props "$DEVICE_NAME" | grep "Device Enabled" | awk '{ print $4 }' | sed 's/[^0-9]*//g')

if [ $is_enabled -eq 1 ]; then
        # устройство включено, поэтому отключаем его
        xinput_set_prop 0
        notify_change "$ICON_DISABLE" "$DEVICE_DISPLAY_NAME Отключено"
else
        # устройство отключено, так что включаем его
        xinput_set_prop 1
        notify_change "$ICON_ENABLE" "$DEVICE_DISPLAY_NAME Включено"
fi

xinput float “AT Translated Set 2 keyboard”

После многочасовой работы с разными методами на разных дистрибутивах и версиях, команда терминала выше – это то, на что я полагаюсь после проблем… Я сейчас использую это с neon plasma и использовал месяц назад в обычном ubuntu 18.04.
(нужно применить после перезагрузки – можно добавить в автозагрузку)
* Моя встроенная клавиатура на моем ноутбуке HP повреждена и начинает набирать текст, что вызывает серьезные проблемы – я использую беспроводную клавиатуру и мышь – тачпад включен/выключен как часть параметров верхней панели KDE – neon/plasma 5).
В настройках системы / автозагрузка
Текстовый файл с приведенной ниже строкой кода сохраняется как .sh файл и устанавливается как исполняемый (свойства текстовых файлов)
xinput float “AT Translated Set 2 keyboard”

Файлу текста присваивается имя > keyboardoff > и помещается в автозагрузку (исполнимый)
Когда вы перезагрузите / запустите систему > встроенная клавиатура будет выключена.
(используйте xinput list, чтобы проверить)

#Отключить встроенную клавиатуру на Ubuntu

# Найти идентификатор клавиатуры
KeyboardID=$(xinput list | grep "Translated Set 2 keyboard" | awk '{ gsub(/[[:alpha:]]|[[:punct:]]/," ")}1' | awk  '{print $3}')

# Найти идентификатор мастера
MasterDeviceID=$(xinput list | grep "Translated Set 2 keyboard" | awk '{ gsub(/[[:alpha:]]|[[:punct:]]/," ")}1' | awk  '{print $4}')

# Команда для отключения клавиатуры
xinput float $KeyboardID

# Команда для включения клавиатуры
xinput reattach $KeyboardID $MasterDeviceID

Ранее упомянутые методы могут быть слишком экстремальными, как i8042.nokbd, или ограничены Xserver. Однако есть другой подход, который достигает аналогичного результата, как параметр i8042.nokbd, но при этом легко отменить, так же как и методы X-сервера.

Чтобы отвязать устройство от соответствующего драйвера в повышенном терминале, выполните:

echo -n 'serio0' > '/sys/bus/serio/drivers/atkbd/unbind'

Чтобы повторно привязать или включить клавиатуру, используйте:

echo -n 'serio0' > '/sys/bus/serio/drivers/atkbd/bind'

Примечание: На некоторых устройствах клавиатура будет автоматически привязываться сама. Чтобы предотвратить это, вам нужно изменить режим привязки устройства с авто на ручной, выполнив:

echo -n 'manual' | tee /sys/devices/platform/i8042/serio0/bind_mode

Также обратите внимание, что клавиатура не гарантируется, что она будет соответствовать serio0, хотя это обычно так.

источник

Еще один интересный способ добиться аналогичных результатов методам xinput на уровне чуть ниже xserver или любого современного дисплейного ввода – заставить libinput игнорировать ввод от устройства, используя атрибут udev LIBINPUT_IGNORE_DEVICE.
Для дальнейших инструкций.

ENV{ID_INPUT}=””,источник.

Примечание: Первый метод действителен только для сеанса, вы можете создать правило udev или службу systemd, чтобы обеспечить постоянный эффект.

Ответ или решение

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

1. Отключение с помощью xinput

xinput — это инструмент, который позволяет управлять входными устройствами в X-системах. Чтобы отключить встроенную клавиатуру, выполните следующие шаги:

Шаги:

  1. Список устройств: Откройте терминал и выполните команду:

    xinput list

    Это покажет список всех входных устройств. Найдите вашу клавиатуру (например, "AT Translated Set 2 keyboard") и запомните ее идентификатор (id).

  2. Отключение клавиатуры: Выполните команду:

    xinput float <id>

    Здесь <id> — это идентификатор клавиатуры, который вы получили на предыдущем шаге.

  3. Включение клавиатуры: Чтобы снова включить клавиатуру, выполните команду:

    xinput reattach <id> <master_id>

    Где <master_id> — это идентификатор родительского устройства, который также можно найти в результате предыдущей команды.

Скрипт для удобства

Если вам нужно часто отключать и включать клавиатуру, вы можете создать Bash-скрипт:

#!/bin/bash
DEVICE_NAME="AT Translated Set 2 keyboard"
is_enabled=$(xinput list-props "$DEVICE_NAME" | grep "Device Enabled" | awk '{print $4}')

if [ "$is_enabled" -eq 1 ]; then
    xinput disable "$DEVICE_NAME"
    notify-send "$DEVICE_NAME отключена"
else
    xinput enable "$DEVICE_NAME"
    notify-send "$DEVICE_NAME включена"
fi

2. Использование параметров ядра

Если вам нужно отключить клавиатуру более постоянно, вы можете добавить параметр ядра в GRUB:

  1. Открытие GRUB конфигурации:

    sudo gedit /etc/default/grub
  2. Поиск строки:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
  3. Добавление параметра:
    Измените строку на следующую:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nokbd"
  4. Обновление GRUB:
    После этого сохраните изменения и выполните команду для обновления GRUB:

    sudo update-grub
  5. Перезагрузка системы: Перезагрузите ноутбук, чтобы изменения вступили в силу.

3. Установление переменных udev

Для более постоянного отключения встроенной клавиатуры вы также можете использовать правила udev:

  1. Создайте файл, например, /etc/udev/rules.d/99-disable-keyboard.rules.

  2. Добавьте в него правило, чтобы игнорировать клавиатуру:

    ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="AT Translated Set 2 keyboard", ENV{ID_INPUT}=""
  3. После внесения изменений перезагрузите систему.

Заключение

Методы, описанные выше, являются эффективными способами отключения встроенной клавиатуры ноутбука. Выбор метода зависит от ваших нужд — временное отключение через xinput подходит для однократного использования, тогда как GRUB или udev подходят для долговременных решений. В обоих случаях, будьте осторожны при выполнении этих действий, особенно если планируете использовать только внешний ввод. Если возникнут проблемы при выполнении изменений, вы всегда сможете восстановить настройки, используя внешний клавиатурный терминал или предустановленные средства.

Оцените материал
Добавить комментарий

Капча загружается...