Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/10/2013, à 14:36

druzy

[resolu] xkblib : trouver "level" de XkbKeycodeToKeysym

Bonjour,

J'utilise la xkblib.  Dans cette librairie il y a la fonction :

KeySym XkbKeycodeToKeysym(Display *dpy, KeyCode kc, unsigned int group, unsigned int level)

Cette fonction renvoie donc un KeySym associé à une touche du clavier représenté dans le KeyCode en paramètre. Mais suivant les touches d'altérations enfoncés (Shift, alt gr, caps_lock, num lock, ...) Le KeySym va être différent. Il faut donc que je trouve au moment de l'appel de cette fonction, quelles touches d'altération est enfoncées.

Après de longues recherches, j'ai trouvé la fonction :

Status XkbGetState (Display *display, unsigned int device_spec, XkbStatePtr state_return);

Donc voici ma question. Existe-t-il un moyen facile d'obtenir ce level de XkbKeycodeToKeysym avec XkbGetState ou une autre fonction ?

Merci d'avance.

Dernière modification par druzy (Le 28/10/2013, à 21:35)

Hors ligne

#2 Le 28/10/2013, à 21:37

druzy

Re : [resolu] xkblib : trouver "level" de XkbKeycodeToKeysym

J'ai finalement trouvé, voici mon bout de code qui me permet d'avoir le bon KeySym peut importe la touche d'altération appuyé. Si ça peut aider quelqu'un.

unsigned int mods;
	bool ret;
	unsigned int modsRet;
	KeySym ks;
	XkbStateRec stateRec;

//récupère les modifiers
		XkbGetState(display, XkbUseCoreKbd, &stateRec);
		mods=stateRec.mods;
		
		//récupère le keySym suivant le keycode et les modifiers
		ret=XkbLookupKeySym(p->display,detail,mods,&modsRet,&ks);

Après ce bout de code ks a le KeySym voulu.

Dernière modification par druzy (Le 28/10/2013, à 21:37)

Hors ligne