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

62

Una settimana fa, ho versato il contenuto della mia tazza sulla tastiera del mio portatile. La metà dei tasti non funziona più, tranne uno! 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 ?

    
posta atmon3r 07.07.2012 - 15:00

10 risposte

103

Puoi usare xinput per far fluttuare il dispositivo di input sotto X.

  1. Esegui il comando xinput list per elencare i tuoi dispositivi di input.
  2. Trova AT Translated Set 2 keyboard e prendi nota del suo id numero; 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, esegui il comando xinput float <id#> , dove <id#> è il numero identificativo della tastiera. Ad esempio, se id era 10 , il comando sarebbe xinput float 10 .
  4. Per riattivare la tastiera, eseguire il comando xinput reattach <id#> <master#> , dove master è il secondo numero annotato. Quindi se il numero era 3 , si farebbe xinput reattach 10 3 .

Ecco una dimostrazione:

$ 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)]
    
risposta data Ignacio Vazquez-Abrams 21.08.2012 - 23:53
12

Ho pensato a 2 modi in cui puoi farlo:

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

  2. Installando Lock-keyboard- per-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 scappare via alla mia tastiera ogni volta che mi vede sedermi. Le chiavi digitate su una tastiera possono avere conseguenze disastrose e non volevo bloccare lo schermo tutto il tempo con uno screensaver.

Quando viene avviato, lock-keyboard-for-baby apre una piccola finestra che afferra la tastiera e i tasti di echos che sono stati digitati. Per impostazione predefinita, ti dice cosa digitare per uscire ("Esci ora").

A differenza di un salvaschermo, 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 leggere un documento usando il mouse per scorrere. '

Requisiti:

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

    
risposta data LnxSlck 21.08.2012 - 23:46
12

Ecco un piccolo pulsante per attivare e disattivare una tastiera specifica. Innanzitutto, devi trovare l'ID della tastiera con xinput o 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

  • Icon come percorso dell'icona da visualizzare quando si attiva (ad esempio, /home/user/path/icon.png )
  • Icoff come percorso dell'icona da visualizzare quando si disabilita
  • Ho usato le seguenti icone:

  • id come ID della tastiera (trovato con xinput )

  • fconfig percorso al file di configurazione. Cambia se vuoi creare il file di configurazione in un'altra directory

Non provare a eseguire lo script se non riesci a eseguirlo di nuovo senza utilizzare la tastiera (a meno che tu non abbia un'altra tastiera ovviamente). Crea il seguente launcher (in home/user/.local/share/applications ) e aggiungilo a unity:

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:

Notifiche:

    
risposta data mxdsp 26.12.2015 - 13:02
8

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

Ora c'è un modo per disabilitare la tastiera usando xinput . Per farlo, basta premere Ctrl + Alt + T sulla tastiera per aprire Terminal. Quando si apre, esegui i comandi di seguito.

Per elencare i dispositivi su X

xinput --list

Per disabilitare la tastiera:

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

Per riattivare la tastiera:

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

Se ricevi un errore sulle autorizzazioni, utilizza i comandi sopra con sudo .

    
risposta data Mitch 22.08.2012 - 13:32
5

Per disabilitare permanentemente la tastiera interna del portatile su Ubuntu, è necessario passare questo i8042.nokbd parametri del kernel per non controllare / creare la porta 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 reboot del tuo computer portatile.

    
risposta data Rokibul Hasan 03.10.2015 - 23:41
4

Il dispositivo id ricevuto da xinput list come suggerito nella risposta accettata a volte è in qualche modo modificato al riavvio ( almeno sul mio PC) che ha portato alla disabilitazione del dispositivo sbagliato.

Ecco perché ho terminato di utilizzare device name anziché id , ad esempio:

xinput disable "AT Translated Set 2 keyboard"
    
risposta data janot 31.03.2015 - 21:43
4

Ad esempio per disattivare temporaneamente la tastiera per la pulizia:

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

t -time to sleep in secondi

id # e master # come menzionato sopra (sopra) , ad esempio sul mio notebook :

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

L'ho appena aggiunto perché mi piace pulire la tastiera tutto il tempo. Devo riavviare, quindi lo scopro!

    
risposta data Tyþë-Ø 30.03.2016 - 21:38
3

Prova a eseguire xmodmap -e 'keycode 24=' per disabilitare solo il tasto Q. Se funziona, puoi aggiungerlo al tuo file ~/.bashrc o globale /etc/bash.bashrc . Ho avuto questa idea da qui , che mostra tutti i mapping dei tasti.

    
risposta data dxvxd 21.08.2012 - 20:16
0

Per quello che vale, in base alle risposte precedenti e al mio modo di giocare, ho creato il seguente script, che chiamo toggle_keyboard.sh e posto nel mio percorso ~/bin . Ho una scorciatoia da tastiera che la esegue impostata su Ctrl Win K .

Alcuni problemi con le risposte precedenti e i vantaggi del mio script:

  • Affidarsi a un numero ID con xinput non riesce quando si riavvia e il numero ID viene modificato. Mi è successo quando ho eseguito xinput float 13 . Ho finito per disabilitare l'hardware sbagliato.
  • Affidarsi a un file per mantenere lo stato abilitato / disabilitato non funzionerà se si riavvia pure. Il file ti dirà che la tastiera è disabilitata (se la hai disabilitata con lo script), ma dopo un riavvio sarà di nuovo abilitata. La mia soluzione ottiene le informazioni abilitate / disabilitate da un comando xinput analizzato.
  • Il mio script funzionerà con qualsiasi dispositivo xinput che compare quando digiti xinput list --name-only . Basta prendere 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" 
}

function notify_change() {
        if [ -f "" ]; then
                notify-send --urgency=low --icon="" ""
        else
                notify-send --urgency=low ""
        fi
}

# Returns 1 if device is enabled, 0 if disabled
is_enabled=$(xinput list-props "$DEVICE_NAME" | grep "Device Enabled" | awk '{ print  }' | 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
    
risposta data cbp44 08.04.2018 - 05:27
-1

Ho avuto un problema con una chiave bloccata, c'è un comando da qualche parte che puoi inserire nel terminale e lo disabiliterà automaticamente ogni volta all'avvio, non sono programmatore e non riesco a ricordare i (copio e incolli nel terminale, non ho idea di come voi ragazzi sappiate questa roba, o di come tutti voi potete inventare diverse versioni lol), ce l'avevo alla menta 17, ma so anche che ce n'è una che si può anche inserire in modo da disabilitarla anche prima di accedere, anche se non l'ho mai fatto in quanto è più coinvolto

Ma quello che ho fatto, è andare nelle impostazioni, tastiera (su mint 18 xfce si fa clic indietro dove era il menu di avvio e andare al sistema e poi tastiera) e si può disabilitare i tasti di ripetizione, è solo una casella deseleziona lo vedrai, dovrai ancora usare la tua tastiera usb come se usassi l'altra, ridicherebbe la lettera incriminata ogni altra chiave, ma funziona perfettamente

A proposito, grazie a tutti per avermi aiutato con i computer nel corso degli anni chiunque tu sia, tu rock, hai vinto 8 e il mio computer come tutti gli altri che aveva un touchscreen per notebook non ce l'ha fatta, e attraverso il tuo discussioni su qui ho continuato, tu sei un eroe:)

    
risposta data matt 06.08.2016 - 22:50

Leggi altre domande sui tag