.:Bordel-de-Nerd:.

Bloquer le clavier de votre ordinateur avec lk4b

closeCet article a été publié il y a 2 ans 4 mois 9 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

« Nooooooooooooooooooooooooooooooooooon!!!!!!!!!!!!!!!!!!!!! »
sous vos yeux horrifiés, 2 heures de travail viennent de partir en fumée et votre portable commence à émettre des petits bips de panique, signe qu’un kernel panic n’est pas loin.

Vous venez de vous lever pour aller vous préparer un café et Bob Junior*,  du haut de ses 1 an et demi, en profite pour faire « comme papa » et s’en donne à cœur joie avec le clavier de votre portable.

Ce qui a un autre moment vous aurait arraché une petite larme (« mais qu’il est mignon le petit geek à son papa »)
vous donne maintenant des envies d’infanticide.

Mais pas de panique!

Le logiciel libre vient à votre rescousse en la présence de Lock Keyboard For Baby,
un merveilleux petit utilitaire écrit en perl qui permet de bloquer le clavier tout en laissant la souris active.

Pour l’installer, rien de plus simple : Téléchargez l’archive et copiez-la dans le dossier de votre choix.

Ensuite, vous pouvez l’exécuter depuis un terminal via la commande

perl lock-keyboard-for-baby-20080706.pl

ou bien, sous gnome, en créant un lanceur sur le tableau de bord avec la commande suivante:

perl /chemin/vers/lk4b/lock-keyboard-for-baby-20080706.pl

Une fois lancé, une petite fenêtre s’affiche dans le coin supérieur gauche de votre écran avec cette légende « Type ‘QuitNow’ to quit ».

Vous l’aurez compris, pour débloquer le clavier, il suffit juste de taper « QuitNow » (avec les majuscules, et sans espace).

Et vous voila maintenant prêt à laisser Junior se lancer dans une carrière précoce de programmeur!

* Le nom a été habilement modifié pour préserver l’anonymat du petit monstre.

8 Responses to Bloquer le clavier de votre ordinateur avec lk4b

  1. pour désactiver un périphérique d’entrée (clavier, souris etc…) je n’installe rien sur ma machine, j’utilise xinput.

    $xinput --list
    ⎡ Virtual core pointer                          id=2    [master pointer  (3)]
    ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
    ⎜   ↳ Dell Dell USB Optical Mouse               id=11   [slave  pointer  (2)]
    ⎜   ↳ ImPS/2 ALPS GlidePoint                    id=12   [slave  pointer  (2)]
    ⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
        ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
        ↳ Keyboard1                                 id=6    [slave  keyboard (3)]
        ↳ Power Button                              id=7    [slave  keyboard (3)]
        ↳ Video Bus                                 id=8    [slave  keyboard (3)]
        ↳ Power Button                              id=9    [slave  keyboard (3)]
        ↳ Sleep Button                              id=10   [slave  keyboard (3)]
        ↳ Dell WMI hotkeys                          id=13   [slave  keyboard (3)]

    On récupère l’id du périphérique qu’on veut contrôler (ici 6 pour mon clavier).

    Pour le désactiver :

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

    Puis pour l’activer à nouveau :

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

    Le tout dans un petit script :

    cat /usr/local/bin/keyboard_on_off.sh
     
    #!/bin/bash
    if [ -f /tmp/keyboard_on ]; then
    xinput set-int-prop 6 "Device Enabled" 8 0 && rm /tmp/keyboard_on
    else
    xinput set-int-prop 6 "Device Enabled" 8 1 && touch /tmp/keyboard_on
    fi
  2. He!

    Mais c’est super!
    Dommage que ce soit un peu compliqué de récupérer l’id du périphérique d’entrée.
    C’est pas très Mme Michu-friendly…

    Ça vaudrait le coup d’encapsuler ça dans un petit script python, et de lier le tout à un applet / widget / desklet…

    En plus de sauver la vie de nombreux parents, ça peut aussi être utile pour les gens qui ont des PCs en exposition. Et il y a sûrement d’autres utilisations possibles auxquelles je n’ai pas pensé…

    Un volontaire pour le script?
    (au passage, la forge projet-libre est ouverte à tous ceux qui veulent développer un projet libre. Après, je dis ça, je dis rien)

  3. Pingback: Tweets that mention Bloquer le clavier de votre ordinateur avec lk4b | .: bordel-de-nerd :. -- Topsy.com

  4. Récupérer l’id du périphérique est ultra Mme Michu friendly, regarde :)

    & xinput --list | grep Keyboard | tail -n 1 | cut -d = -f 2 | sed 's/\([0-9].*\)\[.*/\1/'
    6

    A tester mais du coup le code suivant devrait fonctionner :

    #!/bin/bash
    # -*- coding: UTF8 -*-
     
    ID=$(xinput --list | grep Keyboard | tail -n 1 | cut -d = -f 2 | sed 's/\([0-9].*\)\[.*/\1/' 2>&1 )
     
    if [ -f /tmp/keyboard_on ]; then
    xinput set-int-prop $ID "Device Enabled" 8 0 && rm /tmp/keyboard_on
    else
    xinput set-int-prop $ID "Device Enabled" 8 1 && touch /tmp/keyboard_on
    fi
  5. Je confirme, ça fonctionne, je vais reprendre les étapes une à une pour créer un lanceur dans le menu « Utilitaires ».

    On commence par créer notre script qu’on nomme « switch_on_off_keyb »

    #!/bin/bash
    # -*- coding: UTF8 -*-
     
    ID=$(xinput --list | grep Keyboard | tail -n 1 | cut -d = -f 2 | sed 's/([0-9].*)[.*/1/' 2>&1 )
     
    if [ -f /tmp/keyboard_on ]; then
    xinput set-int-prop $ID "Device Enabled" 8 0 && rm /tmp/keyboard_on
    else
    xinput set-int-prop $ID "Device Enabled" 8 1 && touch /tmp/keyboard_on
    fi

    On le rend exécutable puis on le déplace dans un répertoire de la PATH.

    chmod +x switch_on_off_keyb && sudo mv switch_on_off_keyb /usr/local/bin/

    Pour finir nous allons créer le lanceur qui se trouvera dans le menu « Utilitaires »
    On créé un fichier nommé switch_on_off_keyb.desktop qui contient le code suivant

    [Desktop Entry]
    Name=ClavierOnOff
    Categories=Utility
    Terminal=false
    Icon=input-keyboard
    Exec=switch_on_off_keyb

    Il ne reste plus qu’à déplacer ce fichier au bas endroit afin d’avoir une jolie icône de clavier qui nous permettra de désactiver ou activer le clavier.

    sudo mv switch_on_off_keyb.desktop /usr/share/applications/

    Je n’ai pas encore testé lk4b mais que fait-il si comme moi tu as deux claviers ? Il désactive les deux ?

    ⎡ Virtual core pointer                          id=2    [master pointer  (3)]
    ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
    ⎜   ↳ DELL DELL USB Laser Mouse                 id=9    [slave  pointer  (2)]
    ⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
        ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
        ↳ Keyboard0                                 id=6    [slave  keyboard (3)]
        ↳ Power Button                              id=7    [slave  keyboard (3)]
        ↳ Power Button                              id=8    [slave  keyboard (3)]
        ↳ Logitech USB Multimedia Keyboard          id=10   [slave  keyboard (3)]

    Si j’utilise l’id 6 je désactive seulement le clavier intégré, avec l’id 10 le clavier USB.

    L’intérêt pour moi une fois que mon laptop est sur sa station est de désactiver uniquement le clavier intégré vu que je contrôle toutes mes machines avec une seule clavier/souris + synergy ou x2x.

    Puis je le pose ou mon café si le clavier du portable est actif, hein ? :)

  6. PP

    Bonjour,

    La méthode avec xinput marche parfaitement. J’ai par contre entré en dur l’identifiant de mon clavier car plusieurs mots clefs « Keyboard » étaient présents dans la sortie de xinput –list.

    J’ai simplement déposé le script dans mon répertoire personnel et ajouté une application personnalisée dans le tableau de bord Gnome.

  7. galaxadmin

    salut , concernant cette commande est ce que quelqu’un saurait si une variable de temps pourrait etre rajouter dans la commande .J’ai regardé les help de xinput mais je trouve pas , cela afin de bloquer clavier et souris x temps (temps d’une connexion par exemple) …

    merci d’avance si quelqu’un a une idée ..

  8. Bonjour,
    Ça devrait pouvoir se faire avec un script dans ce genre (je n’ai pas testé mais ça devrait fonctionner) :

    #!/bin/bash
    # -*- coding: UTF8 -*-
     
    ID=$(xinput --list | grep Keyboard | tail -n 1 | cut -d = -f 2 | sed 's/([0-9].*)[.*/1/' 2>&1 )
     
    if [ -f /tmp/keyboard_on ]; then
    xinput set-int-prop $ID "Device Enabled" 8 0 &
    rm /tmp/keyboard_on
    else
    xinput set-int-prop $ID "Device Enabled" 8 1 &
    touch /tmp/keyboard_on
    fi
    # on récupère le PID de la dernière commande
    PID=$!
    # on attend 120 secondes puis on le kill
    sleep 120 && kill $PID

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Get Adobe Flash player