# [HOWTO] Télécommande Ati Remote Control sous linux

## Antares

C'est juste une petite méthode pour optimiser un peu le fonctionnement de votre télécommande sous linux... C'est bien pratique quand votre PC fait DivX box, télé, chaine hifi,Lecteur DVD, etc...

CONFIGURATION DU SYSTEM

Premièrement, il faut sélectionner le module ati_remote dans le noyau : 

```
Symbol: USB_ATI_REMOTE

 Prompt: ATI / X10 USB RF remote control

   Defined at drivers/usb/input/Kconfig:223

   Depends on: USB && INPUT

   Location:

     -> Device Drivers

     -> USB support

```

et ajouter une pitite section dans le fichier  /etc/X11/xorg.conf : 

```
Section "InputDevice"

Identifier "My ati remote control"

Driver "mouse"

Option "Protocol" "PS/2"

Option "Device" "/dev/input/mice"

Option "SendCoreEvents"

EndSection

```

sans oublier de la déclarer dans la section "ServerLayout" :

```
InputDevice "My ati remote control" "CorePointer"

```

Maintenant, on mets en route le tsouintsouin : 

```
# modprobe ati_remote

# echo "ati_remote" >> /etc/modules.autoload.d/kernel-2.6

```

C'est parti !

CONFIGURATION DES TOUCHES DE LA TELECOMMANDE

En fait, la télécommande est reconnue comme une extension du clavier. Ainsi, quand on modifie certaines touches de la télécommande, on modifie des touches du clavier. Conclusion, faut faire gaffe et s'en rappeler sinon après on comprend plus rien.

J'utilise 3 outils pour configurer les touches de ma télécommande : xbindkeys, xvkbd et xmodmap.

	--> xbindkeys pour configurer de facon permanente certaines touches de la télécommande

	--> xvkbd pour émuler les combinaisons de touches

	--> xmodmap pour configurer temporairement les touches de la télécommande.

On va commencer par la config de xbindkeys :

Pour récupérer le keycode d'un touche il suffit de faire comme ca : 

```
# xbindkeys -k 

```

et on appuie sur la touche dont on veut le code.

Par exemple pour la touche espace de mon clavier : 

```
# xbindkeys -k 

Press combination of keys or/and click under the window.

You can use one of the two lines after "NoCommand"

in $HOME/.xbindkeysrc to bind a key.

 "NoCommand"

     m:0x10 + c:65

     Mod2 + space

```

Comme c'est indiqué lorsqu'on exécute la commande il faut éditer le fichier ~/.xbindkeysrc comme ceci : 

```
"Commande à executer quand la touche est pressée"

    KEYCODE (par exemple  m:0x10 + c:65)
```

C'est là qu'entre en jeu xvkbd pour avoir une combinaison de touches liée à un seul bouton de la télécommande.

Xvkbd s'utilise comme ceci :

```
# xvkbd -text "Combinaison de touches"
```

Heureusement, on peut mettre les touches "spéciales" du claviers dans les combinaisons de touches :

	- \r - Entrée

	- \t - Tab

	- \b - Espace

	- \e - Echap

	- \d - Delete

	- \S - Shift (modifie le caratère suivant)

	- \C - Control (modifie le caractère suivant)

	- \A - Alt (modifie le caractère suivant)

	- \M - Meta (modifie le caractère suivant)

	- \[keysym] - le keysym correspondant

Ainsi, pour avoir la touche POWER (rouge) de la télécommande agissant comme ALT+F4, il faut faire : 

```
# xbindkeys -k

Press combination of keys or/and click under the window.

You can use one of the two lines after "NoCommand"

in $HOME/.xbindkeysrc to bind a key.

"NoCommand"

    m:0x10 + c:222

    Mod2 + NoSymbol

```

Et on récupère le keycode de la touche power, et ensuite on mets ceci dans le fichier  ~/.xbindkeysrc :

```
"xvkbd -text "\A\[F4]" "

    m:0x10 + c:222

```

Enfin, on peut choisir de reconfigurer la télécommande pour chaque application (xmms, mplayer, tvtime, ogle...) avec xmodmap.

Il faudra pour cela éditer un fichier de config pour chaque application avec cette syntaxe :

keycode KEYCODE = KEYSYM

où KEYCODE est le numéro de la touche (222 pour la touche POWER, utilisée juste avant) et KEYSYM est la touche que l'on veut (a, b, c, d, 1, 2, 3...)

Voilà ma config pour certaines applications :

```
# cat ~/.xmodmap_tvtime

!################################################

!############ ATI REMOTE CONTROL ################

!################## TVTIME ######################

!################################################

!Quit

keycode 10 = 1

keycode 11 = 2

keycode 12 = 3

keycode 13 = 4

keycode 14 = 5

keycode 15 = 6

keycode 16 = 7

keycode 17 = 8

keycode 18 = 9

keycode 19 = 0

!Chanel +

keycode 105 = Up

!Chanel -

keycode 99 = Down

```

```
# cat ~/.xmodmap_xmms   

 

!################################################

!############ ATI REMOTE CONTROL ################

!################### XMMS #######################

!################################################

!Play

keycode 168 = x

!Pause

keycode 110 = c

!Stop

keycode 232 = v

!Next track

keycode 233 = b

!Previous track

keycode 152 = z

!Shuffle

keycode 26  =  s

!Repeat

keycode 41 =  r

```

```
# cat ~/.xmodmap_gmplayer 

!################################################

!############ ATI REMOTE CONTROL ################

!################# GMPLAYER #####################

!################################################

!Play

keycode 168 = Return

!Pause

keycode 110 = p

!Stop

keycode 232 = s

!Next track

keycode 233 = greater

!Previous track

keycode 152 = less

!Quit

keycode 222 = q

```

Ainsi, au lieu de lancer l'application nommée GN2 avec la commande "GN2", on la lance avec :

```
# xmodmap ~/.xmodmap_GN2 | GN2 

```

Il suffit donc d'insérer tout ceci dans le fichier ~/.xbindkeysrc.

Cependant, comme je l'ai signalé au début, la télécommande est une extension du clavier. Par exemple, avec le xmodmap de tvtime, les touches de 1 à 9 du clavier sont modifiées aussi. Il va donc falloir reconfigurer le clavier au moment de quitter l'application. J'ai choisi de la faire de cette façon : quand je presse la touche POWER, ça fait la combinaison ALT+F4 et ensuite ca reconfigure tout.(dans ~/.xbindkeysrc)

```
"xvkbd -text "\A\[F4]" && xmodmap ~/.xmodmap_restore "

    m:0x10 + c:222

```

Avec ~/.xmodmap_restore : 

```
# cat ~/.xmodmap_restore

clear Mod1

clear Mod2

keycode   9 = Escape Escape

keycode  10 = ampersand 1

keycode  11 = eacute 2 dead_tilde

keycode  12 = quotedbl 3 numbersign

keycode  13 = apostrophe 4 braceleft

keycode  14 = parenleft 5 bracketleft

keycode  15 = minus 6 bar

keycode  16 = egrave 7 dead_grave

keycode  17 = underscore 8 backslash

keycode  18 = ccedilla 9 asciicircum

keycode  19 = agrave 0 at

keycode  20 = parenright degree bracketright

keycode  21 = equal plus braceright

keycode  22 = BackSpace

keycode  23 = Tab Tab

keycode  24 = a

keycode  25 = z

keycode  26 = e E EuroSign

keycode  27 = r

keycode  28 = t

keycode  29 = y

keycode  30 = u

keycode  31 = i

keycode  32 = o

keycode  33 = p

keycode  34 = dead_circumflex  dead_diaeresis 

keycode  35 = dollar sterling currency

keycode  36 = Return

keycode  37 = Control_L

keycode  38 = q

keycode  39 = s

keycode  40 = d

keycode  41 = f

keycode  42 = g

keycode  43 = h

keycode  44 = j

keycode  45 = k

keycode  46 = l

keycode  47 = m M

keycode  48 = ugrave percent

keycode  49 = twosuperior

keycode  50 = Shift_L

keycode  51 = asterisk mu

keycode  52 = w

keycode  53 = x

keycode  54 = c

keycode  55 = v

keycode  56 = b

keycode  57 = n

keycode  58 = comma question dead_cedilla

keycode  59 = semicolon period

keycode  60 = colon slash Multi_key

keycode  61 = exclam section

keycode  62 = Shift_R

keycode  63 = KP_Multiply

keycode  64 = Alt_L Meta_L

keycode  65 = space space

keycode  66 = Caps_Lock

keycode  67 = F1 F11

keycode  68 = F2 F12

keycode  69 = F3 F13

keycode  70 = F4 F14

keycode  71 = F5 F15

keycode  72 = F6 F16

keycode  73 = F7 F17

keycode  74 = F8 F18

keycode  75 = F9 F19

keycode  76 = F10 F20

keycode  77 = Num_Lock

keycode  78 = Scroll_Lock

keycode  79 = KP_7

keycode  80 = KP_8

keycode  81 = KP_9

keycode  82 = KP_Subtract

keycode  83 = KP_4

keycode  84 = KP_5

keycode  85 = KP_6

keycode  86 = KP_Add

keycode  87 = KP_1

keycode  88 = KP_2

keycode  89 = KP_3

keycode  90 = KP_0

keycode  92 = Sys_Req

keycode  94 = less greater bar

keycode  95 = F11 F11

keycode  96 = F12 F12

keycode  98 = Up

keycode  99 = Prior

keycode 100 = Left

keycode 102 = Right

keycode 104 = Down

keycode 105 = Next

keycode 106 = Insertkeycode 107 = Delete

keycode 108 = KP_Enter

keycode 109 = Control_R

keycode 112 = KP_Divide

keycode 113 = Mode_switch

keycode 114 = Break

keycode 110 = Find

! right windows-logo key

! in "windows" keyboards the postion of the key is annoying, is where AltGr

! usually resides, so go definie it as AltGr

keycode 116 = Mode_switch

! right windows-menu key

keycode 117 = Multi_key

add Mod1 = Alt_L Meta_L 

add Mod2 = Num_Lock

add Mod4 = Super_L Super_R Super_L Hyper_L

add Mod5 = Mode_switch  ISO_Level3_Shift 

```

Ou alors on peut aussi générer le fichier avec cette commande : (merci bong)

```

$ xmodmap -pke > ~/.xmodmap_restore

```

(cette commande doit etre tapée à partir d'un mapping vierge de toutes modifications...)

ASTUCES

Des pitites astuces pour peaufiner la config : 

Pour la touche MUET : si comme moi vous voulez utiliser cette touche pour couper le son et le remettre, il suffit d'utiliser cette commande :

```
"amixer set Master toggle"

    m:0x10 + c:160

```

Pour les touches du volume :

```
"amixer set Master 1-"

    m:0x10 + c:174

"amixer set Master 1+"     

    m:0x10 + c:176

```

J'ai remarqué que quelques fois la télécommande était détectée en tant que m:0x00 et pas m:0x10. Je sais pas encore trop pourquoi , mais la solution que j'ai trouvé pour l'instant c'est de dupliquer le fichier ~/.xbindkeys pour que ça fonctionne dans les deux cas : 

```
# cat ~/.xbindkeysrc 

###########################

# xbindkeys configuration #

###########################

"amixer set Master 1-"

    m:0x10 + c:174

"amixer set Master 1+"

    m:0x10 + c:176

"amixer set Master toggle"

    m:0x10 + c:160

"xvkbd -text "\A\[F4]" && xmodmap ~/.xmodmap_restore "

    m:0x10 + c:222

"xvkbd -text  "\C\A\[Left]" "

    m:0x10 + c:146

"xvkbd -text "\C\A\[Right]" "

    m:0x10 + c:140

"xvkbd -text "\A\[Escape]" "

    m:0x10 + c:177

"xmodmap ~/.xmodmap_tvtime | tvtime"

    m:0x10 + c:159

"ogle"

    m:0x10 + c:151

"xterm"

    m:0x10 + c:178

"xmodmap ~/.xmodmap_gmplayer | gmplayer"

    m:0x10 + c:230

"xmodmap ~/.xmodmap_xmms | xmms"

    m:0x10 + c:136

##############################################################################

"amixer set Master 1-"

    m:0x0 + c:174

"amixer set Master 1+"

    m:0x0 + c:176

"amixer set Master toggle"

    m:0x0 + c:160

"xvkbd -text "\A\[F4]" && xmodmap ~/.xmodmap_restore "

    m:0x0 + c:222

"xvkbd -text  "\C\A\[Left]" "

    m:0x0 + c:146

"xvkbd -text "\C\A\[Right]" "

    m:0x0 + c:140

"xvkbd -text "\A\[Escape]" "

    m:0x0 + c:177

"xmodmap ~/.xmodmap_tvtime | tvtime"

    m:0x0 + c:159

"ogle"

    m:0x0 + c:151

"xterm"

    m:0x0 + c:178

"xmodmap ~/.xmodmap_gmplayer | gmplayer"

    m:0x0 + c:230

"xmodmap ~/.xmodmap_xmms | xmms"

    m:0x0 + c:136

##################################

# End of xbindkeys configuration #

##################################

```

Maintenant c'est bon, vous pouvez faire la feignasse et ne plus vous lever de votre fauteuil.....  :Very Happy: Last edited by Antares on Fri Nov 04, 2005 11:04 pm; edited 2 times in total

----------

## dreamer86

Tu aurais pas un howto pour l'ati remote avec lirc aussi ?  :Rolling Eyes: 

----------

## anigel

 *dreamer86 wrote:*   

> Tu aurais pas un howto pour l'ati remote avec lirc aussi ? 

 

Si si, aussi : voir ce HOWTO  :Wink:  !

----------

## Antares

l'interet de ma methode, c'est que la télécommande a une configuration différente pour chaque application (plus pratique quand on utilise pas freevo).... Je crois pas que ca fonctionne de la sorte avec lirc. :Wink: 

----------

## Antares

Ce Howto a été retranscris sur fr.gentoo-wiki.org   :Very Happy: 

----------

## bong

Juste une remarque,

ton fichier ~/.xmodmap_restore est quelque peux corrompu (doublons, etc..) donc si comme moi la premiere fois le mec qui suit ton how-to se contente d'un "copier/coller", il aura des surprises   :Wink:  , tu devrais ajouter qu'on peut facilement en generer un de cette maniere:

```
$ xmodmap -pke > ~/.xmodmap_restore
```

Evidement, cette commande doit etre tapée à partir d'un mapping vierge de toutes modifications...

----------

## Antares

bizarre, j'ai mis le fichier que j'utilise et je n'ai aucun soucis...(note, j'ai un clavier completement normal, pas de touches spéciales etc..) ca se manifestait par quoi ton problème?

----------

## bong

j'avais des problemes de caracteres en double, je me rappelle plus lesquels mais c'est pas important...

Par contre, tu devrais ajouter ajouter la commande ne serait-ce que pour ceux qui n'ont pas le meme mapping.

----------

## Antares

voila c'est ajouté !! merci du coup de main

----------

