Existe-t-il un moyen de désactiver le clavier interne d'un ordinateur portable?

85

Il y a une semaine, j'ai renversé le contenu de ma tasse sur le clavier de mon ordinateur portable. La moitié des clés ne fonctionnent plus, sauf une! La lettre Q qui est très active régulièrement.

C'est très dérangeant pendant que je travaille.

Existe-t-il un moyen de désactiver le clavier interne d'un ordinateur portable?

Est-ce possible avec xmodmap?

atmon3r
la source
De quelle marque et de quel modèle s'agit-il?
Mitch
c'estHP pavilion dv9000
atmon3r
5
Le moyen le plus simple consiste à soulever le clavier et à le déconnecter de la carte mère. Vous pouvez ensuite le replacer là où il était, sans la connexion. De cette façon, le clavier sera désactivé après les réinstallations et vous ne devrez plus vous soucier des logiciels. Voir ce lien, à peu près au milieu de la page où se trouve le clavier: insidemylaptop.com/…
Mark Paskal
Cela pourrait également valoir la peine de le sortir, de le démonter, de nettoyer entre les couches ..
JonasCz dit Réintégrer Monica

Réponses:

135

Vous pouvez utiliser xinputpour faire flotter le périphérique d'entrée sous X.

  1. Exécutez la commande xinput listpour répertorier vos périphériques d'entrée.
  2. Localisez AT Translated Set 2 keyboardet notez son idnuméro. ceci sera utilisé pour désactiver le clavier. Aussi, prenez note du numéro à la fin, [slave keyboard (#)]; c'est le numéro d'identification du master, qui sera utilisé pour réactiver votre clavier.
  3. Pour désactiver le clavier, exécutez la commande xinput float <id#>, où <id#>est le numéro d'identification de votre clavier. Par exemple, si idétait 10, alors la commande serait xinput float 10.
  4. Pour réactiver le clavier, exécutez la commande xinput reattach <id#> <master#>, où masterest ce deuxième numéro noté. Donc, si le nombre était 3, vous feriez xinput reattach 10 3.

Voici une démonstration:

liste $ xinput
⎡ Pointeur de noyau virtuel id = 2 [pointeur principal (3)]
⎜ ↳ Pointeur XTEST central virtuel id = 4 [pointeur esclave (2)]
PS ↳ SynPS / 2 Synaptics TouchPad id = 11 [pointeur esclave (2)]
Mouse ↳ Souris optique USB-PS / 2 Logitech id = 12 [pointeur esclave (2)]
Device ↳ Logitech Unifying Device. PID sans fil: 4004 id = 13 [pointeur esclave (2)]
⎣ Identifiant de clavier virtuel = 3 [clavier maître (2)]
    ↳ Identifiant de clavier XTEST de base virtuelle = 5 [clavier esclave (3)]
    Button Bouton d'alimentation id = 6 [clavier esclave (3)]
    ↳ ID du bus vidéo = 7 [clavier esclave (3)]
    Button Bouton Veille id = 8 [clavier esclave (3)]
    ↳ Webcam id Acer CrystalEye = 9 [clavier esclave (3)]
    ↳ AT Translated Set 2 ID clavier = 10    [clavier esclave ( 3 )]
 $ xinput float 10 
$ xinput list
⎡ Pointeur de noyau virtuel id = 2 [pointeur principal (3)]
⎜ ↳ Pointeur XTEST central virtuel id = 4 [pointeur esclave (2)]
PS ↳ SynPS / 2 Synaptics TouchPad id = 11 [pointeur esclave (2)]
Mouse ↳ Souris optique USB-PS / 2 Logitech id = 12 [pointeur esclave (2)]
Device ↳ Logitech Unifying Device. PID sans fil: 4004 id = 13 [pointeur esclave (2)]
⎣ Identifiant de clavier virtuel = 3 [clavier maître (2)]
    ↳ Identifiant de clavier XTEST de base virtuelle = 5 [clavier esclave (3)]
    Button Bouton d'alimentation id = 6 [clavier esclave (3)]
    ↳ ID du bus vidéo = 7 [clavier esclave (3)]
    Button Bouton Veille id = 8 [clavier esclave (3)]
    ↳ Webcam id Acer CrystalEye = 9 [clavier esclave (3)]
∼ AT Translated Set 2 ID clavier = 10 [esclave flottant]
$ xinput réattache 10 3 
$ liste xinput
⎡ Pointeur de noyau virtuel id = 2 [pointeur principal (3)]
⎜ ↳ Pointeur XTEST central virtuel id = 4 [pointeur esclave (2)]
PS ↳ SynPS / 2 Synaptics TouchPad id = 11 [pointeur esclave (2)]
Mouse ↳ Souris optique USB-PS / 2 Logitech id = 12 [pointeur esclave (2)]
Device ↳ Logitech Unifying Device. PID sans fil: 4004 id = 13 [pointeur esclave (2)]
⎣ Identifiant de clavier virtuel = 3 [clavier maître (2)]
    ↳ Identifiant de clavier XTEST de base virtuelle = 5 [clavier esclave (3)]
    Button Bouton d'alimentation id = 6 [clavier esclave (3)]
    ↳ ID du bus vidéo = 7 [clavier esclave (3)]
    Button Bouton Veille id = 8 [clavier esclave (3)]
    ↳ Webcam id Acer CrystalEye = 9 [clavier esclave (3)]
    ↳ AT Translated Set 2 ID clavier = 10 [clavier esclave (3)]
Ignacio Vazquez-Abrams
la source
Je suis intéressé par cette solution! mon xinput pastebin.com/puDxQaZ8 donc je suppose que ce serait ça: xinput float 14Cette requête est réversible? comment activer le clavier après cela?
atmon3r
2
Vous utiliseriez l' reattachargument pour le rattacher. xinput reattach 14 3
Ignacio Vazquez-Abrams
1
Réponse parfaite - cherchait ça aussi. aucune des touches de mon ordinateur portable ne fonctionnant plus, laissez maintenant un clavier externe par-dessus et maintenez la touche de contrôle enfoncée. Cela a réglé le problème, merci!
notammenttipsy
1
Merci. Mais après le redémarrage de mon ordinateur portable, le clavier est activé automatiquement. Donc, tout le temps quand je suis sur ma machine, je veux suivre les étapes ci-dessus pour désactiver le clavier interne que vous avez mentionné. Existe-t-il des possibilités d'invalidité permanente?
Dinesh ML
2
Xinput désactive / active-t-il la même chose?
SomeNickName
18

Voici un petit bouton pour activer et désactiver un clavier spécifique. Tout d’abord, vous devez trouver votre identifiant de clavier avec xinputou xinput-list.

Script Bash pour activer / désactiver le clavier

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

Configuration

  • Iconcomme chemin de l'icône à afficher lors de l'activation (par exemple, /home/user/path/icon.png)
  • Icoff comme le chemin de l'icône à afficher lors de la désactivation
  • J'ai utilisé les icônes suivantes: entrez la description de l'image ici entrez la description de l'image ici

  • idcomme identifiant de clavier (trouvé avec xinput)

  • fconfigchemin du fichier de configuration. Changer si vous voulez créer un fichier de configuration dans un autre répertoire

N'essayez pas d'exécuter le script si vous ne pouvez pas l'exécuter à nouveau sans utiliser votre clavier (à moins que vous n'ayez un autre clavier, bien sûr). Créez le lanceur suivant (en home/user/.local/share/applications) et ajoutez-le à l'unité:

Entrée du bureau (lanceur 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

RÉSULTAT :

Lanceur:

entrez la description de l'image ici

Notifications:

entrez la description de l'image ici entrez la description de l'image ici

mxdsp
la source
Cela fonctionne bien, merci de l'expliquer clairement. Il y a une chose que je ne comprends pas: comment faire en sorte que l'icône change en fonction de la logique du script shell. Je pense que cela est déterminé en partie par "Icon = CHEMIN / À / VOTRE / ICÔNE" dans l'entrée du bureau, j'ai utilisé un chemin absolu "/home/.../icon_on.png" car je ne sais pas comment faire autrement. d’utiliser un fichier ".desktop" bien que je sache que cela peut l’empêcher de changer d’icône. Quelqu'un pourrait-il fournir un indice s'il vous plaît?
Macareux
1
Bonjour, vous avez raison sur le chemin absolu dans le fichier .desktop. Désolé, mais je ne sais pas comment effectuer des modifications dynamiques pour une icône de lanceur. Selon cette réponse, ce n’est pas du tout possible: askubuntu.com/a/244951/458410 . L'icône de mon script change uniquement dans les notifications.
mxdsp
Ah ha, ok c'est logique, le mien fait la même chose, merci.
Puffin
Une amélioration possible: au lieu de stocker l' état dans un fichier que vous pouvez vérifier directement si le clavier est désactivé avec cette commande: function is-disabled() { xinput --list --long | grep -A 1 "id=$1" | grep -q disabled }. De cette façon, tout fonctionne même si le clavier est activé / désactivé par un autre programme.
dshepherd
fconfig=".keyboard" if [ ! -f $fconfig ]; Ici c'est quoi .keyboard? Et tous les deux la fconfiget $fconfigsont les mêmes? Et aussi qu'est-ce que cela ! -f $fconfigsignifie? Je suis nouveau dans le script bash. Merci :)
sphoenix
12

J'ai pensé à 2 façons de faire cela:

  1. En configurant un mauvais modèle pour le clavier de votre ordinateur portable dans xorg.conf?

  2. En installant Lock-keyboard-for-Baby

`Lock-keyboard-for-Baby ou lk4b en bref, est un petit programme qui verrouille votre clavier tout en laissant votre souris libre. Je l'ai écrit parce que ma nièce aime frapper mon clavier chaque fois qu'elle me voit m'asseoir. Les touches tapées sur un clavier peuvent avoir des conséquences désastreuses et je ne voulais pas toujours verrouiller mon écran avec un économiseur d'écran.

Une fois lancé, lock-keyboard-for-baby ouvre une petite fenêtre dans laquelle sont saisies les touches du clavier et de l'écho saisies. Par défaut, il vous dit quoi taper pour quitter ("Quit maintenant").

Contrairement à un économiseur d'écran, votre écran n'est pas bloqué et la souris fonctionne encore partiellement. Vous pouvez donc toujours voir ce qu'il y a sur votre écran. Continuez à regarder la télévision / la vidéo et / ou lisez un document à l'aide de la souris pour faire défiler.

Exigences:

· GTK> = 2.x · liaisons GTK2 perl (perl-gtk2 ou gtk2-perl selon votre système)

LnxSlck
la source
1
ce n'est pas exactement ce dont j'ai besoin, je dois utiliser mon clavier USB, mais votre code est très utile! ;)
atmon3r
Lock-keyboard-for-Baby vous permettra de désactiver votre clavier interne tout en maintenant l'utilisation de l'extérieur
LnxSlck
Brillant. Lock-Keyboard-For-Baby fonctionne également dans Ubuntu 16.04. Je préfère coder à l'aide d'un stylo et d'un cahier en le gardant au clavier. Ce petit utilitaire a résolu mon problème. Pour les autres, vous devrez peut-être exécuter sudo apt-get install libgtk2-perl avant de lancer le script perl
mac
"Quittez maintenant", quittez maintenant ou quittez maintenant pas de travail sous 18.04 avec le clavier USB de la tour de bureau.
Fleamour
10

Un moyen sûr de le désactiver consiste à débrancher le câble de signal. Vous devez faire apparaître le clavier pour cela. Pour plus d'informations sur cette procédure , consultez le Guide de maintenance et de maintenance des ordinateurs portables HP Pavilion dv9000 et dv9200 .

Il existe maintenant un moyen de désactiver le clavier avec xinput. Pour ce faire, appuyez simplement sur les touches Ctrl+ et Alt+ Tde votre clavier pour ouvrir Terminal. Lorsqu'il s'ouvre, exécutez les commandes ci-dessous.

Pour lister les appareils de votre X

xinput --list

Pour désactiver le clavier:

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

Pour réactiver le clavier:

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

Si vous obtenez une erreur concernant les autorisations, utilisez les commandes ci-dessus avec sudo.

Mitch
la source
5

Les périphériques idreçus de xinput listcomme suggéré dans la réponse acceptée sont parfois modifiés au redémarrage (du moins sur mon PC), ce qui entraîne la désactivation du mauvais périphérique.

C'est pourquoi j'ai fini d'utiliser à la device nameplace de id, par exemple:

xinput disable "AT Translated Set 2 keyboard"
Janot
la source
5

Pour désactiver le clavier interne de l'ordinateur portable de façon permanente sous Ubuntu, vous devez transmettre les i8042.nokbdparamètres de ce noyau pour ne pas vérifier / créer de port de clavier

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

Ouvrez le terminal et lancez la commande suivante

$sudo gedit /etc/default/grub

Essayez de trouver la ligne suivante

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Ajouter un paramètre i8042.nokbd, la ligne ci-dessus devrait ressembler à ceci

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nokbd"

Mettre à jour grub en tant que commande suivante

$sudo update-grub     

Ensuite, rebootvotre ordinateur portable.

Rokibul Hasan
la source
Comment pourrais-je réactiver mon clavier?
Guilherme Parreira
4

Si je devais nettoyer le clavier et à cause de cela, il fallait toujours éteindre la machine. En conséquence, j'ai découvert ceci, pour désactiver temporairement le clavier:

$ xinput float id #; sommeil t ; xinput code d'identification de rattache # maître #

t-temps de dormir en quelques secondes

id # et master # comme mentionné ci - dessus ( haut de la page )

Par exemple, dans mon cahier, j'ai tapé:

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

Essayez d’exécuter xmodmap -e 'keycode 24='pour désactiver uniquement la touche Q. Si cela fonctionne, vous pouvez l'ajouter à votre fichier ~/.bashrcou à votre /etc/bash.bashrcfichier global . J'ai eu cette idée d' ici , qui montre toutes les correspondances de touches.

dxvxd
la source
4
Cela ne serait-il pas désactivé également qsur le clavier externe?
Sparhawk
2

Pour ce que cela vaut, en me basant sur les réponses précédentes et sur mon propre jeu, j'ai créé le script suivant, que j'appelle toggle_keyboard.shet que je place sur mon ~/binchemin. J'ai un raccourci clavier qui l'exécute CtrlWinK.

Quelques problèmes avec les réponses précédentes et les avantages de mon script:

  • L'utilisation d'un numéro d'identification avec xinput échoue lorsque vous redémarrez et que le numéro d'identification est modifié. Cela m'est arrivé en courant xinput float 13. J'ai fini par désactiver le mauvais matériel.
  • Compter sur un fichier pour conserver l'état activé / désactivé échouera également si vous redémarrez. Le fichier vous indiquera que le clavier est désactivé (si vous l'avez désactivé avec le script), mais après un redémarrage, il sera réactivé. Ma solution obtient les informations activées / désactivées à partir d'une commande xinput analysée.
  • Mon script fonctionnera avec tout périphérique xinput qui apparaît lorsque vous tapez xinput list --name-only. Obtenez juste le nom et éditez les quatre premières variables. Je l'utilise pour le clavier de mon ordinateur portable, ma webcam, mon moniteur à écran tactile et quelques autres choses que je n'utilise que de temps en temps.

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

xinput float "Clavier AT Translated Set 2"

Après avoir passé des heures et des années avec différentes méthodes avec différentes distributions et versions. La commande de terminal ci-dessus est ce sur quoi je m'appuie après des problèmes ..... Je l'utilise maintenant avec du plasma au néon et je l'utilisais il y a un mois dans un Ubuntu hétéro 18.04. (doit être appliqué après le redémarrage - peut être placé au démarrage) * Mon clavier intégré à mon ordinateur portable HP endommagé et qui commence à taper, ce qui pose de sérieux problèmes - J'utilise un clavier et une souris sans fil - le pavé tactile est activé / désactivé dans le cadre de la barre de menus KDE options - néon / plasma 5). Dans les paramètres système / le démarrage automatique Un fichier texte avec la ligne de code suivante est enregistré en tant que fichier .sh et défini en tant qu'exécutable (propriétés des fichiers txt)
xinput float "Clavier AT Translated Set 2"

Le fichier texte reçoit un nom> keyboardoff> et est placé dans le démarrage automatique (exécutable). Lorsque vous redémarrez / démarrez le système> le clavier intégré est désactivé. (utilisez la liste xinput pour tester)

duncan williams
la source