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


85

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

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

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

Это возможно с xmodmap?


Какой марки и модели ноутбука это?
Митч

этоHP pavilion dv9000
atmon3r

5
Самый простой способ - поднять клавиатуру и отсоединить ее от материнской платы. Затем вы можете поместить его обратно туда, где он был, без связи. Таким образом, клавиатура будет отключена после переустановки, и вам не нужно беспокоиться о программном обеспечении. Посмотрите эту ссылку, примерно на полпути вниз по странице, где она попадает к клавиатуре: insidemylaptop.com/…
Марк Паскал

Может также стоить вынуть его, разобрать его, очистить между слоями ..
JonasCz говорит: восстановите Монику

Ответы:


135

Вы можете использовать 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
Pointer ID указателя виртуального ядра = 2 [главный указатель (3)]
Pointer ↳ Указатель XTEST виртуального ядра id = 4 [ведомый указатель (2)]
PS ↳ SynPS / 2 Synaptics TouchPad id = 11 [ведомый указатель (2)]
↳ ↳ Оптическая мышь Logitech USB-PS / 2 id = 12 [ведомый указатель (2)]
↳ ↳ Устройство объединения Logitech. Беспроводной PID: 4004 id = 13 [ведомый указатель (2)]
Id ID виртуальной клавиатуры = 3 [мастер клавиатура (2)]
    Id Виртуальное ядро ​​XTEST клавиатура id = 5 [подчиненная клавиатура (3)]
    Id Кнопка питания id = 6 [подчиненная клавиатура (3)]
    Id Идентификатор видео шины = 7 [подчиненная клавиатура (3)]
    Id Кнопка Sleep id = 8 [подчиненная клавиатура (3)]
    Id Идентификатор веб-камеры Acer CrystalEye = 9 [подчиненная клавиатура (3)]
    ↳ AT Translated Set 2 клавиатура id = 10    [ ведомая клавиатура ( 3 )]
 $ xinput float 10 
$ список xinput
Pointer ID указателя виртуального ядра = 2 [главный указатель (3)]
Pointer ↳ Указатель XTEST виртуального ядра id = 4 [ведомый указатель (2)]
PS ↳ SynPS / 2 Synaptics TouchPad id = 11 [ведомый указатель (2)]
↳ ↳ Оптическая мышь Logitech USB-PS / 2 id = 12 [ведомый указатель (2)]
↳ ↳ Устройство объединения Logitech. Беспроводной PID: 4004 id = 13 [ведомый указатель (2)]
Id ID виртуальной клавиатуры = 3 [мастер клавиатура (2)]
    Id Виртуальное ядро ​​XTEST клавиатура id = 5 [подчиненная клавиатура (3)]
    Id Кнопка питания id = 6 [подчиненная клавиатура (3)]
    Id Идентификатор видео шины = 7 [подчиненная клавиатура (3)]
    Id Кнопка Sleep id = 8 [подчиненная клавиатура (3)]
    Id Идентификатор веб-камеры Acer CrystalEye = 9 [подчиненная клавиатура (3)]
∼ AT Translated Set 2 клавиатура id = 10 [плавающий ведомый]
$ xinput reattach 10 3 
$ xinput список
Pointer ID указателя виртуального ядра = 2 [главный указатель (3)]
Pointer ↳ Указатель XTEST виртуального ядра id = 4 [ведомый указатель (2)]
PS ↳ SynPS / 2 Synaptics TouchPad id = 11 [ведомый указатель (2)]
↳ ↳ Оптическая мышь Logitech USB-PS / 2 id = 12 [ведомый указатель (2)]
↳ ↳ Устройство объединения Logitech. Беспроводной PID: 4004 id = 13 [ведомый указатель (2)]
Id ID виртуальной клавиатуры = 3 [мастер клавиатура (2)]
    Id Виртуальное ядро ​​XTEST клавиатура id = 5 [подчиненная клавиатура (3)]
    Id Кнопка питания id = 6 [подчиненная клавиатура (3)]
    Id Идентификатор видео шины = 7 [подчиненная клавиатура (3)]
    Id Кнопка Sleep id = 8 [подчиненная клавиатура (3)]
    Id Идентификатор веб-камеры Acer CrystalEye = 9 [подчиненная клавиатура (3)]
    ↳ AT Translated Set 2: идентификатор клавиатуры = 10 [подчиненная клавиатура (3)]

Я заинтересован в этом решении! мой xinput pastebin.com/puDxQaZ8, так что я думаю, что это будет так: xinput float 14этот запрос обратим? как включить клавиатуру после этого?
atmon3r

2
Вы бы использовали reattachаргумент, чтобы присоединить его. xinput reattach 14 3
Игнасио Васкес-Абрамс

1
Идеальный ответ - тоже искал. любая из клавиш на моем ноутбуке перестала работать, поэтому теперь держите над ним внешнюю клавиатуру, и она продолжала нажимать клавишу управления, а что нет. Это исправило, спасибо!
Примечательно,

1
Благодарю. Но после перезагрузки моего ноутбука клавиатура включается автоматически. Таким образом, все время, когда я на своей машине, я хочу сделать вышеупомянутые шаги, чтобы отключить внутреннюю клавиатуру, которую вы упомянули. Есть ли какие-либо возможности для инвалидов постоянно?
Динеш М.Л.

2
Разве xinput отключить / включить сделать то же самое?
SomeNickName

18

Вот небольшая кнопка переключения для включения и выключения определенной клавиатуры. Сначала вы должны найти идентификатор клавиатуры с помощью 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путь к файлу конфигурации. Измените, если вы хотите создать файл конфигурации в другом каталоге

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

Запись рабочего стола (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

РЕЗУЛЬТАТ:

Ракета-носитель:

введите описание изображения здесь

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

введите описание изображения здесь введите описание изображения здесь


Это хорошо работает, спасибо за четкое объяснение. Есть одна вещь, которую я не понимаю: как изменить значок в соответствии с логикой сценария оболочки. Я думаю, что это отчасти определяется как "Icon = PATH / TO / YOUR / ICON" в записи Desktop, я использовал абсолютный путь, "/home/.../icon_on.png", так как я не знаю, как иначе использовать файл .desktop, хотя я вижу, что это может помешать переключению значков. Может кто-нибудь дать подсказку, пожалуйста?
Тупик

1
Привет, вы правы насчет абсолютного пути в файле .desktop. Извините, но я не знаю, как сделать динамические изменения для значка запуска. Согласно этому ответу, это невозможно вообще: askubuntu.com/a/244951/458410 . Значок в моем скрипте изменяется только в уведомлениях.
mxdsp

Ах, хорошо, это имеет смысл, мой делает то же самое, спасибо.
Тупик

Возможное улучшение: вместо того , чтобы хранить состояние в файл можно проверить непосредственно , если клавиатура отключена с помощью этой команды: function is-disabled() { xinput --list --long | grep -A 1 "id=$1" | grep -q disabled }. Таким образом, все работает, даже если клавиатура включена / отключена другой программой.
dshepherd

fconfig=".keyboard" if [ ! -f $fconfig ]; Вот что это .keyboard? И то и другое fconfigи то $fconfigже самое? А также что ! -f $fconfigзначит? Я новичок в скриптах Bash. Спасибо :)
sphoenix

12

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

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

  2. Установив блокировку клавиатуры для малыша

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

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

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

Требования:

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


1
это не совсем то, что мне нужно, мне нужно использовать мою USB-клавиатуру, но ваш код очень полезен! ;)
atmon3r

Блокировка клавиатуры для ребенка позволит вам отключить внутреннюю клавиатуру, продолжая использовать внешнюю
LnxSlck

Brilliant. Lock-Keyboard-For-Baby работает и в Ubuntu 16.04. Я предпочитаю кодировать с помощью ручки и бумажных книг, сохраняя их на клавиатуре. Эта крошечная утилита решила мою проблему. Для других вам может потребоваться запустить sudo apt-get install libgtk2-perl перед запуском сценария perl
mac

«Выйти сейчас», «Выйти сейчас» или «Выйти сейчас» не работает до 18.04 с USB-клавиатурой настольного компьютера.
Фламур

10

Один из надежных способов его отключения - отключить сигнальный кабель. Вам нужно вспомнить клавиатуру для этого. Информацию о том, как это сделать, можно найти в Руководстве по обслуживанию и обслуживанию ноутбуков 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.


5

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

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

xinput disable "AT Translated Set 2 keyboard"

5

Для постоянного отключения внутренней клавиатуры ноутбука В 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ваш ноутбук.


Как мне снова включить клавиатуру?
Гильерме Паррейра

4

Если бы я почистил клавиатуру и из-за этого всегда приходилось выключать машину. Следовательно, я обнаружил это для временного отключения клавиатуры:

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

Время сна в секундах

id # и master #, как указано выше ( вверху страницы )

например, в своей записной книжке я набрал:

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

3

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


4
Разве это не отключит и qна внешней клавиатуре?
Sparhawk

2

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

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.