Comment installer un clavier BÉPO sur un appareil SailfishOS

DISPOSER d'un clavier BÉPO n'est peut-être pas très utile sur un clavier virtuel de smartphone, mais cela peut être une manière de s'habituer à cette disposition avant de l'installer sur un clavier physique.

Création: 2019.02.06 • Révision 2020.02.16 • Clavier BÉPOqml pour claviers

1. Disposition minimale
2. Disposition optimale
3. Disposition maximale
4. Installation d'un nouveau clavier

Quelle que soit le type de disposition que vous adoptiez, il faudra produire deux fichiers à partir du code décrit dans une des sections ci-dessous. Un simple copier-coller dans un fichier-texte fait l'affaire. Faites bien attention à leur donner les noms proposés.

1. Disposition BÉPO minimale

Aperçu de la disposition: w, ç, ê et à sont non apparents, symboles comme pour le clavier AZERTY sur SailFish. Les chiffres et symboles, accessibles par la touche ?123, sont à droite.

B É P O È V D L J Z     € £ $ ¥ ? % < > [ ]
A U I E C T S R N M     ` ^ | _ § { } ° ¡ ¿
Sf Y X K Q G H F <x     2) « » ÷ “ ” „ · <x
?123 . , [    ] '      ABC . , [     ] ' 

b é p o è v d l j z     1 2 3 4 5 6 7 8 9 0
a u i e c t s r n m     * # + - = ( ) ~ ! ?
Sf y x k q g h f <x     1) @ & / \ " ; : <x
?123 . , [    ] ’      ABC . , [     ] ' 

Il s'agit d'une adaptation à un clavier de quatre rangées avec deux touches de moins par rangée. Le W est associé au V, le Ç au C, le À au A, le Ê au E… Il n'y a pas de touches mortes, les lettres accentuées se saisissent en maintenant le doigt sur la lettre non accentuée: a fait apparaître aàâæáãäåǎā

Seules les lettres correspondent à la disposition BÉPO, les chiffres et symboles ne diffèrent pas beaucoup des dispositions de claviers pour les autres langues sur Jolla / SailFishOS, mais l'élision typographique a été priviliégiée à l'élision dactylographique '

Fichier .conf à produire

Le premier fichier s'appelle layout_bepo.conf. Le [nom entre crochet] doit correspondre au nom du second fichier.

[bepo.qml]
name=Bépo
languageCode=FR
handler=Xt9InputHandler.qml

Fichier .qml à produire

Le second fichier à produire s'appelle bepo.qml et contient la description de la disposition de clavier. Attention! le système est susceptible: une répétition de deux items pour la même touche, un point-virgule ou deux points qui manquent, des accolades ou des guillemets non fermés… empêchent la disposition de fonctionner. Le guillemet se code "\"" , la barre inverse "\\" .

/*
No copyright (C)… Enjoy! Done by RbN (Jan 2014)
Fixed for SailfishOS 3.+ by jchrbe (2019.02.05 rev. 2019.02.17)
*/

import QtQuick 2.0
import com.jolla.keyboard 1.0
import ".."

KeyboardLayout
  {
  splitSupported: true

  KeyboardRow
    {
    CharacterKey { caption: "b"; captionShifted: "B"; symView: "1"; symView2: "€" }
    CharacterKey { caption: "é"; captionShifted: "É"; symView: "2"; symView2: "£"; accents: "é"; accentsShifted: "É" }
    CharacterKey { caption: "p"; captionShifted: "P"; symView: "3"; symView2: "$" }
    CharacterKey { caption: "o"; captionShifted: "O"; symView: "4"; symView2: "¥"; accents: "oôœóòöøǒō"; accentsShifted: "OÔŒÓÒÖØǑŌ" }
    CharacterKey { caption: "è"; captionShifted: "È"; symView: "5"; symView2: "?"; accents: "è"; accentsShifted: "È" }
    CharacterKey { caption: "v"; captionShifted: "V"; symView: "6"; symView2: "%"; accents: "vw"; accentsShifted:"VW" }
    CharacterKey { caption: "d"; captionShifted: "D"; symView: "7"; symView2: "<"; accents: "dð"; accentsShifted: "DÐ" }
    CharacterKey { caption: "l"; captionShifted: "L"; symView: "8"; symView2: ">" }
    CharacterKey { caption: "j"; captionShifted: "J"; symView: "9"; symView2: "["; accents: "jĵ"; accentsShifted: "JĴ" }
    CharacterKey { caption: "z"; captionShifted: "Z"; symView: "0"; symView2: "]" }
    }

  KeyboardRow
    {
    CharacterKey { caption: "a"; captionShifted: "A"; symView: "*"; symView2: "`"; accents: "aàâæáãäåǎā"; accentsShifted: "AÀÂÆÁÃÄÅǍĀ" }
     CharacterKey { caption: "u"; captionShifted: "U"; symView: "#"; symView2: "^"; accents: "uûùúüǔū"; accentsShifted: "UÛÙÚÜǓŪ" }
   CharacterKey { caption: "i"; captionShifted: "I"; symView: "+"; symView2: "|"; accents: "iîïíìǐī"; accentsShifted: "IÎÏÍÌĎǏĪ" }
    CharacterKey { caption: "e"; captionShifted: "E"; symView: "-"; symView2: "_"; accents: "eêëěē€"; accentsShifted: "EÊËĚĒ€" }
    CharacterKey { caption: "c"; captionShifted: "C"; symView: "="; symView2: "§"; accents: "cç"; accentsShifted: "CÇ" }
    CharacterKey { caption: "t"; captionShifted: "T"; symView: "("; symView2: "{"; accents: "tþ"; accentsShifted: "TÞ" }
    CharacterKey { caption: "s"; captionShifted: "S"; symView: ")"; symView2: "}"; accents: "sŝ"; accentsShifted: "SŜ" }
    CharacterKey { caption: "r"; captionShifted: "R"; symView: "~"; symView2: "°" }
    CharacterKey { caption: "n"; captionShifted: "N"; symView: "!"; symView2: "¡";  accents: "nñ"; accentsShifted: "NÑ" }
    CharacterKey { caption: "m"; captionShifted: "M"; symView: "?"; symView2: "¿" }
    }

  KeyboardRow
    {
    ShiftKey {}
    CharacterKey { caption: "y"; captionShifted: "Y"; symView: "@"; symView2: "«"; accents: "ÿý"; accentsShifted: "ŸÝ" }
    CharacterKey { caption: "x"; captionShifted: "X"; symView: "&"; symView2: "»" }
    CharacterKey { caption: "k"; captionShifted: "K"; symView: "/"; symView2: "÷" }
    CharacterKey { caption: "q"; captionShifted: "Q"; symView: "\\"; symView2: "“" }
    CharacterKey { caption: "g"; captionShifted: "G"; symView: "\""; symView2: "”"; accents: "gĝ"; accentsShifted: "GĜ" }
    CharacterKey { caption: "h"; captionShifted: "H"; symView: ";"; symView2: "„"; accents: "hĥ"; accentsShifted: "HĤ" }
    CharacterKey { caption: "f"; captionShifted: "F"; symView: ":"; symView2: "·" }
    BackspaceKey {}
    }

  KeyboardRow
    {
    splitIndex: 4
    SymbolKey { implicitWidth: symbolKeyWidthNarrow }
    CharacterKey { caption: "."; captionShifted: "…"; implicitWidth: punctuationKeyWidthNarrow; fixedWidth: !splitActive; separator: SeparatorState.HiddenSeparator }
    ContextAwareCommaKey { implicitWidth: punctuationKeyWidthNarrow }
    SpacebarKey {}
    SpacebarKey { active: splitActive; languageLabel: "bépo" }
    CharacterKey { caption: "’"; captionShifted: "'"; implicitWidth: punctuationKeyWidthNarrow; fixedWidth: !splitActive }
    EnterKey {}
    }
  }

2. Disposition BÉPO optimale

Aperçu de la disposition pour quatre rangées de 12 caractères, sans touches mortes. Les chiffres et symboles, accessibles par la touche ?123, sont à droite.

# 1 2 3 4 5 6 7 8 9 0 °          ¶ „ “ ” ≤ ≥ □ ¬ ¼ ½ ¾ ′
B É P O È ! V D L J Z W          ¦ □ § Œ ` □ □ Ð Ł IJ Ə ‰
A U I E ; C T S R N M Ç          Æ Ù □ ¤ □ ſ Þ ẞ ™ Ñ º □
Ê À Y X : K Q G H F  <x          □ □ ‘ ’ · □ □ Ĝ ‡ ª  <x
Sft ?123 [        ] ?           2/2 ?123 [        ] ¿ 

$ " « » ( ) @ + - / * =          – — < > [ ] ^ ± − ÷ × ≠
b é p o è □ v d l j z w          | ˝ & œ ` ¡ □ ð ł ij ə %
a u i e , c t s r n m ç          æ ù □ € ’ © þ ß ® ñ ¯ □
ê à y x . k q g h f  <x          / \ { } … ~ □ ĝ † □  <x
Sft ?123 [        ] ’           1/2 ?123 [        ] ' 

Fichier .conf à produire

Le premier fichier, du nom de layout_bepo12.conf. Le [nom entre crochet] doit correspondre au nom du second fichier.

[bepo12.qml]
name=Bépo12
languageCode=FR
handler=Xt9InputHandler.qml

Fichier .qml à produire

Le second fichier, bepo12.qml, décrit la disposition du clavier. Attention! le système est susceptible: une répétition de deux items pour la même touche, un point-virgule ou deux points qui manquent, des accolades ou des guillemets non fermés… empêchent la disposition de fonctionner. Le guillemet double se code \", la barre inverse \\

/*
No copyright (C)… Enjoy! Done by RbN (Jan 2014)
BÉPO “12 character rows” keyboard for SailfishOS 3.+ by jchrbe (2019.02.22)
*/

import QtQuick 2.0
import com.jolla.keyboard 1.0
import ".."

KeyboardLayout
  {
  splitSupported: true

  KeyboardRow
    {
    splitIndex: 5
    CharacterKey { caption: "$"; captionShifted: "#"; symView: "–"; symView2: "¶" }
    CharacterKey { caption: "\""; captionShifted: "1"; symView: "—"; symView2: "„" }
    CharacterKey { caption: "«"; captionShifted: "2"; symView: "<"; symView2: "“" }
    CharacterKey { caption: "»"; captionShifted: "3"; symView: ">"; symView2: "”" }
    CharacterKey { caption: "("; captionShifted: "4"; symView: "["; symView2: "≤" }
    CharacterKey { caption: ")"; captionShifted: "5"; symView: "]"; symView2: "≥" }
    CharacterKey { caption: "@"; captionShifted: "6"; symView: "^"; symView2: " " }
    CharacterKey { caption: "+"; captionShifted: "7"; symView: "±"; symView2: "¬" }
    CharacterKey { caption: "-"; captionShifted: "8"; accents: "-_"; symView: "−"; symView2: "¼" }
    CharacterKey { caption: "/"; captionShifted: "9"; symView: "÷"; symView2: "½" }
    CharacterKey { caption: "*"; captionShifted: "0"; symView: "×"; symView2: "¾" }
    CharacterKey { caption: "="; captionShifted: "°"; symView: "≠"; symView2: "′" }
    }

  KeyboardRow
    {
    splitIndex: 5
    CharacterKey { caption: "b"; captionShifted: "B"; symView: "|"; symView2: "¦" }
    CharacterKey { caption: "é"; captionShifted: "É"; symView: "″"; symView2: " " }
    CharacterKey { caption: "p"; captionShifted: "P"; symView: "&"; symView2: "§" }
    CharacterKey { caption: "o"; captionShifted: "O"; symView: "œ"; symView2: "Œ"; accents: "oôœóòöøǒō"; accentsShifted: "OÔŒÓÒÖØǑŌ" }
    CharacterKey { caption: "è"; captionShifted: "È"; symView: "`"; symView2: "`" }
    CharacterKey { caption: "^"; captionShifted: "!"; symView: "¡"; symView2: " " }
    CharacterKey { caption: "v"; captionShifted: "V"; symView: " "; symView2: " " }
    CharacterKey { caption: "d"; captionShifted: "D"; symView: "ð"; symView2: "Ð" }
    CharacterKey { caption: "l"; captionShifted: "L"; symView: "ł"; symView2: "Ł" }
    CharacterKey { caption: "j"; captionShifted: "J"; symView: "ij"; symView2: "IJ"; accents: "jĵ"; accentsShifted: "JĴ" }
    CharacterKey { caption: "z"; captionShifted: "Z"; symView: "ə"; symView2: "Ə" }
    CharacterKey { caption: "w"; captionShifted: "W"; symView: "%"; symView2: "‰" }
    }

  KeyboardRow
    {
    splitIndex: 5
    CharacterKey { caption: "a"; captionShifted: "A"; symView: "æ"; symView2: "Æ"; accents: "aâáãäåǎā"; accentsShifted: "AÂÁÃÄÅǍĀ" }
    CharacterKey { caption: "u"; captionShifted: "U"; symView: "ù"; symView2: "Ù"; accents: "uûúüǔū"; accentsShifted: "UÛÚÜǓŪ" }
    CharacterKey { caption: "i"; captionShifted: "I"; symView: " "; symView2: " "; accents: "iîïíìǐīı"; accentsShifted: "IÎÏÍÌĎǏĪ" }
    CharacterKey { caption: "e"; captionShifted: "E"; symView: "€"; symView2: "¤"; accents: "eëěē"; accentsShifted: "EËĚĒ" }
    CharacterKey { caption: ","; captionShifted: ";"; symView: "’"; symView2: " " }
    CharacterKey { caption: "c"; captionShifted: "C"; symView: "©"; symView2: "ſ" }
    CharacterKey { caption: "t"; captionShifted: "T"; symView: "þ"; symView2: "Þ"; accents: "tŧ"; accentsShifted: "TŦ" }
    CharacterKey { caption: "s"; captionShifted: "S"; symView: "ß"; symView2: "ẞ"; accents: "sŝ"; accentsShifted: "SŜ" }
    CharacterKey { caption: "r"; captionShifted: "R"; symView: "®"; symView2: "™" }
    CharacterKey { caption: "n"; captionShifted: "N"; symView: "ñ"; symView2: "Ñ" }
    CharacterKey { caption: "m"; captionShifted: "M"; symView: "¯"; symView2: "º" }
    CharacterKey { caption: "ç"; captionShifted: "Ç"; symView: " "; symView2: " " }
    }

  KeyboardRow
    {
    splitIndex: 5
    CharacterKey { caption: "ê"; captionShifted: "Ê"; symView: "/"; symView2: " " }
    CharacterKey { caption: "à"; captionShifted: "À"; symView: "\\"; symView2: " " }
    CharacterKey { caption: "y"; captionShifted: "Y"; symView: "{"; symView2: "‘"; accents: "ÿý"; accentsShifted: "ŸÝ" }
    CharacterKey { caption: "x"; captionShifted: "X"; symView: "}"; symView2: "’" }
    CharacterKey { caption: "."; captionShifted: ":"; symView: "…"; symView2: "·" }
    CharacterKey { caption: "k"; captionShifted: "K"; symView: "~"; symView2: " " }
    CharacterKey { caption: "q"; captionShifted: "Q"; symView: " "; symView2: " " }
    CharacterKey { caption: "g"; captionShifted: "G"; symView: "ĝ"; symView2: "Ĝ"; accents: "gĝ"; accentsShifted: "GĜ" }
    CharacterKey { caption: "h"; captionShifted: "H"; symView: "†"; symView2: "‡"; accents: "hĥ"; accentsShifted: "HĤ" }
    CharacterKey { caption: "f"; captionShifted: "F"; symView: " "; symView2: "ª" }
    BackspaceKey {}
    }

  KeyboardRow
    {
    splitIndex: 3
    ShiftKey { }
    SymbolKey { implicitWidth: symbolKeyWidthNarrow }
    SpacebarKey {}
    CharacterKey { caption: "’"; captionShifted: "?"; symView: "'"; symView2: "¿"
    implicitWidth: punctuationKeyWidthNarrow; fixedWidth: !splitActive }
    SpacebarKey { active: splitActive; languageLabel: "bépo12" }
    EnterKey {}
    }
  }

3. Disposition BÉPO maximale

Aperçu de la disposition pour un clavier quasi complet, trois touches mortes pour lettres grecques (accentuées) et symboles monétaires. Les majuscules en haut, les autres caractères à droite. Les carrés vides occupent les combinaisons de touches non utilisées, les ¤ les touches mortes sur un clavier physique.

# 1 2 3 4 5 6 7 8 9 0 ° `          ¶ „ “ ” ≤ ≥  ¬ ¼ ½ ¾ ′ ″
B É P O È ! V D L J Z W ω          ¦ ¤ § Œ ¤   Ð  IJ Ə  ω
A U I E ; C T S R N M Ç ώ          Æ Ù ¤ ¤ ¤ ſ Þ ẞ ™  º ¤ ώ
Ê À Y X : K ? Q G H F  <x            ‘ ’ ·  ¤ ¤  ‡ ª  <x
Sf ?123 [        ] ¤              Sf ?123 [        ] ¤   

$ " « » ( ) @ + - / * = %          – — < > [ ] ^ ± − ÷ × ≠ ‰
b é p o è ¤ v d l j z w ω          | ¤ & œ ` ¡ ¤ ð ¤ ij ə ¤ ω
a u i e , c t s r n m ç ώ          æ ù ¤ € ’ © þ ß ® ¤ ¤ ¤ ώ
ê à y x . k ' q g h f  <x          / \ { } … ~ ¿ ¤ ¤?  <x
Sf ?123 [        ] ¤              Sf ?123 [        ] ¤   

¤ représente une touche morte à venir pour les devises, ω pour les lettres grecques et ώ pour les lettres grecques accentuées (ces dernières n'existent pas dans le clavier BÉPO). Le fichier qml ci-dessous est plus avancé que la description des claviers ci-dessus (processus en cours).

Deux concessions tout de même: la touche morte ~ associée au n est remplacée par ñ (et Ñ si majuscule). La même chose pour la barre qui permet de produire le ł, mis en lieu et place de la touche morte associée au l (Ł si majuscule).

Fichier .conf à produire

Un premier fichier est nécessaire, par exemple du nom de layout_bepo13.conf:

[bepo13.qml]
name=Bépo13
languageCode=FR
handler=Xt9InputHandler.qml

Fichier .qml à produire

Le fichier de description de la disposition de clavier s'appellera bepo13.qml, du nom entre crochets du fichier précédent:

/*
No copyright (C)… Enjoy! Done by RbN (Jan 2014)
BÉPO “complete” keyboard for SailfishOS 3.+ by jchrbe (2019.02.20)
*/

import QtQuick 2.0
import com.jolla.keyboard 1.0
import ".."

KeyboardLayout
  {
  splitSupported: true

  KeyboardRow
    {
    splitIndex: 5
    CharacterKey { caption: "$"; captionShifted: "#"; symView: "–"; symView2: "¶" }
    CharacterKey { caption: "\""; captionShifted: "1"; symView: "—"; symView2: "„" }
    CharacterKey { caption: "«"; captionShifted: "2"; symView: "<"; symView2: "“" }
    CharacterKey { caption: "»"; captionShifted: "3"; symView: ">"; symView2: "”" }
    CharacterKey { caption: "("; captionShifted: "4"; symView: "["; symView2: "≤" }
    CharacterKey { caption: ")"; captionShifted: "5"; symView: "]"; symView2: "≥" }
    CharacterKey { caption: "@"; captionShifted: "6"; symView: "^"; symView2: " " }
    CharacterKey { caption: "+"; captionShifted: "7"; symView: "±"; symView2: "¬" }
    CharacterKey { caption: "-"; captionShifted: "8"; symView: "-"; symView2: "¼" }
    CharacterKey { caption: "/"; captionShifted: "9"; symView: "÷"; symView2: "½" }
    CharacterKey { caption: "*"; captionShifted: "0"; symView: "×"; symView2: "¾" }
    CharacterKey { caption: "="; captionShifted: "°"; symView: "≠"; symView2: "′" }
    CharacterKey { caption: "%"; captionShifted: "`"; symView: "‰"; symView2: "″" }
    }

  KeyboardRow
    {
    splitIndex: 5
    AccentedCharacterKey { caption: "b"; captionShifted: "B"; symView: "|"; symView2: "¦"; deadKeyAccents: "ωβώϐ"; deadKeyAccentsShifted: "ΩΒΏ " }
    CharacterKey { caption: "é"; captionShifted: "É"; symView: " "; symView2: " " }
    AccentedCharacterKey { caption: "p"; captionShifted: "P"; symView: "&"; symView2: "§"; deadKeyAccents: "ωπώϖ"; deadKeyAccentsShifted: "ΩΠΏ " }
    AccentedCharacterKey { caption: "o"; captionShifted: "O"; symView: "œ"; symView2: "Œ"; accents: "oôœóòöøǒō"; accentsShifted: "OÔŒÓÒÖØǑŌ"; deadKeyAccents: "ωοώό"; deadKeyAccentsShifted: "ΩΟΏΌ" }
    CharacterKey { caption: "è"; captionShifted: "È"; symView: " "; symView2: "`" }
    CharacterKey { caption: "^"; captionShifted: "!"; symView: "¡"; symView2: " " }
    CharacterKey { caption: "v"; captionShifted: "V"; symView: " "; symView2: " " }
    AccentedCharacterKey { caption: "d"; captionShifted: "D"; symView: "ð"; symView2: "Ð"; deadKeyAccents: "ωδ"; deadKeyAccentsShifted: "ΩΔ" }
    AccentedCharacterKey { caption: "l"; captionShifted: "L"; symView: "ł"; symView2: "Ł"; deadKeyAccents: "ωλώϲ¤£"; deadKeyAccentsShifted: "ΩΛΏϹ" }
    AccentedCharacterKey { caption: "j"; captionShifted: "J"; symView: "ij"; symView2: "IJ"; accents: "jĵ"; accentsShifted: "JĴ"; deadKeyAccents: "ωξώͼ"; deadKeyAccentsShifted: "ΩΞΏϾ" }
    AccentedCharacterKey { caption: "z"; captionShifted: "Z"; symView: "ə"; symView2: "Ə"; deadKeyAccents: "ωζώͽ"; deadKeyAccentsShifted: "ΩΖΏϿ" }
    AccentedCharacterKey { caption: "w"; captionShifted: "W"; symView: " "; symView2: " "; deadKeyAccents: "ωωώώ"; deadKeyAccentsShifted: "ΩΩΏΏ" }
    DeadKey { caption: "ω"; captionShifted: "Ω" }
    }

  KeyboardRow
    {
    splitIndex: 5
    AccentedCharacterKey { caption: "a"; captionShifted: "A"; symView: "æ"; symView2: "Æ"; accents: "aâáãäåǎā"; accentsShifted: "AÂÁÃÄÅǍĀ"; deadKeyAccents: "ωαώά"; deadKeyAccentsShifted: "ΩΑΏΆ" }
    AccentedCharacterKey { caption: "u"; captionShifted: "U"; symView: "ù"; symView2: "Ù"; accents: "uûúüǔū"; accentsShifted: "UÛÚÜǓŪ"; deadKeyAccents: "ωθώϑ"; deadKeyAccentsShifted: "ΩΘΏϴ" }
    AccentedCharacterKey { caption: "i"; captionShifted: "I"; symView: " "; symView2: " "; accents: "iîïíìǐīı"; accentsShifted: "IÎÏÍÌĎǏĪ"; deadKeyAccents: "ωιώί"; deadKeyAccentsShifted: "ΩΙΏΊ" }
    AccentedCharacterKey { caption: "e"; captionShifted: "E"; symView: "€"; symView2: "¤"; accents: "eëěē"; accentsShifted: "EËĚĒ"; deadKeyAccents: "ωεώέ¤€"; deadKeyAccentsShifted: "ΩΕΏΈ" }
    CharacterKey { caption: ","; captionShifted: ";"; symView: "’"; symView2: " " }
    CharacterKey { caption: "c"; captionShifted: "C"; symView: "©"; symView2: "ſ" }
    AccentedCharacterKey { caption: "t"; captionShifted: "T"; symView: "þ"; symView2: "Þ"; accents: "tŧ"; accentsShifted: "TŦ"; deadKeyAccents: "ωτ"; deadKeyAccentsShifted: "ΩΤ" }
    AccentedCharacterKey { caption: "s"; captionShifted: "S"; symView: "ß"; symView2: "ẞ"; accents: "sŝ"; accentsShifted: "SŜ"; deadKeyAccents: "ωσώϡ"; deadKeyAccentsShifted: "ΩΣΏϠ" }
    AccentedCharacterKey { caption: "r"; captionShifted: "R"; symView: "®"; symView2: "™"; deadKeyAccents: "ωρώϱ"; deadKeyAccentsShifted: "ΩΡΏ " }
    AccentedCharacterKey { caption: "n"; captionShifted: "N"; symView: "ñ"; symView2: "Ñ"; deadKeyAccents: "ων"; deadKeyAccentsShifted: "ΩΝ" }
    AccentedCharacterKey { caption: "m"; captionShifted: "M"; symView: "¯"; symView2: "º"; deadKeyAccents: "ωμώϻ"; deadKeyAccentsShifted: "ΩΜΏϺ" }
    CharacterKey { caption: "ç"; captionShifted: "Ç"; symView: " "; symView2: " " }
    DeadKey { caption: "ώ"; captionShifted: "Ώ" }
    }

  KeyboardRow
    {
    splitIndex: 5
    CharacterKey { caption: "ê"; captionShifted: "Ê"; symView: "/"; symView2: " " }
    CharacterKey { caption: "à"; captionShifted: "À"; symView: "\\"; symView2: " " }
    AccentedCharacterKey { caption: "y"; captionShifted: "Y"; symView: "{"; symView2: "‘"; accents: "ÿý"; accentsShifted: "ŸÝ"; deadKeyAccents: "ωυώύ¤¥"; deadKeyAccentsShifted: "ΩΥΏΎ" }
    AccentedCharacterKey { caption: "x"; captionShifted: "X"; symView: "}"; symView2: "’"; deadKeyAccents: "ωχώͻ"; deadKeyAccentsShifted: "ΩΧΏϽ" }
    CharacterKey { caption: "."; captionShifted: ":"; symView: "…"; symView2: "·" }
    AccentedCharacterKey { caption: "k"; captionShifted: "K"; symView: "~"; symView2: " "; deadKeyAccents: "ωκώϰ"; deadKeyAccentsShifted: "ΩΚΏ " }
    CharacterKey { caption: "'"; captionShifted: "?"; symView: "¿"; symView2: " " }
    CharacterKey { caption: "q"; captionShifted: "Q"; symView: " "; symView2: " " }
    AccentedCharacterKey { caption: "g"; captionShifted: "G"; symView: "ĝ"; symView2: "Ĝ"; accents: "gĝ"; accentsShifted: "GĜ"; deadKeyAccents: "ωγώϝ"; deadKeyAccentsShifted: "ΩΓΏϜ" }
    AccentedCharacterKey { caption: "h"; captionShifted: "H"; symView: "†"; symView2: "‡"; accents: "hĥ"; accentsShifted: "HĤ"; deadKeyAccents: "ωηώή"; deadKeyAccentsShifted: "ΩΗΏΉ" }
    AccentedCharacterKey { caption: "f"; captionShifted: "F"; symView: " "; symView2: "ª"; deadKeyAccents: "ωφώϕ"; deadKeyAccentsShifted: "ΩΦΏ " }
    BackspaceKey {}
    }

  KeyboardRow
    {
    splitIndex: 3
    ShiftKey {}
    SymbolKey { implicitWidth: symbolKeyWidthNarrow }
    SpacebarKey {}
    SpacebarKey { active: splitActive; languageLabel: "bépoX" }
    DeadKey { caption: "¤"; captionShifted: "$"; implicitWidth: punctuationKeyWidthNarrow; fixedWidth: !splitActive }
    EnterKey {}
    }
  }

4. Installation d'un nouveau clavier

Avant toute chose, il faudra pouvoir administrer le système avec les droits du super-utilisateur, voir cette page.

Vous avez édité par copier-coller les deux fichiers nécessaires, un très court au nom de style layout_xxx.conf et un long, de type xxx.qml. Le nom de ce dernier doit par ailleurs apparaître dans le contenu du premier).

  1. Éditer et sauvegarder les deux fichiers avec leurs noms.
  2. Sous connexion USB (MTP), transférer les fichiers en les plaçant à la racine du répertoire utilisateur (/home/nemo)
  3. Dans Règlages → Système → Outil du développeur, activer le Mode développeur.
  4. Ouvrir le Terminal, qui vient de s'afficher au bas de l'écran des applications.
  5. Saisir su - et entrer le mot de passe super-utilisateur.
  6. Saisir cp /home/nemo/bepo.qml /usr/share/maliit/plugins/com/jolla/layouts/
  7. Saisir cp /home/nemo/layout_bepo.conf /usr/share/maliit/plugins/com/jolla/layouts/
  8. Relancer le serveur des claviers: killall maliit-server
  9. Dans Règlages → Système → Entrée de texte → bouton clavier, sélectionner Bépo.
  10. Lorsque le clavier virtuel apparaît, maintenir le doigt sur la barre espace pemet de choisir sa disposition de clavier parmi celles sélectionnées en 9.