Je vais tenter de créer de zero un clavier ergonomique en deux parties Road map * Mesure de la config parfaite pour les doigts + choix du nombre de touche * Création du PCB * Choix des switch et achat des cartes electroniques de control * On soude pshiit pshiiit * boitié et tout * choix de la disposition des touches * finito pipo Je vais m'inspirer de ca : https://www.youtube.com/watch?v=UKfeJrRIcxw&list=WL&index=37&t=192s La source : https://zealot.hu/absolem/ le pcb https://ergogen.xyz/ J'ai généré une disposition plus ou moins idéale pour la disposition des touches en fonction de la forme de ma main sur ergopad : https://pashutk.ru/ergopad/ On vas tenter de générer un pcb depuis un logiciel prévu pour ça : ergogen le logiciel demande nodeJS, un interprète javascript que je ne connais pas et qui fut plutot laborieu a installer sur un linux, on installe ensuite ergopad. (J'ai par la suite trouver une version web beaucoup plus pratique et qui ne nécessite pas de mettre les mains dans le cambouis : https://ergogen.cache.works/#) un clavier normal a en general 26 touches de lettres, 22 pour les chiffre et caractères speciaux puis les touches de control (2 alt, 2 ctrl, 2 maj, vermaj, retours windows, tabb, dell, espace), la croix directionnelle, les 12 touches de fonction, le pavé numérique et éventuellement des touches de macro. Tout ça pour un total de 88 touches, 56 réelement indispensable. config des pins ici : https://github.com/benvallack/ergogen On ne posede que 5 doigts qui on entre 3 et 4 position confortable pour une touche chacun (8 pour l'index et 3 pour le pouce), un total de 44 touches possibles au total. On vas tenter de réduire au maximum le nombre de touche nécessaire par exemple en mettant différente organisation de clavier différentes interchangeable avec une une touche. ref : https://www.youtube.com/watch?v=8wZ8FRwOzhU&t=132s Switch brown (retours tactile mais silencieux) https://fr.aliexpress.com/item/32899833333.html https://fr.aliexpress.com/item/1005001864766812.html?spm=a2g0o.productlist.0.0.6b584a82GRTs8m&algo_pvid=afcbc6e4-3e33-4a80-9bb9-defdb27c54b4&algo_exp_id=afcbc6e4-3e33-4a80-9bb9-defdb27c54b4-1&pdp_ext_f=%7B%22sku_id%22%3A%2212000017909409069%22%7D&pdp_npi=2%40dis%21EUR%21%2115.42%21%21%21%21%21%402100bb5116531312875265836e5f85%2112000017909409069%21sea carte : https://fr.aliexpress.com/item/4000991785942.html (je vais finalement utiliser une carte promicro car déjà implémenté dans le logiciel qui génère le pcb) diode : https://fr.aliexpress.com/item/32947233235.html Bépo la config de touche autres exemples : https://github.com/benvallack/ergogen/blob/master/config.yaml https://github.com/benvallack/ergogen/blob/master/config-flipper.yaml après un passage (long et fastidieu) sur ergogen on obtient ca (le code est en dessous) : {{:wiki:divers:config2.png?400|}} j'ai rajouté par dessus en couleur comment je voulais relier electroniquement les touches, il faut également rajouter une diode a chaque touche pour éviter une contre réaction et pouvoir appuyer sur plusieurs touches en même temp, c'est également géré par le logiciel. on obtient a la fin un fichier Kicad que nous n'avons plus qu'a dessiner les pistes a la main en reliant les composants déjà placé et relié par des trait (definit dans ergogen également grace a la condition "net"). Et voila le résultat sur Kicad : {{:wiki:divers:pcb_fini.png?400|}} Il ne reste plus qu'a le graver au fablab sur la technodrill ou via des services de gravures proposées en ligne. forme sur ergogen : ca nous permet de créer un pcb sur kicad et un contours a partir de la definition des positions des touches < points: zones: ptit: anchor: rotate: 8 rows: 1: row_net: P10 mirror.row_net: P10 2: row_net: P16 mirror.row_net: P16 3: row_net: P14 mirror.row_net: P14 columns: o: key: column_net: P1 mirror.column_net: P11 3autres: anchor: rotate : -8 ref: ptit_o_1 shift : [22, 5] rows: 1: row_net: P10 mirror.row_net: P10 2: row_net: P16 mirror.row_net: P16 3: row_net: P14 mirror.row_net: P14 4: row_net: P15 mirror.row_net: P15 columns: annulaire: rotate: 0 key: column_net: P21 mirror.column_net: P11 majeur: rotate: -5 stagger: 5 spread: 20 key: column_net: P20 mirror.column_net: P9 index2: rotate: -5 stagger: -5 spread: 20 key: column_net: P19 mirror.column_net: P8 index1: rotate: -3 stagger: -1 spread: 21 key: column_net: P18 mirror.column_net: P7 poucehaut: anchor: ref: 3autres_index1_1 rotate: -20 shift: [29.5,0] rows: 1: row_net: P8 mirror.row_net: P8 columns: 1: key: column_net: P18 mirror.column_net: P7 2: rotate: -15 stagger : -3 spread: 21 key: column_net: P19 mirror.column_net: P8 3: rotate: -15 stagger : -3 spread: 21 key: column_net: P20 mirror.column_net: P9 4: rotate: -15 stagger : -3 spread: 21 key: column_net: P21 mirror.column_net: P10 pouce2: rows: 1: row_net: P9 mirror.row_net: P9 columns: 1: key: column_net: P21 mirror.column_net: P10 anchor: ref: poucehaut_4_1 rotate: 0 shift: [0,-20] espace: rows: 1: row_net: P9 mirror.row_net: P9 columns: 1: key: column_net: P18 mirror.column_net: P7 anchor: ref: 3autres_index1_1 rotate: -30 shift: [32,-24] mirror: ref: poucehaut_4_1 distance: 50 key: footprints: - type: mx nets: from: mx to: =column_net params.keycaps: true - type: diode anchor: shift: [0, -4.7] nets: from: mx to: =row_net outlines.exports: plate: - type: keys side: left size: 30 bevel: 5 - type: polygon points: - ref: pouce2_1_1 shift: [0,-12] - ref: espace_1_1 shift: [0,-12] - ref: poucehaut_2_1 shift: [0,-12] - ref: poucehaut_4_1 shift: [0,-12] operation: add - type: rectangle size: [30, 30] anchor: ref: poucehaut_1_1 shift: [-14,-35] bevel: 5 operation: add - type: rectangle size: [24, 43] anchor: ref: 3autres_index1_4 shift: [14, -40] bevel: 5 operation: add - type: rectangle size: [24, 43] anchor: ref: 3autres_index1_4 shift: [9, -40] operation: add - type: rectangle size: [24, 43] anchor: ref: 3autres_index1_4 shift: [14, -60] operation: add # - type: rectangle # size: [35, 18] # anchor: # rotate: -90 # ref: 3autres_index1_4 # shift: [16, -2] # operation: stack # - type: circle # radius: 2 # anchor: # ref: 3autres_index1_4 # shift: [25, -19.5] # operation: stack platemirror: - type: keys side: right size: 30 bevel: 5 - type: polygon points: - ref: mirror_pouce2_1_1 shift: [0,-12] - ref: mirror_espace_1_1 shift: [0,-12] - ref: mirror_poucehaut_2_1 shift: [0,-12] - ref: mirror_poucehaut_4_1 shift: [0,-12] operation: add - type: rectangle size: [30, 30] anchor: ref: mirror_poucehaut_1_1 shift: [14,-35] bevel: 5 operation: add - type: rectangle size: [24, 60] anchor: ref: mirror_3autres_index1_1 shift: [38, -16] bevel: 5 operation: add - type: rectangle size: [24, 60] anchor: ref: mirror_3autres_index1_1 shift: [30, -16] bevel: 5 operation: add arduino: - type: rectangle size: [24, 43] anchor: ref: 3autres_index1_4 shift: [14, -40] bevel: 5 operation: add - type: rectangle size: [24, 43] anchor: ref: 3autres_index1_4 shift: [9, -40] operation: add - type: rectangle size: [24, 43] anchor: ref: 3autres_index1_4 shift: [14, -60] operation: add finalkey: - plate - platemirror - type: keys side: both size: 18 operation: subtract final: - plate - platemirror - arduino pcbs: left: outlines: contours: outline: plate layer: Edge.Cuts footprints: - type: promicro anchor: rotate: -90 ref: 3autres_index1_4 shift: [25, -19.5] right: outlines: contours: outline: platemirror layer: Edge.Cuts footprints: - type: promicro anchor: rotate: -90 ref: 3autres_index1_4 shift: [25, -19.5] - type: jumper anchor: ref: mirror_3autres_index1_2 shift: [-10, 0] nets: from: P18 to: P20 both: outlines: contours: outline: final layer: Edge.Cuts footprints: - type: promicro anchor: rotate: -90 ref: 3autres_index1_4 shift: [25, -19.5] #ligne L1 = P10 L2 = P16 L3 = P14 L4 = P15 L5 = P8 L6 = P9 #colones main gauche C1 = P1 C2 = P21 C3 = P20 C4 = P19 C5 = P18 #colones main droites C6 = P7 C7 = P8 C8 = P9 C9 = P10 C10 = P11 > Si vous essayez de reproduire ceci et avez des problèmes avec Ergogen, n’hésitez pas a me contacter. J'ai suffisamment galéré avec ce truc pour que maintenant je puisse aider d'autres personnes. romain.tessier@etu.sorbonne-universite.fr