¿Hay alguna manera de deshabilitar el teclado interno de una computadora portátil?

85

Hace una semana, derramé el contenido de mi taza en el teclado de mi computadora portátil. La mitad de las teclas ya no funcionan, ¡excepto una! La letra Q que está muy activa regularmente.

Esto es muy perturbador mientras trabajo.

¿Hay alguna manera de desactivar el teclado interno de una computadora portátil?

¿Es posible con xmodmap?

atmon3r
fuente
¿Qué marca y modelo de computadora portátil es?
Mitch
esHP pavilion dv9000
atmon3r
55
La forma más directa sería levantar el teclado y desconectarlo de la placa base. Luego puede volver a colocarlo donde estaba, sin la conexión. De esta manera, el teclado se deshabilitará después de la reinstalación y no tendrá que molestarse con el software. Vea este enlace, aproximadamente a la mitad de la página donde llega al teclado: insidemylaptop.com/…
Mark Paskal
También podría valer la pena sacarlo, desarmarlo, una limpieza entre las capas ...
JonasCz dice Reinstate Monica

Respuestas:

135

Puede usar xinputpara flotar el dispositivo de entrada debajo de X.

  1. Ejecute el comando xinput listpara enumerar sus dispositivos de entrada.
  2. Localice AT Translated Set 2 keyboardy tome nota de su idnúmero; esto se usará para deshabilitar el teclado. Además, tome nota del número al final [slave keyboard (#)]; Este es el número de identificación del master, que se utilizará para volver a habilitar su teclado.
  3. Para deshabilitar el teclado, ejecute el comando xinput float <id#>, donde <id#>está el número de identificación de su teclado. Por ejemplo, si idera 10, entonces el comando sería xinput float 10.
  4. Para volver a habilitar el teclado, ejecute el comando xinput reattach <id#> <master#>, ¿dónde masterestá ese segundo número que anotamos? Entonces, si el número fuera 3, lo harías xinput reattach 10 3.

Aquí hay una demostración:

$ xinput list
Id Id. Del puntero del núcleo virtual = 2 [puntero maestro (3)]
⎜ ↳ ID de puntero XTEST de núcleo virtual = 4 [puntero esclavo (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [puntero esclavo (2)]
⎜ ↳ Logitech USB-PS / 2 Optical Mouse id = 12 [puntero esclavo (2)]
⎜ ↳ Dispositivo unificador Logitech. PID inalámbrico: 4004 id = 13 [puntero esclavo (2)]
⎣ Id. Del teclado del núcleo virtual = 3 [teclado maestro (2)]
    Id Id. Del teclado XTEST del núcleo virtual = 5 [teclado esclavo (3)]
    Id ID del botón de encendido = 6 [teclado esclavo (3)]
    Id Identificación del bus de video = 7 [teclado esclavo (3)]
    ↳ ID del botón de reposo = 8 [teclado esclavo (3)]
    ↳ ID de la cámara web Acer CrystalEye = 9 [teclado esclavo (3)]
    ↳ AT Translated Set 2 id de teclado = 10    [teclado esclavo ( 3 )]
 $ xinput float 10 
$ xinput list
Id Id. Del puntero del núcleo virtual = 2 [puntero maestro (3)]
⎜ ↳ ID de puntero XTEST de núcleo virtual = 4 [puntero esclavo (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [puntero esclavo (2)]
⎜ ↳ Logitech USB-PS / 2 Optical Mouse id = 12 [puntero esclavo (2)]
⎜ ↳ Dispositivo unificador Logitech. PID inalámbrico: 4004 id = 13 [puntero esclavo (2)]
⎣ Id. Del teclado del núcleo virtual = 3 [teclado maestro (2)]
    Id Id. Del teclado XTEST del núcleo virtual = 5 [teclado esclavo (3)]
    Id ID del botón de encendido = 6 [teclado esclavo (3)]
    Id Identificación del bus de video = 7 [teclado esclavo (3)]
    ↳ ID del botón de reposo = 8 [teclado esclavo (3)]
    ↳ ID de la cámara web Acer CrystalEye = 9 [teclado esclavo (3)]
∼ AT Translated Set 2 id de teclado = 10 [esclavo flotante]
$ xinput reattach 10 3 
$ xinput list
Id Id. Del puntero del núcleo virtual = 2 [puntero maestro (3)]
⎜ ↳ ID de puntero XTEST de núcleo virtual = 4 [puntero esclavo (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [puntero esclavo (2)]
⎜ ↳ Logitech USB-PS / 2 Optical Mouse id = 12 [puntero esclavo (2)]
⎜ ↳ Dispositivo unificador Logitech. PID inalámbrico: 4004 id = 13 [puntero esclavo (2)]
⎣ Id. Del teclado del núcleo virtual = 3 [teclado maestro (2)]
    Id Id. Del teclado XTEST del núcleo virtual = 5 [teclado esclavo (3)]
    Id ID del botón de encendido = 6 [teclado esclavo (3)]
    Id Identificación del bus de video = 7 [teclado esclavo (3)]
    ↳ ID del botón de reposo = 8 [teclado esclavo (3)]
    ↳ ID de la cámara web Acer CrystalEye = 9 [teclado esclavo (3)]
    ↳ AT Translated Set 2 keyboard id = 10 [teclado esclavo (3)]
Ignacio Vazquez-Abrams
fuente
¡Me interesa esta solución! mi xinput pastebin.com/puDxQaZ8, así que supongo que sería: ¿ xinput float 14Esta consulta es reversible? ¿Cómo habilitar el teclado después de esto?
atmon3r
2
Usaría el reattachargumento para volver a conectarlo. xinput reattach 14 3
Ignacio Vazquez-Abrams
1
Respuesta perfecta: estaba buscando esto también. cualquiera de las teclas de mi computadora portátil dejó de funcionar, así que ahora mantén un teclado externo sobre ella y sigue presionando la tecla de control y lo que no. Esto lo solucionó, ¡gracias!
notablemente tipips
1
Gracias. Pero después de reiniciar mi computadora portátil, el teclado se habilita automáticamente. Entonces, todo el tiempo cuando estoy en mi máquina, quiero hacer los pasos anteriores para deshabilitar el teclado interno que ha mencionado. ¿Hay alguna posibilidad de discapacidad permanente?
Dinesh ML
2
¿No haría xinput desactivar / activar hacer lo mismo?
SomeNickName
18

Aquí hay un pequeño botón para activar y desactivar un teclado específico. Primero, debes encontrar la identificación de tu teclado con xinputo xinput-list.

Bash script para habilitar / deshabilitar el teclado

#!/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

Configuración

  • Iconcomo la ruta del icono que se mostrará al habilitar (por ejemplo /home/user/path/icon.png)
  • Icoff como la ruta del icono para mostrar al deshabilitar
  • Usé los siguientes íconos: ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

  • idcomo la identificación del teclado (lo encontré con xinput)

  • fconfigruta al archivo de configuración. Cambie si desea crear un archivo de configuración en otro directorio

No intente ejecutar el script si no puede ejecutarlo nuevamente sin el uso de su teclado (a menos que tenga otro teclado, por supuesto). Cree el siguiente iniciador (in home/user/.local/share/applications) y agréguelo a la unidad:

Entrada de escritorio (iniciador de 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

RESULTADO:

Lanzacohetes:

ingrese la descripción de la imagen aquí

Notificaciones:

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

mxdsp
fuente
Esto funciona bien, gracias por explicarlo claramente. Hay una cosa que no entiendo: cómo hacer que el icono cambie de acuerdo con la lógica del script de shell. Creo que esto determinado en parte por "Icon = PATH / TO / YOUR / ICON" en la entrada del escritorio, he usado una ruta absoluta, "/home/.../icon_on.png" ya que no sé cómo más usar un archivo ".desktop", aunque puedo ver que esto puede evitar que cambie de iconos. ¿Alguien podría dar una pista por favor?
Puffin
1
Hola, tienes razón sobre la ruta absoluta en el archivo .desktop. Lo sentimos, pero no sé cómo hacer cambios dinámicos para un ícono de inicio. Según esa respuesta, no es posible en absoluto: askubuntu.com/a/244951/458410 . El icono en mi script cambia solo en notificaciones.
mxdsp
Ah ja, ok eso tiene sentido, el mío hace lo mismo, gracias.
Puffin
Una posible mejora: en lugar de almacenar en un archivo de estado se puede comprobar directamente si el teclado se desactiva con el siguiente comando: function is-disabled() { xinput --list --long | grep -A 1 "id=$1" | grep -q disabled }. De esa manera, todo funciona incluso si el teclado está habilitado / deshabilitado por otro programa.
dshepherd
fconfig=".keyboard" if [ ! -f $fconfig ]; En este caso, ¿cuál es .keyboard? Y la tanto la fconfigy $fconfigson iguales? ¿Y también qué ! -f $fconfigsignifica? Soy nuevo en bash scripting. Gracias :)
sphoenix
12

Pensé en 2 formas en que puedes hacer esto:

  1. Al configurar un modelo incorrecto para el teclado de su computadora portátil en xorg.conf?

  2. Al instalar Lock-keyboard-for-Baby

`Lock-keyboard-for-Baby o lk4b en resumen, es un pequeño programa que bloquea el teclado pero deja el mouse libre. Lo escribí porque a mi sobrina le gusta golpear mi teclado cada vez que me ve sentado. Las teclas escritas en un teclado pueden tener consecuencias desastrosas y no quería bloquear mi pantalla todo el tiempo con un protector de pantalla.

Cuando se inicia, lock-keyboard-for-baby abre una pequeña ventana que agarra el teclado y las teclas de eco que se escriben. De forma predeterminada, le indica qué escribir para salir ("Salir ahora").

A diferencia de un protector de pantalla, su pantalla no está bloqueada y el mouse todavía funciona parcialmente, por lo que aún puede ver lo que está en su pantalla: siga viendo televisión / video y / o lea un documento usando el mouse para desplazarse.

Requisitos:

· GTK> = 2.x · enlaces GTK2 perl (perl-gtk2 o gtk2-perl dependiendo de su sistema)

LnxSlck
fuente
1
esto no es exactamente lo que necesito, necesito usar mi teclado usb, ¡pero su código es muy útil! ;)
atmon3r
Lock-keyboard-for-Baby le permitirá deshabilitar su teclado interno mientras mantiene el uso del externo
LnxSlck
Brillante. Lock-Keyboard-For-Baby también funciona en Ubuntu 16.04. Prefiero codificar con bolígrafo y papel, manteniéndolo en el teclado. Esta pequeña utilidad resolvió mi problema. Para otros, es posible que deba ejecutar sudo apt-get install libgtk2-perl antes de ejecutar el script perl
mac
"Salir ahora", Salir ahora o salir ahora no funciona bajo 18.04 con el teclado USB de torre de escritorio.
fleamour
10

Una forma segura de desactivarlo es desconectar el cable de señal. Necesitas abrir el teclado para eso. Para obtener información sobre cómo hacerlo, consulte la Guía de mantenimiento y servicio para las notebooks HP Pavilion dv9000 y dv9200 .

Ahora hay una manera de deshabilitar el teclado usando xinput. Para hacer eso, simplemente presione Ctrl+ Alt+ Ten su teclado para abrir Terminal. Cuando se abra, ejecute los siguientes comandos.

Para enumerar los dispositivos su X

xinput --list

Para deshabilitar el teclado:

xinput set-int-prop 2 "Device Enabled" 8 0

Para habilitar el teclado nuevamente:

xinput set-int-prop 2 "Device Enabled" 8 1

Si obtiene un error sobre los permisos, use los comandos anteriores con sudo.

Mitch
fuente
5

Los dispositivos idrecibidos de xinput listacuerdo con lo sugerido en la respuesta aceptada a veces se cambian de alguna manera al reiniciar (al menos en mi PC) lo que resultó en la desactivación del dispositivo incorrecto.

Es por eso que terminé de usar en device namelugar de id, por ejemplo:

xinput disable "AT Translated Set 2 keyboard"
janot
fuente
5

Para deshabilitar el teclado interno de la computadora portátil permanentemente en Ubuntu, necesita pasar estos i8042.nokbdparámetros del kernel para no verificar / crear el puerto del teclado

i8042.nokbd [HW] Don't check/create keyboard port

Abra la terminal y ejecute el siguiente comando

$sudo gedit /etc/default/grub

Intenta encontrar la siguiente línea

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Agregar parámetro i8042.nokbd, la línea anterior debería verse así

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nokbd"

Actualizar grub como el siguiente comando

$sudo update-grub     

Entonces reboottu computadora portátil.

Rokibul Hasan
fuente
¿Cómo habilitaría nuevamente mi teclado?
Guilherme Parreira
4

Si tuviera que limpiar el teclado y por eso siempre tenía que apagar la máquina. En consecuencia, descubrí esto, para desactivar temporalmente el teclado:

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

t-hora de dormir en segundos

id # y master # como se mencionó anteriormente ( parte superior de la página )

Por ejemplo, en mi cuaderno escribí:

$ xinput float 11;sleep 5;xinput reattach 11 3
Tyþë-Ø
fuente
3

Intente ejecutar xmodmap -e 'keycode 24='para deshabilitar solo la tecla Q. Si eso funciona, puede agregarlo a su archivo ~/.bashrcglobal o /etc/bash.bashrc. Tengo esta idea de aquí , que muestra todas las asignaciones de teclas.

dxvxd
fuente
44
¿No se deshabilitaría esto también qen el teclado externo?
Sparhawk
2

Por lo que vale, según las respuestas anteriores y mi propio juego, creé el siguiente script, que llamo toggle_keyboard.shy coloco en mi ~/bincamino. Tengo un método abreviado de teclado que lo ejecuta configurado CtrlWinK.

Algunos problemas con las respuestas anteriores y el beneficio de mi script:

  • Confiar en un número de identificación con xinput falla cuando reinicia y se cambia el número de identificación. Esto me sucedió cuando corría xinput float 13. Terminé desactivando el hardware incorrecto.
  • Confiar en un archivo para mantener el estado habilitado / deshabilitado fallará si reinicia también. El archivo le indicará que el teclado está deshabilitado (si lo deshabilitó con el script), pero después de reiniciar, volverá a habilitarse. Mi solución obtiene la información habilitada / deshabilitada de un comando xinput analizado.
  • Mi script funcionará con cualquier dispositivo xinput que aparezca cuando escriba xinput list --name-only. Simplemente obtenga el nombre y edite las cuatro principales variables. Lo uso para el teclado de mi computadora portátil, cámara web, monitor de pantalla táctil y algunas otras cosas que uso solo de vez en cuando.

#!/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
fuente
0

flotador de entrada "Teclado AT Translated Set 2"

Después de pasar horas durante años con diferentes métodos con diferentes distribuciones y lanzamientos. El comando de terminal anterior es en lo que confío después de los problemas ..... Lo uso ahora con plasma de neón y lo estaba usando hace un mes en ubuntu directo 18.04. (se debe aplicar después del reinicio, se puede colocar en el inicio) * Mi teclado integrado en mi computadora portátil HP está dañado y comienza a escribir, lo que causa serios problemas - Uso un teclado y mouse inalámbricos - el panel táctil está activado / desactivado como parte de la barra superior de KDE opciones - neón / plasma 5). En la configuración del sistema / inicio automático Un archivo de texto con la siguiente línea de código se guarda como un archivo .sh y se configura como ejecutable (propiedades de los archivos txt)
xinput float "AT Translated Set 2 keyboard"

El archivo de texto recibe un nombre> teclado apagado> y se coloca en inicio automático (ejecutable) Cuando reinicia / inicia el sistema> el teclado incorporado está apagado. (use la lista xinput para probar)

Duncan Williams
fuente