Utilisateur:Robin/teensy
Bonjour à tous. Pour l'instant, cette page est à l'état d'ébauche. Elle évoluera en même temps que mon projet de clavier. Je liste ici un ensemble de conseils pour quiconque (y compris mon moi du futur :) voudrais programmer un teensy.
Licence
Tout les codes source présent sur cette pages sont sous licences AGPLv3.0. Afin d'éviter d'alourdir la page, j'inclue donc ici l'en-tête de la licence, et je ne le répèterai pas ailleurs.
Teensy Tutorial Copyright (C) 2015 Robin Moussu This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
Teensy
Le microcontrôleur que j'utilise est un teensy 3.1. Il peut se faire passer pour un clavier. La programmation se fait avec teensyduino, un dérivé d'arduino.
Il faut utiliser les pages de pjrc, et non pas celle de l'arduino Leonardo pour avoir les bonnes infos sur les codes de touches.
Utilisation des touches modificatrices
Lors de la programmation du teensy, le layout par défaut est en qwerty. Pour des tests de bases, c'est amplement suffisant. Le premier problème que j'ai rencontré était d'utiliser les touches modificatrices. Comme dit dans l'introduction, il ne faut pas utiliser la documentation de l'arduino Leonardo, mais celle de teensy (notament le paragraphe « The micro management way »).
En résumé, voici comment faire un « ctrl + a »
int led = 13; int bp = 2; void setup() { pinMode(2, INPUT_PULLUP); pinMode(led, OUTPUT); Keyboard.begin(); } void loop() { // On allume la LED au démarage digitalWrite(led, HIGH); // On attend que le pin 2 soit relié à la masse while (digitalRead(2) == HIGH) { } // Pendant qu'on fait des trucs, la led est éteinte digitalWrite(led, LOW); // On envoie ctrl + a Keyboard.set_modifier(MODIFIERKEY_CTRL); Keyboard.set_key1(KEY_A); Keyboard.send_now(); // On remet le clavier à son état d'origine Keyboard.set_modifier(0); Keyboard.set_key1(0); Keyboard.send_now(); // On attends un peu pour être sur de ne pas recommencer accidentellement la boucle delay(1000); }
Utiliser le teensy en bépo
Par défaut, le teensy est détecté comme ayant un mappage us, ce qui n'est pas pratique si on veut l'utiliser pour faire du bépo (à cause des nombreux caractères du bépo non présent sur le mappage us, nottament les caractères accentués).
Pour l'instant, voici la solution que j'ai adopté (sous linux). Il faut avoir une console ouverte avant de mettre la patte 2 à la masse.
int led = 13; int bp = 2; void setup() { pinMode(2, INPUT_PULLUP); pinMode(led, OUTPUT); Keyboard.begin(); } void loop() { // On allume la LED au démarage digitalWrite(led, HIGH); // On attend que le pin 2 soit relié à la masse while (digitalRead(2) == HIGH) { } // Pendant qu'on fait des trucs, la led est éteinte digitalWrite(led, LOW); // Bien évidement les deux lignes qui suivent peuvent être // enregistrées sous forme de macro dans le clavier final !!! Keyboard.println("setxkbmap fr bepo"); delay(100); // on attend un peu que le bépo soit chargé // on s'assure que tout s'est bien passé // les mots qui suivent sont tapés sur un clavier us // par conséquent, la version "texte" est illisible Keyboard.println("ud'"); // « ud' » en qwerty = « vim » en bépo Keyboard.print("d"); // i -> passer en mode insertion Keyboard.println("qwer"); // insère « bépo » + un retour à la ligne // On attends un peu pour être sur de ne pas recommencer accidentellement la boucle delay(1000); }
Liens
Voici des liens vers des pages interessantes du projet bépo :
- Jeff et son atelier clavier
- Ma dispo perso