IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Comment intercepter un raccourci clavier en arrière plan avec Qt et Linux ?


Sujet :

Qt

  1. #1
    Membre du Club Avatar de nant13
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 43
    Points
    43
    Par défaut Comment intercepter un raccourci clavier en arrière plan avec Qt et Linux ?
    Bonjour,

    Comme le titre l'indique, j'ai une appli qui, quand je l'ouvre, créé un QTrayIcon et une fenêtre que je cache avec la fonction hide() !
    En fait, j'aimerais qu’en faisant Alt+S la fonction show() de la fenêtre soit appeler !
    Le problème, c’est que mon appli n'est plus en focus et je ne sais pas comment faire pour intercepter le raccourci clavier !

    Si quelqu'un a une idée je suis preneur !
    Merci pour votre aide !

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 694
    Points : 188 894
    Points
    188 894
    Par défaut


    À ma connaissance, Qt ne fournit rien à ce niveau, tu dois jouer avec les API système. Par exemple, pour Windows, https://docs.microsoft.com/en-us/win...registerhotkey ; pour X11, https://github.com/jwmullally/xhklib. Je crains que tu doives trouver une solution différente pour Wayland (avec un peu de chance, elle sera utilisable pour Gnome et KDE…).

  3. #3
    Membre du Club Avatar de nant13
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    Merci de ta réponse !
    Ce que je ne comprends pas, c'est que certain logiciel comme synapse (l'alternative a spotlight sur Linux) le font sans problèmes et peux importe la distro Linux !

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 919
    Points : 220 492
    Points
    220 492
    Billets dans le blog
    127
    Par défaut
    Bonjour,

    Du coup, vous pourriez jeter un œil au code (et le récupérer après ), vu que c'est open source/Linux. Je pense qu'ils se sont interfacer avec X11.

  5. #5
    Membre du Club Avatar de nant13
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    Oui, le problème, c’est que c'est du vala et je ne connais pas du tout !

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 919
    Points : 220 492
    Points
    220 492
    Billets dans le blog
    127
    Par défaut
    Après une "longue" recherche dans le code, synapse repose sur cette bibliothèque keybinder (le binding pour Vala). Le code est ici : https://github.com/kupferlauncher/keybinder et ... ça repose sur X11.
    (Il est à noter que je ne connais pas non plus le Vala, c'est ma deuxième fois avec ce langage. Mais tous les langages informatiques sont "similaires", dans le sens, les appels de fonctions, les conditions... sont très facilement reconnaissables d'un langage à un autre. Il ne faut donc jamais hésiter à essayer de lire, de découvrir )

  7. #7
    Membre du Club Avatar de nant13
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    Bonjour, merci pour les liens, je vais regarder !
    En fait j'ai un autre problème que je ne comprends pas, quand je définis une icône pour mon application avec setWindowIcon(QIcon(":/monIcon.png")) il me met une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The X11 connection broke (error 4). Did the X11 server die?
    et mon application plante !!!
    Je ne comprends pas, et du coup, je ne sais pas si mon gestionnaire de fenêtre est X11 !

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 919
    Points : 220 492
    Points
    220 492
    Billets dans le blog
    127
    Par défaut
    X11 est le logiciel permettant d'afficher des fenêtre sous Linux. Sous Linux, c'est donc la base, base sur laquelle Qt, GTK et d'autres reposent. N'hésitez pas à voir Wikipedia pour plus de précisions.
    (X11 devrait être remplacé par Wayland...)

    Il est possible que l'icône que vous utilisez n'est pas dans un format reconnu par X11. Sinon, vous appelez la ligne trop tôt (avant le démarrage de la fenêtre).

  9. #9
    Membre du Club Avatar de nant13
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    En fait je modifie l'icône sur le QGuiApplication, donc avant que la fenêtre soit visible !

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/02/2006, 01h11
  2. Comment définir des raccourcis clavier ?
    Par st0nky dans le forum Composants VCL
    Réponses: 3
    Dernier message: 07/12/2005, 21h37
  3. Intercepter un raccourci clavier
    Par Benjy dans le forum C++Builder
    Réponses: 1
    Dernier message: 08/10/2005, 10h25
  4. Comment spécifier des raccourcis claviers sur une Form ?
    Par Sydaze dans le forum Composants VCL
    Réponses: 5
    Dernier message: 17/06/2005, 10h05
  5. Réponses: 2
    Dernier message: 02/12/2004, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo