web-dev-qa-db-fra.com

Emulate Numpad sous Linux

Mon ordinateur portable n'a pas de pavé numérique, pas même ceux sur lesquels il est activé par la touche FN.

Lorsque j'utilisais Windows, j'utilisais AutoHotkey avec un script qui remplaçait les clés QWEASDZXC par 789456123. Si je souhaite le désactiver, il suffit de taper F12.

Y at-il un moyen de le faire sous Linux?

2
Roland

Je peux penser à deux façons de faire cela avec XKB, mais ce n’est pas pour les âmes sensibles.

  1. Faites un option de symbole personnalisé qui ajoute vos numéros au "niveau 3" ou au "niveau 5" de vos clés choisies. ( AltGr est la touche ISO_Level3_Shift utilisée dans les dispositions non US ou US-intl pour les caractères áçćéñþëd.) Normalement, ces touches agissent comme Shift - Vous devez les maintenir pendant que vous tapez les chiffres. Mais votre nouvelle option pourrait les faire agir plus comme CapsLock si préféré. Une telle option remplacerait alors les liaisons par défaut de votre mise en page pour que ces lettres ajoutent des nombres.

    // emulate numpad on first 3 columns of alphabetic keys
    // initial key definitions from /usr/share/X11/xkb/symbols/us
    // ("intl" stanza)
    partial 
    xkb_symbols "qweasdzxc" {
    
        // numbers on level3 (RightAlt chooses lv3)
        include "level3(ralt_switch)"
        key <AD01> { [ q, Q, 7, division ] };
        key <AD02> { [ w, W, 8, multiply ] };
        key <AD03> { [ e, E, 9,    minus ] };
        // etc ...
    
        // OR ...
    
        // numbers on level5 (RightCtrl chooses lv5)
        include "level5(rctrl_switch)"
        key <AD01> { [ q, Q, adiaeresis,  Adiaeresis,  7,  division ] };
        key <AD02> { [ w, W,      aring,       Aring,  8,  multiply ] };
        key <AD03> { [ e, E,     eacute,      Eacute,  9,     minus ] };
        // etc ...
    
    }; // end "qweasdzxc"
    
    
    // rules to load this as an option
    ! option         = symbols
      lv3:qweasdzxc  = +filename(qweasdzxc)
    
    
    // load from commandline. may need -I/path/to/custom/xkb
    setxkbmap -layout us -option lv3:qweasdzxc
    
  2. Créez une mise en page vide qui n'émet que ces chiffres sur ces touches et aucun autre symbole alphanumérique. Une fois chargé en tant que deuxième modèle, vous disposez d’une clé prédéfinie et vous pouvez l’utiliser pour basculer entre votre modèle principal et celui-ci. Encore une fois, la touche de mise en page peut être configurée comme un Shift (changez uniquement les dispositions en attente) ou un CapsLock.

    // emulate numpad on first 3 columns of alphabetic keys
    // leave other alphanumeric keys undefined
    // otherwise from /usr/share/X11/xkb/symbols/us (basic stanza)
    default partial alphanumeric_keys modifier_keys
    xkb_symbols "qweasdzxc" {
    
        name[Group1]= "Numpad Emulation";
    
        key <AD01> { [ 7, division ] }; // q
        key <AD02> { [ 8, multiply ] }; // w
        key <AD03> { [ 9,    minus ] }; // e
    
        key <AC01> { [ 4,        F ] }; // a
        key <AC02> { [ 5,        E ] }; // s
        key <AC03> { [ 6,        D ] }; // d
    
        key <AB01> { [ 1,        C ] }; // z
        key <AB02> { [ 2,        B ] }; // x
        key <AB03> { [ 3,        A ] }; // c
        // hexadecimal just for fun, replace if desired
    
    }; // end "qweasdzxc"
    
    
    // rules to load this as a layout
    ! layout         = symbols
      qweasdzxc      = qweasdzxc
    
    
    // load from commandline. may need -I/path/to/custom/xkb
    setxkbmap -layout us,qweasdzxc -option grp:caps_toggle
    

Chacune de ces options peut être implémentée en modifiant les fichiers XKB système dans /usr/share/X11/xkb/{symbols,rules} ou en stockant vos personnalisations dans fichiers de configuration XKB locaux . Les modifications apportées aux fichiers système peuvent être effacées par une mise à jour du paquetage xkeyboard-config, mais sont plus faciles à utiliser avec des outils de paramétrage de la disposition du système tels que /etc/default/keyboard ou le démon des paramètres de GNOME.

1
quixotic