Impl�menter un syst�me de raccourcis clavier pour mon application
Bonjour,
Je suis en train de r�fl�chir � comment ajouter des raccourcis claviers configurables � mon programme. N'�tant pas le premier � vouloir faire ceci j'ai cherch� sur le net des tutos, frameworks, biblioth�ques mais sans r�sultat. Peut-�tre aurais-je ici des pistes pour ne pas r�inventer la roue!
Ce que je sais d�j� faire:
- Ecouter les touches press�es
- Associer une touche � par exemple une std::function<void()> et appeler cette fonction quand la touche est press�e.
Ma question est au niveau de la conception de mon syst�me de gestion des raccourcis. J'explique le syst�me que j'imagine:
Il y a des classes avec des m�thodes publiques, et des objets instances de ces classes.
On peut associer certaines m�thodes de certains de ces objets � des raccourcis clavier, et modifier ces raccourcis pendant l'ex�cution (et du coup que l'utilisateur puisse le faire).
Il y a plusieurs "jeux" de raccourcis claviers. Selon l'�tat de l'application tel ou tel jeu de raccourcis est actif. Une m�me touche peut donc, selon les jeux actifs, d�clencher l'appel de diff�rentes m�thodes.
Il y a au moins un jeu de base, actif tout le temps, qui contient les raccourcis g�n�raux de pilotage global de l'application (la fermer, basculer entre ses �tats principaux, afficher ou cacher certaines fen�tres, etc).
Et il y a des jeux de raccourcis suppl�mentaires, sp�cifiques � l'�tat de l'application. Par exemple quand l'application est en train de lire des vid�os la touche espace fait le play/pause, mais plus tard quand l'application est en mode enregistrement du son du microphone la touche espace d�clenche ou stoppe cet enregistrement.
Plusieurs jeux de raccourcis suppl�mentaires peuvent �tre actifs en m�me temps.
Donc, quand une touche est enfonc�e, le programme d�clenche la fonction associ�e dans le jeu de raccourcis globaux. S'il n'y a pas de fonction associ�e dans ce jeu elle cherche s'il y a une fonction associ�e dans un des autres jeux, et l'ex�cute.
Les objets r�pondant aux touches peuvent �tre cr��s et d�truits pendant l'ex�cution du programme. La m�thode d'un objet associ�e � une touche doit donc �tre appel�e uniquement si l'objet existe, bien s�r.
Les objets peuvent recevoir le focus. Dans un m�me jeu de raccourcis, plusieurs objets peuvent associer une m�thode � une m�me touche. Quand la touche est press�e c'est l'objet qui a le focus qui aura sa m�thode associ�e ex�cut�e.
Il doit �tre possible de sauvegarder et charger les jeux de raccourcis sur le disque, de pr�f�rence sous forme texte (qui soit donc �ditable � la main).
Donc voil�, je suis en train de me demander comment articuler tout cela, avec donc la sensation d'�tre en train de coder quelques chose qui l'a d�j� �t� par d'autres. Est-ce que quelqu'un aurait une piste d'impl�mentation, un pattern � proposer ? En m�me temps j'ai l'impression que ma question est complexe...
Merci :)