Forum bépo

Forum des utilisateurs du bépo

Vous n'êtes pas identifié(e).

#1 Assistance utilisateurs » Problèmes avec l'Alt-Gr » 3/7/2015 17:28:22

jonneve
Réponses : 5

Bonjour à tous,

Depuis que je suis en BÉPO, je remarque que certains logiciels ont du mal avec les certains ALT-GR. En fait, j'ai l'impression qu'il est considéré comme un ALT, et c'est très problématique. Par exemple, en programmation (en SQL ou en C++), j'ai souvent besoin du symbole |, mais il est interprété comme CTRL-ALT-B, ce qui correspond à une fonction de mon environnement de développement. Comme le bépo utilise beaucoup ALT-GR, c'est vite problématique. Y a-t-il une solution?

Merci,
Jonathan

#2 Re : Périphériques et ergonomie » Keyboardio » 16/6/2015 08:41:27

Pour info, ce clavier, qui m'intéresse vivement aussi, a avancé récemment et ils viennent de lancer une campagne KickStarter, ici: https://www.kickstarter.com/projects/ke … for-seriou

Ça n'existe pas encore en bépo, mais il est configurable, et ils ont mentionné qu'ils peuvent le fournir avec des touches vièges ou même offrir de la gravure personalisée de touches, donc ça devrait être possible de l'avoir en bépo. Par contre, avant de le faire graver, il faudrait l'adapter au bépo, et là, il faudrait sans doute s'inspirer du travail qui a été fait sur l'autre fil de discussion concernant l'ErgoDox. Un truc qu'ils ont qui manque à l'ErgoDox, c'est cette grosse touche de fonction sous le pouce, placée de telle manière qu'on puisse facilement l'activer en même temps qu'une autre touche de fonction.

Bref, j'en reste à l'ErgoDox pour le moment, mais ce clavier Keyboardio me paraît nettement plus prometteur, et je pense qu'ils ont trouvé le parfait équilibre entre adaptabilité et personalisation d'un côté, et produit clé en main de l'autre: ça doit fonctionner du premier coup sans avoir à faire de soudure ni d'assemblage (pour à peu près le même prix qu'un ErgoDox), mais le firmware et le matériel restent opensource et libres, donc on peut vraiment en faire ce qu'on veut.

En tout cas, si on est plusieurs intéressés et qu'on se met d'accord sur une adaptation de la disposition au bépo, on pourrait peut-être envisager une commande groupée.

Affaire à suivre!!

Jonathan

#3 Re : Coin des bidouilleurs » [sujet technique] Adapter le bépo à l’ergodox » 2/3/2015 15:37:37

Mimoza a écrit :

Une petite image avec pour bien visualiser tu dispo ?

Oui, je pensais préparer ça ce soir, pas le temps là tout de suite. Ma disposition actuelle n'est probablement pas définitive, mais elle est en tout cas en bonne voie. Non pas que celle de yeKcim soit mauvaise ni forcément moins bien (car les préférences sont très personnelles), mais je pense que mes modifications devraient en tout cas rendre l'ErgoDox beaucoup plus facile d'accès (car je suis revenu pour un certain nombre de touches à une disposition plus proche du clavier standard), sans à mon sens y perdre quoi que ce soit. Il restera toujours un petit temps d'adaptation car c'est un clavier différent, il y a moins de touches, il y a des touches de raccourci programmables, etc, mais en même temps, j'ai cherché à éviter les modifications superflues, surtout sur les touches CTRL, SHIFT, ALT, WIN et companie, qui servent dans beaucoup de raccourcis un peu partout, et je ne vois pas l'intérêt de tout réapprendre autrement, surtout que certaines combinaisons devenaient franchement difficiles d'accès.

#4 Re : Coin des bidouilleurs » [sujet technique] Adapter le bépo à l’ergodox » 2/3/2015 15:03:55

Bonjour,

Pour info, j'ai trouvé la solution pour la touche Fn qui restait enfoncée : ce phénomène se produit dès lors qu'on place une touche Fn sur un emplacement ayant un autre sens sur la couche Fn. Autrement dit, pour le faire fonctionner correctement, il suffit de s'assurer que la touche servant de Fn n'est pas utilisée sur le layer auquel la touche Fn donne accès (il faut que la touche soit transparente).

Une fois ce principe saisi, j'ai pu déplacer mes touches Fn pour leur donner des positions beaucoup plus accessibles, ce qui est à mon sens très important vu qu'elles servent à donner accès aux touches
F1, F2, etc., ainsi qu'à de nombreux raccorcis très utiles. J'ai aussi déplacé les touches SHIFT et CTRL et Entrée pour limiter les difficultés de migration depuis un clavier ordinaire (je suis développeur et traducteur, et je me sers donc beaucoup des touches de fonction ainsi que de raccouris du genre CTRL-F9 ou CTRL-SHIFT-F11, etc., et je ne vois pas l'utilité de déplacer toutes ces touches). J'ai déplacé le W et le Ç car je trouve l'accès par l'index étiré trop tendu (je les ai mis à gauche du A et sous le M respectivement). Enfin, j'ai revu le pavé numérique pour qu'il soit le plus identique possible au pavé numérique standard, et j'ai rajouté une touche Fn pour y avoir un accès facile et rapide en changement de layer temporaire. J'ai enlevé certaines touches qui ne me servent pas et qui me gênaient, mais il serait facile de les réintroduire en les positionnant autrement. 

Voici mon code :

/*
Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 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 General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdint.h>
#include <stdbool.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include "keycode.h"
#include "action.h"
#include "action_util.h"
#include "action_code.h"
#include "action_macro.h"
#include "action_layer.h"
#include "bootloader.h"
#include "report.h"
#include "host.h"
#include "print.h"
#include "debug.h"
#include "keymap.h"
#include "ergodox.h"


/* ErgoDox keymap definition macro */
#define KEYMAP(                                                 \
                                                                \
    /* left hand, spatial positions */                          \
    k00,k01,k02,k03,k04,k05,k06,                                \
    k10,k11,k12,k13,k14,k15,k16,                                \
    k20,k21,k22,k23,k24,k25,                                    \
    k30,k31,k32,k33,k34,k35,k36,                                \
    k40,k41,k42,k43,k44,                                        \
                            k55,k56,                            \
                                k54,                            \
                        k53,k52,k51,                            \
                                                                \
    /* right hand, spatial positions */                         \
        k07,k08,k09,k0A,k0B,k0C,k0D,                            \
        k17,k18,k19,k1A,k1B,k1C,k1D,                            \
            k28,k29,k2A,k2B,k2C,k2D,                            \
        k37,k38,k39,k3A,k3B,k3C,k3D,                            \
                k49,k4A,k4B,k4C,k4D,                            \
    k57,k58,                                                    \
    k59,                                                        \
    k5C,k5B,k5A )                                               \
                                                                \
   /* matrix positions */                                       \
   {                                                            \
    { KC_##k00,KC_##k10,KC_##k20,KC_##k30,KC_##k40,KC_NO   },   \
    { KC_##k01,KC_##k11,KC_##k21,KC_##k31,KC_##k41,KC_##k51},   \
    { KC_##k02,KC_##k12,KC_##k22,KC_##k32,KC_##k42,KC_##k52},   \
    { KC_##k03,KC_##k13,KC_##k23,KC_##k33,KC_##k43,KC_##k53},   \
    { KC_##k04,KC_##k14,KC_##k24,KC_##k34,KC_##k44,KC_##k54},   \
    { KC_##k05,KC_##k15,KC_##k25,KC_##k35,KC_NO,   KC_##k55},   \
    { KC_##k06,KC_##k16,KC_NO,   KC_##k36,KC_NO,   KC_##k56},   \
                                                                \
    { KC_##k07,KC_##k17,KC_NO,   KC_##k37,KC_NO,   KC_##k57},   \
    { KC_##k08,KC_##k18,KC_##k28,KC_##k38,KC_NO,   KC_##k58},   \
    { KC_##k09,KC_##k19,KC_##k29,KC_##k39,KC_##k49,KC_##k59},   \
    { KC_##k0A,KC_##k1A,KC_##k2A,KC_##k3A,KC_##k4A,KC_##k5A},   \
    { KC_##k0B,KC_##k1B,KC_##k2B,KC_##k3B,KC_##k4B,KC_##k5B},   \
    { KC_##k0C,KC_##k1C,KC_##k2C,KC_##k3C,KC_##k4C,KC_##k5C},   \
    { KC_##k0D,KC_##k1D,KC_##k2D,KC_##k3D,KC_##k4D,KC_NO   }    \
   }

#if defined(KEYMAP_DVORAK)
#include "keymap_dvorak.h"
#elif defined(KEYMAP_COLEMAK)
#include "keymap_colemak.h"
#elif defined(KEYMAP_WORKMAN)
#include "keymap_workman.h"
#elif defined(KEYMAP_MICRO)
#include "keymap_micro.h"
#elif defined(KEYMAP_CUB)
#include "keymap_cub.h"
#else

static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    KEYMAP(  // layer 0 : default
        // left hand
        ESC, 1,   2,   3,   4,   5,   GRV,
        TAB,Q,   W,   E,   R,   T,   BSPC,
        RBRC ,A,   S,   D,   F,   G,
        LSFT, Z,   X,   C,   V,   B, DEL,
        LCTL,LGUI,FN17,LALT, FN1,
                                      MUTE, VOLU,
                                           VOLD,
                                SPC , ENT, LCTL,
						        // right hand
							   EQL, 6,   7,   8,   9,   0,   MINS,
							   BSPC,Y,   U,   I,   O,   P,   LBRC,
							        H,   J,   K,   L,   SCLN,QUOT,
							   DEL,N,   M,   COMM,DOT, SLSH,BSLS,
	 							    FN1,LEFT,UP, DOWN,RGHT,
						        RGUI,FN2,
						        APP ,
						        RCTL, RALT,RSFT
    ),
    KEYMAP(  // layer 1 : function
        // left hand
        PWR, F1,  F2,  F3,  F4,  F5,  F6,
        FN18,PGUP,HOME,UP,  END, FN11,FN0,
        CAPS,PGDN,LEFT,DOWN,RGHT,FN8 ,
        TRNS,FN7,FN12,FN6, FN13,FN9 ,INS,  
        TRNS,TRNS,TRNS,TRNS,TRNS,
                                      TRNS,TRNS,
                                           TRNS,
                                 TRNS,TRNS,TRNS,
						        // right hand
							   F7,  F8,  F9,  F10, F11, F12, PSCR,
							   SLEP,TRNS   ,TRNS,  TRNS,  TRNS,  TRNS,SLCK,
							        TRNS,TRNS,  TRNS,  TRNS,  TRNS   ,PAUS,
							   WAKE,TRNS  ,TRNS, TRNS,  TRNS,  TRNS,TRNS,
								    TRNS,HOME,PGUP,PGDN,END,
						        TRNS,TRNS,
						        TRNS,
						        TRNS,TRNS,TRNS  
    ),
    KEYMAP(  // layer 2 : numpad
        // left hand
        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
        TRNS,TRNS,TRNS,TRNS,TRNS,
                                      TRNS,TRNS,
                                           TRNS,
                                 TRNS,TRNS,FN1,
						        // right hand		
							   TRNS,TRNS,NLCK,PSLS,PAST,PMNS,TRNS,  
							   TRNS,Y   ,P7,  P8,  P9,  PPLS,FN15,  
							        FN16,P4,  P5,  P6, PPLS	,TRNS,  
							   TRNS,  TRNS,P1,  P2,  P3,  ENT,TRNS,
								    P0,G,PDOT,TRNS,TRNS,  
						        TRNS,FN4,
						        TRNS,
						        FN1,TRNS,TRNS 		
    ),
    
 
    KEYMAP(  // layer 3: mirror
            // left hand
        MINS,0,   9,   8,   7,   6,   EQL,
        LBRC,P,   O,   I,   U,   Y,   BSLS,
        QUOT,SCLN,L,   K,   J,   H,
        RCTL,SLSH,DOT, COMM,M,   N,   RGUI,
        RGHT,DOWN,UP,  LEFT,RALT,
                                      TRNS,LGUI,
                                           TRNS,
                                 ENT, RSFT,NO,
						        // right hand
							   GRV, 5,   4,   3,   2,   1,   ESC,
							   RBRC,T,   R,   E,   W,   Q,   BSPC,
							        G,   F,   D,   S,   A,   TAB, 
							   DEL, B,   V,   C,   X,   Z,   LCTL,
								    TAB, END, PGDN,PGUP,HOME, 
						        LGUI,FN2,
						        TRNS,
						        NO  ,LSFT,SPC
    ),

};

/* id for user defined functions */
enum function_id {
    TEENSY_KEY,
};
	
/*
 * Fn action definition
 */
static const uint16_t PROGMEM fn_actions[] = {
    ACTION_FUNCTION(TEENSY_KEY),                    // FN0 - Teensy key
    ACTION_LAYER_MOMENTARY(1),                      // FN1 - switch to Layer1
    ACTION_LAYER_SET(2, ON_PRESS),                  // FN2 - set Layer2
    ACTION_LAYER_MOMENTARY(3),                      // FN3 - toggle Layer3 aka Mirror
    ACTION_LAYER_SET(0, ON_PRESS),                  // FN4 - set Layer0
    
    ACTION_MODS_KEY(MOD_LCTL, KC_A),             // FN5 - Ctrl A
    ACTION_MODS_KEY(MOD_LCTL, KC_H),             // FN6 - Ctrl C
    ACTION_MODS_KEY(MOD_LCTL, KC_SLSH),          // FN7 - Ctrl F
    ACTION_MODS_KEY(MOD_LCTL, KC_LBRC),          // FN8 - Ctrl Z (undo)
    ACTION_MODS_KEY(MOD_LCTL, KC_X),             // FN9 - Ctrl Y (redo)
    ACTION_MODS_KEY(MOD_LCTL, KC_E),             // FN10 - Ctrl P
    ACTION_MODS_KEY(MOD_LCTL, KC_K),             // FN11 - Ctrl S
    ACTION_MODS_KEY(MOD_LCTL, KC_C),             // FN12 - Ctrl X
    ACTION_MODS_KEY(MOD_LCTL, KC_U),             // FN13 - Ctrl V    
    ACTION_MODS_KEY(MOD_LGUI, KC_I),             // FN14 - Win D
    ACTION_MODS_KEY(MOD_LSFT, KC_V),             // FN15 - shift+v ? bépo ? numpad :
    ACTION_MODS_KEY(MOD_RALT, KC_U),             // FN16 - altgr+u ? bépo ? numpad ?   
    ACTION_LAYER_MOMENTARY(2),                      // FN17 - switch to Layer2
    ACTION_MODS_KEY(MOD_LALT, KC_TAB)             // FN17 - Alt + Tab
//    ACTION_MODS(MOD_LCTL | MOD_LALT)             // FN17 - Ctrl + Alt 
};

void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
{
    if (id == TEENSY_KEY) {
        clear_keyboard();
        print("\n\nJump to bootloader... ");
        _delay_ms(250);
        bootloader_jump(); // should not return
        print("not supported.\n");
    }
}

#endif


#define KEYMAPS_SIZE    (sizeof(keymaps) / sizeof(keymaps[0]))
#define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0]))

/* translates key to keycode */
uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
{
    if (layer < KEYMAPS_SIZE) {
        return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);
    } else {
        // fall back to layer 0
        return pgm_read_byte(&keymaps[0][(key.row)][(key.col)]);
    }
}

#if defined(KEYMAP_CUB)

// function keymap_fn_to_action will be defined in keymap_cub.h

#else
/* translates Fn keycode to action */
action_t keymap_fn_to_action(uint8_t keycode)
{
    action_t action;
    if (FN_INDEX(keycode) < FN_ACTIONS_SIZE) {
        action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]);
    } else {
        action.code = ACTION_NO;
    }
    return action;
}
#endif

#5 Re : Coin des bidouilleurs » [sujet technique] Adapter le bépo à l’ergodox » 27/2/2015 18:21:56

Bonjour,

J'ai fait quelques adaptations au layout, mais j'ai un petit problème : je voulais placer une touche Fn (pour accéder à un autre niveau) à côté du ALT, mais quand je relâche la touche Fn, le layer correspondant reste actif, alors que le même Fn pour le même layer fonctionne correctement dans le pavé des pouces… Quelqu'un sait contourner ce pb?

Merci,
Jonathan

#6 Re : Coin des bidouilleurs » [sujet technique] Adapter le bépo à l’ergodox » 25/2/2015 12:10:13

Au fait, quelle est la touche à utiliser pour passer le Teensy en mode programmation?

#7 Re : Coin des bidouilleurs » [sujet technique] Adapter le bépo à l’ergodox » 25/2/2015 12:04:31

Ça y est, j'écris en utilisant mon ErgoDox, avec ta disposition,  yeKcim!!!!

Pas franchement évident au début, mais je vais m'y faire… Je trouve la position du backspace pas terrible par contre, vu que c'est une touche dont on se sert assez souvent, surtout quand on vient de se mettre à l'ErgoDox.

Au fait, pourquoi utilise-t-on le firmware tmk_keyboard plutôt que le firmnware officiel (github.com/benblazak/ergodox-firmware)?

En tout cas, je vais expérimenter un peu et sans doute apporter des modifications en fonction du ressenti.

#8 Re : Coin des bidouilleurs » [sujet technique] Adapter le bépo à l’ergodox » 22/2/2015 12:14:32

La combinaison de touches dépend de quoi? Il y en a une par défaut? J'ai posé la question chez FalbaTech, mais en attendant la réponse...

#9 Re : Coin des bidouilleurs » [sujet technique] Adapter le bépo à l’ergodox » 22/2/2015 00:37:26

J'ai reçu mon ErgoDox (via FalbaTech, assemblé et tout)!

Par contre, comment on fait pour charger une disposition sur le clavier?

#10 Re : Coin des bidouilleurs » [sujet technique] Adapter le bépo à l’ergodox » 12/2/2015 15:49:18

Je n'ai pas (encore!) d'ErgoDox, donc j'ai du mal à savoir ce qu'il en est réellement de l'accessibilité ou non de certaines touches. Par exemple, les touches W et Ç sont-elles facilement réalisables avec le pouce? Car personnellement, je trouve ça tendu de le faire avec l'index, ou alors il faut déplacer totalement la main, mais si on veut taper vite et limiter les fautes de frappe, mieux vaut éviter d'avoir à faire ça. Du coup, je me demande aussi si on ne devrait pas mettre dans ces positions des touches moins vitales, telles que la touche windows, la touche mirroir ou la touche compose (dont je ne comprends pas vraiment l'intérêt, vu le nombre de touches mortes qu'on a en bépo).

A ce propos, qu'en est-il de l'accessibilité des touches du pouce? Les deux grosses, j'imagine que c'est pas mal, mais les petites, on y arrive facilement sans trop se tromper? Car si c'est le cas, pourquoi pas utiliser ces emplacements pour des lettres, de sorte à vraiment se servir pleinement du pouce. Le W et le Ç peut-être? Mais je dis peut-être des bêtises, car j'ai du mal à savoir si c'est plus commode dans leur emplacement actuel (avec l'index je suppose), ou avec le pouce.

Les touches compose et suppr, c'est plutôt l'index ou le pouce?

Pour le CTRL, c'est vrai que ça doit pouvoir le faire puisque ça déborde. Les touches copier/coller fonctionnent? Rien que ça, c'est pas mal : je me suis habitué au CTRL-C / CTRL-V en bépo, mais faut avouer que c'est pas très pratique, surtout qu'on peut pas le faire avec la souris à la main droite.

#11 Re : Coin des bidouilleurs » [sujet technique] Adapter le bépo à l’ergodox » 12/2/2015 10:23:11

yeKcim a écrit :

Voici la réponse universelle 42 :

Bonjour,

Bravo pour l'effort que vous mettez à essayer de trouver l'adaption parfaite du bépo pour l'ergodox. Je trouve le matériel génial, et j'aurais bien envie de me lancer.

Quelques remarques par rapport à ta disposition, qui, dans l'ensemble, me plaît beaucoup :

— le ALT-GR + SHIFT + ESPACE me semble quasiment inaccessible. J'imagine que je suis l'un des seuls à m'en servir (je suis traducteur, donc tenu de respecter la typographie française), mais pour moi, c'est une fonctionnalité importante du bépo qu'il ne faudrait pas détruire.

— la touche miroir, c'est quoi?

— la touche SHIFT avec le pouce, c'est ABSOLUMENT GÉNIAL!

— à quoi servent les touches étoile, le petit carré au-dessus du TAB, et le gros rectangle en dessous du Ç?

— CTRL-ENTRÉE, c'est pas trop dur? La touche CTRL me paraît limite mal placée. Personnellement, ça me plaît beaucoup de l'avoir en bas à gauche, car je l'enfonce facilement avec la main plutôt que le petit doigt, ce qui m'évite des contorsions.

— CTRL-SHIFT-TAB nécessite 2 mains, alors que c'est une combinaison très utile lorsqu'on a une main sur la souris.

Jonathan

Pied de page des forums

Propulsé par FluxBB