From e078a83b74a9fd9c704185d4608e179d541d53bb Mon Sep 17 00:00:00 2001 From: adrienm7 <49562406+adrienm7@users.noreply.github.com> Date: Mon, 11 Nov 2024 07:21:25 +0100 Subject: [PATCH] =?UTF-8?q?layouts=E2=80=AF:=20en,=20fr,=20fr.contrib,=20f?= =?UTF-8?q?r.nonfree=20(#268)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 14 ++-- code/layout-analyzer.js | 13 +++- layouts/{ => en}/ISRT.json | 0 layouts/{ => en}/ISRT.yaml | 0 layouts/{ => en}/MTGAP.json | 0 layouts/{ => en}/MTGAP.yaml | 0 layouts/{ => en}/colemak-dh.json | 0 layouts/{ => en}/colemak-dh.yaml | 0 layouts/{ => en}/colemak.json | 0 layouts/{ => en}/colemak.yaml | 0 layouts/{ => en}/dvorak.json | 0 layouts/{ => en}/dvorak.yaml | 0 layouts/{ => en}/qwerty.json | 0 layouts/{ => en}/qwerty.yaml | 0 layouts/{ => en}/sturdy.json | 0 layouts/{ => en}/sturdy.toml | 0 layouts/{ => en}/workman.json | 0 layouts/{ => en}/workman.yaml | 0 layouts/fr.contrib/beopy-l.json | 71 +++++++++++++++++ layouts/fr.contrib/beopy-l.toml | 48 ++++++++++++ layouts/fr.contrib/beopy.json | 60 +++++++++++++++ layouts/fr.contrib/beopy.toml | 46 +++++++++++ layouts/fr.contrib/ergaie.json | 70 +++++++++++++++++ layouts/fr.contrib/ergaie.toml | 48 ++++++++++++ layouts/fr.contrib/erglace_nuke.json | 77 +++++++++++++++++++ layouts/fr.contrib/erglace_nuke.toml | 48 ++++++++++++ layouts/fr.contrib/hypertexte_1dk.json | 61 +++++++++++++++ layouts/fr.contrib/hypertexte_1dk.toml | 48 ++++++++++++ layouts/fr.contrib/optergol.json | 72 +++++++++++++++++ layouts/fr.contrib/optergol.toml | 50 ++++++++++++ layouts/fr.nonfree/LICENSE.md | 12 +++ layouts/fr.nonfree/optimot.json | 65 ++++++++++++++++ layouts/fr.nonfree/optimot.yaml | 27 +++++++ layouts/{ => fr}/azerty.json | 0 layouts/{ => fr}/azerty.yaml | 0 layouts/{ => fr}/bepo.json | 0 layouts/{ => fr}/bepo.yaml | 0 layouts/{ => fr}/bepolar.json | 0 .../fr/bepolar.toml | 0 layouts/{ => fr}/bepolar.yaml | 0 layouts/{ => fr}/colemak-french-touch.json | 0 layouts/{ => fr}/colemak-french-touch.toml | 0 layouts/{ => fr}/erglace.json | 0 layouts/{ => fr}/erglace.toml | 0 layouts/{ => fr}/ergol.json | 0 layouts/{ => fr}/ergol.toml | 0 layouts/{ => fr}/lafayette.json | 0 layouts/{ => fr}/lafayette.yaml | 0 www/layouts/shortcodes/layout-list.html | 17 +++- 49 files changed, 832 insertions(+), 15 deletions(-) rename layouts/{ => en}/ISRT.json (100%) rename layouts/{ => en}/ISRT.yaml (100%) rename layouts/{ => en}/MTGAP.json (100%) rename layouts/{ => en}/MTGAP.yaml (100%) rename layouts/{ => en}/colemak-dh.json (100%) rename layouts/{ => en}/colemak-dh.yaml (100%) rename layouts/{ => en}/colemak.json (100%) rename layouts/{ => en}/colemak.yaml (100%) rename layouts/{ => en}/dvorak.json (100%) rename layouts/{ => en}/dvorak.yaml (100%) rename layouts/{ => en}/qwerty.json (100%) rename layouts/{ => en}/qwerty.yaml (100%) rename layouts/{ => en}/sturdy.json (100%) rename layouts/{ => en}/sturdy.toml (100%) rename layouts/{ => en}/workman.json (100%) rename layouts/{ => en}/workman.yaml (100%) create mode 100644 layouts/fr.contrib/beopy-l.json create mode 100644 layouts/fr.contrib/beopy-l.toml create mode 100644 layouts/fr.contrib/beopy.json create mode 100644 layouts/fr.contrib/beopy.toml create mode 100644 layouts/fr.contrib/ergaie.json create mode 100644 layouts/fr.contrib/ergaie.toml create mode 100644 layouts/fr.contrib/erglace_nuke.json create mode 100644 layouts/fr.contrib/erglace_nuke.toml create mode 100644 layouts/fr.contrib/hypertexte_1dk.json create mode 100644 layouts/fr.contrib/hypertexte_1dk.toml create mode 100644 layouts/fr.contrib/optergol.json create mode 100644 layouts/fr.contrib/optergol.toml create mode 100644 layouts/fr.nonfree/LICENSE.md create mode 100644 layouts/fr.nonfree/optimot.json create mode 100644 layouts/fr.nonfree/optimot.yaml rename layouts/{ => fr}/azerty.json (100%) rename layouts/{ => fr}/azerty.yaml (100%) rename layouts/{ => fr}/bepo.json (100%) rename layouts/{ => fr}/bepo.yaml (100%) rename layouts/{ => fr}/bepolar.json (100%) rename "layouts/B\303\251polar.toml" => layouts/fr/bepolar.toml (100%) rename layouts/{ => fr}/bepolar.yaml (100%) rename layouts/{ => fr}/colemak-french-touch.json (100%) rename layouts/{ => fr}/colemak-french-touch.toml (100%) rename layouts/{ => fr}/erglace.json (100%) rename layouts/{ => fr}/erglace.toml (100%) rename layouts/{ => fr}/ergol.json (100%) rename layouts/{ => fr}/ergol.toml (100%) rename layouts/{ => fr}/lafayette.json (100%) rename layouts/{ => fr}/lafayette.yaml (100%) diff --git a/Makefile b/Makefile index c51e3332..da61f5cb 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,17 @@ all: - @for file in layouts/*.toml; do \ - kalamine build $$file --out "layouts/$$(basename $${file%.*}).json"; \ - done - @for file in layouts/*.yaml; do \ - kalamine build $$file --out "layouts/$$(basename $${file%.*}).json"; \ + @find layouts -type f \( -name '*.toml' -o -name '*.yaml' \) | while read -r file; do \ + kalamine build "$$file" --out "$$(echo $$file | sed 's/....$$/json/')"; \ done watch: - @inotifywait -m layouts -e close_write | while read -r _path _action file; do \ + @inotifywait -m -r layouts -e close_write | while read -r path _action file; do \ case $$file in \ - *yaml) kalamine build "layouts/$$file" --out "layouts/$$(basename "$${file%.*}").json";; \ - *toml) kalamine build "layouts/$$file" --out "layouts/$$(basename "$${file%.*}").json";; \ + *.yaml | *.toml) echo kalamine build "$$path$$file" --out "$$path$$(basename "$${file%.*}").json";; \ esac \ done dev: - pip3 install kalamine + pipx install kalamine clean: rm -rf dist/* diff --git a/code/layout-analyzer.js b/code/layout-analyzer.js index b43bf1a6..8e265423 100644 --- a/code/layout-analyzer.js +++ b/code/layout-analyzer.js @@ -12,7 +12,7 @@ window.addEventListener('DOMContentLoaded', () => { let impreciseData = false; const substituteChars = { - '\u00a0': ' ', // ( ) no-break space + '\u00a0': ' ', // ( ) no-break space '\u202f': ' ', // ( ) narrow no-break space '\u00ab': '"', // («) left-pointing double angle quotation mark @@ -548,10 +548,15 @@ window.addEventListener('DOMContentLoaded', () => { const setProp = (key, value) => { if (key === 'layout') { if (value) { - fetch(`../layouts/${value}.json`) + const layoutFolder = document + .querySelector(`#layout option[value="${value}"]`).dataset.folder; + fetch(`../layouts/${layoutFolder}/${value}.json`) .then(response => response.json()) .then(data => { - inputField.placeholder = `zone de saisie ${value}`; + const selectedOption = document + .querySelector('#layout option:checked') + .textContent.trim() || value; + inputField.placeholder = `zone de saisie ${selectedOption}`; keyboard.setKeyboardLayout( data.keymap, data.deadkeys, @@ -596,7 +601,7 @@ window.addEventListener('DOMContentLoaded', () => { IDs.map(prop => state[prop]).join('/').replace(/\/+$/, ''); }; const applyHashState = () => { - const hash = window.location.hash || '#/ergol//en+fr'; + const hash = window.location.hash || '/ergol//en+fr'; const hashState = hash.split('/').slice(1); IDs.forEach((key, i) => { setProp(key, hashState[i] || ''); diff --git a/layouts/ISRT.json b/layouts/en/ISRT.json similarity index 100% rename from layouts/ISRT.json rename to layouts/en/ISRT.json diff --git a/layouts/ISRT.yaml b/layouts/en/ISRT.yaml similarity index 100% rename from layouts/ISRT.yaml rename to layouts/en/ISRT.yaml diff --git a/layouts/MTGAP.json b/layouts/en/MTGAP.json similarity index 100% rename from layouts/MTGAP.json rename to layouts/en/MTGAP.json diff --git a/layouts/MTGAP.yaml b/layouts/en/MTGAP.yaml similarity index 100% rename from layouts/MTGAP.yaml rename to layouts/en/MTGAP.yaml diff --git a/layouts/colemak-dh.json b/layouts/en/colemak-dh.json similarity index 100% rename from layouts/colemak-dh.json rename to layouts/en/colemak-dh.json diff --git a/layouts/colemak-dh.yaml b/layouts/en/colemak-dh.yaml similarity index 100% rename from layouts/colemak-dh.yaml rename to layouts/en/colemak-dh.yaml diff --git a/layouts/colemak.json b/layouts/en/colemak.json similarity index 100% rename from layouts/colemak.json rename to layouts/en/colemak.json diff --git a/layouts/colemak.yaml b/layouts/en/colemak.yaml similarity index 100% rename from layouts/colemak.yaml rename to layouts/en/colemak.yaml diff --git a/layouts/dvorak.json b/layouts/en/dvorak.json similarity index 100% rename from layouts/dvorak.json rename to layouts/en/dvorak.json diff --git a/layouts/dvorak.yaml b/layouts/en/dvorak.yaml similarity index 100% rename from layouts/dvorak.yaml rename to layouts/en/dvorak.yaml diff --git a/layouts/qwerty.json b/layouts/en/qwerty.json similarity index 100% rename from layouts/qwerty.json rename to layouts/en/qwerty.json diff --git a/layouts/qwerty.yaml b/layouts/en/qwerty.yaml similarity index 100% rename from layouts/qwerty.yaml rename to layouts/en/qwerty.yaml diff --git a/layouts/sturdy.json b/layouts/en/sturdy.json similarity index 100% rename from layouts/sturdy.json rename to layouts/en/sturdy.json diff --git a/layouts/sturdy.toml b/layouts/en/sturdy.toml similarity index 100% rename from layouts/sturdy.toml rename to layouts/en/sturdy.toml diff --git a/layouts/workman.json b/layouts/en/workman.json similarity index 100% rename from layouts/workman.json rename to layouts/en/workman.json diff --git a/layouts/workman.yaml b/layouts/en/workman.yaml similarity index 100% rename from layouts/workman.yaml rename to layouts/en/workman.yaml diff --git a/layouts/fr.contrib/beopy-l.json b/layouts/fr.contrib/beopy-l.json new file mode 100644 index 00000000..da1ba8b3 --- /dev/null +++ b/layouts/fr.contrib/beopy-l.json @@ -0,0 +1,71 @@ +{ + "name": "Béopy 1DFH", + "description": "Béopy adapté avec la philosophie ergo‑l", + "geometry": "ergo", + "keymap": { + "Digit1": [ "1", "€", "₁", "¹" ], + "Digit2": [ "2", "«", "₂", "²" ], + "Digit3": [ "3", "»", "₃", "³" ], + "Digit4": [ "4", "$", "₄", "⁴" ], + "Digit5": [ "5", "%", "₅", "⁵" ], + "Digit6": [ "6", "^", "₆", "⁶" ], + "Digit7": [ "7", "&", "₇", "⁷" ], + "Digit8": [ "8", "*", "₈", "⁸" ], + "Digit9": [ "9", "#", "₉", "⁹" ], + "Digit0": [ "0", "@", "₀", "⁰" ], + "KeyQ": [ "b", "B", "@" ], + "KeyW": [ "**", "!", "<", "≤" ], + "KeyE": [ "o", "O", ">", "≥" ], + "KeyR": [ "p", "P", "$", "*¤" ], + "KeyT": [ "y", "Y", "%", "‰" ], + "KeyY": [ "-", "?", "^", "*^" ], + "KeyU": [ "v", "V", "&" ], + "KeyI": [ "d", "D", "*", "×" ], + "KeyO": [ "l", "L", "'", "*´" ], + "KeyP": [ "j", "J", "`", "*`" ], + "KeyA": [ "a", "A", "{", "*ˇ" ], + "KeyS": [ "u", "U", "(", "⁽" ], + "KeyD": [ "e", "E", ")", "⁾" ], + "KeyF": [ "i", "I", "}" ], + "KeyG": [ ",", ";", "=", "≠" ], + "KeyH": [ "c", "C", "~", "*~" ], + "KeyJ": [ "t", "T", "+", "±" ], + "KeyK": [ "s", "S", "-", "*¯" ], + "KeyL": [ "r", "R", "_", "–" ], + "Semicolon": [ "n", "N", "\"", "*¨" ], + "KeyZ": [ "k", "K", "\\", "*/" ], + "KeyX": [ "z", "Z", "[" ], + "KeyC": [ "x", "X", "]" ], + "KeyV": [ ".", ":", "/", "÷" ], + "KeyB": [ "w", "W", "#" ], + "KeyN": [ "m", "M", "|", "¦" ], + "KeyM": [ "g", "G", "!", "¬" ], + "Comma": [ "q", "Q", ";", "*¸" ], + "Period": [ "h", "H", ":" ], + "Slash": [ "f", "F", "?" ], + "Minus": [ "=", "≠" ], + "Equal": [ "/", "÷" ], + "BracketLeft": [ "+", "±" ], + "BracketRight": [ "*", "×" ], + "Quote": [ "'", "\"" ], + "Backquote": [ "^", "|" ], + "Backslash": [ "`", "~" ], + "IntlBackslash": [ "<", ">" ], + "Space": [ " ", " ", " ", " " ] + }, + "deadkeys": { + "**": { "**": "*¨", "€": "‚", "1": "„", "«": "‘", "2": "“", "»": "’", "3": "”", "4": "¢", "5": "‰", "6": "¥", "7": "¤", "8": "§", "9": "¶", "0": "°", "B": "*µ", "b": "*µ", "!": "¡", "O": "_", "o": "_", "P": "Ê", "p": "ê", "y": "–", "?": "¿", "-": "‑", "v": "#", "D": "Œ", "d": "œ", "L": "Ô", "l": "ô", "J": "Î", "j": "î", "A": "Æ", "a": "æ", "E": "É", "e": "é", "I": "È", "i": "è", ";": "•", ",": "·", "C": "Ç", "c": "ç", "T": "À", "t": "à", "s": "(", "r": ")", "N": "Ñ", "n": "ñ", ":": "⋯", ".": "…", "w": "—", "g": "&", "Q": "Â", "q": "â", "H": "Ù", "h": "ù", "F": "Û", "f": "û", " ": "’", " ": "’", " ": "’" }, + "*`": { "*`": "`", "A": "À", "a": "à", "E": "È", "e": "è", "I": "Ì", "i": "ì", "N": "Ǹ", "n": "ǹ", "O": "Ò", "o": "ò", "U": "Ù", "u": "ù", "W": "Ẁ", "w": "ẁ", "Y": "Ỳ", "y": "ỳ", " ": "`", " ": "`", " ": "`" }, + "*´": { "*´": "´", "A": "Á", "a": "á", "C": "Ć", "c": "ć", "E": "É", "e": "é", "G": "Ǵ", "g": "ǵ", "I": "Í", "i": "í", "K": "Ḱ", "k": "ḱ", "L": "Ĺ", "l": "ĺ", "M": "Ḿ", "m": "ḿ", "N": "Ń", "n": "ń", "O": "Ó", "o": "ó", "P": "Ṕ", "p": "ṕ", "R": "Ŕ", "r": "ŕ", "S": "Ś", "s": "ś", "U": "Ú", "u": "ú", "W": "Ẃ", "w": "ẃ", "Y": "Ý", "y": "ý", "Z": "Ź", "z": "ź", " ": "'", " ": "'", " ": "'" }, + "*^": { "*^": "^", "A": "Â", "a": "â", "C": "Ĉ", "c": "ĉ", "E": "Ê", "e": "ê", "G": "Ĝ", "g": "ĝ", "H": "Ĥ", "h": "ĥ", "I": "Î", "i": "î", "J": "Ĵ", "j": "ĵ", "O": "Ô", "o": "ô", "S": "Ŝ", "s": "ŝ", "U": "Û", "u": "û", "W": "Ŵ", "w": "ŵ", "Y": "Ŷ", "y": "ŷ", "Z": "Ẑ", "z": "ẑ", "0": "⁰", "1": "¹", "2": "²", "3": "³", "4": "⁴", "5": "⁵", "6": "⁶", "7": "⁷", "8": "⁸", "9": "⁹", "(": "⁽", ")": "⁾", "+": "⁺", "-": "⁻", "=": "⁼", " ": "^", " ": "^", " ": "^" }, + "*ˇ": { "*ˇ": "ˇ", "A": "Ǎ", "a": "ǎ", "C": "Č", "c": "č", "D": "Ď", "d": "ď", "E": "Ě", "e": "ě", "G": "Ǧ", "g": "ǧ", "H": "Ȟ", "h": "ȟ", "I": "Ǐ", "i": "ǐ", "K": "Ǩ", "k": "ǩ", "L": "Ľ", "l": "ľ", "N": "Ň", "n": "ň", "O": "Ǒ", "o": "ǒ", "R": "Ř", "r": "ř", "S": "Š", "s": "š", "T": "Ť", "t": "ť", "U": "Ǔ", "u": "ǔ", "Z": "Ž", "z": "ž", "0": "₀", "1": "₁", "2": "₂", "3": "₃", "4": "₄", "5": "₅", "6": "₆", "7": "₇", "8": "₈", "9": "₉", "(": "₍", ")": "₎", "+": "₊", "-": "₋", "=": "₌", " ": "ˇ", " ": "ˇ", " ": "ˇ" }, + "*~": { "*~": "~", "A": "Ã", "a": "ã", "E": "Ẽ", "e": "ẽ", "I": "Ĩ", "i": "ĩ", "N": "Ñ", "n": "ñ", "O": "Õ", "o": "õ", "U": "Ũ", "u": "ũ", "V": "Ṽ", "v": "ṽ", "Y": "Ỹ", "y": "ỹ", "<": "≲", ">": "≳", "=": "≃", " ": "~", " ": "~", " ": "~" }, + "*¯": { "*¯": "ˉ", "A": "Ā", "a": "ā", "E": "Ē", "e": "ē", "G": "Ḡ", "g": "ḡ", "I": "Ī", "i": "ī", "O": "Ō", "o": "ō", "U": "Ū", "u": "ū", "Y": "Ȳ", "y": "ȳ", " ": "¯", " ": "¯", " ": "¯" }, + "*¨": { "*¨": "¨", "A": "Ä", "a": "ä", "E": "Ë", "e": "ë", "H": "Ḧ", "h": "ḧ", "I": "Ï", "i": "ï", "O": "Ö", "o": "ö", "t": "ẗ", "U": "Ü", "u": "ü", "W": "Ẅ", "w": "ẅ", "X": "Ẍ", "x": "ẍ", "Y": "Ÿ", "y": "ÿ", " ": "\"", " ": "\"", " ": "\"" }, + "*¸": { "*¸": "¸", "C": "Ç", "c": "ç", "D": "Ḑ", "d": "ḑ", "E": "Ȩ", "e": "ȩ", "G": "Ģ", "g": "ģ", "H": "Ḩ", "h": "ḩ", "K": "Ķ", "k": "ķ", "L": "Ļ", "l": "ļ", "N": "Ņ", "n": "ņ", "R": "Ŗ", "r": "ŗ", "S": "Ş", "s": "ş", "T": "Ţ", "t": "ţ", " ": "¸", " ": "¸", " ": "¸" }, + "*/": { "*/": "/", "A": "Ⱥ", "a": "ⱥ", "B": "Ƀ", "b": "ƀ", "C": "Ȼ", "c": "ȼ", "D": "Đ", "d": "đ", "E": "Ɇ", "e": "ɇ", "G": "Ǥ", "g": "ǥ", "H": "Ħ", "h": "ħ", "I": "Ɨ", "i": "ɨ", "J": "Ɉ", "j": "ɉ", "L": "Ł", "l": "ł", "O": "Ø", "o": "ø", "P": "Ᵽ", "p": "ᵽ", "R": "Ɍ", "r": "ɍ", "T": "Ŧ", "t": "ŧ", "U": "Ʉ", "u": "ʉ", "Y": "Ɏ", "y": "ɏ", "Z": "Ƶ", "z": "ƶ", "<": "≮", "≤": "≰", "≥": "≱", ">": "≯", "=": "≠", " ": "/", " ": "/", " ": "/" }, + "*µ": { "*µ": "µ", "A": "Α", "a": "α", "B": "Β", "b": "β", "D": "Δ", "d": "δ", "E": "Ε", "e": "ε", "F": "Φ", "f": "φ", "G": "Γ", "g": "γ", "H": "Η", "h": "η", "I": "Ι", "i": "ι", "J": "Θ", "j": "θ", "K": "Κ", "k": "κ", "L": "Λ", "l": "λ", "M": "Μ", "m": "μ", "N": "Ν", "n": "ν", "O": "Ο", "o": "ο", "P": "Π", "p": "π", "Q": "Χ", "q": "χ", "R": "Ρ", "r": "ρ", "S": "Σ", "s": "σ", "T": "Τ", "t": "τ", "U": "Υ", "u": "υ", "W": "Ω", "w": "ω", "X": "Ξ", "x": "ξ", "Y": "Ψ", "y": "ψ", "Z": "Ζ", "z": "ζ", " ": "µ", " ": "µ", " ": "µ" }, + "*¤": { "*¤": "¤", "A": "₳", "a": "؋", "B": "₱", "b": "฿", "C": "₡", "c": "¢", "D": "₯", "d": "₫", "E": "₠", "e": "€", "F": "₣", "f": "ƒ", "G": "₲", "g": "₲", "H": "₴", "h": "₴", "I": "៛", "i": "﷼", "K": "₭", "k": "₭", "L": "₤", "l": "£", "M": "ℳ", "m": "₥", "N": "₦", "n": "₦", "O": "૱", "o": "௹", "P": "₧", "p": "₰", "R": "₨", "r": "₢", "S": "$", "s": "₪", "T": "₮", "t": "৳", "U": "圓", "u": "元", "W": "₩", "w": "₩", "Y": "円", "y": "¥", " ": "¤", " ": "¤", " ": "¤" } + }, + "altgr": true +} \ No newline at end of file diff --git a/layouts/fr.contrib/beopy-l.toml b/layouts/fr.contrib/beopy-l.toml new file mode 100644 index 00000000..0a1fe2f5 --- /dev/null +++ b/layouts/fr.contrib/beopy-l.toml @@ -0,0 +1,48 @@ +name = "Béopy 1DFH" +name8 = "beopy1dk" +locale = "fr" +variant = "beopy1dk" +description = "Béopy adapté avec la philosophie ergo‑l" +author = "Malekpe" +url = "https://malekpe.net" +geometry = "ERGO" +version = "1.2.1" + +base = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ | ┃ € ‚ │ « ‘ │ » ’ │ $ │ % ┃ ^ │ & │ * │ # │ @ ┃ ≠ ┆ ÷ ┆ +┆ ^ ┃ 1 „ │ 2 “ │ 3 ” │ 4 ¢ │ 5 ‰ ┃ 6 ¥ │ 7 ¤ │ 8 § │ 9 ¶ │ 0 ° ┃ = ┆ / ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ B*µ │ ! ¡ │ O _ │ P │ Y ┃ ? ¿ │ V │ D │ L │ J ┃ ± ┆ × ┆ +· ┃ *µ │***¨ │ _ │ ê │ – ┃ - ‑ │ # │ œ │ ô │ î ┃ + ┆ * ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ A │ U │ E │ I │ ; • ┃ C │ T │ S │ R │ N ┃ " ┆ ~ ┆ +· ┃ æ │ │ é │ è │ , · ┃ ç │ à │ ( │ ) │ ñ ┃ ' ┆ ` ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ > ┃ K │ Z │ X │ : ⋯ │ W ┃ M │ G │ Q │ H │ F ┃ · +┆ < ┃ │ │ │ . … │ — ┃ │ & │ â │ ù │ û ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + +altgr = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ ┃ ¹ │ ² │ ³ │ ⁴ │ ⁵ ┃ ⁶ │ ⁷ │ ⁸ │ ⁹ │ ⁰ ┃ ┆ ┆ +┆ ┃ ₁ │ ₂ │ ₃ │ ₄ │ ₅ ┃ ₆ │ ₇ │ ₈ │ ₉ │ ₀ ┃ ┆ ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ │ ≤ │ ≥ │ *¤ │ ‰ ┃ *^ │ │ × │ *´ │ *` ┃ ┆ ┆ +· ┃ @ │ < │ > │ $ │ % ┃ ^ │ & │ * │ ' │ ` ┃ ┆ ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ *ˇ │ ⁽ │ ⁾ │ │ ≠ ┃ *~ │ ± │ *¯ │ – │ *¨ ┃ ┆ ┆ +· ┃ { │ ( │ ) │ } │ = ┃ ~ │ + │ - │ _ │ " ┃ ┆ ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ ┃ */ │ │ │ ÷ │ ┃ ¦ │ ¬ │ *¸ │ │ ┃ · +┆ ┃ \ │ [ │ ] │ / │ # ┃ | │ ! │ ; │ : │ ? ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + +[spacebar] +shift = "\u202f" # NARROW NO-BREAK SPACE +altgr = "\u0020" # SPACE +altgr_shift = "\u00a0" # NO-BREAK SPACE +1dk = "\u2019" # RIGHT SINGLE QUOTATION MARK +1dk_shift = "\u2019" # RIGHT SINGLE QUOTATION MARK diff --git a/layouts/fr.contrib/beopy.json b/layouts/fr.contrib/beopy.json new file mode 100644 index 00000000..90fcbeaf --- /dev/null +++ b/layouts/fr.contrib/beopy.json @@ -0,0 +1,60 @@ +{ + "name": "Béopy", + "description": "French (Béopy)", + "geometry": "ergo", + "keymap": { + "Digit1": [ "\"", "1", "—", "„" ], + "Digit2": [ "«", "2", "<", "“" ], + "Digit3": [ "»", "3", ">", "”" ], + "Digit4": [ "(", "4", "[", "≤" ], + "Digit5": [ ")", "5", "]", "≥" ], + "Digit6": [ "@", "6", "_", "^" ], + "Digit7": [ "+", "7", "±", "¬" ], + "Digit8": [ "-", "8", "−", "¼" ], + "Digit9": [ "/", "9", "÷", "½" ], + "Digit0": [ "*", "0", "×", "¾" ], + "KeyQ": [ "b", "B", "|", "¦" ], + "KeyW": [ "é", "É", "ó", "ő" ], + "KeyE": [ "o", "O", "œ", "Œ" ], + "KeyR": [ "p", "P", "{", "§" ], + "KeyT": [ "y", "Y", "}" ], + "KeyY": [ "!", "!", "¡" ], + "KeyU": [ "v", "V", "ǒ", "Ǒ" ], + "KeyI": [ "d", "D", "ð", "Ð" ], + "KeyO": [ "l", "L", "£", "ø" ], + "KeyP": [ "j", "J", "ij", "IJ" ], + "KeyA": [ "a", "A", "æ", "Æ" ], + "KeyS": [ "u", "U", "ù", "Ù" ], + "KeyD": [ "e", "E", "€", "¤" ], + "KeyF": [ "i", "I", "ö", "ȯ" ], + "KeyG": [ ",", ";", "'", "ơ" ], + "KeyH": [ "c", "C", "©", "ſ" ], + "KeyJ": [ "t", "T", "þ", "Þ" ], + "KeyK": [ "s", "S", "ß", "ẞ" ], + "KeyL": [ "r", "R", "®", "™" ], + "Semicolon": [ "n", "N", "õ", "Õ" ], + "KeyZ": [ "à", "À", "\\" ], + "KeyX": [ "è", "È", "ò", "*," ], + "KeyC": [ "x", "X", "&" ], + "KeyV": [ ".", ":", "…", "·" ], + "KeyB": [ "w", "W", "ŏ", "‘" ], + "KeyN": [ "’", "?", "¿", "ỏ" ], + "KeyM": [ "g", "G", "µ" ], + "Comma": [ "q", "Q", "å", "̣" ], + "Period": [ "h", "H", "†", "‡" ], + "Slash": [ "f", "F", "ǫ", "Ǫ" ], + "Minus": [ "=", "°", "≠", "′" ], + "Equal": [ "%", "`", "‰", "″" ], + "BracketLeft": [ "k", "K", "~" ], + "BracketRight": [ "z", "Z", "ə", "Ə" ], + "Quote": [ "m", "M", "ō", "º" ], + "Backquote": [ "$", "#", "–", "¶" ], + "Backslash": [ "ç", "Ç", "ţ", "ț" ], + "IntlBackslash": [ "ê", "Ê", "/" ], + "Space": [ " ", " ", "_", " " ] + }, + "deadkeys": { + "*,": { "*,": ",", "S": "Ș", "s": "ș", "T": "Ț", "t": "ț", " ": ",", " ": ",", " ": "," } + }, + "altgr": true +} \ No newline at end of file diff --git a/layouts/fr.contrib/beopy.toml b/layouts/fr.contrib/beopy.toml new file mode 100644 index 00000000..da3d583e --- /dev/null +++ b/layouts/fr.contrib/beopy.toml @@ -0,0 +1,46 @@ +name = "Béopy" +name8 = "beopy" +locale = "fr" +variant = "beopy" +description = "French (Béopy)" +author = "Beri" +url = "https://bepo.fr/wiki/Utilisateur:Beri" +geometry = "ERGO" +version = "1.0.0" + +base = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ # ┃ 1 │ 2 │ 3 │ 4 │ 5 ┃ 6 │ 7 │ 8 │ 9 │ 0 ┃ ° ┆ ` ┆ +┆ $ ┃ " │ « │ » │ ( │ ) ┃ @ │ + │ - │ / │ * ┃ = ┆ % ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ B │ É │ O │ P │ Y ┃ ! │ V │ D │ L │ J ┃ K ┆ Z ┆ +· ┃ │ │ │ │ ┃ │ │ │ │ ┃ ┆ ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ A │ U │ E │ I │ ; ┃ C │ T │ S │ R │ N ┃ M ┆ Ç ┆ +· ┃ │ │ │ │ , ┃ │ │ │ │ ┃ ┆ ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ Ê ┃ À │ È │ X │ : │ W ┃ ? │ G │ Q │ H │ F ┃ · +┆ ┃ │ │ │ . │ ┃ ’ │ │ │ │ ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + +altgr = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ ¶ ┃ „ │ “ │ ” │ ≤ │ ≥ ┃ ^ │ ¬ │ ¼ │ ½ │ ¾ ┃ ′ ┆ ″ ┆ +┆ – ┃ — │ < │ > │ [ │ ] ┃ _ │ ± │ − │ ÷ │ × ┃ ≠ ┆ ‰ ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ ¦ │ ő │ │ § │ ┃ │ │ │ ø │ ┃ ┆ ┆ +· ┃ | │ ó │ œ │ { │ } ┃ ¡ │ ǒ │ ð │ £ │ ij ┃ ~ ┆ ə ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ │ │ ¤ │ ȯ │ ơ ┃ ſ │ │ ẞ │ ™ │ ┃ º ┆ ț ┆ +· ┃ æ │ ù │ € │ ö │ ' ┃ © │ þ │ ß │ ® │ õ ┃ ō ┆ ţ ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ ┃ │ *, │ │ · │ ‘ ┃ ỏ │ │ ̣ọ │ ‡ │ ª ┃ · +┆ / ┃ \ │ ò │ & │ … │ ŏ ┃ ¿ │ µ │ å │ † │ ǫ ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + +[spacebar] +shift = "\u202f" # NARROW NO-BREAK SPACE +altgr = "\u005f" # LOW LINE +altgr_shift = "\u00a0" # NO-BREAK SPACE diff --git a/layouts/fr.contrib/ergaie.json b/layouts/fr.contrib/ergaie.json new file mode 100644 index 00000000..3adc2337 --- /dev/null +++ b/layouts/fr.contrib/ergaie.json @@ -0,0 +1,70 @@ +{ + "name": "ergaie", + "description": "French (Ergaie_07)", + "geometry": "ergo", + "keymap": { + "Digit1": [ "1", "€", "₁", "¹" ], + "Digit2": [ "2", "#", "₂", "²" ], + "Digit3": [ "3", "*", "₃", "³" ], + "Digit4": [ "4", "$", "₄", "⁴" ], + "Digit5": [ "5", "%", "₅", "⁵" ], + "Digit6": [ "6", "^", "₆", "⁶" ], + "Digit7": [ "7", "&", "₇", "⁷" ], + "Digit8": [ "8", "«", "₈", "⁸" ], + "Digit9": [ "9", "»", "₉", "⁹" ], + "Digit0": [ "0", "@", "₀", "⁰" ], + "KeyQ": [ "j", "J", "^", "*^" ], + "KeyW": [ "**", "**", "<", "≤" ], + "KeyE": [ "o", "O", ">", "≥" ], + "KeyR": [ "f", "F", "$", "*¤" ], + "KeyT": [ "k", "K", "%", "‰" ], + "KeyY": [ "v", "V", "@" ], + "KeyU": [ "d", "D", "&" ], + "KeyI": [ "l", "L", "*", "×" ], + "KeyO": [ "c", "C", "'", "*´" ], + "KeyP": [ "q", "Q", "`", "*`" ], + "KeyA": [ "a", "A", "{", "*ˇ" ], + "KeyS": [ "i", "I", "(", "⁽" ], + "KeyD": [ "e", "E", ")", "⁾" ], + "KeyF": [ "u", "U", "}", " " ], + "KeyG": [ ",", ";", "=", "≠" ], + "KeyH": [ "b", "B", "\\", "*/" ], + "KeyJ": [ "t", "T", "+", "±" ], + "KeyK": [ "n", "N", "-", "—" ], + "KeyL": [ "s", "S", "/", "÷" ], + "Semicolon": [ "r", "R", "\"", "*¨" ], + "KeyZ": [ ".", ":", "~", "*~" ], + "KeyX": [ "y", "Y", "[" ], + "KeyC": [ "-", "?", "]" ], + "KeyV": [ "h", "H", "_", "–" ], + "KeyB": [ "z", "Z", "#" ], + "KeyN": [ "w", "W", "|", "¦" ], + "KeyM": [ "p", "P", "!", "¬" ], + "Comma": [ "m", "M", ";", "*¸" ], + "Period": [ "g", "G", ":" ], + "Slash": [ "x", "X", "?" ], + "Minus": [ "/", "_" ], + "Equal": [ "=", "+" ], + "BracketLeft": [ "(", "[" ], + "BracketRight": [ ")", "]" ], + "Quote": [ "'", "\"" ], + "Backquote": [ "`", "~" ], + "Backslash": [ "\\", "|" ], + "IntlBackslash": [ "<", ">" ], + "Space": [ " ", " ", " ", " " ] + }, + "deadkeys": { + "**": { "**": "*¨", "1": "¤", "2": "§", "*": "¡", "3": "€", "4": "¢", "5": "‰", "6": "¥", "&": "‚", "7": "„", "«": "‘", "8": "“", "»": "’", "9": "”", "0": "°", "J": "Ù", "j": "ù", "O": "!", "o": "!", "F": "Â", "f": "â", "K": "Æ", "k": "æ", "V": "Œ", "v": "œ", "d": "(", "l": "_", "C": "Ç", "c": "ç", "q": ")", "A": "È", "a": "è", "i": "–", "E": "Ê", "e": "ê", "U": "É", "u": "é", ";": "_", ",": "–", "B": "ẞ", "b": "ß", "T": "À", "t": "à", "N": "Û", "n": "û", "S": "Ô", "s": "ô", "R": "Î", "r": "î", ".": "…", "Y": "Ÿ", "y": "ÿ", "?": "¿", "-": "‑", "H": "Ë", "h": "ë", "Z": "Ü", "z": "ü", "w": "—", "p": "·", "M": "Ñ", "m": "ñ", "g": "*µ", "X": "Ï", "x": "ï", "_": "–", "/": "÷", "+": "±", "=": "≠", " ": "’", " ": "’", " ": "’" }, + "*`": { "*`": "`", "A": "À", "a": "à", "E": "È", "e": "è", "I": "Ì", "i": "ì", "N": "Ǹ", "n": "ǹ", "O": "Ò", "o": "ò", "U": "Ù", "u": "ù", "W": "Ẁ", "w": "ẁ", "Y": "Ỳ", "y": "ỳ", " ": "`", " ": "`", " ": "`" }, + "*´": { "*´": "´", "A": "Á", "a": "á", "C": "Ć", "c": "ć", "E": "É", "e": "é", "G": "Ǵ", "g": "ǵ", "I": "Í", "i": "í", "K": "Ḱ", "k": "ḱ", "L": "Ĺ", "l": "ĺ", "M": "Ḿ", "m": "ḿ", "N": "Ń", "n": "ń", "O": "Ó", "o": "ó", "P": "Ṕ", "p": "ṕ", "R": "Ŕ", "r": "ŕ", "S": "Ś", "s": "ś", "U": "Ú", "u": "ú", "W": "Ẃ", "w": "ẃ", "Y": "Ý", "y": "ý", "Z": "Ź", "z": "ź", " ": "'", " ": "'", " ": "'" }, + "*^": { "*^": "^", "A": "Â", "a": "â", "C": "Ĉ", "c": "ĉ", "E": "Ê", "e": "ê", "G": "Ĝ", "g": "ĝ", "H": "Ĥ", "h": "ĥ", "I": "Î", "i": "î", "J": "Ĵ", "j": "ĵ", "O": "Ô", "o": "ô", "S": "Ŝ", "s": "ŝ", "U": "Û", "u": "û", "W": "Ŵ", "w": "ŵ", "Y": "Ŷ", "y": "ŷ", "Z": "Ẑ", "z": "ẑ", "0": "⁰", "1": "¹", "2": "²", "3": "³", "4": "⁴", "5": "⁵", "6": "⁶", "7": "⁷", "8": "⁸", "9": "⁹", "(": "⁽", ")": "⁾", "+": "⁺", "-": "⁻", "=": "⁼", " ": "^", " ": "^", " ": "^" }, + "*ˇ": { "*ˇ": "ˇ", "A": "Ǎ", "a": "ǎ", "C": "Č", "c": "č", "D": "Ď", "d": "ď", "E": "Ě", "e": "ě", "G": "Ǧ", "g": "ǧ", "H": "Ȟ", "h": "ȟ", "I": "Ǐ", "i": "ǐ", "K": "Ǩ", "k": "ǩ", "L": "Ľ", "l": "ľ", "N": "Ň", "n": "ň", "O": "Ǒ", "o": "ǒ", "R": "Ř", "r": "ř", "S": "Š", "s": "š", "T": "Ť", "t": "ť", "U": "Ǔ", "u": "ǔ", "Z": "Ž", "z": "ž", "0": "₀", "1": "₁", "2": "₂", "3": "₃", "4": "₄", "5": "₅", "6": "₆", "7": "₇", "8": "₈", "9": "₉", "(": "₍", ")": "₎", "+": "₊", "-": "₋", "=": "₌", " ": "ˇ", " ": "ˇ", " ": "ˇ" }, + "*~": { "*~": "~", "A": "Ã", "a": "ã", "E": "Ẽ", "e": "ẽ", "I": "Ĩ", "i": "ĩ", "N": "Ñ", "n": "ñ", "O": "Õ", "o": "õ", "U": "Ũ", "u": "ũ", "V": "Ṽ", "v": "ṽ", "Y": "Ỹ", "y": "ỹ", "<": "≲", ">": "≳", "=": "≃", " ": "~", " ": "~", " ": "~" }, + "*¨": { "*¨": "¨", "A": "Ä", "a": "ä", "E": "Ë", "e": "ë", "H": "Ḧ", "h": "ḧ", "I": "Ï", "i": "ï", "O": "Ö", "o": "ö", "t": "ẗ", "U": "Ü", "u": "ü", "W": "Ẅ", "w": "ẅ", "X": "Ẍ", "x": "ẍ", "Y": "Ÿ", "y": "ÿ", " ": "\"", " ": "\"", " ": "\"" }, + "*¸": { "*¸": "¸", "C": "Ç", "c": "ç", "D": "Ḑ", "d": "ḑ", "E": "Ȩ", "e": "ȩ", "G": "Ģ", "g": "ģ", "H": "Ḩ", "h": "ḩ", "K": "Ķ", "k": "ķ", "L": "Ļ", "l": "ļ", "N": "Ņ", "n": "ņ", "R": "Ŗ", "r": "ŗ", "S": "Ş", "s": "ş", "T": "Ţ", "t": "ţ", " ": "¸", " ": "¸", " ": "¸" }, + "*/": { "*/": "/", "A": "Ⱥ", "a": "ⱥ", "B": "Ƀ", "b": "ƀ", "C": "Ȼ", "c": "ȼ", "D": "Đ", "d": "đ", "E": "Ɇ", "e": "ɇ", "G": "Ǥ", "g": "ǥ", "H": "Ħ", "h": "ħ", "I": "Ɨ", "i": "ɨ", "J": "Ɉ", "j": "ɉ", "L": "Ł", "l": "ł", "O": "Ø", "o": "ø", "P": "Ᵽ", "p": "ᵽ", "R": "Ɍ", "r": "ɍ", "T": "Ŧ", "t": "ŧ", "U": "Ʉ", "u": "ʉ", "Y": "Ɏ", "y": "ɏ", "Z": "Ƶ", "z": "ƶ", "<": "≮", "≤": "≰", "≥": "≱", ">": "≯", "=": "≠", " ": "/", " ": "/", " ": "/" }, + "*µ": { "*µ": "µ", "A": "Α", "a": "α", "B": "Β", "b": "β", "D": "Δ", "d": "δ", "E": "Ε", "e": "ε", "F": "Φ", "f": "φ", "G": "Γ", "g": "γ", "H": "Η", "h": "η", "I": "Ι", "i": "ι", "J": "Θ", "j": "θ", "K": "Κ", "k": "κ", "L": "Λ", "l": "λ", "M": "Μ", "m": "μ", "N": "Ν", "n": "ν", "O": "Ο", "o": "ο", "P": "Π", "p": "π", "Q": "Χ", "q": "χ", "R": "Ρ", "r": "ρ", "S": "Σ", "s": "σ", "T": "Τ", "t": "τ", "U": "Υ", "u": "υ", "W": "Ω", "w": "ω", "X": "Ξ", "x": "ξ", "Y": "Ψ", "y": "ψ", "Z": "Ζ", "z": "ζ", " ": "µ", " ": "µ", " ": "µ" }, + "*¤": { "*¤": "¤", "A": "₳", "a": "؋", "B": "₱", "b": "฿", "C": "₡", "c": "¢", "D": "₯", "d": "₫", "E": "₠", "e": "€", "F": "₣", "f": "ƒ", "G": "₲", "g": "₲", "H": "₴", "h": "₴", "I": "៛", "i": "﷼", "K": "₭", "k": "₭", "L": "₤", "l": "£", "M": "ℳ", "m": "₥", "N": "₦", "n": "₦", "O": "૱", "o": "௹", "P": "₧", "p": "₰", "R": "₨", "r": "₢", "S": "$", "s": "₪", "T": "₮", "t": "৳", "U": "圓", "u": "元", "W": "₩", "w": "₩", "Y": "円", "y": "¥", " ": "¤", " ": "¤", " ": "¤" } + }, + "altgr": true +} \ No newline at end of file diff --git a/layouts/fr.contrib/ergaie.toml b/layouts/fr.contrib/ergaie.toml new file mode 100644 index 00000000..cf9cd38d --- /dev/null +++ b/layouts/fr.contrib/ergaie.toml @@ -0,0 +1,48 @@ +zname = "Ergaie_07" +name8 = "ergaie_07" +locale = "fr" +variant = "ergaie_07" +description = "French (Ergaie_07)" +author = "MacDamien" +url = "" +geometry = "ERGO" +version = "0.9.1.6" + +base = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ ~ ┃ € │ # │ * ¡ │ $ │ % ┃ ^ │ & ‚ │ « ‘ │ » ’ │ @ ┃ _ – ┆ + ± ┆ +┆ ` ┃ 1 ¤ │ 2 § │ 3 € │ 4 ¢ │ 5 ‰ ┃ 6 ¥ │ 7 „ │ 8 “ │ 9 ” │ 0 ° ┃ / ÷ ┆ = ≠ ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ J │***¨ │ O ! │ F │ K ┃ V │ D │ L │ C │ Q ┃ [ ┆ ] ┆ +· ┃ ù │***¨ │ ! │ â │ æ ┃ œ │ ( │ _ │ ç │ ) ┃ ( ┆ ) ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ A │ I │ E │ U │ ; _ ┃ B │ T │ N │ S │ R ┃ " ┆ | ┆ +· ┃ è │ – │ ê │ é │ , – ┃ ß │ à │ û │ ô │ î ┃ ' ┆ \ ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ > ┃ : │ Y │ ? ¿ │ H │ Z ┃ W │ P. │ M │ G │ X ┃ · +┆ < ┃ . … │ ÿ │ - ‑ │ ë │ ü ┃ — │ · │ ñ │ *µ │ ï ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + +altgr = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ ┃ ¹ │ ² │ ³ │ ⁴ │ ⁵ ┃ ⁶ │ ⁷ │ ⁸ │ ⁹ │ ⁰ ┃ ┆ ┆ +┆ ┃ ₁ │ ₂ │ ₃ │ ₄ │ ₅ ┃ ₆ │ ₇ │ ₈ │ ₉ │ ₀ ┃ ┆ ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ *^ │ ≤ │ ≥ │ *¤ │ ‰ ┃ │ │ × │ *´ │ *` ┃ ┆ ┆ +· ┃ ^ │ < │ > │ $ │ % ┃ @ │ & │ * │ ' │ ` ┃ ┆ ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ *ˇ │ ⁽ │ ⁾ │   │ ≠ ┃ */ │ ± │ — │ ÷ │ *¨ ┃ ┆ ┆ +· ┃ { │ ( │ ) │ } │ = ┃ \ │ + │ - │ / │ " ┃ ┆ ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ ┃ *~ │ │ │ – │ ┃ ¦ │ ¬ │ *¸ │ │ ┃ · +┆ ┃ ~ │ [ │ ] │ _ │ # ┃ | │ ! │ ; │ : │ ? ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + +[spacebar] +shift = "\u202f" # NARROW NO-BREAK SPACE +altgr = "\u0020" # SPACE +altgr_shift = "\u00a0" # NO-BREAK SPACE +1dk = "\u2019" # RIGHT SINGLE QUOTATION MARK +1dk_shift = "\u2019" # RIGHT SINGLE QUOTATION MARK \ No newline at end of file diff --git a/layouts/fr.contrib/erglace_nuke.json b/layouts/fr.contrib/erglace_nuke.json new file mode 100644 index 00000000..800b797a --- /dev/null +++ b/layouts/fr.contrib/erglace_nuke.json @@ -0,0 +1,77 @@ +{ + "name": "Erglace", + "description": "French (Erglace)", + "geometry": "ergo", + "keymap": { + "Digit1": [ "1", "€", "₁", "¹" ], + "Digit2": [ "2", "@", "₂", "²" ], + "Digit3": [ "3", "#", "₃", "³" ], + "Digit4": [ "4", "$", "₄", "⁴" ], + "Digit5": [ "5", "%", "₅", "⁵" ], + "Digit6": [ "6", "^", "₆", "⁶" ], + "Digit7": [ "7", "&", "₇", "⁷" ], + "Digit8": [ "8", "*", "₈", "⁸" ], + "Digit9": [ "9", "«", "₉", "⁹" ], + "Digit0": [ "0", "»", "₀", "⁰" ], + "KeyQ": [ ".", ":", "^", "*^" ], + "KeyW": [ "**", "!", "<", "≤" ], + "KeyE": [ "o", "O", ">", "≥" ], + "KeyR": [ "f", "F", "$", "*¤" ], + "KeyT": [ "k", "K", "%", "‰" ], + "KeyY": [ "j", "J", "@", "*˚" ], + "KeyU": [ "p", "P", "&" ], + "KeyI": [ "l", "L", "*", "×" ], + "KeyO": [ "c", "C", "'", "*´" ], + "KeyP": [ "q", "Q", "`", "*`" ], + "KeyA": [ "a", "A", "{", "*ˇ" ], + "KeyS": [ "i", "I", "(" ], + "KeyD": [ "e", "E", ")" ], + "KeyF": [ "u", "U", "}", "*˙" ], + "KeyG": [ ",", ";", "=", "≠" ], + "KeyH": [ "g", "G", "\\", "*/" ], + "KeyJ": [ "t", "T", "+", "±" ], + "KeyK": [ "n", "N", "-", "*¯" ], + "KeyL": [ "s", "S", "/", "÷" ], + "Semicolon": [ "r", "R", "\"", "*”" ], + "KeyZ": [ "x", "X", "~", "*~" ], + "KeyX": [ "y", "Y", "[", "*," ], + "KeyC": [ "-", "?", "]", "*˛" ], + "KeyV": [ "h", "H", "_", "–" ], + "KeyB": [ "z", "Z", "#" ], + "KeyN": [ "b", "B", "|", "¦" ], + "KeyM": [ "d", "D", "!", "¬" ], + "Comma": [ "m", "M", ";", "*¸" ], + "Period": [ "v", "V", ":", ":" ], + "Slash": [ "w", "W", "?", "*˘" ], + "Minus": [ "/", "_" ], + "Equal": [ "=", "+" ], + "BracketLeft": [ "[", "{" ], + "BracketRight": [ "]", "}" ], + "Quote": [ "'", "\"" ], + "Backquote": [ "`", "~" ], + "Backslash": [ "\\", "|" ], + "IntlBackslash": [ "<", ">" ], + "Space": [ " ", " ", " ", " " ] + }, + "deadkeys": { + "**": { "**": "*¨", "€": "‚", "1": "„", "2": "°", "3": "¶", "4": "¢", "5": "‰", "8": "§", "9": "“", "0": "”", ".": "…", "!": "¡", "O": "Ô", "o": "ô", "F": "È", "f": "è", "K": "Ù", "k": "ù", "P": "Y", "p": "y", "L": "Ñ", "l": "ñ", "C": "Ç", "c": "ç", "A": "Î", "a": "î", "I": "Æ", "i": "æ", "E": "Ê", "e": "ê", "U": "É", "u": "é", ";": "Û", ",": "û", "g": "*µ", "T": "À", "t": "à", "N": "Â", "n": "â", "S": "_", "s": "_", "R": "Œ", "r": "œ", "?": "¿", "-": "‑", "h": "–", "z": "—", "D": "•", "d": "·", "m": "µ", "V": "ẞ", "v": "ß", "_": "–", "/": "÷", "+": "±", "=": "≠", " ": "’", " ": "’", " ": "’" }, + "*`": { "*`": "`", "A": "À", "a": "à", "E": "È", "e": "è", "I": "Ì", "i": "ì", "N": "Ǹ", "n": "ǹ", "O": "Ò", "o": "ò", "U": "Ù", "u": "ù", "W": "Ẁ", "w": "ẁ", "Y": "Ỳ", "y": "ỳ", " ": "`", " ": "`", " ": "`" }, + "*´": { "*´": "´", "A": "Á", "a": "á", "C": "Ć", "c": "ć", "E": "É", "e": "é", "G": "Ǵ", "g": "ǵ", "I": "Í", "i": "í", "K": "Ḱ", "k": "ḱ", "L": "Ĺ", "l": "ĺ", "M": "Ḿ", "m": "ḿ", "N": "Ń", "n": "ń", "O": "Ó", "o": "ó", "P": "Ṕ", "p": "ṕ", "R": "Ŕ", "r": "ŕ", "S": "Ś", "s": "ś", "U": "Ú", "u": "ú", "W": "Ẃ", "w": "ẃ", "Y": "Ý", "y": "ý", "Z": "Ź", "z": "ź", " ": "'", " ": "'", " ": "'" }, + "*”": { "*”": "˝", "O": "Ő", "o": "ő", "U": "Ű", "u": "ű", " ": "”", " ": "”", " ": "”" }, + "*^": { "*^": "^", "A": "Â", "a": "â", "C": "Ĉ", "c": "ĉ", "E": "Ê", "e": "ê", "G": "Ĝ", "g": "ĝ", "H": "Ĥ", "h": "ĥ", "I": "Î", "i": "î", "J": "Ĵ", "j": "ĵ", "O": "Ô", "o": "ô", "S": "Ŝ", "s": "ŝ", "U": "Û", "u": "û", "W": "Ŵ", "w": "ŵ", "Y": "Ŷ", "y": "ŷ", "Z": "Ẑ", "z": "ẑ", "0": "⁰", "1": "¹", "2": "²", "3": "³", "4": "⁴", "5": "⁵", "6": "⁶", "7": "⁷", "8": "⁸", "9": "⁹", "(": "⁽", ")": "⁾", "+": "⁺", "-": "⁻", "=": "⁼", " ": "^", " ": "^", " ": "^" }, + "*ˇ": { "*ˇ": "ˇ", "A": "Ǎ", "a": "ǎ", "C": "Č", "c": "č", "D": "Ď", "d": "ď", "E": "Ě", "e": "ě", "G": "Ǧ", "g": "ǧ", "H": "Ȟ", "h": "ȟ", "I": "Ǐ", "i": "ǐ", "K": "Ǩ", "k": "ǩ", "L": "Ľ", "l": "ľ", "N": "Ň", "n": "ň", "O": "Ǒ", "o": "ǒ", "R": "Ř", "r": "ř", "S": "Š", "s": "š", "T": "Ť", "t": "ť", "U": "Ǔ", "u": "ǔ", "Z": "Ž", "z": "ž", "0": "₀", "1": "₁", "2": "₂", "3": "₃", "4": "₄", "5": "₅", "6": "₆", "7": "₇", "8": "₈", "9": "₉", "(": "₍", ")": "₎", "+": "₊", "-": "₋", "=": "₌", " ": "ˇ", " ": "ˇ", " ": "ˇ" }, + "*˘": { "*˘": "˘", "A": "Ă", "a": "ă", "E": "Ĕ", "e": "ĕ", "G": "Ğ", "g": "ğ", "I": "Ĭ", "i": "ĭ", "O": "Ŏ", "o": "ŏ", "U": "Ŭ", "u": "ŭ", " ": "˘", " ": "˘", " ": "˘" }, + "*~": { "*~": "~", "A": "Ã", "a": "ã", "E": "Ẽ", "e": "ẽ", "I": "Ĩ", "i": "ĩ", "N": "Ñ", "n": "ñ", "O": "Õ", "o": "õ", "U": "Ũ", "u": "ũ", "V": "Ṽ", "v": "ṽ", "Y": "Ỹ", "y": "ỹ", "<": "≲", ">": "≳", "=": "≃", " ": "~", " ": "~", " ": "~" }, + "*¯": { "*¯": "ˉ", "A": "Ā", "a": "ā", "E": "Ē", "e": "ē", "G": "Ḡ", "g": "ḡ", "I": "Ī", "i": "ī", "O": "Ō", "o": "ō", "U": "Ū", "u": "ū", "Y": "Ȳ", "y": "ȳ", " ": "¯", " ": "¯", " ": "¯" }, + "*¨": { "*¨": "¨", "A": "Ä", "a": "ä", "E": "Ë", "e": "ë", "H": "Ḧ", "h": "ḧ", "I": "Ï", "i": "ï", "O": "Ö", "o": "ö", "t": "ẗ", "U": "Ü", "u": "ü", "W": "Ẅ", "w": "ẅ", "X": "Ẍ", "x": "ẍ", "Y": "Ÿ", "y": "ÿ", " ": "\"", " ": "\"", " ": "\"" }, + "*˚": { "*˚": "˚", "A": "Å", "a": "å", "U": "Ů", "u": "ů", "w": "ẘ", "y": "ẙ", " ": "˚", " ": "˚", " ": "˚" }, + "*¸": { "*¸": "¸", "C": "Ç", "c": "ç", "D": "Ḑ", "d": "ḑ", "E": "Ȩ", "e": "ȩ", "G": "Ģ", "g": "ģ", "H": "Ḩ", "h": "ḩ", "K": "Ķ", "k": "ķ", "L": "Ļ", "l": "ļ", "N": "Ņ", "n": "ņ", "R": "Ŗ", "r": "ŗ", "S": "Ş", "s": "ş", "T": "Ţ", "t": "ţ", " ": "¸", " ": "¸", " ": "¸" }, + "*,": { "*,": ",", "S": "Ș", "s": "ș", "T": "Ț", "t": "ț", " ": ",", " ": ",", " ": "," }, + "*˛": { "*˛": "˛", "A": "Ą", "a": "ą", "E": "Ę", "e": "ę", "I": "Į", "i": "į", "O": "Ǫ", "o": "ǫ", "U": "Ų", "u": "ų", " ": "˛", " ": "˛", " ": "˛" }, + "*/": { "*/": "/", "A": "Ⱥ", "a": "ⱥ", "B": "Ƀ", "b": "ƀ", "C": "Ȼ", "c": "ȼ", "D": "Đ", "d": "đ", "E": "Ɇ", "e": "ɇ", "G": "Ǥ", "g": "ǥ", "H": "Ħ", "h": "ħ", "I": "Ɨ", "i": "ɨ", "J": "Ɉ", "j": "ɉ", "L": "Ł", "l": "ł", "O": "Ø", "o": "ø", "P": "Ᵽ", "p": "ᵽ", "R": "Ɍ", "r": "ɍ", "T": "Ŧ", "t": "ŧ", "U": "Ʉ", "u": "ʉ", "Y": "Ɏ", "y": "ɏ", "Z": "Ƶ", "z": "ƶ", "<": "≮", "≤": "≰", "≥": "≱", ">": "≯", "=": "≠", " ": "/", " ": "/", " ": "/" }, + "*˙": { "*˙": "˙", "A": "Ȧ", "a": "ȧ", "B": "Ḃ", "b": "ḃ", "C": "Ċ", "c": "ċ", "D": "Ḋ", "d": "ḋ", "E": "Ė", "e": "ė", "F": "Ḟ", "f": "ḟ", "G": "Ġ", "g": "ġ", "H": "Ḣ", "h": "ḣ", "I": "İ", "i": "ı", "j": "ȷ", "L": "Ŀ", "l": "ŀ", "M": "Ṁ", "m": "ṁ", "N": "Ṅ", "n": "ṅ", "O": "Ȯ", "o": "ȯ", "P": "Ṗ", "p": "ṗ", "R": "Ṙ", "r": "ṙ", "S": "Ṡ", "s": "ṡ", "T": "Ṫ", "t": "ṫ", "W": "Ẇ", "w": "ẇ", "X": "Ẋ", "x": "ẋ", "Y": "Ẏ", "y": "ẏ", "Z": "Ż", "z": "ż", " ": "˙", " ": "˙", " ": "˙" }, + "*µ": { "*µ": "µ", "A": "Α", "a": "α", "B": "Β", "b": "β", "D": "Δ", "d": "δ", "E": "Ε", "e": "ε", "F": "Φ", "f": "φ", "G": "Γ", "g": "γ", "H": "Η", "h": "η", "I": "Ι", "i": "ι", "J": "Θ", "j": "θ", "K": "Κ", "k": "κ", "L": "Λ", "l": "λ", "M": "Μ", "m": "μ", "N": "Ν", "n": "ν", "O": "Ο", "o": "ο", "P": "Π", "p": "π", "Q": "Χ", "q": "χ", "R": "Ρ", "r": "ρ", "S": "Σ", "s": "σ", "T": "Τ", "t": "τ", "U": "Υ", "u": "υ", "W": "Ω", "w": "ω", "X": "Ξ", "x": "ξ", "Y": "Ψ", "y": "ψ", "Z": "Ζ", "z": "ζ", " ": "µ", " ": "µ", " ": "µ" }, + "*¤": { "*¤": "¤", "A": "₳", "a": "؋", "B": "₱", "b": "฿", "C": "₡", "c": "¢", "D": "₯", "d": "₫", "E": "₠", "e": "€", "F": "₣", "f": "ƒ", "G": "₲", "g": "₲", "H": "₴", "h": "₴", "I": "៛", "i": "﷼", "K": "₭", "k": "₭", "L": "₤", "l": "£", "M": "ℳ", "m": "₥", "N": "₦", "n": "₦", "O": "૱", "o": "௹", "P": "₧", "p": "₰", "R": "₨", "r": "₢", "S": "$", "s": "₪", "T": "₮", "t": "৳", "U": "圓", "u": "元", "W": "₩", "w": "₩", "Y": "円", "y": "¥", " ": "¤", " ": "¤", " ": "¤" } + }, + "altgr": true +} \ No newline at end of file diff --git a/layouts/fr.contrib/erglace_nuke.toml b/layouts/fr.contrib/erglace_nuke.toml new file mode 100644 index 00000000..3995c7c6 --- /dev/null +++ b/layouts/fr.contrib/erglace_nuke.toml @@ -0,0 +1,48 @@ +name = "Erglace" +name8 = "erglace" +locale = "fr" +variant = "erglace" +description = "French (Erglace)" +author = "Lysquid" +url = "https://github.com/Lysquid/Erglace" +geometry = "ERGO" +version = "0.5.0" + +base = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ ~ ┃ € ‚ │ @ │ # │ $ │ % ┃ ^ │ & │ * │ « │ » ┃ _ – ┆ + ± ┆ +┆ ` ┃ 1 „ │ 2 ° │ 3 ¶ │ 4 ¢ │ 5 ‰ ┃ 6 │ 7 │ 8 § │ 9 “ │ 0 ” ┃ / ÷ ┆ = ≠ ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ : │ ! ¡ │ O │ F │ K ┃ J │ P │ L │ C │ Q ┃ { ┆ } ┆ +· ┃ . … │***¨ │ ô │ è │ ù ┃ │ y │ ñ │ ç │ ┃ [ ┆ ] ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ A │ I │ E │ U │ ; ┃ G │ T │ N │ S _ │ R ┃ " ┆ | ┆ +· ┃ î │ æ │ ê │ é │ , û ┃ *µ │ à │ â │ _ │ œ ┃ ' ┆ \ ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ > ┃ X │ Y │ ? ¿ │ H │ Z ┃ B │ D • │ M │ V │ W ┃ · +┆ < ┃ │ │ - ‑ │ – │ — ┃ │ · │ µ │ ß │ ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + +altgr = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ ┃ ¹ │ ² │ ³ │ ⁴ │ ⁵ ┃ ⁶ │ ⁷ │ ⁸ │ ⁹ │ ⁰ ┃ ┆ ┆ +┆ ┃ ₁ │ ₂ │ ₃ │ ₄ │ ₅ ┃ ₆ │ ₇ │ ₈ │ ₉ │ ₀ ┃ ┆ ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ *^ │ ≤ │ ≥ │ *¤ │ ‰ ┃ *˚ │ │ × │ *´ │ *` ┃ ┆ ┆ +· ┃ ^ │ < │ > │ $ │ % ┃ @ │ & │ * │ ' │ ` ┃ ┆ ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ *ˇ │ │ │ *˙ │ ≠ ┃ */ │ ± │ *¯ │ ÷ │ *” ┃ ┆ ┆ +· ┃ { │ ( │ ) │ } │ = ┃ \ │ + │ - │ / │ " ┃ ┆ ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ ┃ *~ │ *, │ *˛ │ – │ ┃ ¦ │ ¬ │ *¸ │ : │ *˘ ┃ · +┆ ┃ ~ │ [ │ ] │ _ │ # ┃ | │ ! │ ; │ : │ ? ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + +[spacebar] +shift = "\u202f" # NARROW NO-BREAK SPACE +altgr = "\u0020" # SPACE +altgr_shift = "\u00a0" # NO-BREAK SPACE +1dk = "\u2019" # RIGHT SINGLE QUOTATION MARK +1dk_shift = "\u2019" # RIGHT SINGLE QUOTATION MARK diff --git a/layouts/fr.contrib/hypertexte_1dk.json b/layouts/fr.contrib/hypertexte_1dk.json new file mode 100644 index 00000000..fe0c862d --- /dev/null +++ b/layouts/fr.contrib/hypertexte_1dk.json @@ -0,0 +1,61 @@ +{ + "name": "HyperTexte 1DFH", + "description": "Disposition HyperTexte, pour une saisie plus rapide de texte.", + "geometry": "ergo", + "keymap": { + "Digit1": [ "1", "1", "₁", "¹" ], + "Digit2": [ "2", "2", "₂", "²" ], + "Digit3": [ "3", "3", "₃", "³" ], + "Digit4": [ "4", "4", "₄", "⁴" ], + "Digit5": [ "5", "5", "₅", "⁵" ], + "Digit6": [ "6", "6", "₆", "⁶" ], + "Digit7": [ "7", "7", "₇", "⁷" ], + "Digit8": [ "8", "8", "₈", "⁸" ], + "Digit9": [ "9", "9", "₉", "⁹" ], + "Digit0": [ "0", "º", "₀", "⁰" ], + "KeyQ": [ "z", "Z", "`", "„" ], + "KeyW": [ "y", "Y", "@", "„" ], + "KeyE": [ "o", "O", "%" ], + "KeyR": [ "w", "W", "!" ], + "KeyT": [ "b", "B", "«", "“" ], + "KeyY": [ "f", "F", "»", "”" ], + "KeyU": [ "d", "D", "$", "§" ], + "KeyI": [ "l", "L", "=", "≠" ], + "KeyO": [ "p", "P", "+", "±" ], + "KeyP": [ "’", "?", "'", "¿" ], + "KeyA": [ "a", "A", "<", "≤" ], + "KeyS": [ "i", "I", ">", "≥" ], + "KeyD": [ "e", "E", "{" ], + "KeyF": [ "u", "U", "}" ], + "KeyG": [ "k", "K", "\\" ], + "KeyH": [ "v", "V", "|", "¦" ], + "KeyJ": [ "s", "S", "(", "—" ], + "KeyK": [ "n", "N", ")", "–" ], + "KeyL": [ "t", "T", "[" ], + "Semicolon": [ "r", "R", "]" ], + "KeyZ": [ ".", ":", ":", "…" ], + "KeyX": [ "j", "J", "/" ], + "KeyC": [ "à", "À", "=" ], + "KeyV": [ "**", "*¨", "\"" ], + "KeyB": [ ",", ";", ";", "·" ], + "KeyN": [ "m", "M", "&", "−" ], + "KeyM": [ "c", "C", "^", "€" ], + "Comma": [ "h", "H", "#", "£" ], + "Period": [ "g", "G", "~", "≈" ], + "Slash": [ "x", "X", "*", "×" ], + "Minus": [ "€", "€" ], + "Equal": [ "%", "%" ], + "BracketLeft": [ "[", "{" ], + "BracketRight": [ "]", "}" ], + "Quote": [ "'", "\"" ], + "Backquote": [ "=", "+" ], + "Backslash": [ "\\", "|" ], + "IntlBackslash": [ "ê", "Ê" ], + "Space": [ " ", "-", "_", " " ] + }, + "deadkeys": { + "**": { "**": "*¨", "0": "°", "Z": "Á", "z": "á", "Y": "Í", "y": "í", "L": "Û", "l": "û", "P": "Q", "p": "q", "’": "?", "A": "È", "a": "è", "I": "É", "i": "é", "E": "Œ", "e": "œ", "N": "Ô", "n": "ô", ":": "Ù", ".": "ù", "J": "Æ", "j": "æ", "À": "Ê", "à": "ê", "M": "Ñ", "m": "ñ", "C": "Ç", "c": "ç", "H": "Î", "h": "î", "X": "Â", "x": "â", "ê": "^", "-": " ", " ": " ", " ": " " }, + "*¨": { "*¨": "¨", "A": "Ä", "a": "ä", "E": "Ë", "e": "ë", "H": "Ḧ", "h": "ḧ", "I": "Ï", "i": "ï", "O": "Ö", "o": "ö", "t": "ẗ", "U": "Ü", "u": "ü", "W": "Ẅ", "w": "ẅ", "X": "Ẍ", "x": "ẍ", "Y": "Ÿ", "y": "ÿ", " ": "\"", " ": "\"" } + }, + "altgr": true +} \ No newline at end of file diff --git a/layouts/fr.contrib/hypertexte_1dk.toml b/layouts/fr.contrib/hypertexte_1dk.toml new file mode 100644 index 00000000..b64864fa --- /dev/null +++ b/layouts/fr.contrib/hypertexte_1dk.toml @@ -0,0 +1,48 @@ +name = "HyperTexte 1DFH" +name8 = "hyper1dk" +locale = "fr" +variant = "1DK" +description = "Disposition HyperTexte, pour une saisie plus rapide de texte." +author = "Adrien MOYAUX" +url = "https://hypertexte.beseven.fr" +geometry = "ERGO" +version = "1.1.2" + +base = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ + ┃ 1 │ 2 │ 3 │ 4 │ 5 ┃ 6 │ 7 │ 8 │ 9 │ º ┃ € ┆ % ┆ +┆ = ┃ │ │ │ │ ┃ │ │ │ │ 0 ° ┃ € ┆ % ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ Z │ Y │ O │ W │ B ┃ F │ D │ L │ P │ ? ┃ { ┆ } ┆ +· ┃ á │ í │ │ │ ┃ │ │ û │ q │ ’ ? ┃ [ ┆ ] ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ A │ I │ E │ U │ K ┃ V │ S │ N │ T │ R ┃ " ┆ | ┆ +· ┃ è │ é │ œ │ │ ┃ │ │ ô │ │ ┃ ' ┆ \ ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ Ê ┃ : │ J │ À │*¨ │ ; ┃ M │ C │ H │ G │ X ┃ · +┆ ^ ┃ . ù │ æ │ ê │***¨ │ , ┃ ñ │ ç │ î │ │ â ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + +altgr = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ ┃ ¹ │ ² │ ³ │ ⁴ │ ⁵ ┃ ⁶ │ ⁷ │ ⁸ │ ⁹ │ ⁰ ┃ ┆ ┆ +┆ ┃ ₁ │ ₂ │ ₃ │ ₄ │ ₅ ┃ ₆ │ ₇ │ ₈ │ ₉ │ ₀ ┃ ┆ ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ „ │ „ │ │ │ “ ┃ ” │ § │ ≠ │ ± │ ¿ ┃ ┆ ┆ +· ┃ ` │ @ │ % │ ! │ « ┃ » │ $ │ = │ + │ ' ┃ ┆ ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ ≤ │ ≥ │ │ │ ┃ ¦ │ — │ – │ │ ┃ ┆ ┆ +· ┃ < │ > │ { │ } │ \ ┃ | │ ( │ ) │ [ │ ] ┃ ┆ ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ ┃ … │ │ │ │ · ┃ − │ € │ £ │ ≈ │ × ┃ · +┆ ┃ : │ / │ = │ " │ ; ┃ & │ ^ │ # │ ~ │ * ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + +[spacebar] +shift = "-" +altgr = "_" +altgr_shift = "\u00a0" # NO-BREAK SPACE +1dk = "\u00a0" # NO-BREAK SPACE +1dk_shift = "\u202f" # NARROW NO-BREAK SPACE diff --git a/layouts/fr.contrib/optergol.json b/layouts/fr.contrib/optergol.json new file mode 100644 index 00000000..70dc1c63 --- /dev/null +++ b/layouts/fr.contrib/optergol.json @@ -0,0 +1,72 @@ +{ + "name": "Optergol", + "description": "French (Optimot + Ergol 1dk)", + "geometry": "ergo", + "keymap": { + "Digit1": [ "1", "€", "₁", "¹" ], + "Digit2": [ "2", "«", "₂", "²" ], + "Digit3": [ "3", "»", "₃", "³" ], + "Digit4": [ "4", "$", "₄", "⁴" ], + "Digit5": [ "5", "%", "₅", "⁵" ], + "Digit6": [ "6", "^", "₆", "⁶" ], + "Digit7": [ "7", "&", "₇", "⁷" ], + "Digit8": [ "8", "*", "₈", "⁸" ], + "Digit9": [ "9", "#", "₉", "⁹" ], + "Digit0": [ "0", "@", "₀", "⁰" ], + "KeyQ": [ "k", "K", "^", "*^" ], + "KeyW": [ "y", "Y", "<", "≤" ], + "KeyE": [ "o", "O", ">", "≥" ], + "KeyR": [ "p", "P", "$", "*¤" ], + "KeyT": [ "w", "W", "%", "‰" ], + "KeyY": [ ".", ":", "&" ], + "KeyU": [ "d", "D", "*", "×" ], + "KeyI": [ "l", "L", "`", "*`" ], + "KeyO": [ "**", "**", "@" ], + "KeyP": [ "q", "Q", "'", "*´" ], + "KeyA": [ "a", "A", "{" ], + "KeyS": [ "i", "I", "(", "«" ], + "KeyD": [ "e", "E", ")", "»" ], + "KeyF": [ "u", "U", "}" ], + "KeyG": [ "b", "B", "?", "?" ], + "KeyH": [ "f", "F", "!", "!" ], + "KeyJ": [ "t", "T", "\\", "*/" ], + "KeyK": [ "s", "S", "+", "±" ], + "KeyL": [ "r", "R", "-", "—" ], + "Semicolon": [ "n", "N", "/", "÷" ], + "KeyZ": [ "j", "J", "[" ], + "KeyX": [ "z", "Z", "]" ], + "KeyC": [ "c", "C", "_" ], + "KeyV": [ "v", "V", "#" ], + "KeyB": [ "“", "”", "\"" ], + "KeyN": [ ",", ";", ";", "*¸" ], + "KeyM": [ "g", "G", "|", "¦" ], + "Comma": [ "m", "M", ":" ], + "Period": [ "h", "H", "." ], + "Slash": [ "x", "X", "=", "≠" ], + "Minus": [ "/", "_" ], + "Equal": [ "=", "+" ], + "BracketLeft": [ "(", "[" ], + "BracketRight": [ ")", "]" ], + "Quote": [ "'", "\"" ], + "Backquote": [ "`", "~" ], + "Backslash": [ "\\", "|" ], + "IntlBackslash": [ "x", "X", "~", "*~" ], + "Space": [ " ", " ", " ", " " ] + }, + "deadkeys": { + "**": { "**": "*¨", "€": "‚", "1": "„", "«": "‘", "2": "“", "»": "’", "3": "”", "4": "¢", "5": "‰", "6": "¥", "7": "¤", "8": "€", "9": "§", "0": "°", "K": "Â", "k": "â", "Y": "È", "y": "è", "O": "Ô", "o": "ô", "P": "Œ", "p": "œ", "W": "*/", "w": "*/", ".": "·", "D": "‡", "d": "†", "L": "‖", "l": "§", "Q": "⁕", "q": "¶", "A": "À", "a": "à", "I": "É", "i": "é", "E": "Û", "e": "û", "U": "Ù", "u": "ù", "B": "*˚", "b": "°", "f": "…", "T": "‑", "t": "-", "s": "–", "r": "—", "n": "_", "J": "Ê", "j": "ê", "C": "Ç", "c": "ç", "V": "*ˇ", "v": "*ˇ", "“": "„", ";": "*¸", ",": "*,", "g": "*µ", "M": "˄", "m": "˅", "H": "˂", "h": "˃", "X": "Æ", "x": "æ", "_": "–", "/": "÷", "+": "±", "=": "≠", " ": "'", " ": "'", " ": "'" }, + "*`": { "*`": "`", "A": "À", "a": "à", "E": "È", "e": "è", "I": "Ì", "i": "ì", "N": "Ǹ", "n": "ǹ", "O": "Ò", "o": "ò", "U": "Ù", "u": "ù", "W": "Ẁ", "w": "ẁ", "Y": "Ỳ", "y": "ỳ", " ": "`", " ": "`", " ": "`" }, + "*´": { "*´": "´", "A": "Á", "a": "á", "C": "Ć", "c": "ć", "E": "É", "e": "é", "G": "Ǵ", "g": "ǵ", "I": "Í", "i": "í", "K": "Ḱ", "k": "ḱ", "L": "Ĺ", "l": "ĺ", "M": "Ḿ", "m": "ḿ", "N": "Ń", "n": "ń", "O": "Ó", "o": "ó", "P": "Ṕ", "p": "ṕ", "R": "Ŕ", "r": "ŕ", "S": "Ś", "s": "ś", "U": "Ú", "u": "ú", "W": "Ẃ", "w": "ẃ", "Y": "Ý", "y": "ý", "Z": "Ź", "z": "ź", " ": "'", " ": "'", " ": "'" }, + "*^": { "*^": "^", "A": "Â", "a": "â", "C": "Ĉ", "c": "ĉ", "E": "Ê", "e": "ê", "G": "Ĝ", "g": "ĝ", "H": "Ĥ", "h": "ĥ", "I": "Î", "i": "î", "J": "Ĵ", "j": "ĵ", "O": "Ô", "o": "ô", "S": "Ŝ", "s": "ŝ", "U": "Û", "u": "û", "W": "Ŵ", "w": "ŵ", "Y": "Ŷ", "y": "ŷ", "Z": "Ẑ", "z": "ẑ", "0": "⁰", "1": "¹", "2": "²", "3": "³", "4": "⁴", "5": "⁵", "6": "⁶", "7": "⁷", "8": "⁸", "9": "⁹", "(": "⁽", ")": "⁾", "+": "⁺", "-": "⁻", "=": "⁼", " ": "^", " ": "^", " ": "^" }, + "*ˇ": { "*ˇ": "ˇ", "A": "Ǎ", "a": "ǎ", "C": "Č", "c": "č", "D": "Ď", "d": "ď", "E": "Ě", "e": "ě", "G": "Ǧ", "g": "ǧ", "H": "Ȟ", "h": "ȟ", "I": "Ǐ", "i": "ǐ", "K": "Ǩ", "k": "ǩ", "L": "Ľ", "l": "ľ", "N": "Ň", "n": "ň", "O": "Ǒ", "o": "ǒ", "R": "Ř", "r": "ř", "S": "Š", "s": "š", "T": "Ť", "t": "ť", "U": "Ǔ", "u": "ǔ", "Z": "Ž", "z": "ž", "0": "₀", "1": "₁", "2": "₂", "3": "₃", "4": "₄", "5": "₅", "6": "₆", "7": "₇", "8": "₈", "9": "₉", "(": "₍", ")": "₎", "+": "₊", "-": "₋", "=": "₌", " ": "ˇ", " ": "ˇ", " ": "ˇ" }, + "*~": { "*~": "~", "A": "Ã", "a": "ã", "E": "Ẽ", "e": "ẽ", "I": "Ĩ", "i": "ĩ", "N": "Ñ", "n": "ñ", "O": "Õ", "o": "õ", "U": "Ũ", "u": "ũ", "V": "Ṽ", "v": "ṽ", "Y": "Ỹ", "y": "ỹ", "<": "≲", ">": "≳", "=": "≃", " ": "~", " ": "~", " ": "~" }, + "*¨": { "*¨": "¨", "A": "Ä", "a": "ä", "E": "Ë", "e": "ë", "H": "Ḧ", "h": "ḧ", "I": "Ï", "i": "ï", "O": "Ö", "o": "ö", "t": "ẗ", "U": "Ü", "u": "ü", "W": "Ẅ", "w": "ẅ", "X": "Ẍ", "x": "ẍ", "Y": "Ÿ", "y": "ÿ", " ": "\"", " ": "\"", " ": "\"" }, + "*˚": { "*˚": "˚", "A": "Å", "a": "å", "U": "Ů", "u": "ů", "w": "ẘ", "y": "ẙ", " ": "˚", " ": "˚", " ": "˚" }, + "*¸": { "*¸": "¸", "C": "Ç", "c": "ç", "D": "Ḑ", "d": "ḑ", "E": "Ȩ", "e": "ȩ", "G": "Ģ", "g": "ģ", "H": "Ḩ", "h": "ḩ", "K": "Ķ", "k": "ķ", "L": "Ļ", "l": "ļ", "N": "Ņ", "n": "ņ", "R": "Ŗ", "r": "ŗ", "S": "Ş", "s": "ş", "T": "Ţ", "t": "ţ", " ": "¸", " ": "¸", " ": "¸" }, + "*,": { "*,": ",", "S": "Ș", "s": "ș", "T": "Ț", "t": "ț", " ": ",", " ": ",", " ": "," }, + "*/": { "*/": "/", "A": "Ⱥ", "a": "ⱥ", "B": "Ƀ", "b": "ƀ", "C": "Ȼ", "c": "ȼ", "D": "Đ", "d": "đ", "E": "Ɇ", "e": "ɇ", "G": "Ǥ", "g": "ǥ", "H": "Ħ", "h": "ħ", "I": "Ɨ", "i": "ɨ", "J": "Ɉ", "j": "ɉ", "L": "Ł", "l": "ł", "O": "Ø", "o": "ø", "P": "Ᵽ", "p": "ᵽ", "R": "Ɍ", "r": "ɍ", "T": "Ŧ", "t": "ŧ", "U": "Ʉ", "u": "ʉ", "Y": "Ɏ", "y": "ɏ", "Z": "Ƶ", "z": "ƶ", "<": "≮", "≤": "≰", "≥": "≱", ">": "≯", "=": "≠", " ": "/", " ": "/", " ": "/" }, + "*µ": { "*µ": "µ", "A": "Α", "a": "α", "B": "Β", "b": "β", "D": "Δ", "d": "δ", "E": "Ε", "e": "ε", "F": "Φ", "f": "φ", "G": "Γ", "g": "γ", "H": "Η", "h": "η", "I": "Ι", "i": "ι", "J": "Θ", "j": "θ", "K": "Κ", "k": "κ", "L": "Λ", "l": "λ", "M": "Μ", "m": "μ", "N": "Ν", "n": "ν", "O": "Ο", "o": "ο", "P": "Π", "p": "π", "Q": "Χ", "q": "χ", "R": "Ρ", "r": "ρ", "S": "Σ", "s": "σ", "T": "Τ", "t": "τ", "U": "Υ", "u": "υ", "W": "Ω", "w": "ω", "X": "Ξ", "x": "ξ", "Y": "Ψ", "y": "ψ", "Z": "Ζ", "z": "ζ", " ": "µ", " ": "µ", " ": "µ" }, + "*¤": { "*¤": "¤", "A": "₳", "a": "؋", "B": "₱", "b": "฿", "C": "₡", "c": "¢", "D": "₯", "d": "₫", "E": "₠", "e": "€", "F": "₣", "f": "ƒ", "G": "₲", "g": "₲", "H": "₴", "h": "₴", "I": "៛", "i": "﷼", "K": "₭", "k": "₭", "L": "₤", "l": "£", "M": "ℳ", "m": "₥", "N": "₦", "n": "₦", "O": "૱", "o": "௹", "P": "₧", "p": "₰", "R": "₨", "r": "₢", "S": "$", "s": "₪", "T": "₮", "t": "৳", "U": "圓", "u": "元", "W": "₩", "w": "₩", "Y": "円", "y": "¥", " ": "¤", " ": "¤", " ": "¤" } + }, + "altgr": true +} \ No newline at end of file diff --git a/layouts/fr.contrib/optergol.toml b/layouts/fr.contrib/optergol.toml new file mode 100644 index 00000000..eeca4219 --- /dev/null +++ b/layouts/fr.contrib/optergol.toml @@ -0,0 +1,50 @@ +name = "Optergol" +name8 = "optergol" +locale = "fr" +variant = "optergol" +description = "French (Optimot + Ergol 1dk)" +author = "Auk_Bear" +url = "" +geometry = "ERGO" +version = "0.2" + +base = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ ~ ┃ € ‚ │ « ‘ │ » ’ │ $ │ % ┃ ^ │ & │ * │ # │ @ ┃ _ – ┆ + ± ┆ +┆ ` ┃ 1 „ │ 2 “ │ 3 ” │ 4 ¢ │ 5 ‰ ┃ 6 ¥ │ 7 ¤ │ 8 € │ 9 § │ 0 ° ┃ / ÷ ┆ = ≠ ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ K │ Y │ O │ P │ W*/ ┃ : │ D ‡ │ L ‖ │***¨ │ Q ⁕ ┃ [ ┆ ] ┆ +· ┃ â │ è │ ô │ œ │ */ ┃ . · │ † │ § │***¨ │ ¶ ┃ ( ┆ ) ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ A │ I │ E │ U │ B*˚ ┃ F │ T ‑ │ S │ R │ N ┃ " ┆ | ┆ +· ┃ à │ é │ û │ ù │ ° ┃ … │ - │ – │ — │ _ ┃ ' ┆ \ ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ X │ J │ Z │ C │ V*ˇ │ ” ┃ ;*¸ │ G │ M ˄ │ H ˂ │ X ◦ ┃ · +┆ æ │ ê │ │ ç │ *ˇ │ “ „ ┃ ,*, │ *µ │ ˅ │ ˃ │ • ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + + + +altgr = ''' +╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +┆ ┃ ¹ │ ² │ ³ │ ⁴ │ ⁵ ┃ ⁶ │ ⁷ │ ⁸ │ ⁹ │ ⁰ ┃ ┆ ┆ +┆ ┃ ₁ │ ₂ │ ₃ │ ₄ │ ₅ ┃ ₆ │ ₇ │ ₈ │ ₉ │ ₀ ┃ ┆ ┆ +╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ *^ │ ≤ │ ≥ │ *¤ │ ‰ ┃ │ × │ *` │ │ *´ ┃ ┆ ┆ +· ┃ ^ │ < │ > │ $ │ % ┃ & │ * │ ` │ @ │ ' ┃ ┆ ┆ +· ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +· ┃ │ « │ » │ │ ? ┃ ! │ */ │ ± │ — │ ÷ ┃ ┆ ┆ +· ┃ { │ ( │ ) │ } │ ? ┃ ! │ \ │ + │ - │ / ┃ ┆ ┆ +╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +┆ *~ │ │ │ │ │ ┃ *¸ │ ¦ │ │ │ ≠ ┃ · +┆ ~ │ [ │ ] │ _ │ # │ " ┃ ; │ | │ : │ . │ = ┃ · +╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · · +''' + +[spacebar] +shift = "\u202f" # NARROW NO-BREAK SPACE +altgr = "\u0020" # SPACE +altgr_shift = "\u00a0" # NO-BREAK SPACE +1dk = "\u0027" # RIGHT SINGLE QUOTATION MARK +1dk_shift = "\u23B5" # BOTTOM BRACKET diff --git a/layouts/fr.nonfree/LICENSE.md b/layouts/fr.nonfree/LICENSE.md new file mode 100644 index 00000000..57ea1796 --- /dev/null +++ b/layouts/fr.nonfree/LICENSE.md @@ -0,0 +1,12 @@ +Optimot is released under a [CC-BY-NC-SA] license (unspecified version), +which is not compatible with any [open-source] or [non-CC] license. + +The author, Patrick Jamet a.k.a. Pyjam/Floppy, does not endorse our work in any way. +These Kalamine files are proposed here only to feed our layout analyzer +and don’t claim to support the full layout spec. + +License: https://optimot.fr/licence.html + +[open-source]: https://opensource.org/licenses +[CC-BY-NC-SA]: https://creativecommons.org/licenses/by-nc-sa/4.0/deed +[non-CC]: https://creativecommons.org/share-your-work/licensing-considerations/compatible-licenses/ \ No newline at end of file diff --git a/layouts/fr.nonfree/optimot.json b/layouts/fr.nonfree/optimot.json new file mode 100644 index 00000000..6362f6b6 --- /dev/null +++ b/layouts/fr.nonfree/optimot.json @@ -0,0 +1,65 @@ +{ + "name": "optimot", + "description": "French Bépo-style layout", + "geometry": "ansi", + "keymap": { + "Digit1": [ "«", "1", "“" ], + "Digit2": [ "»", "2", "”" ], + "Digit3": [ "\"", "3", "„" ], + "Digit4": [ "-", "4" ], + "Digit5": [ "+", "5", "±" ], + "Digit6": [ "*", "6", "×" ], + "Digit7": [ "/", "7", "\\" ], + "Digit8": [ "=", "8", "≠" ], + "Digit9": [ "(", "9", "[" ], + "Digit0": [ ")", "0", "]" ], + "KeyQ": [ "à", "À", "<", "≤" ], + "KeyW": [ "j", "J", ">", "≥" ], + "KeyE": [ "o", "O", "œ", "Œ" ], + "KeyR": [ "é", "É", "*´" ], + "KeyT": [ "b", "B", "—" ], + "KeyY": [ "f", "F" ], + "KeyU": [ "d", "D", "{" ], + "KeyI": [ "l", "L", "}" ], + "KeyO": [ "’", "?" ], + "KeyP": [ "q", "Q" ], + "KeyA": [ "a", "A", "æ", "Æ" ], + "KeyS": [ "i", "I" ], + "KeyD": [ "e", "E" ], + "KeyF": [ "u", "U", "ù", "Ù" ], + "KeyG": [ ",", ";", "–" ], + "KeyH": [ "p", "P" ], + "KeyJ": [ "t", "T", "&" ], + "KeyK": [ "s", "S" ], + "KeyL": [ "r", "R" ], + "Semicolon": [ "n", "N", "*~" ], + "KeyZ": [ "k", "K" ], + "KeyX": [ "y", "Y" ], + "KeyC": [ "è", "È", "*`" ], + "KeyV": [ ".", ":", "…" ], + "KeyB": [ "w", "W", "•" ], + "KeyN": [ "g", "G", "*µ" ], + "KeyM": [ "c", "C", "*¸" ], + "Comma": [ "m", "M" ], + "Period": [ "h", "H" ], + "Slash": [ "v", "V" ], + "Minus": [ "@", "_" ], + "Equal": [ "#", "%", "°" ], + "BracketLeft": [ "x", "X", "|", "¦" ], + "BracketRight": [ "ç", "Ç" ], + "Quote": [ "*^", "!", "*¨" ], + "Backquote": [ "$", "€", "£" ], + "Backslash": [ "z", "Z" ], + "Space": [ " ", " ", "_", " " ] + }, + "deadkeys": { + "*`": { "*`": "`", "A": "À", "a": "à", "E": "È", "e": "è", "I": "Ì", "i": "ì", "N": "Ǹ", "n": "ǹ", "O": "Ò", "o": "ò", "U": "Ù", "u": "ù", "W": "Ẁ", "w": "ẁ", "Y": "Ỳ", "y": "ỳ", " ": "`", " ": "`", " ": "`" }, + "*´": { "*´": "´", "A": "Á", "a": "á", "C": "Ć", "c": "ć", "E": "É", "e": "é", "G": "Ǵ", "g": "ǵ", "I": "Í", "i": "í", "K": "Ḱ", "k": "ḱ", "L": "Ĺ", "l": "ĺ", "M": "Ḿ", "m": "ḿ", "N": "Ń", "n": "ń", "O": "Ó", "o": "ó", "P": "Ṕ", "p": "ṕ", "R": "Ŕ", "r": "ŕ", "S": "Ś", "s": "ś", "U": "Ú", "u": "ú", "W": "Ẃ", "w": "ẃ", "Y": "Ý", "y": "ý", "Z": "Ź", "z": "ź", " ": "'", " ": "'", " ": "'" }, + "*^": { "*^": "^", "A": "Â", "a": "â", "C": "Ĉ", "c": "ĉ", "E": "Ê", "e": "ê", "G": "Ĝ", "g": "ĝ", "H": "Ĥ", "h": "ĥ", "I": "Î", "i": "î", "J": "Ĵ", "j": "ĵ", "O": "Ô", "o": "ô", "S": "Ŝ", "s": "ŝ", "U": "Û", "u": "û", "W": "Ŵ", "w": "ŵ", "Y": "Ŷ", "y": "ŷ", "Z": "Ẑ", "z": "ẑ", "0": "⁰", "1": "¹", "2": "²", "3": "³", "4": "⁴", "5": "⁵", "6": "⁶", "7": "⁷", "8": "⁸", "9": "⁹", "(": "⁽", ")": "⁾", "+": "⁺", "-": "⁻", "=": "⁼", " ": "^", " ": "^", " ": "^" }, + "*~": { "*~": "~", "A": "Ã", "a": "ã", "E": "Ẽ", "e": "ẽ", "I": "Ĩ", "i": "ĩ", "N": "Ñ", "n": "ñ", "O": "Õ", "o": "õ", "U": "Ũ", "u": "ũ", "V": "Ṽ", "v": "ṽ", "Y": "Ỹ", "y": "ỹ", "<": "≲", ">": "≳", "=": "≃", " ": "~", " ": "~", " ": "~" }, + "*¨": { "*¨": "¨", "A": "Ä", "a": "ä", "E": "Ë", "e": "ë", "H": "Ḧ", "h": "ḧ", "I": "Ï", "i": "ï", "O": "Ö", "o": "ö", "t": "ẗ", "U": "Ü", "u": "ü", "W": "Ẅ", "w": "ẅ", "X": "Ẍ", "x": "ẍ", "Y": "Ÿ", "y": "ÿ", " ": "\"", " ": "\"", " ": "\"" }, + "*¸": { "*¸": "¸", "C": "Ç", "c": "ç", "D": "Ḑ", "d": "ḑ", "E": "Ȩ", "e": "ȩ", "G": "Ģ", "g": "ģ", "H": "Ḩ", "h": "ḩ", "K": "Ķ", "k": "ķ", "L": "Ļ", "l": "ļ", "N": "Ņ", "n": "ņ", "R": "Ŗ", "r": "ŗ", "S": "Ş", "s": "ş", "T": "Ţ", "t": "ţ", " ": "¸", " ": "¸", " ": "¸" }, + "*µ": { "*µ": "µ", "A": "Α", "a": "α", "B": "Β", "b": "β", "D": "Δ", "d": "δ", "E": "Ε", "e": "ε", "F": "Φ", "f": "φ", "G": "Γ", "g": "γ", "H": "Η", "h": "η", "I": "Ι", "i": "ι", "J": "Θ", "j": "θ", "K": "Κ", "k": "κ", "L": "Λ", "l": "λ", "M": "Μ", "m": "μ", "N": "Ν", "n": "ν", "O": "Ο", "o": "ο", "P": "Π", "p": "π", "Q": "Χ", "q": "χ", "R": "Ρ", "r": "ρ", "S": "Σ", "s": "σ", "T": "Τ", "t": "τ", "U": "Υ", "u": "υ", "W": "Ω", "w": "ω", "X": "Ξ", "x": "ξ", "Y": "Ψ", "y": "ψ", "Z": "Ζ", "z": "ζ", " ": "µ", " ": "µ", " ": "µ" } + }, + "altgr": true +} \ No newline at end of file diff --git a/layouts/fr.nonfree/optimot.yaml b/layouts/fr.nonfree/optimot.yaml new file mode 100644 index 00000000..13fa19be --- /dev/null +++ b/layouts/fr.nonfree/optimot.yaml @@ -0,0 +1,27 @@ +name: optimot +description: French Bépo-style layout +url: https://optimot.fr +geometry: ANSI + +full: | + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓ + │ € │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ _ │ % ┃ ⌫ ┃ + │ $ £ │ « “ │ » ” │ " „ │ - │ + ± │ * × │ / \ │ = ≠ │ ( [ │ ) ] │ @ │ # ° ┃ ┃ + ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┯━━━━━━━┩ + ┃ ┃ À │ J │ O │ É │ B │ F │ D │ L │ ? │ Q │ X │ Ç │ Z │ + ┃ ↹ ┃ < │ > │ œ │ *´ │ — │ │ { │ } │ ’ │ │ | │ │ │ + ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━━━┪ + ┃ ┃ A │ I │ E │ U │ ; │ P │ T │ S │ R │ N │ ! ┃ ┃ + ┃ ⇬ ┃ æ │ │ │ ù │ , – │ │ & │ │ │ *~ │*^*¨ ┃ ⏎ ┃ + ┣━━━━━━━━━┻━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┻━━━━━━━━━━━━┫ + ┃ ┃ K │ Y │ È │ : │ W │ G │ C │ M │ H │ V ┃ ┃ + ┃ ⇧ ┃ │ │ *` │ . … │ • │ *µ │ *¸ │ │ │ ┃ ⇧ ┃ + ┣━━━━━━━┳━━━━┻━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ + ┃ Ctrl ┃ super ┃ Alt ┃ ␣ ┃ Alt ┃ super ┃ menu ┃ Ctrl ┃ + ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +spacebar: + shift: "\u202f" # NARROW NO-BREAK SPACE + altgr: "\u005f" # LOW LINE + altgr_shift: "\u00a0" # NO-BREAK SPACE diff --git a/layouts/azerty.json b/layouts/fr/azerty.json similarity index 100% rename from layouts/azerty.json rename to layouts/fr/azerty.json diff --git a/layouts/azerty.yaml b/layouts/fr/azerty.yaml similarity index 100% rename from layouts/azerty.yaml rename to layouts/fr/azerty.yaml diff --git a/layouts/bepo.json b/layouts/fr/bepo.json similarity index 100% rename from layouts/bepo.json rename to layouts/fr/bepo.json diff --git a/layouts/bepo.yaml b/layouts/fr/bepo.yaml similarity index 100% rename from layouts/bepo.yaml rename to layouts/fr/bepo.yaml diff --git a/layouts/bepolar.json b/layouts/fr/bepolar.json similarity index 100% rename from layouts/bepolar.json rename to layouts/fr/bepolar.json diff --git "a/layouts/B\303\251polar.toml" b/layouts/fr/bepolar.toml similarity index 100% rename from "layouts/B\303\251polar.toml" rename to layouts/fr/bepolar.toml diff --git a/layouts/bepolar.yaml b/layouts/fr/bepolar.yaml similarity index 100% rename from layouts/bepolar.yaml rename to layouts/fr/bepolar.yaml diff --git a/layouts/colemak-french-touch.json b/layouts/fr/colemak-french-touch.json similarity index 100% rename from layouts/colemak-french-touch.json rename to layouts/fr/colemak-french-touch.json diff --git a/layouts/colemak-french-touch.toml b/layouts/fr/colemak-french-touch.toml similarity index 100% rename from layouts/colemak-french-touch.toml rename to layouts/fr/colemak-french-touch.toml diff --git a/layouts/erglace.json b/layouts/fr/erglace.json similarity index 100% rename from layouts/erglace.json rename to layouts/fr/erglace.json diff --git a/layouts/erglace.toml b/layouts/fr/erglace.toml similarity index 100% rename from layouts/erglace.toml rename to layouts/fr/erglace.toml diff --git a/layouts/ergol.json b/layouts/fr/ergol.json similarity index 100% rename from layouts/ergol.json rename to layouts/fr/ergol.json diff --git a/layouts/ergol.toml b/layouts/fr/ergol.toml similarity index 100% rename from layouts/ergol.toml rename to layouts/fr/ergol.toml diff --git a/layouts/lafayette.json b/layouts/fr/lafayette.json similarity index 100% rename from layouts/lafayette.json rename to layouts/fr/lafayette.json diff --git a/layouts/lafayette.yaml b/layouts/fr/lafayette.yaml similarity index 100% rename from layouts/lafayette.yaml rename to layouts/fr/lafayette.yaml diff --git a/www/layouts/shortcodes/layout-list.html b/www/layouts/shortcodes/layout-list.html index c2771985..40ed79b3 100644 --- a/www/layouts/shortcodes/layout-list.html +++ b/www/layouts/shortcodes/layout-list.html @@ -20,6 +20,19 @@ "bepolar" "Bépolar" "bepo" "Bépo" ) + + "fr.contrib" (dict + "beopy" "Béopy" + "beopy-l" "Béopy‑L" + "ergaie" "Ergaie" + "erglace_nuke" "Erglace (nuke)" + "hypertexte_1dk" "HyperTexte-1dk" + "optergol" "Optergol" + ) + + "fr.nonfree" (dict + "optimot" "Optimot" + ) }}