<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://bepo.fr/wiki/index.php?action=history&amp;feed=atom&amp;title=Utilisateur%3ARobin%2Fteensy</id>
	<title>Utilisateur:Robin/teensy - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://bepo.fr/wiki/index.php?action=history&amp;feed=atom&amp;title=Utilisateur%3ARobin%2Fteensy"/>
	<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/index.php?title=Utilisateur:Robin/teensy&amp;action=history"/>
	<updated>2026-05-01T19:20:45Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://bepo.fr/wiki/index.php?title=Utilisateur:Robin/teensy&amp;diff=23979&amp;oldid=prev</id>
		<title>Robin : Page créée avec « Bonjour à tous. Pour l&#039;instant, cette page est à l&#039;état d&#039;ébauche. Elle évoluera en même temps que mon projet de clavier. Je liste ici un ensemble de conseils pour q... »</title>
		<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/index.php?title=Utilisateur:Robin/teensy&amp;diff=23979&amp;oldid=prev"/>
		<updated>2015-02-01T22:56:19Z</updated>

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