Чи є спосіб відключити внутрішню клавіатуру ноутбука?


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 список
⎡ віртуальний основний вказівник id = 2 [головний покажчик (3)]
⎜ ↳ Віртуальна ядро ​​XTEST pointer id = 4 [підлеглий покажчик (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [підлеглий покажчик (2)]
⎜ ↳ Logitech USB-PS / 2 оптична миша id = 12 [підлеглий покажчик (2)]
⎜ ↳ Пристрій об’єднання Logitech. Бездротовий PID: 4004 id = 13 [підлеглий покажчик (2)]
Id Ідентифікатор віртуальної основної клавіатури = 3 [головна клавіатура (2)]
    Id Ідентифікатор віртуальної ядра XTEST клавіатури = 5 [підлеглий клавіатура (3)]
    ↳ Кнопка живлення id = 6 [підлеглий клавіатура (3)]
    Id Ідентифікатор відео шини = 7 [підлеглий клавіатура (3)]
    ↳ Кнопка сну id = 8 [підлеглий клавіатура (3)]
    Id веб-камера Acer CrystalEye id = 9 [підлеглий клавіатура (3)]
    ↳ AT Translated Set 2 id клавіатури = 10    [підлеглий клавіатура ( 3 )]
 $ xinput float 10 
$ xinput list
⎡ віртуальний основний вказівник id = 2 [головний покажчик (3)]
⎜ ↳ Віртуальна ядро ​​XTEST pointer id = 4 [підлеглий покажчик (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [підлеглий покажчик (2)]
⎜ ↳ Logitech USB-PS / 2 оптична миша id = 12 [підлеглий покажчик (2)]
⎜ ↳ Пристрій об’єднання Logitech. Бездротовий PID: 4004 id = 13 [підлеглий покажчик (2)]
Id Ідентифікатор віртуальної основної клавіатури = 3 [головна клавіатура (2)]
    Id Ідентифікатор віртуальної ядра XTEST клавіатури = 5 [підлеглий клавіатура (3)]
    ↳ Кнопка живлення id = 6 [підлеглий клавіатура (3)]
    Id Ідентифікатор відео шини = 7 [підлеглий клавіатура (3)]
    ↳ Кнопка сну id = 8 [підлеглий клавіатура (3)]
    Id веб-камера Acer CrystalEye id = 9 [підлеглий клавіатура (3)]
∼ AT Translated Set 2 id клавіатури = 10 [плаваючий раб]
$ xinput повторно додайте 10 3 
$ xinput список
⎡ віртуальний основний вказівник id = 2 [головний покажчик (3)]
⎜ ↳ Віртуальна ядро ​​XTEST pointer id = 4 [підлеглий покажчик (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [підлеглий покажчик (2)]
⎜ ↳ Logitech USB-PS / 2 оптична миша id = 12 [підлеглий покажчик (2)]
⎜ ↳ Пристрій об’єднання Logitech. Бездротовий PID: 4004 id = 13 [підлеглий покажчик (2)]
Id Ідентифікатор віртуальної основної клавіатури = 3 [головна клавіатура (2)]
    Id Ідентифікатор віртуальної ядра XTEST клавіатури = 5 [підлеглий клавіатура (3)]
    ↳ Кнопка живлення id = 6 [підлеглий клавіатура (3)]
    Id Ідентифікатор відео шини = 7 [підлеглий клавіатура (3)]
    ↳ Кнопка сну id = 8 [підлеглий клавіатура (3)]
    Id веб-камера Acer CrystalEye id = 9 [підлеглий клавіатура (3)]
    ↳ AT Translated Set 2 id клавіатури = 10 [підлеглий клавіатура (3)]

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

2
Ви б використали reattachаргумент, щоб повторно встановити його. xinput reattach 14 3
Ігнасіо Васкес-Абрамс

1
Ідеальна відповідь - шукав і цього. будь-яка клавіша мого ноутбука перестала працювати, тому тепер тримайте над ним зовнішню клавіатуру, і вона продовжувала натискати клавішу управління, а що ні. Це виправило, спасибі!
помітнопсихіка

1
Дякую. Але після перезавантаження мого ноутбука клавіатура вмикається автоматично. Тому весь час, коли я працюю на своїй машині, я хочу зробити вищезазначені кроки, щоб відключити внутрішню клавіатуру, про яку ви згадали. Чи є можливість інвалідів постійно?
Дінеш ML

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)

[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", хоча я можу бачити, що це може перешкодити переключенню піктограм. Чи може хтось надати підказку, будь ласка?
Puffin

1
Привіт, ти маєш рацію щодо абсолютного шляху у файлі .desktop. Вибачте, але я не знаю, як зробити динамічні зміни для піктограми запуску. Відповідно до цієї відповіді, це взагалі неможливо: askubuntu.com/a/244951/458410 . Піктограма в моєму сценарії змінюється лише в сповіщеннях.
mxdsp

Ага, добре, що має сенс, і моє робить те саме, дякую.
Puffin

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

fconfig=".keyboard" if [ ! -f $fconfig ]; Ось, що таке .keyboard? І як fconfigі $fconfigтакі ж? А також що ! -f $fconfigозначає? Я новачок у сценаріїх баш. Дякую :)
sphoenix

12

Я подумав про два способи зробити це:

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

  2. Встановивши Lock-клавіатуру для дитини

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

Почавши роботу, блокування клавіатури для дитини відкриває невелике вікно, яке захоплює клавіатуру та клавіші ехо, які набираються. За замовчуванням він повідомляє, що ввести, щоб вийти ("Завершити зараз").

На відміну від заставки ваш екран не заблокований, а миша все одно частково працює, тому ви все ще можете бачити, що є на екрані - продовжуйте дивитися телевізор / відео та / або читати документ за допомогою миші для прокрутки. "

Вимоги:

· GTK> = 2.x · perl прив’язки GTK2 (perl-gtk2 або gtk2-perl залежно від вашої системи)


1
це не зовсім те, що мені потрібно, мені потрібно використовувати мою клавіатуру usb, але ваш код дуже корисний! ;)
atmon3r

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

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

"Вийди зараз", "Вийди зараз" або "Закрити зараз", або не працюй молодше 18.04.
флемур

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, отриманий від 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 #

t -час спати в секундах

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 Перекладена клавіатура 2"

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.