Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#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

Haut de page ↑