Comment changer la disposition du clavier (keyboard layout) sous Android

goffi 13 years ago technique

Bonjour à tous,
j'ai depuis peu une tablette Android, dont j'aimerais me servir comme portable en y ajoutant clavier/souris, et me permettre ainsi de travailler sur mes projets quand je bouge.

Android n'étant pas vraiment prévu pour ça à la base, il faut bidouiller pas mal (rooter la tablette, installer un GNU/Linux dans un chroot, ou en natif si possible, ou au minimum cross-compiler des outils comme vim). Un des mes problèmes a été que la disposition clavier par défaut est QWERTY, alors que mon clavier, acheté en France, est AZERTY. Ne connaissant pas (encore) Android, j'ai du chercher un peu, et j'ai finalement trouvé une solution qui fonctionne bien, donc voici un petit tuto qui peut éventuellement servir à d'autres (sous CC By-SA si vous voulez vous en servir), j'ai fait le même en anglais sur le site tabletroms: http://tabletroms.com/forums/showwiki.php?title=NotionInkAdamFAQ:Howto-change-keyboard-layout

Pour changer la disposition clavier, il vous faut (à adapter selon votre matériel): votre tablette sous Android (testé sous une ROM derivée d'Honeycomb - Adamcomb v0.3 - sur une tablette Adam de Notion Ink) qui doit être rootée, une émulateur de terminal (on en trouve un libre sur l'Android Market, dommage qu'il ne soit pas (encore) sur le dépôt libre F-Droid, et un moyen de copier un fichier sur une machine GNU/Linux (ici une carte micro SD, mais vous pouvez faire l'édition directement depuis l'émulateur de terminal, c'est juste un peu plus galère).
Ici la carte micro SD est montée sur /mnt/external_sd.
Les étapes à faire:
  • lancer l'émulateur de terminal, passez à l'utilisateur root, puis copiez les fichier de /system/usr/keylayout et /system/usr/keychars sur votre carte:

    su
    cp -r /system/usr/key* /mnt/external_sd/
  • démontez votre carte, et montez là sur votre GNU/Linux. Nous allons maintenant déterminer l'identifiant de votre clavier usb, aussi gardez-le près de vous mais ne le branchez pas. Commencez par sauver les informations des périphériques déjà présents:

    lsusb > /tmp/1
  • maintenant branchez votre clavier, et faire la même chose, le diff vous donne les informations qui nous intéressent:

    lsusb > /tmp/2
    diff /tmp/1 /tmp/2
  • Par exemple pour mon clavier, ça donne:

    > Bus 002 Device 005: ID 04d9:1503 Holtek Semiconductor, Inc. Shortboard Lefty
    La partie importante est 04d9:1503 (04d9 est l'id du vendeur, 1503 celle du produit)
  • maintenant branchez votre clavier, et faire la même chose, le diff vous donne les informations qui nous intéressent:

    lsusb > /tmp/2
    diff /tmp/1 /tmp/2
  • Sur votre carte que nous avons montée, utilisez les fichiers keylayout/Genric.kl et keychars/Generic.kcm comme références, et copiez les dans des fichier sous la forme Vendor_xxxx_Product_xxxx.ext, par exemple chez moi ça donne:

    cp keylayout/Genric.kl Vendor_04d9_Product_1503.kl
    cp keylayout/Genric.kcm Vendor_04d9_Product_1503.kcm
    Éditez ces fichiers (avec vim, kate, gedit ou ce que vous voulez), leur contenu est facile à comprendre. Vérifiez bien que les noms (label) du fichier characters map (.kcm) correspondent à ceux du fichier layout (.kl).
  • Une fois que vous avez édité et sauvé les fichiers, démontez votre carte et remontez la sur votre appareil sous Android. Retournez sur votre émulateur de terminal, et copiez les fichiers (toujours en avec root)

    cp /mnt/external_sd/Vendor_xxxx_Product_xxxx.kl /system/usr/keylayout
    cp /mnt/external_sd/Vendor_xxxx_Product_xxxx.kcm /system/usr/keychars
    chmod 644 /system/usr/keylayout/Vendor*kl
    chmod 644 /system/usr/keychars/Vendor*kcm
  • C'est tout ! Vous n'avez plus qu'à brancher votre clavier, pas besoin de redémarrer.
Tout ceci a été testé comme indiqué plus haut sur le Adam, il est possible que cela ne fonctionne pas, ou différemment sur un autre appareil. Notez aussi que les manipulations sous root peuvent être dangereuses, et que vous pouvez facilement rendre votre appareil inutilisable si vous ne savez pas ce que vous faites, aussi allez y à vos risques et périls.

sonny 13 years ago

Ah si tu es en Qwerty ça peut t’intéresser: http://kazhack.org/lafayette/
'Une adaptation du Qwerty-US pour les francophones'

Goffi 13 years ago

Non en fait mon problème est plutôt que le clavier est AZERTY, et la disposition par défaut d'Android est QWERTY, mais merci pour le lien quand même, ça peut toujours servir.


author website

Proxy 12 years ago

Un développeur à trouvé la solution et propose une petite application pour pouvoir passer son clavier QWERTY en AZERTY sans être rooté.

Je vous met l'application en lien : http://thibault-martin.fr/2012/01/2...

En espérant que ça puisse aider les moins bidouilleurs ; )


author website