#! /bin/sh

#
# Dans /etc/X11/xkb/symbols/inet, on trouve les définitions d'un certain
# nombre de claviers avec des touches étendues (multimédia et internet)
# Par exemple, j'ai un clavier Logitech Desktop Optical. Après comparaison
# des touches de ce clavier avec la définition du fichier, j'ai vu que mon
# clavier pouvait s'apparenter au modèle décrit par « logiinkse ». J'ai donc
# entré ce clavier dans mon fichier /etc/X11/xorg.conf :
#
#  Option          "XkbModel"      "logiinkse"
# 
# Pour ces claviers, un certains nombres de symboles sont déjà définis sinon
# tous. Par exemple J'ai une touche « Caméra Web » qui est à l'évidence 
# X86WebCam.
#
# Dans ce même fichier, on trouve une correspondance avec un nom donné à la
# touche. Je trouve dans mon cas :

#       key <I12> {       [ XF86WebCam            ]      }
#
# Et on trouve le keycode associé dans /etc/X11/xkb/keycodes/xfree86. Je trouve
# dans mon cas :
#
#        <I12> =   146;
#
# Cette touche ne possède pas de keycode, en mode console, j'obtiens lorsque je
# presse la touche en question, les messages suivants :
#
# atkbd.c: Unknown key pressed (translated set 2, code 0x92 on isa0060/serio0).
# atkbd.c: Use 'setkeycodes e012 <keycode>' to make it known.
#  
# On pourrait croire que c'est terminé et qu'il suffit de passer la commande
# suivante : sekeycodes e012 146
# 
# Et bien non. Si on met 146 comme keycode, on commande xev retourne 200. Et il
# faut mettre 152 pour obtenir 146....
#
# Je n'ai jamais réussi à obtenir le 145 en testant toutes les possibilités,
# j'en ai donc utilisé un autre et j'ai édité le fichier
# /etc/X11/xkb/symbols/inet en conséquence.
#
# je n'ai donc pas compris pouquoi la valeur de keycode entrée avec la commande
# setkeycodes ne se retrouvait pas avec xev
#


PATH=/bin:/usr/bin:/sbin:/usr/sbin
PROGRAM=/usr/bin/setkeycodes

# set -x

test -x $PROGRAM || exit 0

case "$1" in
  start)
	echo -n "Setting scancodes for extended keyboard"
		# <I11> -> 145 (199) utilisé <I05> --> 133 (124)
		# XF8686Messenger
		${PROGRAM} e011 124
		
		# 146 (152) XF86WebCam
		${PROGRAM} e012 152
		
		# 147 (147) XF86VendorHome
		${PROGRAM} e013 147
		
		# 148 (222) XF86Shop
		${PROGRAM} e014 222

		# 150 (196) XF86ScrollClick
		${PROGRAM} e016 196

		# 187 (212) XF86New
		${PROGRAM} ei03b 212

		# 188 (137) XF86Reply
		${PROGRAM} e03c 137

		# 118 (213) XF86MailForward
		${PROGRAM} e03d 213

		# 119 (214) XF86Send
		${PROGRAM} e03e 214

		# 120 (215) Undo
		${PROGRAM} e03f 215

		# 121 (216) Redo
		${PROGRAM} e040 216

		# 122 (136) Print
		${PROGRAM} e041 136

		# 194 (218) XF86Save
		${PROGRAM} e042 218

		# 195 (219) XF86MyComputer
		${PROGRAM} e043 219

		# 196 (220) XF86Documents
		${PROGRAM} e044 220

		# 215 (228) XF86Pictures
		${PROGRAM} e057 228

		# 216 (229) XF86Music
		${PROGRAM} e058 229
	echo " done."
	;;
  stop)
	;;
  force-reload|restart)
	$0 stop
	$0 start
	;;
  *)
	echo "Usage: /etc/init.d/setkeys.sh {start|stop|restart|force-reload}"
	exit 1
esac

exit 0
