Initial QSfera import

This commit is contained in:
Курнат Андрей
2026-06-07 10:20:04 +03:00
commit 2315f25754
16485 changed files with 4826827 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
package adjacency
type Graph struct {
Graph map[string][]string
Name string
AverageDegree float64
}
// Graphs exports the adjacency graphs by name
var Graphs = make(map[string]*Graph)
func init() {
initGraph("qwerty", adjacencyGraphQwerty)
initGraph("dvorak", adjacencyGraphDvorak)
initGraph("keypad", adjacencyGraphKeypad)
initGraph("mac_keypad", adjacencyGraphMacKeypad)
}
func initGraph(name string, data map[string][]string) {
g := &Graph{
Name: name,
Graph: data,
AverageDegree: calculateAvgDegree(data),
}
Graphs[name] = g
}
func calculateAvgDegree(g map[string][]string) float64 {
var avg float64
for _, value := range g {
for _, chars := range value {
if chars != "" {
avg += float64(1)
}
}
}
return avg / float64(len(g))
}
+233
View File
@@ -0,0 +1,233 @@
package adjacency
// generated by scripts/build_keyboard_adjacency_graphs.py
var adjacencyGraphQwerty = map[string][]string{
`$`: {`3#`, ``, ``, `5%`, `rR`, `eE`},
`(`: {`8*`, ``, ``, `0)`, `oO`, `iI`},
`,`: {`mM`, `kK`, `lL`, `.>`, ``, ``},
`0`: {`9(`, ``, ``, `-_`, `pP`, `oO`},
`4`: {`3#`, ``, ``, `5%`, `rR`, `eE`},
`8`: {`7&`, ``, ``, `9(`, `iI`, `uU`},
`<`: {`mM`, `kK`, `lL`, `.>`, ``, ``},
`@`: {`1!`, ``, ``, `3#`, `wW`, `qQ`},
`D`: {`sS`, `eE`, `rR`, `fF`, `cC`, `xX`},
`H`: {`gG`, `yY`, `uU`, `jJ`, `nN`, `bB`},
`L`: {`kK`, `oO`, `pP`, `;:`, `.>`, `,<`},
`P`: {`oO`, `0)`, `-_`, `[{`, `;:`, `lL`},
`T`: {`rR`, `5%`, `6^`, `yY`, `gG`, `fF`},
`X`: {`zZ`, `sS`, `dD`, `cC`, ``, ``},
`\`: {`]}`, ``, ``, ``, ``, ``},
"`": {``, ``, ``, `1!`, ``, ``},
`d`: {`sS`, `eE`, `rR`, `fF`, `cC`, `xX`},
`h`: {`gG`, `yY`, `uU`, `jJ`, `nN`, `bB`},
`l`: {`kK`, `oO`, `pP`, `;:`, `.>`, `,<`},
`p`: {`oO`, `0)`, `-_`, `[{`, `;:`, `lL`},
`t`: {`rR`, `5%`, `6^`, `yY`, `gG`, `fF`},
`x`: {`zZ`, `sS`, `dD`, `cC`, ``, ``},
`|`: {`]}`, ``, ``, ``, ``, ``},
`#`: {`2@`, ``, ``, `4$`, `eE`, `wW`},
`'`: {`;:`, `[{`, `]}`, ``, ``, `/?`},
`+`: {`-_`, ``, ``, ``, `]}`, `[{`},
`/`: {`.>`, `;:`, `'"`, ``, ``, ``},
`3`: {`2@`, ``, ``, `4$`, `eE`, `wW`},
`7`: {`6^`, ``, ``, `8*`, `uU`, `yY`},
`;`: {`lL`, `pP`, `[{`, `'"`, `/?`, `.>`},
`?`: {`.>`, `;:`, `'"`, ``, ``, ``},
`C`: {`xX`, `dD`, `fF`, `vV`, ``, ``},
`G`: {`fF`, `tT`, `yY`, `hH`, `bB`, `vV`},
`K`: {`jJ`, `iI`, `oO`, `lL`, `,<`, `mM`},
`O`: {`iI`, `9(`, `0)`, `pP`, `lL`, `kK`},
`S`: {`aA`, `wW`, `eE`, `dD`, `xX`, `zZ`},
`W`: {`qQ`, `2@`, `3#`, `eE`, `sS`, `aA`},
`[`: {`pP`, `-_`, `=+`, `]}`, `'"`, `;:`},
`_`: {`0)`, ``, ``, `=+`, `[{`, `pP`},
`c`: {`xX`, `dD`, `fF`, `vV`, ``, ``},
`g`: {`fF`, `tT`, `yY`, `hH`, `bB`, `vV`},
`k`: {`jJ`, `iI`, `oO`, `lL`, `,<`, `mM`},
`o`: {`iI`, `9(`, `0)`, `pP`, `lL`, `kK`},
`s`: {`aA`, `wW`, `eE`, `dD`, `xX`, `zZ`},
`w`: {`qQ`, `2@`, `3#`, `eE`, `sS`, `aA`},
`{`: {`pP`, `-_`, `=+`, `]}`, `'"`, `;:`},
`"`: {`;:`, `[{`, `]}`, ``, ``, `/?`},
`&`: {`6^`, ``, ``, `8*`, `uU`, `yY`},
`*`: {`7&`, ``, ``, `9(`, `iI`, `uU`},
`.`: {`,<`, `lL`, `;:`, `/?`, ``, ``},
`2`: {`1!`, ``, ``, `3#`, `wW`, `qQ`},
`6`: {`5%`, ``, ``, `7&`, `yY`, `tT`},
`:`: {`lL`, `pP`, `[{`, `'"`, `/?`, `.>`},
`>`: {`,<`, `lL`, `;:`, `/?`, ``, ``},
`B`: {`vV`, `gG`, `hH`, `nN`, ``, ``},
`F`: {`dD`, `rR`, `tT`, `gG`, `vV`, `cC`},
`J`: {`hH`, `uU`, `iI`, `kK`, `mM`, `nN`},
`N`: {`bB`, `hH`, `jJ`, `mM`, ``, ``},
`R`: {`eE`, `4$`, `5%`, `tT`, `fF`, `dD`},
`V`: {`cC`, `fF`, `gG`, `bB`, ``, ``},
`Z`: {``, `aA`, `sS`, `xX`, ``, ``},
`^`: {`5%`, ``, ``, `7&`, `yY`, `tT`},
`b`: {`vV`, `gG`, `hH`, `nN`, ``, ``},
`f`: {`dD`, `rR`, `tT`, `gG`, `vV`, `cC`},
`j`: {`hH`, `uU`, `iI`, `kK`, `mM`, `nN`},
`n`: {`bB`, `hH`, `jJ`, `mM`, ``, ``},
`r`: {`eE`, `4$`, `5%`, `tT`, `fF`, `dD`},
`v`: {`cC`, `fF`, `gG`, `bB`, ``, ``},
`z`: {``, `aA`, `sS`, `xX`, ``, ``},
`~`: {``, ``, ``, `1!`, ``, ``},
`!`: {"`~", ``, ``, `2@`, `qQ`, ``},
`%`: {`4$`, ``, ``, `6^`, `tT`, `rR`},
`)`: {`9(`, ``, ``, `-_`, `pP`, `oO`},
`-`: {`0)`, ``, ``, `=+`, `[{`, `pP`},
`1`: {"`~", ``, ``, `2@`, `qQ`, ``},
`5`: {`4$`, ``, ``, `6^`, `tT`, `rR`},
`9`: {`8*`, ``, ``, `0)`, `oO`, `iI`},
`=`: {`-_`, ``, ``, ``, `]}`, `[{`},
`A`: {``, `qQ`, `wW`, `sS`, `zZ`, ``},
`E`: {`wW`, `3#`, `4$`, `rR`, `dD`, `sS`},
`I`: {`uU`, `8*`, `9(`, `oO`, `kK`, `jJ`},
`M`: {`nN`, `jJ`, `kK`, `,<`, ``, ``},
`Q`: {``, `1!`, `2@`, `wW`, `aA`, ``},
`U`: {`yY`, `7&`, `8*`, `iI`, `jJ`, `hH`},
`Y`: {`tT`, `6^`, `7&`, `uU`, `hH`, `gG`},
`]`: {`[{`, `=+`, ``, `\|`, ``, `'"`},
`a`: {``, `qQ`, `wW`, `sS`, `zZ`, ``},
`e`: {`wW`, `3#`, `4$`, `rR`, `dD`, `sS`},
`i`: {`uU`, `8*`, `9(`, `oO`, `kK`, `jJ`},
`m`: {`nN`, `jJ`, `kK`, `,<`, ``, ``},
`q`: {``, `1!`, `2@`, `wW`, `aA`, ``},
`u`: {`yY`, `7&`, `8*`, `iI`, `jJ`, `hH`},
`y`: {`tT`, `6^`, `7&`, `uU`, `hH`, `gG`},
`}`: {`[{`, `=+`, ``, `\|`, ``, `'"`},
}
var adjacencyGraphDvorak = map[string][]string{
`$`: {`3#`, ``, ``, `5%`, `pP`, `.>`},
`(`: {`8*`, ``, ``, `0)`, `rR`, `cC`},
`,`: {`'"`, `2@`, `3#`, `.>`, `oO`, `aA`},
`0`: {`9(`, ``, ``, `[{`, `lL`, `rR`},
`4`: {`3#`, ``, ``, `5%`, `pP`, `.>`},
`8`: {`7&`, ``, ``, `9(`, `cC`, `gG`},
`<`: {`'"`, `2@`, `3#`, `.>`, `oO`, `aA`},
`@`: {`1!`, ``, ``, `3#`, `,<`, `'"`},
`D`: {`iI`, `fF`, `gG`, `hH`, `bB`, `xX`},
`H`: {`dD`, `gG`, `cC`, `tT`, `mM`, `bB`},
`L`: {`rR`, `0)`, `[{`, `/?`, `sS`, `nN`},
`P`: {`.>`, `4$`, `5%`, `yY`, `uU`, `eE`},
`T`: {`hH`, `cC`, `rR`, `nN`, `wW`, `mM`},
`X`: {`kK`, `iI`, `dD`, `bB`, ``, ``},
`\`: {`=+`, ``, ``, ``, ``, ``},
"`": {``, ``, ``, `1!`, ``, ``},
`d`: {`iI`, `fF`, `gG`, `hH`, `bB`, `xX`},
`h`: {`dD`, `gG`, `cC`, `tT`, `mM`, `bB`},
`l`: {`rR`, `0)`, `[{`, `/?`, `sS`, `nN`},
`p`: {`.>`, `4$`, `5%`, `yY`, `uU`, `eE`},
`t`: {`hH`, `cC`, `rR`, `nN`, `wW`, `mM`},
`x`: {`kK`, `iI`, `dD`, `bB`, ``, ``},
`|`: {`=+`, ``, ``, ``, ``, ``},
`#`: {`2@`, ``, ``, `4$`, `.>`, `,<`},
`'`: {``, `1!`, `2@`, `,<`, `aA`, ``},
`+`: {`/?`, `]}`, ``, `\|`, ``, `-_`},
`/`: {`lL`, `[{`, `]}`, `=+`, `-_`, `sS`},
`3`: {`2@`, ``, ``, `4$`, `.>`, `,<`},
`7`: {`6^`, ``, ``, `8*`, `gG`, `fF`},
`;`: {``, `aA`, `oO`, `qQ`, ``, ``},
`?`: {`lL`, `[{`, `]}`, `=+`, `-_`, `sS`},
`C`: {`gG`, `8*`, `9(`, `rR`, `tT`, `hH`},
`G`: {`fF`, `7&`, `8*`, `cC`, `hH`, `dD`},
`K`: {`jJ`, `uU`, `iI`, `xX`, ``, ``},
`O`: {`aA`, `,<`, `.>`, `eE`, `qQ`, `;:`},
`S`: {`nN`, `lL`, `/?`, `-_`, `zZ`, `vV`},
`W`: {`mM`, `tT`, `nN`, `vV`, ``, ``},
`[`: {`0)`, ``, ``, `]}`, `/?`, `lL`},
`_`: {`sS`, `/?`, `=+`, ``, ``, `zZ`},
`c`: {`gG`, `8*`, `9(`, `rR`, `tT`, `hH`},
`g`: {`fF`, `7&`, `8*`, `cC`, `hH`, `dD`},
`k`: {`jJ`, `uU`, `iI`, `xX`, ``, ``},
`o`: {`aA`, `,<`, `.>`, `eE`, `qQ`, `;:`},
`s`: {`nN`, `lL`, `/?`, `-_`, `zZ`, `vV`},
`w`: {`mM`, `tT`, `nN`, `vV`, ``, ``},
`{`: {`0)`, ``, ``, `]}`, `/?`, `lL`},
`"`: {``, `1!`, `2@`, `,<`, `aA`, ``},
`&`: {`6^`, ``, ``, `8*`, `gG`, `fF`},
`*`: {`7&`, ``, ``, `9(`, `cC`, `gG`},
`.`: {`,<`, `3#`, `4$`, `pP`, `eE`, `oO`},
`2`: {`1!`, ``, ``, `3#`, `,<`, `'"`},
`6`: {`5%`, ``, ``, `7&`, `fF`, `yY`},
`:`: {``, `aA`, `oO`, `qQ`, ``, ``},
`>`: {`,<`, `3#`, `4$`, `pP`, `eE`, `oO`},
`B`: {`xX`, `dD`, `hH`, `mM`, ``, ``},
`F`: {`yY`, `6^`, `7&`, `gG`, `dD`, `iI`},
`J`: {`qQ`, `eE`, `uU`, `kK`, ``, ``},
`N`: {`tT`, `rR`, `lL`, `sS`, `vV`, `wW`},
`R`: {`cC`, `9(`, `0)`, `lL`, `nN`, `tT`},
`V`: {`wW`, `nN`, `sS`, `zZ`, ``, ``},
`Z`: {`vV`, `sS`, `-_`, ``, ``, ``},
`^`: {`5%`, ``, ``, `7&`, `fF`, `yY`},
`b`: {`xX`, `dD`, `hH`, `mM`, ``, ``},
`f`: {`yY`, `6^`, `7&`, `gG`, `dD`, `iI`},
`j`: {`qQ`, `eE`, `uU`, `kK`, ``, ``},
`n`: {`tT`, `rR`, `lL`, `sS`, `vV`, `wW`},
`r`: {`cC`, `9(`, `0)`, `lL`, `nN`, `tT`},
`v`: {`wW`, `nN`, `sS`, `zZ`, ``, ``},
`z`: {`vV`, `sS`, `-_`, ``, ``, ``},
`~`: {``, ``, ``, `1!`, ``, ``},
`!`: {"`~", ``, ``, `2@`, `'"`, ``},
`%`: {`4$`, ``, ``, `6^`, `yY`, `pP`},
`)`: {`9(`, ``, ``, `[{`, `lL`, `rR`},
`-`: {`sS`, `/?`, `=+`, ``, ``, `zZ`},
`1`: {"`~", ``, ``, `2@`, `'"`, ``},
`5`: {`4$`, ``, ``, `6^`, `yY`, `pP`},
`9`: {`8*`, ``, ``, `0)`, `rR`, `cC`},
`=`: {`/?`, `]}`, ``, `\|`, ``, `-_`},
`A`: {``, `'"`, `,<`, `oO`, `;:`, ``},
`E`: {`oO`, `.>`, `pP`, `uU`, `jJ`, `qQ`},
`I`: {`uU`, `yY`, `fF`, `dD`, `xX`, `kK`},
`M`: {`bB`, `hH`, `tT`, `wW`, ``, ``},
`Q`: {`;:`, `oO`, `eE`, `jJ`, ``, ``},
`U`: {`eE`, `pP`, `yY`, `iI`, `kK`, `jJ`},
`Y`: {`pP`, `5%`, `6^`, `fF`, `iI`, `uU`},
`]`: {`[{`, ``, ``, ``, `=+`, `/?`},
`a`: {``, `'"`, `,<`, `oO`, `;:`, ``},
`e`: {`oO`, `.>`, `pP`, `uU`, `jJ`, `qQ`},
`i`: {`uU`, `yY`, `fF`, `dD`, `xX`, `kK`},
`m`: {`bB`, `hH`, `tT`, `wW`, ``, ``},
`q`: {`;:`, `oO`, `eE`, `jJ`, ``, ``},
`u`: {`eE`, `pP`, `yY`, `iI`, `kK`, `jJ`},
`y`: {`pP`, `5%`, `6^`, `fF`, `iI`, `uU`},
`}`: {`[{`, ``, ``, ``, `=+`, `/?`},
}
var adjacencyGraphKeypad = map[string][]string{
`+`: {`9`, `*`, `-`, ``, ``, ``, ``, `6`},
`*`: {`/`, ``, ``, ``, `-`, `+`, `9`, `8`},
`-`: {`*`, ``, ``, ``, ``, ``, `+`, `9`},
`/`: {``, ``, ``, ``, `*`, `9`, `8`, `7`},
`.`: {`0`, `2`, `3`, ``, ``, ``, ``, ``},
`1`: {``, ``, `4`, `5`, `2`, `0`, ``, ``},
`0`: {``, `1`, `2`, `3`, `.`, ``, ``, ``},
`3`: {`2`, `5`, `6`, ``, ``, ``, `.`, `0`},
`2`: {`1`, `4`, `5`, `6`, `3`, `.`, `0`, ``},
`5`: {`4`, `7`, `8`, `9`, `6`, `3`, `2`, `1`},
`4`: {``, ``, `7`, `8`, `5`, `2`, `1`, ``},
`7`: {``, ``, ``, `/`, `8`, `5`, `4`, ``},
`6`: {`5`, `8`, `9`, `+`, ``, ``, `3`, `2`},
`9`: {`8`, `/`, `*`, `-`, `+`, ``, `6`, `5`},
`8`: {`7`, ``, `/`, `*`, `9`, `6`, `5`, `4`},
}
var adjacencyGraphMacKeypad = map[string][]string{
`+`: {`6`, `9`, `-`, ``, ``, ``, ``, `3`},
`*`: {`/`, ``, ``, ``, ``, ``, `-`, `9`},
`-`: {`9`, `/`, `*`, ``, ``, ``, `+`, `6`},
`/`: {`=`, ``, ``, ``, `*`, `-`, `9`, `8`},
`.`: {`0`, `2`, `3`, ``, ``, ``, ``, ``},
`1`: {``, ``, `4`, `5`, `2`, `0`, ``, ``},
`0`: {``, `1`, `2`, `3`, `.`, ``, ``, ``},
`3`: {`2`, `5`, `6`, `+`, ``, ``, `.`, `0`},
`2`: {`1`, `4`, `5`, `6`, `3`, `.`, `0`, ``},
`5`: {`4`, `7`, `8`, `9`, `6`, `3`, `2`, `1`},
`4`: {``, ``, `7`, `8`, `5`, `2`, `1`, ``},
`7`: {``, ``, ``, `=`, `8`, `5`, `4`, ``},
`6`: {`5`, `8`, `9`, `-`, `+`, ``, `3`, `2`},
`9`: {`8`, `=`, `/`, `*`, `-`, `+`, `6`, `5`},
`8`: {`7`, ``, `=`, `/`, `9`, `6`, `5`, `4`},
`=`: {``, ``, ``, ``, `/`, `9`, `8`, `7`},
}