bazar/BEPO/BEPO.sh

238 lines
8.9 KiB
Bash
Raw Permalink Normal View History

2021-10-28 05:05:51 +02:00
#!/usr/bin/env bash
#Générateur de BEPO.svg
#Dotted Circle = ◌
DEST=./BEPO.svg
########################################################
# #
# Bloc des données #
########################################################
BASE=( '$' '"' « » '(' ')' '@' '+' '-' '/' '*' '=' % '⌫' \
'⇥' b é p o è '̂◌' v d l j z w '⎆' \
'⇫' a u i e ',' c t s r n m ç '⎆' \
'⇧' ê à y x . k q g h f '⇧' '⇧')
HBASE=('⎈' '⌘' '⎇' '⇮' '⌘' '⌥' '⎈')
SHIFT=('#' 1 2 3 4 5 6 7 8 9 0 ° '`' ' ' \
'⇤' B É P O È '!' V D L J Z W '⏎' \
' ' A U I E ';' C T S R N M Ç '⏎' \
' ' Ê À Y X ':' K '?' Q G H F '⇧' '⇧')
ALTER=('–' '—' '<' '>' '[' ']' '^' ± '-' ÷ × '≠' '‰' ' ' \
' ' '|' '́◌' '&' œ '̀◌' ¡ '̌◌' '−' 'ø' ü '̶◌' ö '⎆' \
' ' æ ù '̈◌'\' '̧◌' 'ᵉ' ß '̆◌' '̃◌' '̄◌' © '⎆' \
' ' '/' '\' '{' '}''~' ¿ '̊◌' µ '̣◌' '̨◌' '⇧' '⇧')
ALTSH=('¶' '„' '“' '”' '≤' '≥' '‖' '¬' '¼' '½' '¾' '′' '″' ' ' \
' ' _ § Œ '`' '^' 'ˇ' '∝' £ Ü '̵◌' Ö '⏎' \
' ' Æ Ù '̇◌' '¤' '̦◌' © ™ 'ſ' '®' '~' '-' '🄯' '⏎' \
' ' '^' ',' '‑' '̓◌' '̕◌' '†' '‡' '•' '⇧' '⇧')
########################################################
# #
# Bloc de style #
########################################################
echo '''<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="1680"
height="620"
viewBox="0 0 1680 620"
lang="fr">
<title>Disposition BÉPO</title>
<desc>Personalisation du clavier BÉPO avec la norme ISO/IEC 9995-7.</desc>
<style>
2021-10-30 01:29:03 +02:00
@media (prefers-color-scheme: light)
2021-10-28 05:05:51 +02:00
{
2021-10-30 01:29:03 +02:00
/*Style densemble*/
svg
{
background: #e1e1e1;
color: #908f90;
}
/*Style de touche*/
rect
{
fill: #fffcf7;
stroke: #a09fa0;
}
/*Styles des caractères*/
text
{
font-family: monospace;
font-size: 40px;
}
text.base
{
fill: purple;
}
text.shift
{
fill: blue;
}
text.alt
{
fill: green;
}
text.combo
{
fill: orange;
}
text.dead
{
font-weight: bold;
}
image#cc_circle
{
height: 22px!important;
margin-left: 3px;
vertical-align: text-bottom;
}
image#cc_by
{
height: 22px!important;
margin-left: 3px;
vertical-align: text-bottom;
}
2021-10-28 05:05:51 +02:00
}
2021-10-30 01:29:03 +02:00
@media (prefers-color-scheme: dark)
2021-10-28 05:05:51 +02:00
{
2021-10-30 01:29:03 +02:00
/*Style densemble*/
svg
{
background: #908f90;
color: #e1e1e1;
}
/*Style de touche*/
rect
{
fill: #a09fa0;
stroke: #fffcf7;
}
/*Styles des caractères*/
text
{
font-family: monospace;
font-size: 40px;
}
text.base
{
fill: purple;
}
text.shift
{
fill: blue;
}
text.alt
{
fill: green;
}
text.combo
{
fill: orange;
}
text.dead
{
font-weight: bold;
}
image#cc_circle
{
height: 22px!important;
margin-left: 3px;
vertical-align: text-bottom;
}
image#cc_by
{
height: 22px!important;
margin-left: 3px;
vertical-align: text-bottom;
}
2021-10-28 05:05:51 +02:00
}
</style>''' > $DEST
########################################################
# #
# Bloc des touches #
########################################################
## Lignes orthogonales de 0 à 3 ########################
for KL in {0..3}
do
KY=$((10+$KL*120))
for KC in {0..13}
do
KX=$((10+$KC*120))
echo ' <g id="keyl'$KL'c'$KC'" transform="translate('$KX' '$KY')">' >> $DEST
2021-10-30 01:29:03 +02:00
echo ' <rect x="0" y="0" width="100" height="100" rx="10"/>' >> $DEST
2021-10-28 05:05:51 +02:00
echo ' <text class="base" x="10" y="90">'${BASE[$(($KC+14*$KL))]}'</text>' >> $DEST
echo ' <text class="shift" x="10" y="45">'${SHIFT[$(($KC+14*$KL))]}'</text>' >> $DEST
echo ' <text class="alt" x="50" y="90">'${ALTER[$(($KC+14*$KL))]}'</text>' >> $DEST
echo ' <text class="combo" x="50" y="45">'${ALTSH[$(($KC+14*$KL))]}'</text>' >> $DEST
echo ' </g>' >> $DEST
done
done
## Ligne 4 sans espace #################################
KL=4
KY=$((10+$KL*120))
for KC in {0..2}
do
KX=$((10+$KC*120))
echo ' <g id="keyl'$KL'c'$KC'" transform="translate('$KX' '$KY')">' >> $DEST
2021-10-30 01:29:03 +02:00
echo ' <rect x="0" y="0" width="100" height="100" rx="10"/>' >> $DEST
2021-10-28 05:05:51 +02:00
echo ' <text class="base" x="10" y="90">'${HBASE[$(($KC))]}'</text>' >> $DEST
echo ' <text class="shift" x="10" y="45"></text>' >> $DEST
echo ' <text class="alt" x="50" y="90"></text>' >> $DEST
echo ' <text class="combo" x="50" y="45"></text>' >> $DEST
echo ' </g>' >> $DEST
done
for KC in {10..13}
do
KX=$((10+$KC*120))
echo ' <g id="keyl'$KL'c'$KC'" transform="translate('$KX' '$KY')">' >> $DEST
2021-10-30 01:29:03 +02:00
echo ' <rect x="0" y="0" width="100" height="100" rx="10"/>' >> $DEST
2021-10-28 05:05:51 +02:00
echo ' <text class="base" x="10" y="90">'${HBASE[$(($KC-7))]}'</text>' >> $DEST
echo ' <text class="shift" x="10" y="45"></text>' >> $DEST
echo ' <text class="alt" x="50" y="90"></text>' >> $DEST
echo ' <text class="combo" x="50" y="45"></text>' >> $DEST
echo ' </g>' >> $DEST
done
## Barre despace ######################################
KC=3
KX=$((10+$KC*120))
echo ' <g id="keyl'$KL'c'$KC'" transform="translate('$KX' '$KY')">' >> $DEST
2021-10-30 01:29:03 +02:00
echo ' <rect x="0" y="0" width="820" height="100" rx="10"/>' >> $DEST
2021-10-28 05:05:51 +02:00
echo ' <text class="base" x="10" y="80">&#x2423;</text>' >> $DEST
echo ' <text class="shift" x="10" y="35">&#x2336;</text>' >> $DEST
echo ' <text class="alt" x="770" y="80">_</text>' >> $DEST
echo ' <text class="combo" x="770" y="35">&#x237d;</text>' >> $DEST
echo ' </g>' >> $DEST
## Touche Entrée à droite ##############################
KL=1
KY=$((10+$KL*120))
KC=13
KX=$((10+$KC*120))
echo ' <g id="keyl'$KL'c'$KC'" transform="translate('$KX' '$KY')">' >> $DEST
2021-10-30 01:29:03 +02:00
echo ' <rect x="0" y="0" width="100" height="220" rx="10"/>' >> $DEST
2021-10-28 05:05:51 +02:00
echo ' <text class="base" x="10" y="190">&#9094;</text>' >> $DEST
echo ' <text class="shift" x="10" y="45">&#9166;</text>' >> $DEST
echo ' <text class="alt" x="50" y="190"></text>' >> $DEST
echo ' <text class="combo" x="50" y="45"></text>' >> $DEST
echo ' </g>' >> $DEST
## Touche Capital à droite #############################
KL=3
KY=$((10+$KL*120))
KC=12
KX=$((10+$KC*120))
echo ' <g id="keyl'$KL'c'$KC'" transform="translate('$KX' '$KY')">' >> $DEST
2021-10-30 01:29:03 +02:00
echo ' <rect x="0" y="0" width="220" height="100" rx="10"/>' >> $DEST
2021-10-28 05:05:51 +02:00
echo ' <text class="base" x="10" y="90">&#8679;</text>' >> $DEST
echo ' <text class="shift" x="10" y="45"></text>' >> $DEST
echo ' <text class="alt" x="150" y="90"></text>' >> $DEST
echo ' <text class="combo" x="150" y="45"></text>' >> $DEST
echo ' </g>' >> $DEST
## Signature ###########################################
echo ''' <g xmlns:cc="http://creativecommons.org/ns#" xmlns:dct="http://purl.org/dc/terms/" transform="translate(50 610)">
<text style="color: black; font-size: 1em; font-family: sans;">
<a property="dct:title" rel="cc:attributionURL" href="https://www.alnotz.fr/">BÉPO Orthogonal avec ISO/IEC 9995-7</a> by <a rel="cc:attributionURL dct:creator" property="cc:attributionName" href="https://www.alnotz.fr/">Alnotz</a> is licensed under <a href="https://creativecommons.org/licenses/by/4.0/?ref=chooser-v1" target="_blank" rel="license noopener noreferrer" style="display:inline-block;">Attribution 4.0 International</a>
</text>
<a href="https://creativecommons.org/publicdomain/zero/1.0?ref=chooser-v1" target="_blank" rel="license noopener noreferrer" style="display:inline-block;">
<image x="48em" y="-1em" id="cc_circle" href="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"/>
2021-10-30 01:29:03 +02:00
<image x="calc(48em + 22px)" y="-1em" id="cc_by" href="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"/>
2021-10-28 05:05:51 +02:00
</a>
</g>''' >> $DEST
echo '</svg>' >> $DEST