Je veux mapper des pressions sur des raccourcis dans Lubuntu, mais la sortie de xev me confond

2

J'utilise un Toshiba r835 avec Lubuntu. Après une installation propre, appuyer sur le bouton d'alimentation alors que la machine est allumée ne fait rien. J'ai corrigé le bouton d'alimentation en suivant ce conseil :

J'ai ajouté ces lignes à ~ / .config / openbox / lubuntu-rc.xml

<keybind key="XF86PowerOff">
<action name="Execute">
<command>lubuntu-logout</command>
</action>
</keybind>

Cela a du sens pour moi.

Je souhaite mapper plusieurs autres clés sur des raccourcis similaires. Par exemple, lorsque j'appuie sur Fn-F1, je souhaite verrouiller l'écran. J'imagine que j'ajouterais quelque chose comme

<keybind key="XF86ScreenSaver">
<action name="Execute">
<command>xscreensaver-command -lock</command>
</action>
</keybind>

Cependant, lorsque j'appuie sur Fn-F1, le menu Lubuntu s'ouvre, comme si j'avais appuyé sur la touche Super_L . Il tape également la lettre l si un terminal est ouvert. Mon raccourci souhaité xscreensaver-command -lock semble être ignoré. Que se passe-t-il? Pourquoi mon raccourci ne fonctionne-t-il pas?

Je pensais pouvoir comprendre cela avec xev, mais la sortie de xev me déroute:

FocusOut event, serial 41, synthetic NO, window 0x2000001,
mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 41, synthetic NO, window 0x2000001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 41, synthetic NO, window 0x0,
    keys:  0   0   0   0   0   64  0   0   0   0   0   0   0   0   0   0   
           32  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

MappingNotify event, serial 41, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

KeyPress event, serial 41, synthetic NO, window 0x2000001,
    root 0xae, subw 0x0, time 16525549, (289,-138), root:(341,155),
    state 0x40, keycode 160 (keysym 0x1008ff2d, XF86ScreenSaver), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 41, synthetic NO, window 0x2000001,
    root 0xae, subw 0x0, time 16525550, (289,-138), root:(341,155),
    state 0x40, keycode 160 (keysym 0x1008ff2d, XF86ScreenSaver), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

MappingNotify event, serial 42, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

KeyRelease event, serial 42, synthetic NO, window 0x2000001,
    root 0xae, subw 0x0, time 16525639, (289,-138), root:(341,155),
    state 0x40, keycode 46 (keysym 0x6c, l), same_screen YES,
    XLookupString gives 1 bytes: (6c) "l"
    XFilterEvent returns: False

KeyRelease event, serial 43, synthetic NO, window 0x2000001,
    root 0xae, subw 0x0, time 16525646, (289,-138), root:(341,155),
    state 0x40, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Il semble que je reçoive le keycode 160, ce qui je pense est XF86ScreenSaver, mais c'est aussi comme si j'avais appuyé sur la touche Super_L et la clé l . Je pense que toute cette sortie provient de la seule pression de touche Fn-F1. Cela me confond Comment puis-je obtenir que Fn-F1 verrouille l'écran au lieu d'ouvrir le menu Lubuntu et de taper la lettre "l"?

    
posée Andrew 28.02.2012 - 07:10
la source

2 réponses

2

Vous pouvez accomplir cela avec l’application xbindkeys. Ouvrez une fenêtre de terminal et tapez ce qui suit:

sudo apt-get install xbindkeys

Une fois installé, vous voulez créer deux fichiers dans votre répertoire personnel appelé:

.xbindkeysrc

Ce fichier contiendra vos configurations pour vos raccourcis clavier

.xbindkeys.noauto

Ce sera juste un fichier vierge mais quand il existe, il empêche le serveur X de démarrer xbindkeys au démarrage. Bien que nous voulions le démarrer au démarrage, nous souhaitons le démarrer nous-mêmes via les applications de démarrage. La raison en est que le serveur X le lance très tôt dans le processus de démarrage, ce qui peut parfois empêcher le fonctionnement de nos configurations dans notre fichier .xbindkeysrc .

Ajoutez maintenant les lignes suivantes à votre fichier .xbindkeysrc

"xscreensaver-command -lock"
c:160

Enregistrer le fichier

Maintenant, créez un petit script pour démarrer xbindkeys que nous allons mettre dans nos applications de démarrage:

Ouvrez votre éditeur de texte favori et copiez ou collez ou tapez les lignes suivantes:

#!/bin/bash

sleep 10
/usr/bin/xbindkeys &

Enregistrez-le dans votre répertoire personnel sous la forme xbstart.sh ou ce que vous voulez

Rendez-le exécutable

chmod 755 xbstart.sh

Ajoutez simplement ce script à vos applications de démarrage et à votre redémarrage.

Que se passe-t-il lorsque vous vous connectez, xbindkeys est appelé et lit votre fichier .xbindkeysrc et s'exécute en arrière-plan. Il surveille constamment vos frappes au clavier et lorsque vous appuyez sur keycode 160 , il le piégera avant que le serveur X ait une chance de provoquer l'exécution de xscreensaver-command -lock au lieu d'ouvrir votre menu.

    
réponse donnée Scott Stookey 28.02.2012 - 08:04
la source
2

J'ai ajouté ceci

<keybind key="C-A-L">
  <action name="Execute">
    <command>xscreensaver-command -lock</command>
  </action>
</keybind>

alors quand je fais Crt + Alt + L mon screebscaver démarre ... comme me montrerfossfreedom

alors je supprime que vous devez faire quelque chose de similaire

<keybind key="C-F1">
  <action name="Execute">
    <command>xscreensaver-command -lock</command>
  </action>
</keybind>

mais vérifiez d'abord si ce keybind n'est pas déjà utilisé.

... À propos de l’option fn que vous vouliez: je citerai wikipedia .

  

Contrairement aux autres touches de modification telles que Ctrl, Shift et AltGr, la   microcontrôleur à l'intérieur du clavier envoie généralement un autre   keycode selon que la touche Fn est enfoncée ou non. Cela permet à la   clavier pour émuler un clavier de taille normale, de sorte que des cartes clés spécialisées   n'a pas besoin d'être créé; le système d'exploitation peut utiliser standard   Keymaps conçus pour un clavier complet. Parce que le fonctionnement   le système n'a aucune notion de la touche Fn, la clé ne peut pas être remappée dans   logiciel, contrairement à toutes les autres touches du clavier standard.

    
réponse donnée maniat1k 28.02.2012 - 10:56
la source

Lire d'autres questions sur les étiquettes