{"id":18391318,"url":"https://github.com/thblt/bepo","last_synced_at":"2025-04-12T09:39:13.122Z","repository":{"id":68387264,"uuid":"197766252","full_name":"thblt/bepo","owner":"thblt","description":"Personal clone of the BÉPO (French Dvorak) layout driver generator and data.","archived":false,"fork":false,"pushed_at":"2024-01-19T20:13:33.000Z","size":3230,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-16T01:25:29.197Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thblt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-19T12:07:58.000Z","updated_at":"2024-01-19T20:13:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"5a2e223a-1a0b-4cef-ae23-642e862d728f","html_url":"https://github.com/thblt/bepo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thblt%2Fbepo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thblt%2Fbepo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thblt%2Fbepo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thblt%2Fbepo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thblt","download_url":"https://codeload.github.com/thblt/bepo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248548471,"owners_count":21122705,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T01:51:27.597Z","updated_at":"2025-04-12T09:39:13.100Z","avatar_url":"https://github.com/thblt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dépôt des pilotes de la disposition BÉPO\n\n## Introduction\n\nCe dépôt contient le code source permettant de générer les\n« pilotes », plus exactement les descripteurs de la disposition Bépo.\nIl sera utile uniquement aux personnes souhaitant *modifier* la\ndisposition, ou produire rapidement des descripteurs pour de nouvelles\ndispositions.  Si vous souhaitez utiliser la disposition standard,\nvoyez plutôt le [guide d'installation sur la page du\nprojet](https://bepo.fr/wiki/Installation \"Guides d’installation des\npilotes bépo\").\n\n*Caveat emptor*:\n\n 1. Ce dépôt contient à la fois les sources *et* les produits finis,\n    c'est-à-dire les descripteurs de disposition eux-mêmes.\n 2. Ce document a été écrit pour formaliser ce que j’ai appris en\n    bricolant les sources, mais ne fait pas autorité. S’il contredit\n    le code, le code a raison. Si ça ne marche pas, c’est que je me\n    suis trompé.\n\n## Le compilateur et les données source\n\nL'essentiel de la chaîne de compilation Bépo se trouve dans le\nrépertoire `configGenerator`, à la racine du dépôt.\n\n### configGenerator\n\nLe programme essentiel, `configGenerator.pl`, est écrit en Perl et\nconvertit une représentation abstraite en descripteurs de clavier aux\nformats suivants:\n\n - XKB (GNU/Linux ou *BSD), pour installation globale\n - XKB (Gnu/Linux ou *BSD), pour installation locale\n - XModmap (Gnu/Linux ou *BSD)\n - XCompose (Gnu/Linux ou *BSD) (génère uniquement les touches mortes,\n   à utiliser en combinaison avec un des précédents.)\n - Microsoft Keyboard Layout Creator (MSKLC) (Windows), avec touches\n   virtuelles correspondant aux dispositions Azerty, Bépo, Qwertz ou\n   Dvoraj.\n - Une description informelle au format HTML, destinée à la\n   documentation.\n\nLes autres formats (essentiellement OSX et des logiciels de\ndactylographie) sont produits à partir de la sortie de par une série\nd'outils en Python, décrits plus loin.\n\nPour utiliser configGenerator, appelez-le avec pour seul argument le\nformat que vous souhaitez générer, parmi `x_xkb_root`, `x_xkb_user`,\n`x_xmodmap`, `x_compose`, `win_msklc_azerty`, `win_msklc_bepo`,\n`win_msklc_qwertz`, `win_msklc_dvoraj`, par exemple:\n\n```\n./configGenerator.pl win_msklc_azerty\n```\n\nLa sortie est envoyée sur la sortie standard, il faut donc rediriger\nvers un fichier:\n\n```\n./configGenerator.pl x_xkb_root \u003e bepo.xkb\n```\n\nPour XKB, XModmap et XCompose, la sortie est utilisable directement;\npour MSKLC, une étape de compilation supplémentaire est sans doute requise avec\nMSKLC, téléchargeable auprès de Microsoft.\n\n### Les convertisseurs secondaires\n\nLe même répertoire contient aussi une série d'outils écrits en Python\n2 (et *a priori* pas compatibles 3) pour produire de nouveaux\ndescripteurs.  Ils lisent en général un xkb (indifféremment produit\npar `x_xkb_root` ou `x_xkb_user`) et produisent de nouveaux formats.\n\nSauf exceptions documentées ci-dessous, ils prennent tous deux\narguments: le fichier xkb et le fichier de sortie à écrire.\n\n#### Pour systèmes d'exploitation\n\n - `kbdmap.py` produit un descripteur au format kbdmap (BSD) dans\n    `sortie`.\n - `keymaps.py` : produit un descripteur au format\n    keymap (Linux) dans `sortie`.\n - `keytables.py` : peut-être pour le format keytables de Solaris?\n - `macosx.py` : Produit un descripteur au format macOS.\n - `wscons.py` : pour BSD?\n\n#### Pour des outils d'apprentissage de la dactylographie\n\n`klavaro.py`, `ktouch.py` et `typefaster.py` produisent des\n   descripteurs pour les logiciels d'apprentissage de la typographie\n   [Klavaro](https://klavaro.sourceforge.io/fr/index.html \"Site du\n   logiciel Klavaro\"),\n   [KTouch](https://kde.org/applications/education/org.kde.ktouch\n   \"Site du projet KTouch\") et TypeFaster, respectivement.\n\n#### Pour générer des schémas visuels\n\n - `map.py` produit des schémas ASCII de la disposition dans tous les\n   états possibles.\n - `svg.py xkb préfixe` génère des schémas de la disposition décrite\n   par `xkb` dans des fichiers préfixés par `préfixe`.\n\n#### Autres\n\n - `symbolsConf.py` : génère `symbols.conf` à partir de `Compose`.  Ne\n   prend pas d'arguments.\n\n - `xkb.py`, `compose.py`, `dead_keys.py`, `deadsConf.py`,\n   `defaults.py`, `terminators.py` sont des librairies Python\n   utilisables pour écrire d'autres convertisseurs.\n\n### Les formats d'entrée\n\n`configGenerator.pl` lit les fichiers suivants, dans le répertoire du\nscript.\n\n - `layout.conf`, ou la valeur de `$BEPO_LAYOUT_DESCRIPTION`, contient\n   la description de la disposition.\n - `deads.conf`, ou la valeur de `$BEPO_DEADKEY_BEHAVIOUR`, contient la\n   description des enchaînements sur touche morte.\n - `virtualKeys.conf`, ou la valeur de `$BEPO_VIRTUAL_KEYS`, contient\n   la configuration des touches virtuelles (Windows uniquement)\n - `double-dead-keys.conf`, ou la valeur de\n   `$BEPO_DOUBLE_DEADKEY_BEHAVIOUR`, décrit les touches mortes\n   activées par une touche morte répétée.\n - `keys.conf`, ou la valeur de `$BEPO_KEYS_FILE`, contient les\n   équivalents des noms des touches pour les différents générateurs.\n - `specialKeys.conf`, ou la valeur de `$BEPO_SPECIAL_KEYS_FILE` ???\n - `symbols.conf`, ou la valeur de `$BEPO_SYMBOLS_FILE`, fait\n   correspondre les noms de caractères pour les différents\n   générateurs.\n - `UnicodeData-9.0.b6.partial.fr.txt`, ou la valeur de\n   `$BEPO_UNICODE_FILE`, fait correspondre les points de code UNICODE\n   avec leurs noms en français.\n\n#### layout.conf\n\nLes lignes qui commencent par un `#` sont ignorées.\n\nLe fichier est lu ligne à ligne. Les lignes ont le format suivant:\n\n```\n[TYPE]![TOUCHE]\\t[CARACTÈRE]\\t[CARACTÈRE]\\t[CARACTÈRE]\\t[CARACTÈRE]\\t\n```\n\n - `TYPE` est `0`, `1` ou `2`, pour une touche non-alphabétique,\n   partiellement alphabétique ou alphabétique, au sens de xkb\n   (détermine le comportement de capslock).  Il peut être suivi de\n   `w`, qui réserve son export à Windows.\n\n - `CARACTÈRE` correspond, de la première à la dernière occurence, au\n   caractère produit par la touche de base, puis shiftée, puis au\n   niveau 3 (AltGr), puis au niveau 4 (AltGr+Shift).\n\n - En position 0, `0`, `1` ou `2`.\n\n#### deads.conf\n\nDéfinit le comportement des touches mortes, série de noms de caractère (pas de\ntouches) séparés par des espaces.  Le dernier est le caractère produit par la succession des précédents.\n\nLe préfixe `L!` ignore la ligne pour les générateurs XKB.\n\n# Références et documentations\n\n - La [note technique Apple TN2056 définissant le format .keylayout](https://developer.apple.com/library/archive/technotes/tn2056/_index.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthblt%2Fbepo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthblt%2Fbepo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthblt%2Fbepo/lists"}