C'è un modo per disabilitare la tastiera interna di un laptop?


85

Una settimana fa, ho versato il contenuto della mia tazza sulla tastiera del mio laptop. La metà delle chiavi non funziona più, tranne una! La lettera Q che è molto attiva regolarmente.

Questo è molto inquietante mentre lavoro.

C'è un modo per disabilitare la tastiera interna di un laptop?

È possibile con xmodmap?


Che marca e modello di laptop è?
Mitch

èHP pavilion dv9000
atmon3r,

5
Il modo più semplice sarebbe quello di sollevare la tastiera e scollegarla dalla scheda madre. Puoi quindi posizionarlo di nuovo esattamente dove si trovava, senza la connessione. In questo modo la tastiera verrà disabilitata dopo la reinstallazione e non dovrai preoccuparti del software. Vedi questo link, circa a metà della pagina in cui arriva alla tastiera: insidemylaptop.com/…
Mark Paskal,

Potrebbe anche valere la pena eliminarlo,
smontarlo

Risposte:


135

È possibile utilizzare xinputper rendere mobile il dispositivo di input in X.

  1. Eseguire il comando xinput listper elencare i dispositivi di input.
  2. Individua AT Translated Set 2 keyboarde prendi nota del suo idnumero; questo sarà usato per disabilitare la tastiera. Inoltre, prendi nota del numero alla fine [slave keyboard (#)],; questo è il numero ID di master, che verrà utilizzato per riattivare la tastiera.
  3. Per disabilitare la tastiera, eseguire il comando xinput float <id#>, dove si <id#>trova il numero ID della tastiera. Ad esempio, se lo idfosse 10, il comando sarebbe xinput float 10.
  4. Per riattivare la tastiera, eseguire il comando xinput reattach <id#> <master#>, dove si mastertrova il secondo numero che abbiamo annotato. Quindi, se il numero fosse 3, lo faresti xinput reattach 10 3.

Ecco una dimostrazione:

$ xinput list
⎡ Puntatore core virtuale id = 2 [puntatore master (3)]
⎜ ↳ ID del puntatore XTEST del core virtuale = 4 [puntatore slave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [puntatore slave (2)]
⎜ ↳ ID mouse ottico Logitech USB-PS / 2 = 12 [puntatore slave (2)]
⎜ ↳ Dispositivo unificante Logitech. PID wireless: 4004 id = 13 [puntatore slave (2)]
⎣ ID tastiera core virtuale = 3 [tastiera master (2)]
    ↳ ID tastiera XTEST del core virtuale = 5 [tastiera slave (3)]
    ↳ Pulsante di accensione id = 6 [tastiera slave (3)]
    ↳ ID bus video = 7 [tastiera slave (3)]
    ↳ ID pulsante sospensione = 8 [tastiera slave (3)]
    ↳ Acer CrystalEye webcam id = 9 [tastiera slave (3)]
    ↳ AT Translated Set 2 id tastiera = 10    [tastiera slave ( 3 )]
 $ xinput float 10 
$ lista xinput
⎡ Puntatore core virtuale id = 2 [puntatore master (3)]
⎜ ↳ ID del puntatore XTEST del core virtuale = 4 [puntatore slave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [puntatore slave (2)]
⎜ ↳ ID mouse ottico Logitech USB-PS / 2 = 12 [puntatore slave (2)]
⎜ ↳ Dispositivo unificante Logitech. PID wireless: 4004 id = 13 [puntatore slave (2)]
⎣ ID tastiera core virtuale = 3 [tastiera master (2)]
    ↳ ID tastiera XTEST del core virtuale = 5 [tastiera slave (3)]
    ↳ Pulsante di accensione id = 6 [tastiera slave (3)]
    ↳ ID bus video = 7 [tastiera slave (3)]
    ↳ ID pulsante sospensione = 8 [tastiera slave (3)]
    ↳ Acer CrystalEye webcam id = 9 [tastiera slave (3)]
∼ AT Translated Set 2 id tastiera = 10 [slave mobile]
$ xinput ricollega 10 3 
$ xinput list
⎡ Puntatore core virtuale id = 2 [puntatore master (3)]
⎜ ↳ ID del puntatore XTEST del core virtuale = 4 [puntatore slave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [puntatore slave (2)]
⎜ ↳ ID mouse ottico Logitech USB-PS / 2 = 12 [puntatore slave (2)]
⎜ ↳ Dispositivo unificante Logitech. PID wireless: 4004 id = 13 [puntatore slave (2)]
⎣ ID tastiera core virtuale = 3 [tastiera master (2)]
    ↳ ID tastiera XTEST del core virtuale = 5 [tastiera slave (3)]
    ↳ Pulsante di accensione id = 6 [tastiera slave (3)]
    ↳ ID bus video = 7 [tastiera slave (3)]
    ↳ ID pulsante sospensione = 8 [tastiera slave (3)]
    ↳ Acer CrystalEye webcam id = 9 [tastiera slave (3)]
    ↳ AT Translated Set 2 id tastiera = 10 [tastiera slave (3)]

Sono interessato a questa soluzione! il mio xinput pastebin.com/puDxQaZ8 quindi immagino che sarebbe: xinput float 14questa query è reversibile? come abilitare la tastiera dopo questo?
atmon3r

2
Utilizzeresti l' reattachargomento per ricollegarlo. xinput reattach 14 3
Ignacio Vazquez-Abrams,

1
Risposta perfetta - cercavo anche questo. nessuno dei tasti sul mio laptop ha smesso di funzionare, quindi ora tieni sopra una tastiera esterna e continua a premere il tasto di controllo e cosa no. Questo ha risolto il problema, grazie!
particolare

1
Grazie. Ma dopo aver riavviato il mio laptop, la tastiera si attiva automaticamente. Quindi, sempre quando lavoro sul mio computer, voglio fare i passaggi precedenti per disabilitare la tastiera interna che hai citato. Esistono possibilità di disabilitazione permanente?
Dinesh ML,

2
Xinput disabilita / abilita non farebbe la stessa cosa?
SomeNickName

18

Ecco un piccolo pulsante per abilitare e disabilitare una tastiera specifica. Innanzitutto, devi trovare il tuo ID tastiera con xinputo xinput-list.

Script Bash per abilitare / disabilitare la tastiera

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

Configurazione

  • Iconcome percorso dell'icona da visualizzare quando si abilita (ad esempio, /home/user/path/icon.png)
  • Icoff come percorso dell'icona da visualizzare durante la disabilitazione
  • Ho usato le seguenti icone: inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

  • idcome id tastiera (trovato con xinput)

  • fconfigpercorso del file di configurazione. Cambia se desideri creare un file di configurazione in un'altra directory

Non provare a eseguire lo script se non puoi eseguirlo di nuovo senza l'uso della tastiera (a meno che tu non abbia un'altra tastiera ovviamente). Crea il seguente launcher (in home/user/.local/share/applications) e aggiungilo all'unità:

Voce desktop (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

RISULTATO:

Launcher:

inserisci qui la descrizione dell'immagine

notifiche:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


Funziona bene, grazie per averlo spiegato chiaramente. C'è una cosa che non capisco: come modificare l'icona in base alla logica dello script della shell. Penso che questo sia determinato in parte da "Icona = PERCORSO / TO / YOUR / ICON" nella voce Desktop, ho usato un percorso assoluto, "/home/.../icon_on.png" poiché non so come altrimenti per usare un file ".desktop" anche se vedo che ciò potrebbe impedirne il cambio di icone. Qualcuno potrebbe fornire un indizio per favore?
Puffin,

1
Ciao, hai ragione sul percorso assoluto nel file .desktop. Scusa ma non so come apportare modifiche dinamiche a un'icona di avvio. Secondo tale risposta, non è affatto possibile: askubuntu.com/a/244951/458410 . L'icona nel mio script cambia solo nelle notifiche.
mxdsp,

Ah ah, ok ha senso, il mio fa lo stesso, grazie.
Puffin,

Un possibile miglioramento: invece di memorizzare lo stato in un file è possibile controllare direttamente se la tastiera è disabilitato con questo comando: function is-disabled() { xinput --list --long | grep -A 1 "id=$1" | grep -q disabled }. In questo modo tutto funziona anche se la tastiera è abilitata / disabilitata da un altro programma.
pastore,

fconfig=".keyboard" if [ ! -f $fconfig ]; Ecco cos'è .keyboard? E il sia il fconfige $fconfigsono gli stessi? E anche cosa ! -f $fconfigsignifica? Sono nuovo di scripting bash. Grazie :)
sphoenix,

12

Ho pensato a 2 modi per farlo:

  1. Configurando un modello sbagliato per la tastiera del tuo laptop in xorg.conf?

  2. Installando Lock-keyboard-for-Baby

`Lock-keyboard-for-Baby o lk4b in breve, è un piccolo programma che blocca la tastiera ma lascia il mouse libero. L'ho scritto perché a mia nipote piace battere la tastiera ogni volta che mi vede sedermi. I tasti digitati su una tastiera possono avere conseguenze disastrose e non volevo bloccare il mio schermo tutto il tempo con uno screensaver.

Una volta avviato, lock-keyboard-for-baby apre una piccola finestra che afferra la tastiera ed i tasti echos che vengono digitati. Per impostazione predefinita, ti dice cosa digitare per uscire ("Esci adesso").

A differenza di uno screensaver, lo schermo non è bloccato e il mouse funziona ancora parzialmente, quindi puoi ancora vedere cosa c'è sullo schermo: continua a guardare la TV / video e / o leggi un documento usando il mouse per scorrere.

Requisiti:

· GTK> = 2.x · perl Collegamenti GTK2 (perl-gtk2 o gtk2-perl a seconda del sistema)


1
questo non è esattamente ciò di cui ho bisogno, ho bisogno di usare la mia tastiera usb, ma il tuo codice è molto utile! ;)
atmon3r

Lock-keyboard-for-Baby ti permetterà di disabilitare la tastiera interna mentre mantieni l'uso
dell'esterno

Brillante. Lock-Keyboard-For-Baby funziona anche in Ubuntu 16.04. Preferisco programmare usando penna e quaderno mantenendolo sulla tastiera. Questa piccola utility ha risolto il mio problema. Per altri, potrebbe essere necessario eseguire sudo apt-get install libgtk2-perl prima di eseguire lo script perl
mac

"Esci adesso", Esci adesso o esci ora non funziona con 18.04 con la tastiera USB desktop tower.
fleamour

10

Un modo sicuro per disabilitarlo è quello di scollegare il cavo di segnale. È necessario far apparire la tastiera per quello. Per informazioni su come eseguire questa operazione, consultare la Guida alla manutenzione e all'assistenza per i notebook HP Pavilion dv9000 e dv9200 .

Ora c'è un modo per disabilitare la tastiera usando xinput. Per farlo, premi Ctrl+ Alt+ Tsulla tastiera per aprire Terminale. Quando si apre, esegui i comandi seguenti.

Per elencare i dispositivi la tua X

xinput --list

Per disabilitare la tastiera:

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

Per abilitare nuovamente la tastiera:

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

Se viene visualizzato un errore relativo alle autorizzazioni, utilizzare i comandi sopra con sudo.


5

Il dispositivo idricevuto da xinput listcome suggerito nella risposta accettata a volte viene in qualche modo modificato al riavvio (almeno sul mio PC), con conseguente disabilitazione del dispositivo errato.

Ecco perché ho finito di utilizzare device nameinvece di id, ad esempio:

xinput disable "AT Translated Set 2 keyboard"

5

Per disabilitare permanentemente la tastiera interna del laptop Su Ubuntu, è necessario passare questi i8042.nokbdparametri del kernel per non controllare / creare la porta della tastiera

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

Apri il terminale ed esegui il seguente comando

$sudo gedit /etc/default/grub

Prova a trovare la seguente riga

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Aggiungi parametro i8042.nokbd, la riga sopra dovrebbe essere simile a questa

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nokbd"

Aggiorna grub come il seguente comando

$sudo update-grub     

Quindi il reboottuo computer portatile.


Come riattivare la tastiera?
Guilherme Parreira,

4

Se dovessi pulire la tastiera e per questo avrei sempre dovuto spegnere la macchina. Di conseguenza l'ho scoperto, per disabilitare temporaneamente la tastiera:

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

t -time per dormire in pochi secondi

id # e master # come menzionato sopra ( inizio pagina )

ad esempio sul mio taccuino ho scritto:

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

3

Prova a correre xmodmap -e 'keycode 24='per disabilitare solo il tasto Q. Se funziona, puoi aggiungerlo al tuo file ~/.bashrco al tuo /etc/bash.bashrcfile globale . Ho avuto questa idea da qui , che mostra tutte le mappature dei tasti.


4
Questo non disabiliterebbe anche qnella tastiera esterna?
Sparhawk,

2

Per quello che vale, in base alle risposte precedenti e al mio modo di suonare, ho creato il seguente script, che chiamo toggle_keyboard.she inserisco nel mio ~/binpercorso. Ho una scorciatoia da tastiera che la esegue impostata su CtrlWinK.

Alcuni problemi con le risposte precedenti e i vantaggi della mia sceneggiatura:

  • Affidarsi a un numero ID con xinput non riesce quando si riavvia e il numero ID viene modificato. Questo mi è successo mentre correvo xinput float 13. Ho finito per disabilitare l'hardware sbagliato.
  • Fare affidamento su un file per contenere lo stato abilitato / disabilitato non funzionerà anche al riavvio. Il file ti dirà che la tastiera è disabilitata (se l'hai disabilitata con lo script), ma dopo un riavvio verrà nuovamente abilitata. La mia soluzione ottiene le informazioni abilitate / disabilitate da un comando xinput analizzato.
  • Il mio script funzionerà con qualsiasi dispositivo xinput visualizzato durante la digitazione xinput list --name-only. Basta ottenere il nome e modificare le prime quattro variabili. Lo uso per la tastiera del mio laptop, la webcam, il monitor touchscreen e alcune altre cose che uso solo una volta ogni tanto.

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

float xinput "Tastiera con set di traduttori 2"

Dopo aver trascorso ore negli anni con metodi diversi con distro e rilasci diversi. Il comando del terminale sopra è ciò su cui mi affido dopo i problemi ..... Lo uso ora con plasma al neon e lo stavo usando un mese fa in Ubuntu 18.04. (deve essere applicato dopo il riavvio - può essere posizionato all'avvio) * La tastiera integrata sul mio computer portatile HP è danneggiata e inizia a digitare causando seri problemi - Uso una tastiera e un mouse wireless - Il touchpad è acceso / spento come parte della barra superiore di KDE opzioni - neon / plasma 5). Nelle impostazioni di sistema / avvio automatico Un file di testo con la seguente riga di codice viene salvato come file .sh e impostato come eseguibile (proprietà file txt)
xinput float "AT Translated Set 2 tastiera"

Al file di testo viene assegnato un nome> keyboardoff> e inserito in avvio automatico (eseguibile) Quando si riavvia / avvia il sistema> la tastiera integrata viene disattivata. (utilizzare l'elenco xinput per testare)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.