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

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

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

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

Возможно ли это с помощью xmodmap?

85
задан 13.05.2020, 12:37

9 ответов

Вы можете использовать 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)]
135
ответ дан 13.05.2020, 12:39
  • 1
    Спасибо. Но, после того, как перезапущено мой ноутбук, клавиатура включена автоматически. Таким образом, все время, когда я на моей машине, я хочу сделать вышеупомянутые шаги к отключенному внутренняя клавиатура, которую Вы упомянули. Там какие-либо возможности к отключенному постоянно? – Sam Harwell 13.05.2020, 12:39
  • 2
    Вы использовали бы reattach аргумент для повторного прикрепления его. xinput reattach 14 3 – Ferruccio 13.05.2020, 12:40
  • 3
    Wouldn' t xinput отключают/разрешают, делают то же самое? – Rob Kennedy 13.05.2020, 12:40
  • 4
    Мне интересно этим решением! мой xinput pastebin.com/puDxQaZ8, таким образом, я предполагаю это, был бы им: xinput float 14 Этот запрос обратим? как включить клавиатуру после этого? – ephemient 13.05.2020, 12:40
  • 5
    Идеальный ответ - искал это также. любой из ключей на моем ноутбуке прекратил работать, поэтому теперь сохраняют внешнюю клавиатуру по нему, и это продолжало нажимать клавишу CTRL и что нет. Это согласовало его, Спасибо! – eran 13.05.2020, 12:41
  • 6
    Прекрасный! это точно, в чем я нуждался, Вы получаете мою щедрость =), – cezar 13.05.2020, 12:41

Вот небольшая кнопка переключения для включения и выключения определенной клавиатуры. Во-первых, вы должны найти свой идентификатор клавиатуры с помощью 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) [ 1124]
  • Icoff как путь к значку, отображаемому при отключении
  • Я использовал следующие значки: enter image description here [1120 ] enter image description here

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

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

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

Запись рабочего стола (модуль запуска Unity)

[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

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

enter image description here [1122] enter image description here

18
ответ дан 13.05.2020, 12:37

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

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

  • Полагаться на идентификатор с помощью 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
2
ответ дан 13.05.2020, 12:38

Для постоянного отключения внутренней клавиатуры ноутбука. В Ubuntu нужно передать это i8042.nokbd параметры ядра, чтобы не проверять / не создавать порт клавиатуры

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 вашего ноутбука.

5
ответ дан 13.05.2020, 12:40
  • 1
    Как я включил бы снова свою клавиатуру? – JasonG 13.05.2020, 12:40

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

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

xinput disable "AT Translated Set 2 keyboard"
5
ответ дан 13.05.2020, 12:40

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

Теперь есть способ отключить клавиатуру с помощью 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.

10
ответ дан 13.05.2020, 12:41

xinput float «AT Translated Set 2 клавиатура»

После долгих лет работы с разными методами с разными дистрибутивами и выпусками. Приведенная выше терминальная команда - это то, на что я полагаюсь после проблем ..... Я использую это сейчас с неоновой плазмой и использовал ее месяц назад в прямой Ubuntu 18.04. (требует применения после перезагрузки - может быть помещено в автозагрузку) * Моя встроенная клавиатура на моем ноутбуке HP, которая повреждена и начинает печатать, что вызывает серьезные проблемы - я использую беспроводную клавиатуру и мышь - сенсорная панель включена / выключена как часть верхней панели KDE варианты - неон / плазма 5). В системных настройках / автозапуск Текстовый файл со следующей строкой кода сохраняется как файл .sh и устанавливается как исполняемый файл (свойства txt-файлов)
xinput float "AT Translated Set 2 клавиатура" [114 ]

Текстовый файл получает имя> keyboardoff> и помещается в автозапуск (исполняемый файл). При перезапуске / запуске системы> встроенная клавиатура выключается. (используйте xinput list для проверки)

0
ответ дан 13.05.2020, 12:42

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

3
ответ дан 13.05.2020, 12:42
  • 1
    Wouldn' t это отключают q во внешней клавиатуре также? – Rich Oliver 13.05.2020, 12:43

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

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

  2. [ 116] Установив Lock-клавиатура для ребенка

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

При запуске блокировки клавиатура для ребенка открывает небольшое окно, в котором находятся клавиатура и набранные клавиши. По умолчанию он говорит вам, что печатать, чтобы выйти («Выйти сейчас»).

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

Требования:

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

12
ответ дан 13.05.2020, 12:43
  • 1
    " Выход Now" Выход Теперь или выход теперь никакой worky под 18,04 с клавиатурой USB системного блока. – Community 13.05.2020, 12:43
  • 2
    это не точно, в чем я нуждаюсь, я должен использовать свою клавиатуру usb, но Ваш код очень полезен!;) – pkaeding 13.05.2020, 12:43
  • 3
    Lock-keyboard-for-Baby позволит Вам отключить свою внутреннюю клавиатуру в то время как mainting использование внешнего – Michael Mao 13.05.2020, 12:44
  • 4
    Блестящий. Lock-Keyboard-For-Baby работает в Ubuntu 16.04 также. Я предпочитаю кодировать перо использования и paperbook хранение его на клавиатуре. Эта крошечная утилита решила мою проблему. Для других Вам, возможно, придется работать sudo склонный - получают установку libgtk2-perl прежде, чем выполнить сценарий жемчуга – Alex Wilson 13.05.2020, 12:44

Теги

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