Vous n'êtes pas identifié(e).
⚠️⚠️⚠️ Ce forum va bientôt migrer vers Flarum, pour éviter de rester sur du vieux PHP non maintenu trop longtemps. Si vous avez une objection, vous pouvez venir m’en faire part sur ce topic. — Sardem FF7 ⚠️⚠️⚠️
Bonjour à tou-te-s,
A mon tour, je me lance dans la conception d'un clavier ergonomique favorable à la disposition Bépo et de ses variantes. Il s'inscrit dans une philosophie de type Fauvix.
Ce projet est à l'état de bouillon. Je pense le nommer ToucheLibre.
Je dispose déjà d'un plan 3D de la mécanique. Voici un premier aperçu en image sur ce site : "bricolons.ovh" onglet "Actu'projet" article "clavier ergonomique"
Un autre site est en cours de construction pour lancer le projet. (Je l'indiquerai plus tard.)
Mon but est de faire en sorte que le design soit entièrement libre (sous licence GNU-GPL et CERN-OHL).
Les sources seront entièrement ouvertes. Des projets open source sur les claviers existent, mais comme trop souvent il n'est fournis que quelques pdf ou des formats propriétaires.
Je veux également faire en sorte de fournir les plans de fabrication avec un guide pour que chacun puisse le fabriquer dans le FabLab le plus près de chez lui.
Je rêve également d'y ajouter quelques fonctions sympa, comme :
* Un dispositif de pointage. Probablement de type trackball.
* Un écran tactile pour des raccourcis claviers contextuels et dynamiques. C'est à dire en relation avec les logiciels utilisés et la fenêtre qui est active,
* Un stylo numérique (ou au moins dans un premier temps un emplacement pour en vrais stylo). Car rien ne vaut un stylo pour dessiner,
* Un chargeur pour smartphone ou autre tablette,
* Un bouton de sélection pour passer du PC aux autres périphériques comme le smartphone,
* incorporation de clé USB ou disque dur.
Je précise que je suis concepteur électronique (pro) donc pour concevoir la méca et l'électronique, je me débouille pas trop mal.
Mais pour la partie logiciel, l'aide est la bienvenue. Donc si ce projet ToucheLibre vous motive n'hésiter pas à le dire ici. (j'indiquerai plus tard comment on peut se contacter.)
Au plaisir
Créateur de ToucheLibre
Hors ligne
Dernière modification par LilianBeug (13/10/2019 11:09:54)
Créateur de ToucheLibre
Hors ligne
Whoah ! C’est… spécial.
Message tapé en Bépo avec un TypeMatrix 2030 USB vierge avec peau vierge
They see me trollin', they hatin'
Hors ligne
salut,
Merci de faire partager ton projet ici. Je t'ai passé membre sur le forum pour que tu puisse profiter des MP, liens etc.
Hors ligne
Merci pour l'accueil les gars.
Je vous ferai suivre au fur et à mesure l'avancement du projet.
Créateur de ToucheLibre
Hors ligne
Bonjour, discussion dans le mauvais fil, devrait être dans matériel.
Hors ligne
C'est un beau projet !
Un écran tactile pour des raccourcis claviers contextuels et dynamiques. C'est à dire en relation avec les logiciels utilisés et la fenêtre qui est active.
Cette partie notamment est intéressante. J'ai tenté de programmer quelque chose de ce genre dans mon Ergodox, mais j'ai l'impression que la spécification HID/USB ne permet pas au clavier de connaitre le contexte de l'hôte, à part peut-être le status de verrouillage des majuscules. Peut-être que je n'ai pas bien cherché. Est ce que tu as déjà des idées pour implémenter ce genre de fonctionnalité ?
Hors ligne
Comment avance ce chouette projet LilianBeug ?
Hors ligne
Salut Spok,
À vrais dire, j'ai pas mal idée en tête au tour de ce clavier. Il faut que je me calme un peu et faire les choses étape par étape.
Mon idée est de faire en sorte que le design soit modulaire. C'est à dire que les fonctions soit indépendantes et que l'unité de commande général soit adaptable au évolution. Un peu à la manière d'un Ardiuno avec les Shields. Je commence par la partie clavier. Puis la partie Trackeur Et enfin la partie écran tactile.
Concrètement comment faire ? Je ne sais pas encore à vrais dire. Je pense qu'on va pas échapper au fait, de devoir faire un driveur spécifique pour le clavier. Avec une version Windows, GNU/Linux et MacOS. Le logiciel n'est pas mon point fort. Mais je pense qu'il y a forcément une info exploitable dans la couche logiciel de gestion des fénêtres.
En effet en cherchant un peu, il me semble d'une part que les claviers actuels sont uniquement monodirectionnel. C'est à dire que les messages vont uniquement du clavier vers le PC et jamais l'inverse. Et d'autre part, il n'existe pas de scancode pour donner l'info sur la fenêtre active. À part le coup du Tab + Alt pour sélectionner la fenêtre active. Je vois pas ce qu'on peut faire pour gérer les fenêtres avec un clavier traditionnel.
Pour info, Assus a fait un truc un peu dans mon idée (mais par complètement mon idée). Voir ce lien sur cette site officiel. Il y a aussi Apple qui fait un bandeau tactille pour remplacer la liqne des F1 à F12.
Bref il y a forcément une solution. Mais c'est pas immédiat.
Dernière modification par LilianBeug (14/8/2018 18:14:38)
Créateur de ToucheLibre
Hors ligne
Salut Fabien,
Merci de me demander des nouvelles. J'ai pas beaucoup donner des nouvelles sur ce projet (pas facile boulo boulo...). Mais que l'on se rassure c'est toujours dans mes objectifs. Là je suis en vacances donc je vais y passer plus de temps.
Entre temps, j'ai revue la mécanique pour intégrer au mieux le trackeur. J'ai dû ragrandir un peu la partie du bas.
Ensuite, j'ai maquetté le clavier. Juste une planche pour poser les doigts pour de vrais et sentir si ça fonctionne bien. De là, j'ai fais quelques ajustement sur la position des touches. Les touches des petits doigts ont descendu et les touches des pousses ont remonté. Les étoiles aussi ont bougé.
En suite, j'ai commencé le schéma électronique et travailler sur l'architecture globale. Notamment, pour répondre à la question, comment faire en sorte que tout cela soit modulaire. Je pense partir sur une partie CPU simple pour avoir rapidement du concret juste sur la partie clavier. Puis je ferai une deuxième version plus sympa pour intégrer toutes les fonctions de j'espère.
J'ai aussi pas mal travailler sur la partie disposition. En effet, même si le bépo est très bien. Je me suis rendu compte que le fait de rompre avec le clavier ISO, inviter à optimiser aussi la disposition, car certaine touche n'était plus aussi bien placer que ça. De plus, je voulais aussi revoir la disposition sur la partie pavé numérique. En effet, j'ai pas trouvé de solution satisfaisante pour moi sur bepo.fr. Surtout avec mon pavé numérique quelques peu étrange. (c'est les touche placer en triangle au milieu).
Puis une chose en entrainant une autre j'ai introduit tout un tas de nouveau paradigme pour la disposition optimiser pour le clavie ToucheLibre.
J'ai trouvé une solution optimum à la fois pour le français, l'anglais et l'espagnol. Prise ne compte encore plus grande des glyphes utilisés en science et en ingénierie. Prise en compte complète du grec polyphonique. Prise en compte complète de l'alphabet phonétique international.
Mais pour tout ça, il va falloir ajouter que j'ajoute une sorte de AltGr2. Je sais pas comment faire au niveau logiciel. Du coup, pour l'instant j'ai un "driver partiel" pour Linux et Windows de ma disposition.
Créateur de ToucheLibre
Hors ligne
Voilà un aperçu de la disposition partiel pour le clavier ToucheLibre :
// ┌────┲━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━┯━━━━━┳━━━━━━━━┯━━━━━━━┳━━━━━━┯━━━━━━━┯━━━━━━━┯━━━━━┯━━━━━━━┳━━━━━━━━━━━┓
// │ Ç ˛ ║ & ` │ % ° │ $ ¤ │ # " │ @ ' ║ ‹ ‘ │ › ’ ║ + † │ - — │ * ∞ │ / \ │ = ~ ║ ⌫ Retour┃
// │ ç ¸ ║ 1 § │ 2 | │ 3 € │ 4 < │ 5 > ║ « “ │ » ” ║ 6 ± │ 7 − │ 8 × │ 9 ÷ │ 0 ^ ║ arrière ┃
// ┢━━━━━┻═┳═━═┷═┯═━═┷═┯═━═┷═┯═━═┷═┯═━═┻═┱───┴─┬───┺═┳═━═┷═┯═━═┷═┯═━═┷═┯═━═┷═┯═━═┻━┳━━━━━━━━━┫
// ┃ ↹ ┃ K ͜ │ É ˝ │ P ̺ │ U Ù │ V ̭ ║ [ ⟨ │ ] ⟩ ║ L ɬ │ C Ɔ │ D Ð │ M ̱ │ Z ̮ ┃ ┃
// ┃ Tab ┃ k ͡ │ é ˊ │ p ̪ │ u ù │ v ˇ ║ ( { │ ) } ║ l / │ c ɔ │ d ð │ m ¯ │ z ̑ ┃ Entrée ┃
// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┺┱────┴┬────┺┱────┴┬────┴┬────┴┬────┴┬────┺┓ ┃
// ┃ ⇬ ┃ È ̏ │ O Œ │ A Æ │ I ˙ │ E Ə ║ ; ̛ │ : · ║ R ʁ │ S ẞ │ T Þ │ N ̰ │ X ̟ ┃ ⏎ ┃
// ┃ M Lock ┃ è ` │ o œ │ a æ │ i ̈ │ e ə ║ , , │ . … ║ r ɹ │ s ß │ t þ │ n ˜ │ x ̽ ┃ ┃
// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┲┹────┬┴────┲┹────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
// ┃ ⇧ ┃ À ̥ │ F Ʃ │ Y ʎ │ J Ʒ │ W ʍ ║ ! ̣ │ ? ̉ ║ H ɧ │ G ɲ │ B ǂ │ Q ̢ ┃ ¦ ⇧ ┃
// ┃ MAJ ┃ à ˚ │ f ʃ │ y ɥ │ j ʒ │ w ̆ ║ ’ ¡ │ ˆ ¿ ║ h ̵ │ g µ │ b ǁ │ q ̡ ┃ (ç) ¦ MAJ ┃
// ┣━━━━━┳━┻━━━━━┳━┷━━━┳━┷━━━┱─┴─────┴─────┺━━━━━┷━━━━━┹─────┴───┲━┷━━━━━━━╈━━━━━┻━━━┳━━━━━━━━━━━━━━━━━━━━┫
// ┃ ⎈ ┃ ┃ ⌘ ┃ ⌥ ┃ ½⍽ ½ spc inséc. ⍽ spc inséc. ┃ ⇮ ┃ ⎄ ┃ ↑ ┃
// ┃Ctrl ┃ Fn ┃Meta ┃ Alt ┃ ␣ Espace _ under score ┃ AltGr ┃ Compo ┃ ← ↓ → ┃
// ┗━━━━━┻━━━━━━━┻━━━━━┻━━━━━━┹──────────────────────────────┺━━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━┛
//
partial alphanumeric_keys
xkb_symbols "bepo" {
include "level3(ralt_switch)"
include "keypad(oss)"
name[Group1]= "French (Bepo, ergonomic, Dvorak way)";
// First row
key <TLDE> { [ ccedilla, Ccedilla, dead_cedilla, dead_ogonek ] }; // ç Ç ¸ ˛
key <AE01> { [ 1, ampersand, section, grave ] }; // 1 & § `
key <AE02> { [ 2, percent, bar, degree ] }; // 2 % | °
key <AE03> { [ 3, dollar, EuroSign, dead_currency ] }; // 3 $ € ¤
key <AE04> { [ 4, numbersign, less, quotedbl ] }; // 4 # < "
key <AE05> { [ 5, at, greater, apostrophe ] }; // 5 @ > '
key <AE06> { [ guillemotleft, U2039, leftdoublequotemark, leftsinglequotemark ] }; // « ‹ “ ‘
key <AE07> { [ guillemotright, U203A, rightdoublequotemark, rightsinglequotemark ] }; // » › ” ’
key <AE08> { [ 6, plus, plusminus, dagger ] }; // 6 + ± †
key <AE09> { [ 7, minus, U2212, emdash ] }; // 7 - − —
key <AE10> { [ 8, asterisk, multiply, U221E ] }; // 8 * × ∞
key <AE11> { [ 9, slash, division, backslash ] }; // 9 / ÷ \
key <AE12> { [ 0, equal, asciicircum, asciitilde ] }; // 0 = ^ ~
// Second row
key <AD01> { [ k, K, U0361, U035C ] }; // k K ͡ ͜
key <AD02> { [ eacute, Eacute, dead_acute, dead_doubleacute ] }; // é É ˊ ˝
key <AD03> { [ p, P, U032A, U033A ] }; // p P ̪ ̺
key <AD04> { [ u, U, ugrave, Ugrave ] }; // u U ù Ù
key <AD05> { [ v, V, dead_caron, U032D ] }; // v V ˇ ̭
key <AD06> { [ parenleft, bracketleft, braceleft, U27E8 ] }; // ( [ { ⟨
key <AD07> { [ parenright, bracketright, braceright, U27E9 ] }; // ) ] } ⟩
key <AD08> { [ l, L, dead_stroke, U026C ] }; // l L / ɬ
key <AD09> { [ c, C, U0254, U0186 ] }; // c C ɔ Ɔ
key <AD10> { [ d, D, eth, ETH ] }; // d D ð Ð
key <AD11> { [ m, M, dead_macron, U0331 ] }; // m M ̄ ̱
key <AD12> { [ z, Z, U0311, U032E ] }; // z Z ̑ ̮
// Third row
key <AC01> { [ egrave, Egrave, dead_grave, U030F ] }; // è È ` ̏
key <AC02> { [ o, O, oe, OE ] }; // o O œ Œ
key <AC03> { [ a, A, ae, AE ] }; // a A æ Æ
key <AC04> { [ i, I, dead_diaeresis, dead_abovedot ] }; // i I ̈ ˙
key <AC05> { [ e, E, schwa, SCHWA ] }; // e E ə Ə
key <AC06> { [ comma, semicolon, dead_belowcomma, dead_horn ] }; // , ; , ̛
key <AC07> { [ period, colon, ellipsis, periodcentered ] }; // . : … ·
key <AC08> { [ r, R, U0279, U0281 ] }; // r R ɹ ʁ
key <AC09> { [ s, S, ssharp, U1E9E ] }; // s S ß ẞ
key <AC10> { [ t, T, thorn, THORN ] }; // t T þ Þ
key <AC11> { [ n, N, dead_tilde, U0330 ] }; // n N ̃ ̰
key <BKSL> { [ x, X, U033D, U031F ] }; // x X ̽ ̟
// Fourth row
key <LSGT> { [ agrave, Agrave, dead_abovering, U0325 ] }; // à À ˚ ̥
key <AB01> { [ f, F, U0283, U01A9 ] }; // f F ʃ Ʃ
key <AB02> { [ y, Y, U0265, U028E ] }; // y Y ɥ ʎ
key <AB03> { [ j, J, U0292, U01B7 ] }; // j J ʒ Ʒ
key <AB04> { [ w, W, dead_breve, U028D ] }; // w W ̆ ʍ
key <AB05> { [ rightsinglequotemark, exclam, exclamdown, dead_belowdot ] }; // ’ ! ¡ ̣
key <AB06> { [ dead_circumflex, question, questiondown, dead_hook ] }; // ^ ? ¿ ̉
key <AB07> { [ h, H, U0335, U0267 ] }; // h H ̵ ɧ
key <AB08> { [ g, G, dead_greek, U0272 ] }; // g G µ ɲ
key <AB09> { [ b, B, U01C1, U01C2 ] }; // b B ǁ ǂ
key <AB10> { [ q, Q, U0321, U0322 ] }; // q Q ̡ ̢
// Fifth row
key <SPCE> { [ space, U202F, underscore, nobreakspace ] }; // ␣ ½⍽ _ ⍽
};
//
Créateur de ToucheLibre
Hors ligne
Mais voici la disposition que je voudrais obtenir au final :
(image fait avec un fichier Calc LibreOffice)
À noter que j’ai placé les lettres (autant que possible) par proximité phonétique ou historique.
Ce qui selon moi, facilite la mémorisation du clavier.
En effet, phonétiquement:
* l et r sont proches
* c et s ont une fois sur deux le même son.
* d, t et b sont proches
* n et m sont proches
* u et i sont proches dans la prononciation française (le son u s’écrit /y/ dans l’API et la lettre y se prononce /i/ pour un français)
* i et y sont proches
En effet, historiquement:
* v a donné u et w
* i a donné j
* C a donné G
De plus je limite le mouvement latéral du petit doigt.
Dernière modification par LilianBeug (10/1/2021 12:58:14)
Créateur de ToucheLibre
Hors ligne
Cette disposition devrait avoir un bon équilibre du point de vue fréquence d'utilisation des touches. Car j'ai fait en sorte d'avoir un équilibre main droite / main gauche.
Mais aussi entre les index, entre les majeurs, entre les annulaires et entre les auriculaires.
Voilà le résultat pour la langue française :
Voilà le résultat pour la langue anglaise :
Voilà le résultat pour la langue espagnol :
(image fait avec un fichier Calc LibreOffice)
Le déséquilibrage en changeant de langue est inférieur à 3%, ce qui, selon moi, est imperceptible au quotidien.
Pour obtenir ce résultat j'ai dû faire quelques compromis. Hors le fait, je que souhaitais bien séparer géométriquement les lettres des signes de ponctuation.
J'ai inversé U et O car si en français leur fréquence d'utilisation est proche ; en en anglais et en espagnol en revanche c'est le O qui est nettement plus utilisé.
De plus, on note qu'en anglais le W et surtout le H devienne beaucoup plus utilisé qu'en français. Je l'ai donc placé de manière à limiter le déséquilibre entre les doigts.
Au final, je m'éloigne pas mal du Bépo. Mais chacun restera bien-sûr libre d'utiliser sa disposition préférée.
Dernière modification par LilianBeug (10/1/2021 13:01:58)
Créateur de ToucheLibre
Hors ligne
Bonjour à tous,
Voici des nouvelles de mon projet. Les choses avances. J’ai fabriqué les premiers prototypes.
Version 1 en contreplaqué découpé au laser:
Version 2, identique à la version 1 mais avec un placage en noyer véritable et les poignets en cuir:
N’est-ce pas juste magnifique?
Merci au FabLab Artilect de Toulouse pour la mise à disposition de la machine à découpe laser.
J’ai présenté mon projet à plein de gens, je n’ai que des retours positifs.
Bonne nouvelle, je viens de créer un site web pour partager le projet. Voir ToucheLibre.
Voici une présentation plus claire de ma disposition Kéa.
Dernière modification par LilianBeug (10/1/2021 13:16:03)
Créateur de ToucheLibre
Hors ligne
Quelle finition de folie
Poste ton proto sur Geekhack, ça va plaire. Et une fois que tu aura fini le modèle tu peut aussi le nominer au concours mensuel.
Dernière modification par 4sStylZ (4/3/2019 14:45:29)
Hors ligne
Salut 4sStylZ,
Merci. J’y mets beaucoup de soins.
En effet, il faudra que je pense à élargir mes échanges jusqu’à GeekHack.
Par contre, de quel concours tu parles ?
Créateur de ToucheLibre
Hors ligne
Très belle réalisation !
Hors ligne
Je parle des concours Keyboards of the Month / Keyboards of the Year :
https://geekhack.org/index.php?board=178.0
Voilà le thread des claviers nominés pour l’année dernière : https://geekhack.org/index.php?topic=94912.0
Les règles sont d’avoir posté un thread sur le clavier, d’avoir des belles photos, de nominer un projet finalisé pour ne pas avoir à le reposter plus tard etc.
Hors ligne
Salut les gens,
Voici des nouvelles du projet ToucheLibre.
Les choses avancent bien. Je viens de terminer le routage. Et deux personnes on rejoint le projet pour s’occuper de la partie logiciel.
Voici un aperçu.
Ça fait plaisir à voir non…
Je pense avoir du palpable pour novembre. (c’est de à dire des cartes pour faire la mise au point et faire la programmation.)
Au plaisir
Lilian
Dernière modification par LilianBeug (10/1/2021 13:19:18)
Créateur de ToucheLibre
Hors ligne
Ça avance bien en effet.
Tu as déployé de sacrées compétences pour en arriver là bravo !
Hors ligne
Merci
C’est à dire que c’est mon métier. Je suis concepteur électronique.
Cela dit en passant, en m’engageant sur la voie du développement libre, j’ai dû apprendre sur le tas de nouveaux logiciels. En particulier, FreeCAD et KiCAD.
C’est vraiment super intéressant de développer en mode libre, ça fait sortir des sentiers battus de l’entreprise. Ça me fait toucher à des disciplines qui sont pas les miennes habituellement. Comme la mécanique, la menuiserie et la programmation.
Prochaine étape, se former au langage C (gros défit pour moi)…
Créateur de ToucheLibre
Hors ligne
Tu n’a jamais pensé à utiliser un firmware open source comme QMK ?
Si tu veut apprendre un langage C pour le plaisir d’apprendre ça ne colle pas, mais QMK est LE firmware open source qui marche du feu de dieu. Je participe d’ailleurs en ce moment à la trad FR de la doc.
Tu peut concevoir ton propre PCB, lui incorporer l’un MCU supporté par QMK et tu aura accès à toutes de nombreuses fonctionnalités avancées.
https://beta.docs.qmk.fm/features
Personnellement je ne me dirigerais pas dans la conception d’un firmware from scratch car tous les petits trucs basiques à coder comme le debounce sont longs à coder mais surtout ce sont des problèmes auquel la communauté a déjà répondu.
Mes propres claviers soudés à la main sont sur QMK, donc je pourrais certainement t’aider si tu choisie cette voie. Tu peut me contacter sur Discord si tu veut en parler : 4sStylZ#0812
Hors ligne
Bonjour
Lilian avait pensé à un controleur I2C mais ni lui ni moi ne sommes familiers de cette technologie , alors on à décidé de voir ce qu'on pouvait faire avec un arduino micro (ou deux)
Le problème c'est qu'on doit gérer plus de 100 touches
Or avec QMK on ne peux gérer que 10x10 = 100 touches avec un arduino micro
J'ai donc eu l'idée au lieu de lire les touches enfoncées en numériques 0/1 de les lire en analogique et de mettre deux touches par ligne lue
On peux donc assigner 2 fois plus de touches avec le même nombre de fils = 200 touches pour l'arduino micro
chercher fred260571 sur github repository twoKey (en cours d'écriture)
J'ai un proto fully fonctionnel sur breadboard le code est ici (Le debounce est codé) :
Sur mon github How-to-build-a-keyboard (le tutoriel en cours d'écriture)
Mon code peut gérer l'appui simultané de 200 touches , par contre il est limité par la librairie USB de l'arduino qui ne peux en gérer que 6
J'ai aussi développé une librairie pour envoyer des codes USB/HID avec l'arduino
Aussi sur mon github KeyboardHID
Par contre j'ai essayé d'installer/configurer QMK pour l'arduino micro , j'ai galéré pour la partie hardware (je ne suis pas électronicien), mais j'ai fini par comprendre grâce à votre très bon tutoriel , j'ai aussi réussi à le compiler et à le télécharger dans l'arduino
Mais je ne suis arrivé à rien avec la configuration du software QMK : impossible de comprendre comment indiquer quelles sont les broches d'entré/sortie de l'arduino , ni comment "déclarer" les touches
A+
Fred
PS : Désolé pour les liens github que je voulais mettre mais j'ai ce message :"Vous n'êtes pas autorisé à mettre des liens"
---
EDIT Fork Bomb : 15 octobre 2019 @ 23h16
Hors ligne
(
Message aux admins :
Fred260571 est l’une des personnes dont je parlais plus haut qui s’est engagé sur le projet ToucheLibre.
Vous pouvez lui donner les droits pour les liens, les images et autres. Il a toute ma confiance.
)
QMK ?
Bonne question. C’est en effet une des pistes que nous avons étudié.
Dans le projet ToucheLibre, nous avions une problématique particulière. Nous voulions plus de touche qu’il est basiquement disponible sur un clavier standard. 112 touches au lieu de 105 touches. Et qui plus est, avec des fonctionnalités qui n’existe pas classiquement.
Par exemple, sur le pavé numérique l’ajout de «^» avec un scancode bien différent de la touche morte «^».
Donc on avait plusieurs solutions :
* Vivre avec les possibilités de QMK. Mais la personnalisation de la configuration n’est pas si simple à comprendre et on avait peur d’aboutir à des impossibilités. (4sStylZ, merci pour ta participation à la traduction de QMK et je te souhaite bien du courage.)
* Faire un fork de QMK. Mais le code source de QMK est assez compliqué et pas très bien documenté. (Il faut se palucher un véritable labirynthe de la mort. Car trop peu de choses sont dites sur les entrées/sorties et quel est le role de chaque bout de code…)
* Tout refaire depuis le début. C’est ce que je ferais sans hésiter si j’avais les compétences en programmation. Car il y a rien de mieux pour maîtriser son design et personnalisé comme bon nous semble. C’est généralement ce que font les pro. C’est d’ailleurs ce que j’ai fait sur les parties mécanique et électronique.
* Partir des bibliothèques Arduino. C’est bien quand on débute en C. Ça permet de mettre les mains à la pâte progressivement.
C’est ce que nous avons fait on verra bien jusqu’où ça nous mène. Pour autant, nous ne fermons pas définitivement la porte de QMK. Ça reste au moins une source d’inspiration et au plus un engagement communautaire pour amener des briques qui vont dans le sens de ToucheLibre et peut‑être même pour d’autre projet…
Sur l’électronique, il y avait aussi plusieurs possibilités :
* Le choix du microcontrôleur. Il en existe plein qui peuvent faire le boulot. Nous avons choisi le ATmega32u4, pour plusieurs bonnes raisons. 1/ Il donne un USB de classe HID, rien de mieux pour faire un clavier. 2/ C’est celui de l’arduino micro, et donc on profite de la communauté Arduino. 3/ C’est l’une des références les plus utilisés par QMK, et donc on profite de la communauté QMK et on peut changer en cours de route la stratégie de développement logiciel.
* Ensuite pour augmenter le nombre de touche gérable, il fallait plus de pins GPIO. Là aussi plusieurs possibilités. 1/ Utiliser 2 ATmega32u4 avec deux configurations de scancode différentes et les connecter tous les deux au PC par l’intermédiaire d’un HUB USB. --> {écarté, trop lourd}. 2/ 2 ATmega32u4 mais qui parle entre eux par I²C. L’un étant master et parle au PC, l’autre étant slave et se comporte comme un IO expander. C’est l’une de possibilité offerte par QMK en particulier pour les claviers splités. --> {écarté, trop dépendant de QMK} 3/ Utilisé un vrai IO expander. En particulier le ECE1099, qui un expander penser pour une application clavier, il fait automatiquement le scan de la matrice de touches et donc simplifie grandement le code. Il devient envisageable de piloter avec de simple bibliothèque Arduino. --> {Solution de secours retenu si la suivante ne marche pas. Cette option est en non‑monté sur la carte}. 4/ Faire une matrice analogique de touches. C’est une idée de Fréd et une mise en œuvre électronique de moi. Je sais pas s’il existe un brevé dessus. Mais je pense qu’il y a là une certaine innovation. C’est un mixte entre une mesure analogique et une matrice logique de touche comme classiquement. --> {Solution retenu, elle est sans conteste la moins chers et la plus fun}
Comme le dit Fréd, cette dernière solution permet de multiplier le nombre de touche gérable. Pour que tout le monde comprenne, dans un clavier classique, les touches sont disposées en matrice et piloté logiquement. Il y a par exemple 10 pins configurées en sortie qui envoie séquenciellement une tension sur toutes les colonnes. Puis par exemple, 10 pins configurées en entrée pour lire séquentiellement toutes les lignes. Et ainsi voir si une colonne a été connecté à une ligne par actionnement d’une touche.
Avec notre solution matrice analogique, à chaque nœud ligne/colonne, on n’a plus simplement un interrupteur, mais 2, 3 ou 4 interrupteurs (au delà ça marche pas à moins d’avoir un ADC de compétition) qui donne par combinaison des valeurs de tension différentes sur un ADC placer sur les lignes.
On est parti sur ×2 (2 interrupteurs par nœud) pour des raisons de simplicité et de fiabilité. Mais, on peut faire du ×3. Théoriquement du ×4 est possible mais ça pose des problèmes de fiabilité car les valeurs de tension possibles sont trop rapprochées. Il faut une référence de tension au poil et les perturbations électromagnétiques risque de tout planté.
Par ailleurs, le clavier marchera soit sur USB ou soit sur Bluetooth (développé dans un second temps).
Prochainement, les sources de ToucheLibre seront disponibles sur un espace GitLab dédié au projet.
Dernière modification par LilianBeug (15/10/2019 23:58:23)
Créateur de ToucheLibre
Hors ligne
On voulais utiliser un vrai IO expander (le ECE1099), mais on à décidé que passer par une utilisation de l'arduino / QMK nous permettrait de produire un prototype fonctionnel rapidement, et qu'il serait plus simple à ce moment de recruter un pro de l'I2C
Sinon j'ai oublié de mentionné que j'ai implémenté les macros dans mon code : on peut écrire un petit programme qui appuie ou relâche des touches , y insérer des delay ...
Bref le code est un chouia complexe mais je suis en train d'écrire un tuto pour bien l'expliquer
PS : merci pour les liens
Hors ligne