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 06/05/2009, à 21:32

Mistermasque

[Tuto] Faire fonctionner les touches multimédia sous KDE

Alors si comme moi vous avez un clavier multimedia et que vous avez certaines touches qui fonctionnent mais pas d'autres sous KDE, voici de quoi vous éclaircir.

Tout d'abord, pour trouver cette solution, j'ai suivi ce tuto: http://www.lea-linux.org/documentations … multimedia

Je vous conseille vivement de d'abord en prendre connaissance. Ce qui est décrit ici vient en complément de ce tuto.

Pour ceux qui auraient déjà vu ce tuto mais qui tombent sur le message d'erreur dans KDE:
Cette touche n'est pas prise en charge par Qt
Passer au point n°5


Ca se passe en 4 étapes (rappel du tutoriel dans les étapes 1 et 2) :
1) Vérifier si les touches sont reconnues par X11
Sur l'interface graphique, lancer konsole et taper la commande:

xev

Taper sur les touches de votre clavier non reconnues. Si la touche est reconnue par le noyau, cela donne :

KeyRelease event, serial 27, synthetic NO, window 0x3400001,
root 0x48, subw 0x0, time 7029077, (249,-81), root:(252,517),
state 0x0, keycode 233 (keysym 0x1008ff27, XF86Forward), same_screen YES,
XLookupString gives 0 bytes: ""

Sinon on a rien.
Noter le keycode et le code de la touche X11 qui apparait entre parenthèses à coté de  keysym. Ce qui donne ici:
keycode = 233
Code touche X11 = XF86Forward

Il est possible que le code touche X11 ne donne rien (on obtient noSymbol). On va voir ça plus tard.

Effectuer cette opération pour toutes les touches non reconnues.


2) Rescencer les touches non reconnues à l'étape 1.
Passer en console (CTRL+ALT+F1)
Se loguer puis taper la commande
tail -f /var/log/messages

Appuyer sur les touches qui ne sont pas reconnues à l'étape 1. On doit voir apparaitre la ligne suivante lors de l'appui de la touche :

Feb  7 16:13:08 localhost atkbd.c: Use 'setkeycodes e012 <keycode>' to make it known.

Noter le scancode commençant par e... (ici c'est e012).

A partir de là on a une liste de touches qui ont :
1 scancode e.. obtenu à l'étape 2
1 keycode obtenu à l'étape 1
1 code touche X11 obtenu à l'étape 1

Chacune des touches n'a pas la liste complète des éléments.


3) On configure tout ça

L'idée est d'attribuer les différentes infos manquantes.
Pour cela, on créé un script qui va se lancer au démarrage:

#!/bin/sh -e
# Permet de charger les touches multimedia non reconnues


. /lib/lsb/init-functions

# Fichier contenant la variable KEYBOARD_MODEL qui permet de rechercher le bon fichier de conf
. /etc/keys/hotkeys.conf

FIC_CONF_HOTKEYS="/etc/keys/$KEYBOARD_MODEL.conf"
FIC_CONF_CODE_TOUCHE="/etc/keys/xmodmap.conf"


# Vérification de la présence du fichier de configuration

if [ ! -f "$FIC_CONF_HOTKEYS" ]
then
	log_warning_msg "$FIC_CONF_HOTKEYS introuvable, la configuration est ignorée."
	return 1
fi

# helper function to set the usplash timeout. https://launchpad.net/bugs/21617
usplash_timeout () {
	TIMEOUT=$1
	if [ -x /sbin/usplash_write ]; then
		/sbin/usplash_write "TIMEOUT $TIMEOUT" || true
	fi
}


recup_keycodes () {
	grep -v "^#" $1 | grep -v "^$" | while read ligne_fic_conf
	do
		scancode=`echo "$ligne_fic_conf" | cut -d':' -f1`
		keycode=`echo "$ligne_fic_conf" | cut -d':' -f2`

		if [ -n "$scancode" ]
		then
			keycode=$(($keycode - 8))
			echo "$scancode $keycode"
		fi
	done
}

appliquer_keycodes () {
	grep -v "^#" $1 | grep -v "^$" | while read ligne_fic_conf
	do
		keycode=`echo "$ligne_fic_conf" | cut -d':' -f2`
		xfreecode=`echo "$ligne_fic_conf" | cut -d':' -f3`

		if [ -n "$xfreecode" ]
		then
			echo "$keycode = $xfreecode"
		fi
	done
}

case "$1" in
start)
	log_action_begin_msg "Configuration des touches additionnelles du clavier"
	usplash_timeout 120

	recup_keycodes $FIC_CONF_HOTKEYS | while read scan_key_code
	do

		setkeycodes $scan_key_code

	done

	usplash_timeout 15

# Si la config existe déjà, on ne la remplace pas
	if [ ! -f $FIC_CONF_CODE_TOUCHE ]
	then
		echo "" > $FIC_CONF_CODE_TOUCHE

		appliquer_keycodes $FIC_CONF_HOTKEYS | while read key_code_touche
		do

			echo "keycode $key_code_touche" >> $FIC_CONF_CODE_TOUCHE

		done
	fi

	log_action_end_msg $?

	;;

*)
	echo "Usage: /etc/init.d/hotkeys {start}"
	exit 1
	;;
esac

exit 0

Ce script se charge de lire 2 fichiers de configuration:
- l'un précisant le modèle de clavier
- l'autre étant le fichier de configuration du clavier

Placer ce script dans /etc/init.d et le rendre exécutable (j'ai appelé mon script hotkeys):

sudo cp hotkeys /etc/init.d/
sudo chmod +x /etc/init.d/hotkeys

Le mettre dans la liste des scripts à démarrer:

sudo update-rc.d hotkeys start 20 2 .

Créer le fichier /etc/keys/hotkeys.conf contenant:

KEYBOARD_MODEL=<nom du clavier>

pour ma part, j'ai un clavier de type Microsoft Digital Media Pro, j'ai donc écrit:

KEYBOARD_MODEL=MicrosoftDigitalMediaProKeyboard

Créer enfin le fichier /etc/keys/<nom du clavier>.conf. Pour mon clavier j'ai créé:

# Fichier de configuration permettant de lister les touches
# non reconnues par xev du clavier Microsoft Digital Media Pro Keyboard
# Les colonnes sont comme suit:
# scancode récupéré dans /var/log/messages:keycode:Description de la touche

# Vu que Qt ne gère pas tous les cades XFree, on en applique d'autres
# e011:200:XF86ZoomOut:Zoom -
# e00b:201:XF86ZoomIn:Zoom +
# e073:202:XF86Launch1:Touche favoris 1
# e074:203:XF86Launch2:Touche favoris 2
# e075:204:XF86Launch3:Touche favoris 3
# e076:205:XF86Launch4:Touche favoris 4
# e077:206:XF86Launch5:Touche favoris 5
# e078:207:XF86Favorites:Touche favoris *
# e064:208:XF86Pictures:Photo/Vidéo
# e03c:209:XF86Music:Musique
# e005:210:XF86Messenger:Messener
# e016:211:XF86LogOff:Deconnexion
# e03b:212::Aide (F1 sans FLock)
# e008:213::Annuler (F2 sans FLock)
# e007:214::Rétablir (F3 sans FLock)
# e03e:215:XF86New:Nouveau (F4 sans FLock)
# e03f:216:XF86Open:Ouvrir (F5 sans FLock)
# e040:217:XF86Close:Fermer (F6 sans FLock)
# e041:218:XF86Reply:Répondre (F7 sans FLock)
# e042:219:XF86MailForward:Transférer (F8 sans FLock)
# e043:220:XF86Send:Envoyer (F9 sans FLock)
# e023:221:XF86Spell:Orthographe (F10 sans FLock)
# e057:222:XF86Save:Enregistrer (F11 sans FLock)
# e058:223::Imprimer (F12 sans FLock)
# :120:XF86OfficeHome:Mes documents
# :148:XF86Calculater:Calculatrice


e011:200:XF86LaunchC:Zoom -
e00b:201:XF86LaunchD:Zoom +
e073:202:XF86Launch1:Touche favoris 1
e074:203:XF86Launch2:Touche favoris 2
e075:204:XF86Launch3:Touche favoris 3
e076:205:XF86Launch4:Touche favoris 4
e077:206:XF86Launch5:Touche favoris 5
e078:207:XF86Favorites:Touche favoris *
e064:208:XF86AudioRecord:Photo/Vidéo
e03c:209:XF86AudioMedia:Musique
e005:210:XF86LaunchB:Messener
e016:211:XF86Launch0:Deconnexion
e03b:212:XF86Search:Aide (F1 sans FLock)
e008:213:XF86Back:Annuler (F2 sans FLock)
e007:214:XF86Forward:Rétablir (F3 sans FLock)
e03e:215:XF86Refresh:Nouveau (F4 sans FLock)
e03f:216:XF86OpenURL:Ouvrir (F5 sans FLock)
e040:217:XF86Launch6:Fermer (F6 sans FLock)
e041:218:XF86Launch7:Répondre (F7 sans FLock)
e042:219:XF86Launch8:Transférer (F8 sans FLock)
e043:220:XF86Launch9:Envoyer (F9 sans FLock)
e023:221:XF86LaunchA:Orthographe (F10 sans FLock)
e057:222::Enregistrer (F11 sans FLock)
e058:223::Imprimer (F12 sans FLock)
:120:XF86MyComputer:Mes documents
:148:XF86Calculator:Calculatrice
:150:XF86Standby:Veille

Attention avant de remplir ce fichier, lire jusqu'à la fin (notamment la partie 5).

Tout est écrit dans le fichier: il permet, pour chaque touche, de donner un scancode, un keycode et une touche X11.
Le script, avec l'aide des fichiers de conf, va produire le fichier /etc/keys/xmodmap.conf

4) Enfin, on lance xmodmap avec ce fichier à chaque lancement de la machine (ne peut se faire qu'après démarrage de X11).

Chacun choisit sa méthode, le tuto de Léa (donné en lien au début de ce poste) propose un script mis dans ~/.kde/Autostart.

Pour ma part, j'ai modifié le fichier /etc/kde<3 ou 4>/kdm/Xsetup pour ajouter:

if [ -r "/etc/keys/touches_xfree.conf" ]
then
        xmodmap "/etc/keys/xmodmap.conf"
fi

A partir d'ici, on a couvert tout le tutoriel de Léa pour la reconnaissance des touches.

5) Attention aux touches non reconnues par Qt

Et donc voilà on a bien fait reconnaitre nos touches mais dès qu'on veut utiliser nos jolies touches toutes configurées dans KDE, on a le vilain message suivant:

La touche sur laquelle vous venez d'appuyer n'est pas prise en charge par Qt.

Et on se dit que c'est foutu, si Qt veut rien savoir.... En fait, Qt ne gère pas tous les codes de touches proposés dans le fichier des codes X11 : /usr/share/X11/XKeysymDB

Je vais vous faciliter le boulot, voici la liste des touches qui sont reconnues par Qt:

// dead keys
dead_grave,              Qt::Key_Dead_Grave,
dead_acute,              Qt::Key_Dead_Acute,
dead_circumflex,         Qt::Key_Dead_Circumflex,
dead_tilde,              Qt::Key_Dead_Tilde,
dead_macron,             Qt::Key_Dead_Macron,
dead_breve,              Qt::Key_Dead_Breve,
dead_abovedot,           Qt::Key_Dead_Abovedot,
dead_diaeresis,          Qt::Key_Dead_Diaeresis,
dead_abovering,          Qt::Key_Dead_Abovering,
dead_doubleacute,        Qt::Key_Dead_Doubleacute,
dead_caron,              Qt::Key_Dead_Caron,
dead_cedilla,            Qt::Key_Dead_Cedilla,
dead_ogonek,             Qt::Key_Dead_Ogonek,
dead_iota,               Qt::Key_Dead_Iota,
dead_voiced_sound,       Qt::Key_Dead_Voiced_Sound,
dead_semivoiced_sound,   Qt::Key_Dead_Semivoiced_Sound,
dead_belowdot,           Qt::Key_Dead_Belowdot,
dead_hook,               Qt::Key_Dead_Hook,
dead_horn,               Qt::Key_Dead_Horn,

// Special multimedia keys
// currently only tested with MS internet keyboard

// browsing keys
XF86Back,               Qt::Key_Back,
XF86Forward,            Qt::Key_Forward,
XF86Stop,               Qt::Key_Stop,
XF86Refresh,            Qt::Key_Refresh,
XF86Favorites,          Qt::Key_Favorites,
XF86AudioMedia,         Qt::Key_LaunchMedia,
XF86OpenURL,            Qt::Key_OpenUrl,
XF86HomePage,           Qt::Key_HomePage,
XF86Search,             Qt::Key_Search,

// media keys
XF86AudioLowerVolume,   Qt::Key_VolumeDown,
XF86AudioMute,          Qt::Key_VolumeMute,
XF86AudioRaiseVolume,   Qt::Key_VolumeUp,
XF86AudioPlay,          Qt::Key_MediaPlay,
XF86AudioStop,          Qt::Key_MediaStop,
XF86AudioPrev,          Qt::Key_MediaPrevious,
XF86AudioNext,          Qt::Key_MediaNext,
XF86AudioRecord,        Qt::Key_MediaRecord,

// launch keys
XF86Mail,               Qt::Key_LaunchMail,
XF86MyComputer,         Qt::Key_Launch0,
XF86Calculator,         Qt::Key_Launch1,
XF86Standby,            Qt::Key_Standby,

XF86Launch0,            Qt::Key_Launch2,
XF86Launch1,            Qt::Key_Launch3,
XF86Launch2,            Qt::Key_Launch4,
XF86Launch3,            Qt::Key_Launch5,
XF86Launch4,            Qt::Key_Launch6,
XF86Launch5,            Qt::Key_Launch7,
XF86Launch6,            Qt::Key_Launch8,
XF86Launch7,            Qt::Key_Launch9,
XF86Launch8,            Qt::Key_LaunchA,
XF86Launch9,            Qt::Key_LaunchB,
XF86LaunchA,            Qt::Key_LaunchC,
XF86LaunchB,            Qt::Key_LaunchD,
XF86LaunchC,            Qt::Key_LaunchE,
XF86LaunchD,            Qt::Key_LaunchF,

A gauche le code de la touche X11 et à droite le code attribué par Qt.
Bon, c'est sur que c'est moins complet que les touches proposés par X11 mais c'est déjà ça et j'ai réussit à faire fonctionner les touches qui me sont le plus utile.

Choisir les codes de touches selon vos besoin pour les mettre dans le fichier de configuration du clavier.


Et voilà, en espérant que ça aura pu vous servir.

Hors ligne

#2 Le 06/05/2009, à 21:49

jajaX

Re : [Tuto] Faire fonctionner les touches multimédia sous KDE

salut

merci, faut que je teste ça wink


@+
jajaX
Asus X93SM-YZ157V / Asus X93SM-YZ065V sous KDE Neon
ASUS K95VB sous Kubuntu 22.04 Jammy Jellyfish (64 bits) / ACER Aspire 5612 WLMI sous Kubuntu 18.04 Bionic Beaver (32 bits)

Hors ligne

#3 Le 17/05/2009, à 12:47

Mistermasque

Re : [Tuto] Faire fonctionner les touches multimédia sous KDE

Bonjour jajax

Je voulais savoir si la solution proposée fonctionne.

Hors ligne

#4 Le 17/05/2009, à 15:18

jajaX

Re : [Tuto] Faire fonctionner les touches multimédia sous KDE

toutes les touches de mon clavier fonctionne bien dans amarok donc j'ai pas tester.


@+
jajaX
Asus X93SM-YZ157V / Asus X93SM-YZ065V sous KDE Neon
ASUS K95VB sous Kubuntu 22.04 Jammy Jellyfish (64 bits) / ACER Aspire 5612 WLMI sous Kubuntu 18.04 Bionic Beaver (32 bits)

Hors ligne

#5 Le 17/05/2009, à 18:17

Mistermasque

Re : [Tuto] Faire fonctionner les touches multimédia sous KDE

OK, C'est vrai qu'avec Kubuntu et Ubuntu en général, la plupart des touches fonctionnent tout de suite.
Mais c'est pas toujours le cas pour les claviers qui ont des touches un peu spéciales (genre le zoom, accès à Mes documents pour windows, etc...).

Hors ligne

#6 Le 17/05/2009, à 23:33

jajaX

Re : [Tuto] Faire fonctionner les touches multimédia sous KDE

effectivement. je testerais quand même je pense car j'ai des fois ce genre de message :

touchesclavierqt.th.jpg

edit : je viens de (re)lire ton point n°5 faut vraiment que je teste ça.. mais quand là...

Dernière modification par jajaX (Le 17/05/2009, à 23:36)


@+
jajaX
Asus X93SM-YZ157V / Asus X93SM-YZ065V sous KDE Neon
ASUS K95VB sous Kubuntu 22.04 Jammy Jellyfish (64 bits) / ACER Aspire 5612 WLMI sous Kubuntu 18.04 Bionic Beaver (32 bits)

Hors ligne

#7 Le 23/05/2012, à 10:00

abecidofugy

Re : [Tuto] Faire fonctionner les touches multimédia sous KDE

Bonjour

Y'a du neuf sous KDE latest ? Je n'ai qu'une touche que ne marche pas sur mon portable, celle pour activer / désactiver le pavé tactile…

Merci

Hors ligne

#8 Le 23/05/2012, à 11:11

Mistermasque

Re : [Tuto] Faire fonctionner les touches multimédia sous KDE

Actuellement je ne l'ai pas encore testé.
Il faut déjà vérifier que le mapping des touches est géré par Qt.

Tu peux vérifier les éléments suivants :
1: Vérifier si KDE gère la touche :
Dans les raccourcis globaux de KDE, essaye de redéfinir une touche (sans enregistrer) par celle d'activation/désactivation du pavé tactile.
- Si ça marche, tout est OK, KDE gère ta touche.
- Si tu as un message d'erreur comme quoi Qt ne gère pas la touche ou si rien ne se passe, vérifier que X peut gérer la touche.

2: Vérifier que X gère ta touche :
Utilise xev (voir le 1er post). Si la touche n'est pas reconnue, là il faut voir avec le mapping des touches effectué par le noyau linux.
Je sais que c'est possible mais mes connaissances s'arrêtent là.


3: X gère la touche mais pas KDE :
Tu peux utiliser des outils pour transformer la commande de ta touche en séquence de touche clavier ou commande. Mais là, l'activation et la désactivation du pavé tactile ne passe plus par KDE.
C'est plus compliqué mais ça a l'avantage de ne pas être adhérent à l'environnement de bureau (attention toutefois aux conflits de raccourcis)

Je connais btnx qui est utilisé pour la souris. A voir si cela fonctionne pour les raccourcis claviers.

Hors ligne

#9 Le 23/05/2012, à 16:41

abecidofugy

Re : [Tuto] Faire fonctionner les touches multimédia sous KDE

Salut Mistermasque

Merci d'avoir pris le temps de me répondre. J'ai lancé ce post ici pour te décrire ce que j'ai déjà fait :
http://forum.ubuntu-fr.org/viewtopic.ph … 1#p9377641

Merci de ton aide.

Hors ligne