Comment configurer Ubuntu pour activer automatiquement NumLock lorsqu'un clavier externe est connecté et s'éteindre lorsqu'il ne l'est pas?

12

Activer NumLock est pratique lorsque vous utilisez un clavier externe de taille normale (ayant un clavier) et très gênant lorsque vous utilisez le clavier intégré de l'ordinateur portable (qui place des chiffres au lieu de lettres sur le côté droit du clavier, sauf si vous appuyez sur Fn).

Je dois donc activer NumLock à chaque fois que je connecte un clavier externe (ou démarrer avec lui attaché) et éteint chaque fois que je détache un clavier externe (ou démarrer avec lui détaché). Et je le fais souvent parce que je préfère utiliser un clavier externe pleine taille, mais je n'ai pas assez (seulement 3) ports USB pour le brancher avec une souris, un modem 3G et un disque dur / flash externe.

Puis-je automatiser cela? Semble une tâche très formalisable et logiquement simple: si un clavier USB est connecté (certains périphériques dans / dev sont présents?) - NumLock est activé, sinon - NumLock est désactivé. Le clavier intégré de mon ordinateur portable est connecté PS / 2, externe est USB.

Peut-être que je devrais le coder moi-même, mais où le mettre dans ce cas?

J'utilise Ubuntu 10.10.

Ivan
la source

Réponses:

14

Tout d'abord, installez numlockx ( cliquez ici pour installer numlockx ). Fondamentalement, cela vous permet d'écrire des scripts pour définir l'état de Num Lock - voir la page de manuel numlockx pour plus de détails.

Ensuite, nous devons commencer à nous plonger dans le plaisir des règles udev. Nous devons d'abord découvrir comment le clavier est identifié. Vous pouvez le faire en

ls /dev/input/by-id/

Cela devrait vous donner quelques noms de fichiers lisibles par l'homme (qui sont des liens logiciels vers le vrai nom qui n'est pas particulièrement lisible). Mon clavier était

/dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd

Nous devons donc trouver toutes les informations sur le clavier. J'ai fait

udevadm info -a -p $(udevadm info -q path -n /dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd)

Mais insérez bien sûr votre propre chemin. Vous obtiendrez beaucoup d'informations, mais vous voulez regarder le premier bloc qui nomme le clavier et l'a SUBSYSTEMS=="usb". (Plutôt que le contrôleur USB ou autre). Dans mon cas, c'était:

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.3':
    KERNELS=="3-2.3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}==" 50mA"
    ATTRS{urbnum}=="6284"
    ATTRS{idVendor}=="058f"
    ATTRS{idProduct}=="9410"
    ATTRS{bcdDevice}=="0122"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="1.5"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="3"
    ATTRS{devpath}=="2.3"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="KINESIS FREESTYLE KB700"
    ATTRS{product}=="KB700 Kinesis Freestyle"

Alors maintenant, nous avons suffisamment d'informations pour écrire certaines règles. Utilisez votre éditeur préféré pour créer /etc/udev/rules.d/10-local.ruleset insérer:

BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="add",RUN+="/usr/bin/numlockx on"
BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="remove",RUN+="/usr/bin/numlockx off"

Encore une fois, mettez le nom de votre clavier ici et les ATTRS s'il est différent. Alors ça devrait marcher :)

Remarque Je n'ai pas pu tester cela, bien que j'aie exécuté toutes les commandes jusqu'à la création du fichier de règles. Et les sources au cas où vous auriez besoin de faire des recherches supplémentaires sont:

Hamish Downer
la source
Merci beaucoup, excellent. Pour être honnête, je ne m'attendais pas à obtenir une réponse proche de cette information. J'aimerais pouvoir l'attribuer plus que juste correct et +1. J'espère que tous ceux qui ont joué et voté pour ma question vous récompenseront également.
Ivan
1

Si vous utilisez le shell Gnome3.

Installer numlockx

puis lancez les préférences de l'application de démarrage gnome-session-properties

Image (les nouveaux utilisateurs ne peuvent pas publier d'images :))

Cliquez sur Ajouter

Écrivez quoi que ce soit dans le champ de nom et dans le champ de commande, copiez ceci:numlockx on

Image

Lukas Ignatavičius
la source
0

Je ne suis pas sûr de ce que je fais différemment, car mon verrouillage numérique sur ce clavier est activé par défaut (il s'agit d'un clavier Mac Pro Aluminium). Il y a quelques instructions ici qui devraient faire l'affaire.

J'espère que cela t'aides!

Craig Maloney
la source
0

Si vous utilisez gnome-shell, vous pouvez installer le statut Numlock & Capslock sur l'extension "Lock Keys" du panneau. Veuillez le trouver ici

Tatui1969
la source