Lorsque j’ai reçu le colis, j’ai pris quelques photos afin de vous montrer ce que cela donne :
Pour la note, j’ai acheté aussi l’outil qui aide à retirer les touches, et je vous conseille vivement de l’acheter, parce que le petit truc qui est fourni avec n’est pas très efficace, j’ai eu du nez pour le coup : l’outil est juste en haut sur l’image :
Je vais présenter ce clavier totalement atypique, pourtant qui enlève tous les inconvénients de tous les claviers actuels.
Voici le clavier :
Voici tous les inconvénients, je les cite rapidement car il y en a peu :
Il faut être un peu dans la technique ou avoir, comme moi, une connaissance proche qui aime l’électronique et se dévoue pour le monter
Il y a un temps d’apprentissage du nouveau clavier qui peut paraître frustrant. Et malheureusement pour nous c’est le changement qui fait peur à l’être humain… enfin pas pour tout le monde, moi y compris !
Voici tous les avantages :
On peut configurer totalement la disposition des touches comme on le veut
On peut simuler l’appui sur plusieurs touches à la fois (fini le ALTGR-8 pour faire l’antislash)
Les touches sont alignées verticalement, et après un court temps d’adaptation on fait beaucoup moins de fautes qu’avec un clavier classique
On peut faire une vraie macro, c’est à dire simuler qu’on appuie sur plusieurs touches les unes à la suite des autres, alors qu’on n’appuie que sur une touche
On a les mains séparées : du point de vue ergonomique, on ne peut tout simplement pas faire mieux
Les touches sont des touches mécaniques, c’est à dire que :
la durée de vie est dix fois plus supérieure à celles des touches des claviers habituels qu’on trouve en grande surface
on a énormément de choix sur le « feeling » que nous apportent les touches : il y a les touches Cherry MX blanches, les rouges, les bleues, les marrons etc, et chaque type de touche a ses avantages et ses inconvénients
les touches sont entièrement démontables et customisables, on peut donc avoir les lettres qu’on veut sur le clavier, il n’y a qu’une seule limite : l’imagination
Beaucoup de personnes, moi y compris, ont acheté l’Ergodox pour pallier à deux choses gênantes des claviers actuels (je parle pour ceux qui tapent beaucoup, comme moi) :
Être beaucoup mieux positionné avec les mains pour pouvoir écrire ;
Pouvoir entièrement configurer son clavier afin de pouvoir accéder plus rapidement aux touches d’habitude difficiles d’accès.
Vous allez sûrement faire les étapes que j’ai fait à savoir :
Utiliser le configurateur sur le site Massdrop ici ;
Faire une vraie correspondance entre les touches américaines QWERTY et notre bon clavier français AZERTY et j’ai fait un article dessus il y a quelques jours ;
S’apercevoir que finalement il manque des choses, notamment la possibilité de faire un pipe (j’ai dit « un » pipe, pas une pipe !) ou d’autres choses, qui ne nécessitent pas l’appui avec la touche SHIFT mais l’appui avec la touche ALTGR (oui oui avec le GR c’est à dire uniquement la touche ALT de droite du clavier).
Donc vous allez sûrement essayer d’aller chercher les dernières sources concernant le programme qui génère le fameux fichier de configuration de l’ergodox, le fichier HEX.
Ici : https://github.com/benblazak/ergodox-firmware.
Eh bien la compilation ne fonctionne pas. Pour être plus précis elle fonctionne, mais le fichier généré ne fait rien du tout : mon Ergodox ne fonctionne pas du tout.
Alors je me suis pris en main et j’ai commencé à étudier le code qui a été fait.
Maintenant venons-en à…
Ergodox : la solution
Utilisez le configurateur sur le site Massdrop ici ;
Configurez votre clavier comme vous le voulez, en utilisant les bonnes « traductions » des touches dont je donne l’aide dans l’article précédent sur l’Ergodox ;
Récupérez les sources, pas juste le fichier binaire, cochez juste comme ceci :
Dans le fichier lib\key-functions\public\special.c, ajoutez aux directives « include » celle-ci :
#include <util/delay.h>
Dans même fichier lib\key-functions\public\special.c, ajoutez cette fonction :
/*
* [name]
* ALTGR + press|release
*
* [description]
* Generate a 'altgr' press or release before the
* normal keypress or keyrelease
*/
void kbfun_altgr_press_release(void) {
/* Remember old state before modifying it */
bool backup_pressed = _kbfun_is_pressed(KEY_RightAlt);
/* Force the state to "pressed" */
_kbfun_press_release(true, KEY_RightAlt);
kbfun_press_release();
/* Send the key */
usb_keyboard_send();
_delay_ms(MAKEFILE_DEBOUNCE_TIME);
/* Restore previous state */
_kbfun_press_release(backup_pressed, KEY_RightAlt);
}
Maintenant, vous avez donc crée une fonction qui permet de « forcer » l’appui sur ALTGR et d’envoyer la touche concernée.
Déclarez cette fonction dans lib/key-functions/public.h :
Juste avant la déclaration de kbfun_shift_press_release, mettez-y la vôtre :
// special
void kbfun_altgr_press_release (void);
void kbfun_shift_press_release (void);
void kbfun_2_keys_capslock_press_release (void);
Touche finale : le fichier dans lequel il y a la configuration de votre clavier :
Ca y est, vous avez votre fonction prête à être appelée.
Il vous suffira juste de chercher sur quelle touche l’appliquer.
Je vais vous donner un exemple simple, et après à vous de l’adapter : l’exemple est avec le symbole € : nous allons remplacer, juste pour l’exemple, la touche « e » par simuler qu’on appuie sur la touche ALTGR et e (comme on le fait sur un clavier classique, pour avoir le symbole €).
Ouvrez le fichier keyboard/ergodox/layout/default--layout.c dans lequel vous venez juste de déclarer (étape juste avant) votre fonction ALTGR sous la forme raccourcie salprre.
Voici le principe qu’a fait le développeur : pour une couche, il crée deux tableaux : un tableau dans lequel il y a les « codes » clavier à envoyer, tableau qui a la taille du clavier, donc, et un autre tableau, qui a la taille du clavier, dans lequel il y a les fonctions à appeler pour chaque touche. Oui je sais c’est très laid, c’est discutable etc mais c’est fait ainsi. Comme il y a plusieurs couches, il y a donc, si vous avez suivi :
un tableau composé lui même des tableaux des touches pour chaque couche
un tableau composé lui même des tableaux des fonctions à appeler lorsqu’on presse la touche, et ces fonctions reçoivent en paramètre la touche qui a été cherchée dans le tableau précédent
Dans ce fichier, allez chercher là où il y a la déclaration de la touche e. Pour moi c’est facile, c’est sur la couche 0 car j’ai configuré mon clavier presque comme un clavier « normal » AZERTY donc ici :
A partir d’ici, mémorisez bien la ligne et la colonne. Ici c’est donc ligne 2, colonne 4. Ensuite descendez dans le code et cherchez la déclaration des fonctions. Placez vous à la même couche, même ligne et même colonne comme ceci :
Et il vous suffit juste de remplacer le nom de l’appel de la fonction actuel (kprrel) par l’appel de votre fonction soit salprre
Et voilà il ne vous reste plus qu’à compiler :
Vous avez terminé ! Transférez le fichier HEX sur votre Ergodox, et voilà : avec mon exemple, vous ne pouvez plus qu’écrire des € à la place des « e » normaux. Elle est pas belle la vie ?
Il vous faudra répéter les opérations à partir de l’étape 7 à chaque fois que vous récupérerez un nouveau layout via le configurator du site Ergodox.
Question quizz : savez vous à quoi chaque t-shirt correspond ?
Pour information, j’étais inquiet sur la qualité de l’impression, mais la méthode utilisée semble très résistante, et les couleurs ne devraient pas changer sur les quelques prochains lavages à venir (d’après le site c’est une centaine de lavages, ce qui ferait que je pourrais tenir presque un an avec ces trois tshirts…).
Avez-vous déjà entendu parler de Sokoban, le jeu ?
J’ai eu la formidable idée (c’est de l’humour…) de le coder en Python, et encore mieux (c’est encore de l’humour…) de le coder pour pouvoir y jouer en mode console.
\o/
J’ai commencé à développer pour qu’il soit international, donc les commentaires sont pour la plupart en anglais.
La première chose que je voulais faire c’est pouvoir faire des affichages différents. Donc, selon que votre console le supporte ou pas, vous pourrez changer l’affichage :
Voici l’écran, si on veut changer les graphismes (en cliquant sur « + » ou sur « -« ) :
Voici l’écran, si on veut encore changer les graphismes (en cliquant sur « + » ou sur « -« ) :
Le code orienté objet
Les classes de base
Et ensuite le plus important à mon sens : le code orienté objet. J’ai voulu apprendre l’orienté objet de python. J’ai donc crée des classes qui correspondent aux objets de base (dans l’ordre, classe du Sol sans rien, classe du Sol où il faut ranger une pierre, classe Mur, et classe Joueur) :
# Different drawings:
class Ground(object):
def __init__(self):
super(Ground,self).__init__() # Parent call:
class GroundStoneDest(object):
def __init__(self):
super(GroundStoneDest,self).__init__() # Parent call:
class Wall(object):
def __init__(self):
super(Wall,self).__init__() # Parent call:
class Player(object):
def __init__(self):
super(Player,self).__init__() # Parent call:
Classe Level
Et de la même façon j’ai crée la classe Level qui est la plus complexe, et qui contient les fonctions les plus utilisées :
apply_drawings_set()
Calculer les motifs pour dessiner le tableau (oui, oui c’est plus complexe que ça n’en a l’air) ;
draw()
Dessiner les motifs en cours à l’écran ;
register_player_move()
Se souvenir des mouvements du joueur, soit pour pouvoir faire un « undo » (pas implémenté), soit pour pouvoir les sauver pour les rejouer (pas implémenté non plus) ;
move()
Essai de déplacer un objet situé en (x,y) du décalage (add_x, add_y), sachant que le décalage peut être négatif ;
solved()
Test si toutes les pierres sont bien rangées.
Classe LevelsReader
De la même façon, j’ai crée la classe LevelsReader qui lit un niveau, et l’analyse pour voir s’il est un minimum cohérent. Pas la peine d’entrer dans le détail, les fonctions sont suffisamment explicites je pense.
Bibliothèque curses
Et pour terminer, la fonction de la boucle principale qui concerne l’unité curses : def curses_main(stdscr, code). C’est ici qu’on affiche le menu, qu’on attend qu’on tape sur une touche, etc.
Notez bien : le code n’est pas terminé. C’est un début de code, relativement correctement fait. J’ai passé à peine deux jours dessus pour réussir à faire cela, donc ne m’en voulez pas trop, il n’est pas peaufiné, mais il fonctionne.
Si jamais vous l’améliorez, ce serait gentil de me faire parvenir la nouvelle version 🙂
Le lien que tout le monde attend avec impatience, la bave aux lèvres :
(Mise à jour de l’article : 10 juin 2010 à 23h03)
Je ne donne plus le compte, je rejoue un peu à Dofus, j’ai supprimé tous mes personnages, mais vous pouvez quand même lire l’article pour avoir un aperçu de ce que j’avais fait.
(Fin de la mise à jour de l’article : 10 juin 2010 à 23h03)
Je vous donne mon compte, parce que je ne joue plus à Dofus, sous certaines conditions :
Notez cela en premier : j’ai une maison tout seul, donc pas une maison de guilde, à 4 Millions de kamas pleine de ressources regardez les screens en bas.
Notez bien que, pour que je vous donne mon compte :
Je vis à côté de Marseille, et il faut qu’on se voie pour que je puisse vous montrer mon compte ; je n’ai pas trouvé d’autre solution, tout le monde essaie de m’escroquer sinon ! Si vous êtes loin de Marseille alors on ne pourra jamais se voir, tant pis pour le compte…
Il faut que vous ayez plus de 15 ans ;
Il faut que vous aimiez vraiment Dofus ;
Il faut que vous vouliez tout recommencer ;
Il faut que vous aimiez aussi le serveur Danathor (rire).
Si vous remplissez ces conditions, alors laissez un message en bas avec votre adresse email, je vous répondrai sur votre mail !
La première personne à avoir fait du binaire est Shakespeare : (to be) OR NOT (to be).
Que répond un geek quand un prof de français pose des questions sur un livre?
RTFB (Read The Fucking Book)
Vous hésitez entre Linux et Windows?
Vous voulez perdre du temps ou de l’argent ?
Si il existait une application PROCREATION sous Windows, tu en serais le rapport d’erreur.
Dans un monde parfait, les spammeurs iraient en prison avec des détenus qui ont fait grossir leur pénis, pris du viagra et cherchent une relation…
L’horreur pour un geek : a ghost in the shell…
Pourquoi les geeks sont ils écolos ?
Parce qu’ils ne mangent que du BIOS.
L’autre jour, dans le train, j’aperçois un paquet de filles mignonnes. J’ai pensé tout de suite à faire une attaque man-in-the-middle.
Pourquoi tous les réseaux aiment Venise?
Parce que chaque personne possède une adresse et un masque !
Bon, comme il se fait tard, ma puce, tu va au <li>!
Quel animal a le plus de mémoire ?
C’est l’agneau car il a une mémoire d’au moins 2 gigots.
Il parait qu’il existe une distribution Linux buguée, pour les nostalgiques de Windows.
Sous Unix pas besoin d’anti-slash devant Chuck Norris, on ne protège pas Chuck Norris.
Un geek à propos des lumières stromboscopiques : « Putain ça lag trop ici »
T’es tellement geek que t’attends que les filles soient open-source pour tenter d’en comprendre une !
La vie, c’est un gros streaming, non ?
J’ai jeté mon pc par la fenêtre an criant « Hasta la Vista » !!!
Que fait un geek quand il soulève une table à bout de bras ?
Des alter table !
C’est comme ça et c’est tout ! Point virgule !
Vous saviez que si on prend le mot Geek, qu’on enlève le G le E et le K, et qu’on ajoute un O, un R, un D, un I, un N, un A, un T, un U, et un R… on obtient le mot Ordinateur ?
C’est fou, non ?
Comment appelle-t-on un flux RSS Russe ?
Un fl URSS …
Au fond, les profs ne sont que des étudiants ayant un Taux de Partage > 1.
M. et Mme Life ont un fils, comment s’appelle-t-il ?
David.(David Guetta, Get-a-life)
<gps></gps>
Les deux balises GPS les moins chères du monde…
Sur TF1, ils sont énervés !
C’est une chaîne de caractère…
javascript:alert(« à Malibu »);
On disait que Jésus Christ avait le pouvoir de multiplier les repas.
C’était du peer-to-peer avant l’heure en toute somme…
Un geek après une cuite :
– Oulah j’suis en mode console là !
Pourquoi les geeks aiment-ils les siamoises ?
Parce qu’elles ont un dual corps !
Pourquoi les admins ne se perdent jamais dans leur travail ?
Parce qu’ils ont une feuille de root.
On ne dit pas « J’ai pas compris ta blague » mais « Je pense ne jamais avoir fait l’include de bibliothèque de culture nécessaire à la compréhension de ta blague ».
Qui était Bob Marleyx ?
Un gars qui faisait du REGEX !
Perl, the only language that looks the same before and after RSA encryption !
Linux est très user friendly en fait…
Il choisit juste bien ses amis !
Microsoft en développant Vista ciblait un public plus geek qu’on ne l’aurait cru. En effet Vista suit une doctrine relative au geek : inutile donc indispensable.
Un linuxien rate son bus. Embêté, il demande à un passant :
Pouvez vous me prêter votre portable, il faut que j’envoie un SIGBUS à mon patron !
L’homme est un loup (level 200) pour l’homme.
Un geek n’achète aucun livre. Il télécharge seulement des librairies.
lol est aux boulets ce que « ; » est aux développeurs.
« Ubuntu » est un terme Africain qui veut dire « je n’arrive pas à configurer Debian ».
Voici, à mon avis, l’explication : plusieurs mecs ont fait des « faux » aspirateurs de site qui mettent un referer qui fait croire que leur origine vient d’un résultat d’une recherche sur google. Ainsi ils font passer leur pub sur les statistiques Internet. Aussi ingénieux que geek, non ?
Après une discussion avec ma soeur, je me suis souvenu d’une chose assez suprenante et que je pense caractéristique d’un geek…
Quand j’avais 10-12 ans, donc dans les années 80, j’ai découvert les jeux électroniques. Il y avait un jeu qui se nommait Donkey-Kong, vous savez un jeu à écran à cristaux liquides. Ce jeu, tout le monde y jouait. Enfin, tous les jeunes. Ma mère, pour être tranquille quelque temps, vient me voir et me dit « Olivier, le jour où tu réussiras à dépasser 999, je t’achète un autre jeu électronique ».
Moi, je commence à jouer, je regarde, j’analyse, je fais jouer ma soeur, je la regarde et on se bat un peu pour y jouer (normal, quoi), et puis je constate que plus le score est grand, plus ça va vite. Je me dis qu’il doit bien y avoir un moyen de ralentir suffisamment le jeu pour pouvoir aller au bout…
Et je me retrouve seul avec le Donkey-Kong. J’ai alors essayé de créer un faux-contact entre avec les piles dans le jeu : sur la notice ils expliquaient que le jeu redémarrait mais je me doutais qu’il n’y avait peut-être pas que ça. Et après un bon nombre d’essais (ça n’a pas marché du premier coup, croyez-moi !), hop ! L’horloge interne du jeu électronique a été ralentie et j’ai ainsi pu faire trois fois le tour de 999 dans la soirée !
Depuis je n’ai jamais trouvé quelqu’un qui avait fait cette manipulation et trouvé comment ralentir un jeu électronique…
Ceci dit ma mère n’a pas tenu sa promesse : je n’ai eu un autre jeu électronique que bien plus tard…