web-dev-qa-db-fra.com

Cartographie Super + HJKL aux flèches sous x

J'essaie de mapper:

Super+h -> Left
Super+j -> Down
Super+k -> Up
Super+l -> Right

globalement sous X. L'idée est que je ne veux pas quitter ma ligne d'accueil qui utilise souvent les touches fléchées, donc je vais utiliser le Super modificateur + HJKL pour imiter les touches fléchées sous X. Y a-t-il un moyen de faire cela ?

Une chose que j'ai essayée est xbindkeys + xte à l'aide de cette configuration:

"xte 'keydown Up' 'keyup Up'"
  Mod4+k

"xte 'keydown Down' 'keyup Down'"
  Mod4+j

"xte 'keydown Left' 'keyup Left'"
  Mod4+h

"xte 'keydown Right' 'keyup Right'"
  Mod4+l

mais il semble qu'un grand retard entre moi en appuyant sur la touche et remarquer aucun résultat et la plupart du temps, rien ne se passe du tout.

Y a-t-il un moyen plus élégant de faire cela qui fonctionne réellement sans délai?

23
William Casarin

CAPSLOCK + HJKL aux touches fléchées

  1. Créez ~/.xModmap et mettez cet intérieur:

    clear Lock 
    keycode 66 = ISO_Level3_Shift
    
  2. Ajouter Left, Down, Up, Right en tant que troisième élément aux entrées clés H, J, L dans /usr/share/X11/xkb/symbols/us (la première section):

    key { [ h, H, Left, Left ] }; 
    key { [ j, J, Down, Down ] };
    key { [ k, K, Up, Up ] }; 
    key { [ l, L, Right, Right ] };
    
  3. cours xmodmap ~/.Xmodmap

Alternative: capslock comme contrôle et contrôle_l + hjkl aux touches fléchées

Ceci est ma configuration actuelle. J'ai déménagé Control_L comme une clé de contrôle et utilisez-la sous forme de modificateur spécial (ISO_LEVEL3_SHIFT), ce qui correspond à la troisième entrée du /usr/share/X11/xkb/symbols/us Fichier pour les mappages HJKL.

  1. J'ai modifié la première Stanza of/USR/Share/X11/XKB/Symboles/US Aimez-nous avant:

    key { [ h, H, Left, Left ] }; 
    key { [ j, J, Down, Down ] };
    key { [ k, K, Up, Up ] }; 
    key { [ l, L, Right, Right ] };
    
  2. Ensuite, je mets ceci dans mon fichier ~/.xmodmap:

    clear Control
    keycode 66 = Control_L
    add Control = Control_L
    add Control = Control_R
    keycode 37 = ISO_Level3_Shift
    

keycode 66 est capslock et keycode 37 est laissé le contrôle

  1. exécuter xModmap ~/.xmodmap

Avec cette configuration, je peux utiliser des flèches avec Control_L + HJKL et sauter des mots avec Control_L + Caps + HL. Facile!

15
William Casarin

Les modifications mentionnées ci-dessus dans USR/Share/X11/XKB/Symboles/US Ne fonctionne pas pour moi:
Erreur lors du chargement de la nouvelle description du clavier

Mais après avoir examiné à travers beaucoup de howtos contradictoires, j'ai monté une solution, qui mappe la touche Super gauche (touche Windows gauche/Mod4) en combinaison avec HJKL à gauche, en bas, en hausse, à droite. Ceci est un cadre à l'échelle du système.

Ajoutez ce bloc à la fin de la première section (juste avant };) de votre /USR/Share/x11/xkb/symboles/US:

//hjkl
//AltGr + hjkl
key <AC06> {        [         h, H, Left            ]       };
key <AC07> {        [         j, J, Down            ]       };
key <AC08> {        [         k, K, Up              ]       };
key <AC09> {        [         l, L, Right           ]       };
//Super_L -> Alt Gr
key <LWIN> { [ ISO_Level3_Shift ] }; //see below!

La première ligne de la ligne clé est altgr + H à gauche.
[.____] la dernière ligne de clé rend la touche Super Key de gauche comme Altgr.
Voici:

Super + H -> GAUCHE
Super + J -> Down
[.____] Super + K -> Up
Super + L -> Droite

Pour appliquer les nouveaux paramètres, exécutez SETXKBMAP ou redémarrez votre système.

IMPORTANT: Cela désactive évidemment la super-clé, donc si vous utilisez votre super clé à d'autres fins (c'est-à-dire déplacer une fenêtre vers un autre espace de travail), vous ne devriez pas le remettre comme ceci.
[.____] Pour utiliser Caps Lock au lieu de Super, modifiez la dernière ligne clé avec:

key <CAPS> { [ ISO_Level3_Shift ] };

Voici la première section complète de mon fichier de configuration:

default
partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {

    name[Group1]= "English (US)";

    // Alphanumeric section
    key <TLDE> {        [     Grave,    asciitilde      ]       };
    key <AE01> {        [         1,    exclam          ]       };
    key <AE02> {        [         2,    at              ]       };
    key <AE03> {        [         3,    numbersign      ]       };
    key <AE04> {        [         4,    dollar          ]       };
    key <AE05> {        [         5,    percent         ]       };
    key <AE06> {        [         6,    asciicircum     ]       };
    key <AE07> {        [         7,    ampersand       ]       };
    key <AE08> {        [         8,    asterisk        ]       };
    key <AE09> {        [         9,    parenleft       ]       };
    key <AE10> {        [         0,    parenright      ]       };
    key <AE11> {        [     minus,    underscore      ]       };
    key <AE12> {        [     equal,    plus            ]       };

    key <AD01> {        [         q,    Q               ]       };
    key <AD02> {        [         w,    W               ]       };
    key <AD03> {        [         e,    E               ]       };
    key <AD04> {        [         r,    R               ]       };
    key <AD05> {        [         t,    T               ]       };
    key <AD06> {        [         y,    Y               ]       };
    key <AD07> {        [         u,    U               ]       };
    key <AD08> {        [         i,    I               ]       };
    key <AD09> {        [         o,    O               ]       };
    key <AD10> {        [         p,    P               ]       };
    key <AD11> {        [ bracketleft,  braceleft       ]       };
    key <AD12> {        [ bracketright, braceright      ]       };

    key <AC01> {        [         a,    A               ]       };
    key <AC02> {        [         s,    S               ]       };
    key <AC03> {        [         d,    D               ]       };
    key <AC04> {        [         f,    F               ]       };
    key <AC05> {        [         g,    G               ]       };
    key <AC06> {        [         h,    H               ]       };
    key <AC07> {        [         j,    J               ]       };
    key <AC08> {        [         k,    K               ]       };
    key <AC09> {        [         l,    L               ]       };
    key <AC10> {        [ semicolon,    colon           ]       };
    key <AC11> {        [ apostrophe,   quotedbl        ]       };

    key <AB01> {        [         z,    Z               ]       };
    key <AB02> {        [         x,    X               ]       };
    key <AB03> {        [         c,    C               ]       };
    key <AB04> {        [         v,    V               ]       };
    key <AB05> {        [         b,    B               ]       };
    key <AB06> {        [         n,    N               ]       };
    key <AB07> {        [         m,    M               ]       };
    key <AB08> {        [     comma,    less            ]       };
    key <AB09> {        [    period,    greater         ]       };
    key <AB10> {        [     slash,    question        ]       };

    key <BKSL> {        [ backslash,         bar        ]       };
    // End alphanumeric section

    //hjkl
    //AltGr + hjkl
    key <AC06> {        [         h, H, Left            ]       };
    key <AC07> {        [         j, J, Down            ]       };
    key <AC08> {        [         k, K, Up              ]       };
    key <AC09> {        [         l, L, Right           ]       };
    //Super_L -> Alt Gr
    key <LWIN> { [ ISO_Level3_Shift ] };


};

J'espère que cela aide quelqu'un là-bas ...

Si quelqu'un a une meilleure solution, merci de me le faire savoir.

Modifier: Testé sur Fedora.

8
basic6

Je n'ai pas essayé cela moi-même mais il semble que XKB pourrait faire ce que vous voulez http://fr.wikipedia.org/wiki/x_keyboard_extension .

J'ai un paquet à Ubuntu appelé x11-xkb-utils qui sonne promettant :)

3
gacrux

Enfin, il semble que j'ai trouvé la solution qui fonctionne avec tous les modificateurs (Ctrl +, Maj +, Ctrl + Shift +) et SUBLIMIMIME TEXT 2.

Toute gloire va à cette configuration de la GEM que j'ai trouvée récemment http://www.spinics.net/lists/xorg/msg35931.html . Il décrit des flèches ijkl, mais elle peut être facilement modifiée pour la navigation HJKL. Vous devez mettre à jour votre fichier de mise en page de clavier/USR/Share/x11/xkb/symboles/* (Personnely, i Utilisez/USR/Share/X11/XKB/Symboles/Typo, que j'inclus dans la mise en page de mon clavier avec XKB Option "MISC: TYPO", donc cela fonctionne pour toute mise en page de clavier). La configuration suppose que la touche de modificateur Envoyer ISO_LEVEL3_SHIFT (il existe de nombreuses façons de se lier Super ou Alt à Iso_Level3_Shift).

Les définitions clés doivent ressembler (utilisez Nosymbol si vous modifiez ../symbols/typo):

key <AC07> {    
    type="MOD5_NAV",
    [NoSymbol, NoSymbol, Down, Down],   
    actions[Group1] = [NoAction(), NoAction(), RedirectKey(key=<DOWN>, clearmods=ISO_Level3_Shift)]
};

De plus, vous devez modifier/USR/Share/x11/Types/Basic et Caisse Type "mod5_nav":

type "MOD5_NAV" {
    modifiers = Shift+Mod5;
    map[None] = level1;
    map[Shift] = level2;
    map[Mod5] = level3;
    map[Mod5+Shift] = level3;
    level_name[Level1] = "Base";
    level_name[Level2] = "Caps";
    level_name[Level3] = "Arrows";
};

En ce qui concerne le texte sublime 2, la solution est plus délicate et pirate. Comme mentionné ci-dessus, le texte sublime 2 lit des codes clés directement à partir du périphérique, puis ignore certaines fonctionnalités de XKB (et XKB Trick avec des flèches n'a aucun effet). Il existe un projet presque abandonné mais toujours de travail, Gizmo Daemon http://gizmod.sourceforge.net/ . Après quelques difficultés et googling, je l'ai compilée avec succès sur mon rêve de Debian. Ensuite, j'ai créé ce script gizmod et l'ai placé à ~/.gizmod/modules.d/010-keyboardvimode-sublimetextext2.py http://pastebin.com/hnqggewd

P.s. Sur Linux, KeyboardRemap4mackook Parfois. Cette grande paix du logiciel OS X peut permettre une telle navigation (et beaucoup d'autres choses) avec quelques cases à cocher.

2
sgtpep

Je suis un utilisateur HHKB sur Debian/Ubuntu et cette solution fonctionne pour moi.

utilisation Left Ctrl à la clé active.

$ vi ~/.Xmodmap
keycode 37 = ISO_Level3_Shift

Ajoutez ce code sous // End alphanumeric section dans le bloc base Block dans /USR/Share/X11/XKB/Symboles/US

//hjkl
//Ctrl + hjkl
key <AC06> {    [   h,  H,  Left    ]   };
key <AC07> {    [   j,  J,  Down    ]   };
key <AC08> {    [   k,  K,  Up      ]   };
key <AC09> {    [   l,  L,  Right   ]   };

Maintenant, vous devriez pouvoir utiliser la touche gauche, bas, haut et droite avec Ctrlhjkl.

Au fait, si vous avez utilisé pentatadactyl sur firefox, vous pouvez ajouter ce code dans ~/.pentadactylrc

map -modes=i,c <C-down> <down>
map -modes=i,c <C-up> <up>
1
Chu-Saing Lai

J'ai trouvé AutoKey et c'est mieux pour la cartographie.

Je crois que le lien clavier clé - Emulez le clavier sur ordinateur portable - Ask Ubunt Peut vous aider.

1
Chu-Saing Lai

Celui-ci travaille pour moi sur la voûte. Il remapose les capuchons + HJKL aux touches fléchées et décaltiquer + bouchons sur les capuchons.

Mettez ce qui suit dans ~/.Xmodmap:

! Remap caps lock to special modifier, but still allow shift+caps to 
toggle caps lock
clear lock
clear mod5
add lock = Mode_switch
keycode 66 = Mode_switch Caps_Lock NoSymbol NoSymbol
keycode 43 = h H Left Left
keycode 44 = j J Down Down
keycode 45 = k K Up Up
keycode 46 = l L Right Right

Redémarrez ou réglez-le avec xmodmap ~/.Xmodmap

Si vous obtenez une erreur comme:

X Error of failed request:  BadValue (integer parameter out of range for operation)

Cela signifie probablement que vous devez effacer autre chose que mod5 (tout ce qui est actuellement réglé sur Mode_switch). Vérifiez vos mappages de modificateur actuels avec xmodmap.

1
Huon Imberger