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

64

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

Это очень тревожно, когда я работаю.

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

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

    
задан atmon3r 07.07.2012 в 15:00
источник

10 ответов

106

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

  1. Выполните команду xinput list , чтобы отобразить свои устройства ввода.
  2. Найдите AT Translated Set 2 keyboard и учтите его номер id ; это будет использоваться для отключения клавиатуры. Также обратите внимание на число в конце, [slave keyboard (#)] ; это номер id 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)]
    
ответ дан Ignacio Vazquez-Abrams 21.08.2012 в 23:53
источник
13

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

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

Рабочийстол(Unitylauncher)

[DesktopEntry]Version=1.0Type=ApplicationName=ClavierON-OFFIcon=PATH/TO/YOUR/ICONExec=bashNAME_OF_YOUR_SCRIPT.shPath=PATH/TO/YOUR/SCRIPTNoDisplay=falseCategories=Utility;StartupNotify=falseTerminal=false

РЕЗУЛЬТАТ:

Launcher:

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

    
ответ дан mxdsp 26.12.2015 в 13:02
12

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

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

  2. Установив Lock-keyboard- для бэби

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

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

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

Требования:

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

    
ответ дан LnxSlck 21.08.2012 в 23:46
8

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

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

    
ответ дан Mitch 22.08.2012 в 13:32
5

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

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 вашего портативного компьютера.     

ответ дан Rokibul Hasan 03.10.2015 в 23:41
4

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

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

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

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

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

Я просто добавил это, потому что мне все время нравится чистить клавиатуру. Я должен перезагрузиться, поэтому я это обнаружил!

    
ответ дан Tyþë-Ø 30.03.2016 в 21:38
4

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

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

xinput disable "AT Translated Set 2 keyboard"
    
ответ дан janot 31.03.2015 в 21:43
3

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

    
ответ дан dxvxd 21.08.2012 в 20:16
0

Для чего это стоит, основываясь на предыдущих ответах и моей собственной игре, я создал следующий скрипт, который я называю 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
    
ответ дан cbp44 08.04.2018 в 05:27
-1

У меня была проблема с застрявшим ключом, есть команда где-то, что вы можете положить в терминал, и она будет автоматически отключать ее каждый раз при запуске, я не программист, и я не могу вспомнить i (я просто копирую и вставьте в терминал, я понятия не имею, как вы, ребята, знаете это, или как все вы можете придумать разные версии lol), если бы он был на монетном дворе 17, но я также знаю, что есть тот, который вы можете даже положить, чтобы он отключил его даже до входа в систему, хотя я никогда не делал этого, поскольку он более вовлечен

Но то, что я сделал, входит в настройки, клавиатуру (на монетном дворе 18 xfce вы нажимаете назад, где раньше было меню запуска, и переходите к системе, затем клавиатуре), и вы можете отключить повторные клавиши, это всего лишь коробка, которую вы снимаете вы увидите это, вам все равно придется использовать клавиатуру usb, как если бы вы использовали другую, он будет повторять оскорбительное письмо каждый другой ключ, но он отлично выполняет работу

Кстати, спасибо вам всем за то, что помогли мне с компьютерами на протяжении многих лет, кем бы вы ни были, рок, выиграли 8, а мой компьютер, как ev eryone elses, у которого был сенсорный экран ноутбука, просто не мог справиться с этим, и через ваш обсуждения здесь я продолжал идти, вы герои:)

    
ответ дан matt 06.08.2016 в 22:50