Compare commits

..

18 Commits

Author SHA1 Message Date
35785f3d41 Merge branch 'release-squeekboard-1.41.0' into 'main'
Release Squeekboard 1.41.0

See merge request World/Phosh/squeekboard!661
2024-08-15 11:54:41 +00:00
5e0c95feea Release Squeekboard 1.41.0
New layouts:
 - Malayalam
 - German (Bone)
 - German (Neo 2)

New icons:
 - zwsp (zero-width-space)
 - zwj (zero-width-joiner)

Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/661>
2024-08-15 10:48:05 +02:00
c7c6081da3 Cargo.lock: Update dependencies
Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/661>
2024-08-14 18:22:08 +02:00
8c6c66e867 Merge branch 'xkbcommon-0.7' into 'main'
Port to crate xkbcommon 0.7

See merge request World/Phosh/squeekboard!656
2024-08-14 15:29:10 +00:00
34564edf32 Port to crate xkbcommon 0.7
Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/656>
2024-08-14 15:18:43 +00:00
a267f6c742 Merge branch 'add-malayalam-layout' into 'main'
Layouts: Add Malayalam layout

See merge request World/Phosh/squeekboard!660
2024-08-13 08:31:57 +00:00
0b0585eb66 Layouts: Add Malayalam layout
Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/660>
2024-08-12 17:50:38 +02:00
ab4659ea03 data/icons: Add zwsp and zwj
Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/660>
2024-08-12 17:50:37 +02:00
9c9f953efd Merge branch 'use-vendored-dependencies' into 'main'
Build: Use vendored dependencies for building .deb packages

See merge request World/Phosh/squeekboard!659
2024-08-11 15:03:26 +00:00
4ea7cccaec debian/cargo/config: Rename to config.toml
to fix a deprecation-warning:

"…/squeekboard/debian/cargo/config` is deprecated in favor of `config.toml`
note: if you need to support cargo 1.38 or earlier,
you can symlink `config` to `config.toml`"

Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/659>
2024-08-11 14:53:39 +00:00
117b3e0763 Build: Use vendored dependencies for building .deb packages
It is currently not possible to build Squeekboard with only
packages that are available in Debian.
This is not likely to change until Squeekboard has been ported
to GTK4 or gtk4-layer-shell.
Until then, vendor the dependencies during the build,
so that one can still use the ".deb"-packages for testing.

Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/659>
2024-08-11 14:53:39 +00:00
c3f46c8db8 Build/CI: Remove workaround that does not work any more
Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/659>
2024-08-11 14:53:39 +00:00
60f8249fe6 Merge branch 'make-rust-analyzer-work' into 'main'
Build: Use meson_Cargo.toml.in for setting up the build

See merge request World/Phosh/squeekboard!657
2024-08-11 08:32:59 +00:00
271184b9d1 .gitignore: Ignore more files
Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/657>
2024-08-11 08:17:03 +00:00
0403fe4cde Build: Use meson_Cargo.toml.in for setting up the build
to make rust-analyzer work correctly.

When the paths in Cargo.toml have '@path@' in them,
rust-analyzer cannot find the correct paths.

Before this change, rust-analyzer was unable to offer information
about code (in files other than main.rs), and instead
showed an error-message:
"1:1 unused: This file is not included anywhere in the module tree,
so rust-analyzer can't offer IDE services.".

Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/657>
2024-08-11 08:17:03 +00:00
0b83eb7d9f Merge branch 'add-ergonomic-de-layouts' into 'main'
Layouts: Add ergonomic German layouts

See merge request World/Phosh/squeekboard!658
2024-08-08 20:39:24 +00:00
a905d03fc9 resources.rs: Correct sorting of layouts
Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/658>
2024-08-05 12:41:00 +02:00
9f7d2d539e Layouts: Add ergonomic German layouts
The "Neo 2"-layout is optimised for typing in German.
The "Bone"-layout is an improved version of the "Neo 2"-layout.

Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/658>
2024-08-05 12:40:54 +02:00
27 changed files with 894 additions and 220 deletions

11
.gitignore vendored
View File

@ -1,9 +1,20 @@
_build/
debian/.debhelper/
debian/cargo/registry/
debian/cargo/.*cache*
debian/debhelper-build-stamp
debian/files
debian/*.substvars
debian/squeekboard/
debian/squeekboard-devel/
debian/tmp/
meson_Cargo.toml.in
po/squeekboard.pot
po/*.mo
TAGS
tags
target/
vendor/
vgdump
*.swp
*~

View File

@ -23,9 +23,6 @@ stages:
- deploy
before_script:
# Workaround for unavailable dependencies
- mv debian/control.debian-testing debian/control
# End of workaround for unavailable dependencies
- apt-get -y update
- apt-get -y install ca-certificates
@ -65,17 +62,6 @@ build_deb:
- '*.deb'
script:
- rm -f ../*.deb
# Workaround for unavailable dependencies
# TODO: Port Squeekboard to GTK4/GTK4-layer-shell
# https://gitlab.gnome.org/World/Phosh/squeekboard/-/issues/64
- echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
- echo "deb http://deb.debian.org/debian/ experimental main" > /etc/apt/sources.list.d/experimental.list
- echo "APT::Default-Release \"trixie\";" > /etc/apt/apt.conf.d/default-release
- apt-get -y update
- apt-get -y --no-upgrade install librust-gio-dev librust-glib-dev librust-glib-sys-dev
librust-gtk-dev librust-gtk-sys-dev
- apt-get -y --no-upgrade install -t experimental librust-serde-yaml-dev
# End of workaround for unavailable dependencies
- apt-get -y build-dep .
- apt-get -y install devscripts
- REV=$(git log -1 --format=%h)

192
Cargo.lock generated
View File

@ -4,9 +4,9 @@ version = 3
[[package]]
name = "anstyle"
version = "1.0.7"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"
checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
[[package]]
name = "async-io"
@ -74,9 +74,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.5.0"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
[[package]]
name = "byteorder"
@ -90,7 +90,7 @@ version = "0.18.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
dependencies = [
"bitflags 2.5.0",
"bitflags 2.6.0",
"cairo-sys-rs",
"glib",
"libc",
@ -111,9 +111,12 @@ dependencies = [
[[package]]
name = "cc"
version = "1.0.96"
version = "1.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "065a29261d53ba54260972629f9ca6bffa69bac13cd1fed61420f7fa68b9f8bd"
checksum = "5fb8dd288a69fc53a1996d7ecfbf4a20d59065bff137ce7e56bbd620de191189"
dependencies = [
"shlex",
]
[[package]]
name = "cfg-expr"
@ -133,18 +136,18 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
version = "4.4.18"
version = "4.5.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c"
checksum = "11d8838454fda655dafd3accb2b6e2bea645b9e4078abe84a22ceb947235c5cc"
dependencies = [
"clap_builder",
]
[[package]]
name = "clap_builder"
version = "4.4.18"
version = "4.5.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7"
checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6"
dependencies = [
"anstyle",
"clap_lex",
@ -152,9 +155,9 @@ dependencies = [
[[package]]
name = "clap_lex"
version = "0.6.0"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
[[package]]
name = "concurrent-queue"
@ -167,9 +170,9 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
version = "0.8.19"
version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
[[package]]
name = "derivative"
@ -211,9 +214,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "errno"
version = "0.3.8"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
dependencies = [
"libc",
"windows-sys 0.52.0",
@ -315,7 +318,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.60",
"syn 2.0.74",
]
[[package]]
@ -444,7 +447,7 @@ version = "0.18.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
dependencies = [
"bitflags 2.5.0",
"bitflags 2.6.0",
"futures-channel",
"futures-core",
"futures-executor",
@ -472,7 +475,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.60",
"syn 2.0.74",
]
[[package]]
@ -545,7 +548,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.60",
"syn 2.0.74",
]
[[package]]
@ -574,9 +577,9 @@ checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
[[package]]
name = "indexmap"
version = "2.2.6"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c"
dependencies = [
"equivalent",
"hashbrown",
@ -584,9 +587,9 @@ dependencies = [
[[package]]
name = "instant"
version = "0.1.12"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
dependencies = [
"cfg-if",
]
@ -610,9 +613,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
[[package]]
name = "libc"
version = "0.2.154"
version = "0.2.155"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]]
name = "linux-raw-sys"
@ -622,9 +625,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
[[package]]
name = "log"
version = "0.4.21"
version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
[[package]]
name = "maplit"
@ -634,15 +637,15 @@ checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
[[package]]
name = "memchr"
version = "2.7.2"
version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "memmap2"
version = "0.7.1"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6"
checksum = "43a5a03cefb0d953ec0be133036f14e109412fa594edc2f77227249db66cc3ed"
dependencies = [
"libc",
]
@ -814,9 +817,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.81"
version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
dependencies = [
"unicode-ident",
]
@ -878,9 +881,9 @@ dependencies = [
[[package]]
name = "ryu"
version = "1.0.17"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
[[package]]
name = "scoped-tls"
@ -890,28 +893,28 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
[[package]]
name = "semver"
version = "1.0.22"
version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
[[package]]
name = "serde"
version = "1.0.200"
version = "1.0.207"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f"
checksum = "5665e14a49a4ea1b91029ba7d3bca9f299e1f7cfa194388ccc20f14743e784f2"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.200"
version = "1.0.207"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb"
checksum = "6aea2634c86b0e8ef2cfdc0c340baede54ec27b1e46febd7f80dffb2aa44a00e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.60",
"syn 2.0.74",
]
[[package]]
@ -922,14 +925,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.60",
"syn 2.0.74",
]
[[package]]
name = "serde_spanned"
version = "0.6.5"
version = "0.6.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
dependencies = [
"serde",
]
@ -947,6 +950,12 @@ dependencies = [
"unsafe-libyaml",
]
[[package]]
name = "shlex"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "slab"
version = "0.4.9"
@ -991,9 +1000,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.60"
version = "2.0.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7"
dependencies = [
"proc-macro2",
"quote",
@ -1015,28 +1024,28 @@ dependencies = [
[[package]]
name = "target-lexicon"
version = "0.12.14"
version = "0.12.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "thiserror"
version = "1.0.59"
version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa"
checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.59"
version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66"
checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.60",
"syn 2.0.74",
]
[[package]]
@ -1113,15 +1122,15 @@ checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
[[package]]
name = "version_check"
version = "0.9.4"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "waker-fn"
version = "1.1.1"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690"
checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7"
[[package]]
name = "winapi"
@ -1160,7 +1169,7 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
"windows-targets 0.52.5",
"windows-targets 0.52.6",
]
[[package]]
@ -1180,18 +1189,18 @@ dependencies = [
[[package]]
name = "windows-targets"
version = "0.52.5"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
"windows_aarch64_gnullvm 0.52.5",
"windows_aarch64_msvc 0.52.5",
"windows_i686_gnu 0.52.5",
"windows_aarch64_gnullvm 0.52.6",
"windows_aarch64_msvc 0.52.6",
"windows_i686_gnu 0.52.6",
"windows_i686_gnullvm",
"windows_i686_msvc 0.52.5",
"windows_x86_64_gnu 0.52.5",
"windows_x86_64_gnullvm 0.52.5",
"windows_x86_64_msvc 0.52.5",
"windows_i686_msvc 0.52.6",
"windows_x86_64_gnu 0.52.6",
"windows_x86_64_gnullvm 0.52.6",
"windows_x86_64_msvc 0.52.6",
]
[[package]]
@ -1202,9 +1211,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.5"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_msvc"
@ -1214,9 +1223,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.5"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_i686_gnu"
@ -1226,15 +1235,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_gnu"
version = "0.52.5"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.5"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
@ -1244,9 +1253,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_i686_msvc"
version = "0.52.5"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_x86_64_gnu"
@ -1256,9 +1265,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.5"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnullvm"
@ -1268,9 +1277,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.5"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_msvc"
@ -1280,9 +1289,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.5"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winnow"
@ -1295,14 +1304,21 @@ dependencies = [
[[package]]
name = "xkbcommon"
version = "0.5.1"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52db25b599e92bf6e3904134618728eeb7b49a5a4f38f107f92399bb9c496b88"
checksum = "13867d259930edc7091a6c41b4ce6eee464328c6ff9659b7e4c668ca20d4c91e"
dependencies = [
"libc",
"memmap2",
"xkeysym",
]
[[package]]
name = "xkeysym"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56"
[[package]]
name = "zbus"
version = "1.9.3"

View File

@ -5,21 +5,21 @@ edition = "2021"
[lib]
name = "rs"
path = "@path@/src/lib.rs"
path = "src/lib.rs"
crate-type = ["staticlib", "rlib"]
# Cargo can't do autodiscovery if Cargo.toml is not in the root.
[[bin]]
name = "test_layout"
path = "@path@/src/bin/test_layout.rs"
path = "src/bin/test_layout.rs"
[[example]]
name = "test_layout"
path = "@path@/examples/test_layout.rs"
path = "examples/test_layout.rs"
[[example]]
name = "find_orphan_layouts"
path = "@path@/examples/find_orphan_layouts.rs"
path = "examples/find_orphan_layouts.rs"
[features]
zbus_v1_5 = []
@ -30,11 +30,11 @@ maplit = "1.0.*"
serde = { version = "1.0.*", features = ["derive"] }
serde_yaml = "0.9.*"
bitflags = "1.3.*"
clap = { version = "4.4.*", features=["std"], default-features = false }
clap = { version = ">=4.4", features=["std"], default-features = false }
zbus = "1.9.*"
zvariant = "2.10.*"
zvariant_derive = "2.10.*"
xkbcommon = { version = "0.5.*", features = ["wayland"] }
xkbcommon = { version = "0.7.*", features = ["wayland"] }
[dependencies.cairo-rs]
version = "0.18.*"

26
NEWS.md
View File

@ -1,4 +1,16 @@
1.39.0
squeekboard 1.41.0
------------------
New layouts:
- Malayalam
- German (Bone)
- German (Neo 2)
New icons:
- zwsp (zero-width-space)
- zwj (zero-width-joiner)
squeekboard 1.39.0
------------------
New button-styles:
@ -27,7 +39,7 @@ Changes:
Development:
- Scaling-tests for many display-types have been added.
1.38.0
squeekboard 1.38.0
------------------
Changes:
@ -45,13 +57,13 @@ Development:
- Squeekboard's main development-platform is now Debian Testing
- The layout-files have been cleaned up, so that those are easier to understand and edit
1.24.0
squeekboard 1.24.0
------------------
Changes:
- The emoji-layout has been replaced with a new one, which offers many more emojis to choose from.
1.23.0
squeekboard 1.23.0
------------------
New or updated translations:
@ -68,7 +80,7 @@ Changes:
- Fixed various small style-issues in many layouts
- Improved the US-terminal-layout
1.22.0 "Superposition"
squeekboard 1.22.0 "Superposition"
------------------
New or updated translations:
@ -79,7 +91,7 @@ Changes:
- fixed panel sizing when rotating
- fixed Dvorak terminal layout
1.21.0 "Expected value"
squeekboard 1.21.0 "Expected value"
------------------
New or updated translations:
@ -97,7 +109,7 @@ Changes:
- fixed panel sizing when rotating
- internal improvements.
1.20.0 "PID controller"
squeekboard 1.20.0 "PID controller"
------------------
New translations:

View File

@ -11,6 +11,10 @@ sq_view.gr_polytonic {
font-size: 2em;
}
sq_view.in_mal {
font-size: 1em;
}
sq_view.ir_azb {
font-size: 1.368em;
}

8
data/icons/zwj.svg Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="200" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g fill="none" stroke="#000">
<path d="m135.66 182.97a51.681 32.879 0 0 1-71.332 9.8e-4" stroke-width="12.123"/>
<path d="m135.66 17.029a51.681 32.879 0 0 0-71.332-0.0011" stroke-width="12.123"/>
<path d="m100 7.7071v184.59" stroke-width="10"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 384 B

8
data/icons/zwsp.svg Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="200" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g fill="none" stroke="#000">
<circle cx="100" cy="20.429" r="14.118" stroke-width="9.05"/>
<circle cx="100" cy="179.57" r="14.118" stroke-width="9.05"/>
<path d="m100 34.739v130.52" stroke-width="8.5856"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 346 B

121
data/keyboards/de+bone.yaml Normal file
View File

@ -0,0 +1,121 @@
---
outlines:
default: { width: 32.12, height: 52 }
subtle-highlight: { width: 32.12, height: 52 }
special: { width: 32.12, height: 52 }
altline: { width: 48.17, height: 52 }
change-view: { width: 48.17, height: 52 }
fill: { width: 64.24, height: 52 }
subtle-highlight-2: { width: 64.24, height: 52 }
spaceline: { width: 112.45, height: 52 }
views:
base:
- "j d u a x p h l m w ß"
- "c t i e o b n r s g q"
- "Shift_L f v ü ä ö y z k BackSpace"
- "show_numbers show_eschars preferences space , . Return"
upper:
- "J D U A X P H L M W ẞ"
- "C T I E O B N R S G Q"
- "Shift_L F V Ü Ä Ö Y Z K BackSpace"
- "show_numbers show_eschars preferences space ! ? Return"
numbers:
- "1 2 3 4 5 6 7 8 9 0"
- "@ # € % & - _ + ( )"
- "show_symbols ; \" ' : = < > BackSpace"
- "show_letters show_eschars preferences space , . Return"
symbols:
- "~ ` ´ | · √ µ ÷ × ¶"
- "© ® £ $ ¥ ^ ° * { }"
- "show_numbers \\ / § π τ [ ] BackSpace"
- "show_letters show_eschars preferences space , . Return"
eschars:
- "ä-subtle-highlight è é ö-subtle-highlight ü-subtle-highlight-2 Ä-subtle-highlight È É Ö-subtle-highlight Ü-subtle-highlight"
- "à â ê î ô À Â Ê Î Ô"
- "show_numbers « » ç Ç æ œ ß-subtle-highlight BackSpace"
- "show_letters show_eschars preferences space „ “ Return"
buttons:
Shift_L:
action:
locking:
lock_view: "upper"
unlock_view: "base"
outline: "change-view"
icon: "key-shift"
BackSpace:
outline: "altline"
icon: "edit-clear-symbolic"
action: "erase"
preferences:
action: "show_prefs"
outline: "special"
icon: "keyboard-mode-symbolic"
show_numbers:
action:
set_view: "numbers"
outline: "change-view"
label: "123"
show_letters:
action:
set_view: "base"
outline: "change-view"
label: "ABC"
show_symbols:
action:
set_view: "symbols"
outline: "change-view"
label: "*/="
show_eschars:
action:
locking:
lock_view: "eschars"
unlock_view: "base"
outline: "change-view"
label: "Ää"
space:
outline: "spaceline"
text: " "
Return:
outline: "altline"
icon: "key-enter"
keysym: "Return"
ä-subtle-highlight:
outline: "subtle-highlight"
text: "ä"
ö-subtle-highlight:
outline: "subtle-highlight"
text: "ö"
ü-subtle-highlight-2:
outline: "subtle-highlight-2"
text: "ü"
Ä-subtle-highlight:
outline: "subtle-highlight"
text: "Ä"
Ö-subtle-highlight:
outline: "subtle-highlight"
text: "Ö"
Ü-subtle-highlight:
outline: "subtle-highlight"
text: "Ü"
ß-subtle-highlight:
outline: "subtle-highlight"
text: "ß"
5:
outline: "fill"
"&":
outline: "fill"
·:
outline: "fill"
¥:
outline: "fill"
ô:
outline: "fill"
Ç:
outline: "fill"
":":
outline: "fill"
π:
outline: "fill"

View File

@ -0,0 +1,121 @@
---
outlines:
default: { width: 48.87, height: 42 }
subtle-highlight: { width: 48.87, height: 42 }
special: { width: 48.87, height: 42 }
altline: { width: 73.31, height: 42 }
change-view: { width: 73.31, height: 42 }
fill: { width: 97.74, height: 42 }
subtle-highlight-2: { width: 97.74, height: 42 }
spaceline: { width: 171.03, height: 42 }
views:
base:
- "j d u a x p h l m w ß"
- "c t i e o b n r s g q"
- "Shift_L f v ü ä ö y z k BackSpace"
- "show_numbers show_eschars preferences space , . Return"
upper:
- "J D U A X P H L M W ẞ"
- "C T I E O B N R S G Q"
- "Shift_L F V Ü Ä Ö Y Z K BackSpace"
- "show_numbers show_eschars preferences space ! ? Return"
numbers:
- "1 2 3 4 5 6 7 8 9 0"
- "@ # € % & - _ + ( )"
- "show_symbols ; \" ' : = < > BackSpace"
- "show_letters show_eschars preferences space , . Return"
symbols:
- "~ ` ´ | · √ µ ÷ × ¶"
- "© ® £ $ ¥ ^ ° * { }"
- "show_numbers \\ / § π τ [ ] BackSpace"
- "show_letters show_eschars preferences space , . Return"
eschars:
- "ä-subtle-highlight è é ö-subtle-highlight ü-subtle-highlight-2 Ä-subtle-highlight È É Ö-subtle-highlight Ü-subtle-highlight"
- "à â ê î ô À Â Ê Î Ô"
- "show_numbers « » ç Ç æ œ ß-subtle-highlight BackSpace"
- "show_letters show_eschars preferences space „ “ Return"
buttons:
Shift_L:
action:
locking:
lock_view: "upper"
unlock_view: "base"
outline: "change-view"
icon: "key-shift"
BackSpace:
outline: "altline"
icon: "edit-clear-symbolic"
action: "erase"
preferences:
action: "show_prefs"
outline: "special"
icon: "keyboard-mode-symbolic"
show_numbers:
action:
set_view: "numbers"
outline: "change-view"
label: "123"
show_letters:
action:
set_view: "base"
outline: "change-view"
label: "ABC"
show_symbols:
action:
set_view: "symbols"
outline: "change-view"
label: "*/="
show_eschars:
action:
locking:
lock_view: "eschars"
unlock_view: "base"
outline: "change-view"
label: "Ää"
space:
outline: "spaceline"
text: " "
Return:
outline: "altline"
icon: "key-enter"
keysym: "Return"
ä-subtle-highlight:
outline: "subtle-highlight"
text: "ä"
ö-subtle-highlight:
outline: "subtle-highlight"
text: "ö"
ü-subtle-highlight-2:
outline: "subtle-highlight-2"
text: "ü"
Ä-subtle-highlight:
outline: "subtle-highlight"
text: "Ä"
Ö-subtle-highlight:
outline: "subtle-highlight"
text: "Ö"
Ü-subtle-highlight:
outline: "subtle-highlight"
text: "Ü"
ß-subtle-highlight:
outline: "subtle-highlight"
text: "ß"
5:
outline: "fill"
"&":
outline: "fill"
·:
outline: "fill"
¥:
outline: "fill"
ô:
outline: "fill"
Ç:
outline: "fill"
":":
outline: "fill"
π:
outline: "fill"

121
data/keyboards/de+neo.yaml Normal file
View File

@ -0,0 +1,121 @@
---
outlines:
default: { width: 32.12, height: 52 }
subtle-highlight: { width: 32.12, height: 52 }
special: { width: 32.12, height: 52 }
altline: { width: 48.17, height: 52 }
change-view: { width: 48.17, height: 52 }
fill: { width: 64.24, height: 52 }
subtle-highlight-2: { width: 64.24, height: 52 }
spaceline: { width: 112.45, height: 52 }
views:
base:
- "x v l c w k h g f q ß"
- "u i a e o s n r t d y"
- "Shift_L ü ö ä p z b m j BackSpace"
- "show_numbers show_eschars preferences space , . Return"
upper:
- "X V L C W K H G F Q ẞ"
- "U I A E O S N R T D Y"
- "Shift_L Ü Ö Ä P Z B M J BackSpace"
- "show_numbers show_eschars preferences space ! ? Return"
numbers:
- "1 2 3 4 5 6 7 8 9 0"
- "@ # € % & - _ + ( )"
- "show_symbols ; \" ' : = < > BackSpace"
- "show_letters show_eschars preferences space , . Return"
symbols:
- "~ ` ´ | · √ µ ÷ × ¶"
- "© ® £ $ ¥ ^ ° * { }"
- "show_numbers \\ / § π τ [ ] BackSpace"
- "show_letters show_eschars preferences space , . Return"
eschars:
- "ä-subtle-highlight è é ö-subtle-highlight ü-subtle-highlight-2 Ä-subtle-highlight È É Ö-subtle-highlight Ü-subtle-highlight"
- "à â ê î ô À Â Ê Î Ô"
- "show_numbers « » ç Ç æ œ ß-subtle-highlight BackSpace"
- "show_letters show_eschars preferences space „ “ Return"
buttons:
Shift_L:
action:
locking:
lock_view: "upper"
unlock_view: "base"
outline: "change-view"
icon: "key-shift"
BackSpace:
outline: "altline"
icon: "edit-clear-symbolic"
action: "erase"
preferences:
action: "show_prefs"
outline: "special"
icon: "keyboard-mode-symbolic"
show_numbers:
action:
set_view: "numbers"
outline: "change-view"
label: "123"
show_letters:
action:
set_view: "base"
outline: "change-view"
label: "ABC"
show_symbols:
action:
set_view: "symbols"
outline: "change-view"
label: "*/="
show_eschars:
action:
locking:
lock_view: "eschars"
unlock_view: "base"
outline: "change-view"
label: "Ää"
space:
outline: "spaceline"
text: " "
Return:
outline: "altline"
icon: "key-enter"
keysym: "Return"
ä-subtle-highlight:
outline: "subtle-highlight"
text: "ä"
ö-subtle-highlight:
outline: "subtle-highlight"
text: "ö"
ü-subtle-highlight-2:
outline: "subtle-highlight-2"
text: "ü"
Ä-subtle-highlight:
outline: "subtle-highlight"
text: "Ä"
Ö-subtle-highlight:
outline: "subtle-highlight"
text: "Ö"
Ü-subtle-highlight:
outline: "subtle-highlight"
text: "Ü"
ß-subtle-highlight:
outline: "subtle-highlight"
text: "ß"
5:
outline: "fill"
"&":
outline: "fill"
·:
outline: "fill"
¥:
outline: "fill"
ô:
outline: "fill"
Ç:
outline: "fill"
":":
outline: "fill"
π:
outline: "fill"

View File

@ -0,0 +1,121 @@
---
outlines:
default: { width: 48.87, height: 42 }
subtle-highlight: { width: 48.87, height: 42 }
special: { width: 48.87, height: 42 }
altline: { width: 73.31, height: 42 }
change-view: { width: 73.31, height: 42 }
fill: { width: 97.74, height: 42 }
subtle-highlight-2: { width: 97.74, height: 42 }
spaceline: { width: 171.03, height: 42 }
views:
base:
- "x v l c w k h g f q ß"
- "u i a e o s n r t d y"
- "Shift_L ü ö ä p z b m j BackSpace"
- "show_numbers show_eschars preferences space , . Return"
upper:
- "X V L C W K H G F Q ẞ"
- "U I A E O S N R T D Y"
- "Shift_L Ü Ö Ä P Z B M J BackSpace"
- "show_numbers show_eschars preferences space ! ? Return"
numbers:
- "1 2 3 4 5 6 7 8 9 0"
- "@ # € % & - _ + ( )"
- "show_symbols ; \" ' : = < > BackSpace"
- "show_letters show_eschars preferences space , . Return"
symbols:
- "~ ` ´ | · √ µ ÷ × ¶"
- "© ® £ $ ¥ ^ ° * { }"
- "show_numbers \\ / § π τ [ ] BackSpace"
- "show_letters show_eschars preferences space , . Return"
eschars:
- "ä-subtle-highlight è é ö-subtle-highlight ü-subtle-highlight-2 Ä-subtle-highlight È É Ö-subtle-highlight Ü-subtle-highlight"
- "à â ê î ô À Â Ê Î Ô"
- "show_numbers « » ç Ç æ œ ß-subtle-highlight BackSpace"
- "show_letters show_eschars preferences space „ “ Return"
buttons:
Shift_L:
action:
locking:
lock_view: "upper"
unlock_view: "base"
outline: "change-view"
icon: "key-shift"
BackSpace:
outline: "altline"
icon: "edit-clear-symbolic"
action: "erase"
preferences:
action: "show_prefs"
outline: "special"
icon: "keyboard-mode-symbolic"
show_numbers:
action:
set_view: "numbers"
outline: "change-view"
label: "123"
show_letters:
action:
set_view: "base"
outline: "change-view"
label: "ABC"
show_symbols:
action:
set_view: "symbols"
outline: "change-view"
label: "*/="
show_eschars:
action:
locking:
lock_view: "eschars"
unlock_view: "base"
outline: "change-view"
label: "Ää"
space:
outline: "spaceline"
text: " "
Return:
outline: "altline"
icon: "key-enter"
keysym: "Return"
ä-subtle-highlight:
outline: "subtle-highlight"
text: "ä"
ö-subtle-highlight:
outline: "subtle-highlight"
text: "ö"
ü-subtle-highlight-2:
outline: "subtle-highlight-2"
text: "ü"
Ä-subtle-highlight:
outline: "subtle-highlight"
text: "Ä"
Ö-subtle-highlight:
outline: "subtle-highlight"
text: "Ö"
Ü-subtle-highlight:
outline: "subtle-highlight"
text: "Ü"
ß-subtle-highlight:
outline: "subtle-highlight"
text: "ß"
5:
outline: "fill"
"&":
outline: "fill"
·:
outline: "fill"
¥:
outline: "fill"
ô:
outline: "fill"
Ç:
outline: "fill"
":":
outline: "fill"
π:
outline: "fill"

View File

@ -0,0 +1,88 @@
---
outlines:
default: { width: 29.44, height: 44.5 }
altline: { width: 58.88, height: 44.5 }
change-view: { width: 58.88, height: 44.5 }
spaceline: { width: 235.52, height: 44.5 }
special: { width: 29.44, height: 44.5 }
placeholder: { width: 29.44, height: 44.5 }
views:
base:
- " ൊ ൧ ൨ ൩ ൪ ൫ ൬ ൮ ൯ - ൃ "
- " ൗ ൈ ാ ീ ൂ ബ ഹ ഗ ദ ജ ഡ zwj zwnj "
- " -- ോ േ ് ി ു പ ര ക ത ച ട zwsp "
- "Shift_L െ മ ന വ ല സ യ -- BackSpace"
- "show_numbers preferences space Return"
upper:
- " ഒ ! @ # ₹ % ^ & ൾ ( ) ഃ ഋ "
- " ഔ ഐ ആ ഈ ഊ ഭ ങ ഘ ധ ഝ ഢ ഞ ർ "
- " -- ഓ ഏ അ ഇ ഉ ഫ റ ഖ ഥ ഛ -- "
- "Shift_L എ ൺ ണ ൻ ഴ ള ശ ഷ ൽ BackSpace"
- "show_numbers preferences space Return"
numbers:
- " -- ൧ ൨ ൩ ൪ ൫ ൬ ൮ ൯ -- -- "
- "-- 1 2 3 4 5 6 7 8 9 0 -- --"
- "-- @ # $ % & - _ + ( ) -- --"
- "show_symbols ₹ , \" ' : ; ! ? -- BackSpace"
- "show_letters preferences space Return"
symbols:
- "-- -- -- -- -- -- -- -- -- -- -- -- --"
- "-- ~ ` | · √ π τ ÷ × ¶ -- --"
- "-- © ® £ € ¥ ^ ° * { } -- --"
- "show_numbers -- \\ / < > = [ ] -- BackSpace"
- "show_letters preferences space Return"
buttons:
Shift_L:
action:
locking:
lock_view: "upper"
unlock_view: "base"
outline: "change-view"
icon: "key-shift"
BackSpace:
outline: "altline"
icon: "edit-clear-symbolic"
action: "erase"
preferences:
action: "show_prefs"
outline: "special"
icon: "keyboard-mode-symbolic"
show_numbers:
action:
set_view: "numbers"
outline: "change-view"
label: "123"
show_letters:
action:
set_view: "base"
outline: "change-view"
label: "ABC"
show_symbols:
action:
set_view: "symbols"
outline: "change-view"
label: "*/="
space:
outline: "spaceline"
text: " "
Return:
outline: "altline"
icon: "key-enter"
keysym: "Return"
--:
outline: "placeholder"
text: ""
# U+200B - zero-width-space
zwsp:
icon: "zwsp"
text: ""
# U+200C - zero-width-non-joiner
zwnj:
icon: "zwnj"
text: ""
# U+200D - zero-width-joiner
zwj:
icon: "zwj"
text: ""

View File

@ -0,0 +1,88 @@
---
outlines:
default: { width: 45.11, height: 36.65 }
altline: { width: 90.22, height: 36.65 }
change-view: { width: 90.22, height: 36.65 }
spaceline: { width: 360.88, height: 36.65 }
special: { width: 45.11, height: 36.65 }
placeholder: { width: 45.11, height: 36.65 }
views:
base:
- " ൊ ൧ ൨ ൩ ൪ ൫ ൬ ൮ ൯ - ൃ "
- " ൗ ൈ ാ ീ ൂ ബ ഹ ഗ ദ ജ ഡ zwj zwnj "
- " -- ോ േ ് ി ു പ ര ക ത ച ട zwsp "
- "Shift_L െ മ ന വ ല സ യ -- BackSpace"
- "show_numbers preferences space Return"
upper:
- " ഒ ! @ # ₹ % ^ & ൾ ( ) ഃ ഋ "
- " ഔ ഐ ആ ഈ ഊ ഭ ങ ഘ ധ ഝ ഢ ഞ ർ "
- " -- ഓ ഏ അ ഇ ഉ ഫ റ ഖ ഥ ഛ -- "
- "Shift_L എ ൺ ണ ൻ ഴ ള ശ ഷ ൽ BackSpace"
- "show_numbers preferences space Return"
numbers:
- " -- ൧ ൨ ൩ ൪ ൫ ൬ ൮ ൯ -- -- "
- "-- 1 2 3 4 5 6 7 8 9 0 -- --"
- "-- @ # $ % & - _ + ( ) -- --"
- "show_symbols ₹ , \" ' : ; ! ? -- BackSpace"
- "show_letters preferences space Return"
symbols:
- "-- -- -- -- -- -- -- -- -- -- -- -- --"
- "-- ~ ` | · √ π τ ÷ × ¶ -- --"
- "-- © ® £ € ¥ ^ ° * { } -- --"
- "show_numbers -- \\ / < > = [ ] -- BackSpace"
- "show_letters preferences space Return"
buttons:
Shift_L:
action:
locking:
lock_view: "upper"
unlock_view: "base"
outline: "change-view"
icon: "key-shift"
BackSpace:
outline: "altline"
icon: "edit-clear-symbolic"
action: "erase"
preferences:
action: "show_prefs"
outline: "special"
icon: "keyboard-mode-symbolic"
show_numbers:
action:
set_view: "numbers"
outline: "change-view"
label: "123"
show_letters:
action:
set_view: "base"
outline: "change-view"
label: "ABC"
show_symbols:
action:
set_view: "symbols"
outline: "change-view"
label: "*/="
space:
outline: "spaceline"
text: " "
Return:
outline: "altline"
icon: "key-enter"
keysym: "Return"
--:
outline: "placeholder"
text: ""
# U+200B - zero-width-space
zwsp:
icon: "zwsp"
text: ""
# U+200C - zero-width-non-joiner
zwnj:
icon: "zwnj"
text: ""
# U+200D - zero-width-joiner
zwj:
icon: "zwj"
text: ""

View File

@ -8,6 +8,8 @@
<file>icons/key-enter.svg</file>
<file>icons/key-shift.svg</file>
<file>icons/keyboard-mode-symbolic.svg</file>
<file>icons/zwj.svg</file>
<file>icons/zwnj.svg</file>
<file>icons/zwsp.svg</file>
</gresource>
</gresources>

View File

@ -8,4 +8,7 @@ registry = 'https://github.com/rust-lang/crates.io-index'
replace-with = 'vendored-sources'
[source.vendored-sources]
directory = '/usr/share/cargo/registry'
# TODO: Use this instead of `../vendor`,
# after Squeekboard can also be built with Debian packages only.
# directory = '/usr/share/cargo/registry'
directory = '../vendor'

19
debian/changelog vendored
View File

@ -1,3 +1,22 @@
squeekboard (1.41.0) experimental; urgency=medium
[ MoonlightWave-12 ]
* Layouts: Add ergonomic German layouts
* resources.rs: Correct sorting of layouts
* Build: Use meson_Cargo.toml.in for setting up the build
* .gitignore: Ignore more files
* Build/CI: Remove workaround that does not work any more
* Build: Use vendored dependencies for building .deb packages
* debian/cargo/config: Rename to config.toml
* data/icons: Add zwsp and zwj
* Layouts: Add Malayalam layout
* Cargo.lock: Update dependencies
[ marcin ]
* Port to crate xkbcommon 0.7
-- MoonlightWave-12 <135532-MoonlightWave-12@users.noreply.gitlab.gnome.org> Wed, 14 Aug 2024 18:27:39 +0200
squeekboard (1.39.0) experimental; urgency=medium
[ MoonlightWave-12 ]

15
debian/control vendored
View File

@ -16,11 +16,16 @@ Build-Depends:
librust-aho-corasick-dev,
librust-bitflags-1-dev (>= 1.0),
librust-clap-4+std-dev (>= 4.0),
librust-gio+v2-58-dev (>= 0.18),
librust-glib+v2-58-dev (>= 0.18),
librust-glib-sys-dev (>= 0.18),
librust-gtk+v3-24-dev (>= 0.18),
librust-gtk-sys-dev (>= 0.18),
# TODO: Port to GTK4/GTK4-layer-shell
# https://gitlab.gnome.org/World/Phosh/squeekboard/-/issues/64
# These dependencies have been removed from Debian.
# Building with dependencies from "crates.io", which will be
# downloaded by `cargo` during the build, still works without these.
# librust-gio+v2-58-dev (>= 0.18),
# librust-glib+v2-58-dev (>= 0.18),
# librust-glib-sys-dev (>= 0.18),
# librust-gtk+v3-24-dev (>= 0.18),
# librust-gtk-sys-dev (>= 0.18),
librust-maplit-1-dev (>= 1.0),
librust-serde-derive-1-dev (>= 1.0),
librust-serde-yaml-0.9-dev (>= 0.9),

View File

@ -1,72 +0,0 @@
Source: squeekboard
Section: x11
Priority: optional
Maintainer: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
Build-Depends:
cargo,
debhelper-compat (= 13),
meson (>=0.51.0),
ninja-build,
pkg-config,
libbsd-dev,
libfeedback-dev,
libglib2.0-dev,
libgnome-desktop-3-dev,
libgtk-3-dev,
librust-aho-corasick-dev,
librust-bitflags-1-dev (>= 1.0),
librust-clap-4+std-dev (>= 4.0),
# TODO: Port to GTK4/GTK4-layer-shell
# https://gitlab.gnome.org/World/Phosh/squeekboard/-/issues/64
# These dependencies have been removed from Debian Testing.
# Building with dependencies from "crates.io" still works without these.
# librust-gio+v2-58-dev (>= 0.18),
# librust-glib+v2-58-dev (>= 0.18),
# librust-glib-sys-dev (>= 0.18),
# librust-gtk+v3-24-dev (>= 0.18),
# librust-gtk-sys-dev (>= 0.18),
librust-maplit-1-dev (>= 1.0),
librust-serde-derive-1-dev (>= 1.0),
# Currently in Debian Experimental
# librust-serde-yaml-0.9-dev (>= 0.9),
librust-thread-local-dev,
librust-xkbcommon-dev (>= 0.5),
librust-zbus-1-dev (>= 1.9),
librust-zvariant-2-dev (>= 2.10),
librust-zvariant-derive-2-dev (>= 2.10),
libwayland-dev (>= 1.16),
lsb-release,
python3,
python3-ruamel.yaml,
rustc,
wayland-protocols (>= 1.14),
Standards-Version: 4.1.3
Homepage: https://gitlab.gnome.org/World/Phosh/squeekboard
Rules-Requires-Root: no
Package: squeekboard
Architecture: linux-any
Depends:
# for Greek polytonic readability
fonts-gfs-didot-classic,
# for the Adwaita-dark theme
gnome-themes-extra-data,
${shlibs:Depends},
${misc:Depends},
Breaks:
librem5-base (<< 24),
Description: On-screen keyboard for Wayland
Virtual keyboard supporting Wayland, built primarily for the Librem 5 phone.
Package: squeekboard-devel
Architecture: linux-any
Depends:
python3,
python3-gi,
${shlibs:Depends},
${misc:Depends},
Description: Resources for making Squeekboard layouts
Tools for creating and testing Squeekboard layouts:
.
* squeekboard-entry
* squeekboard-test-layout

4
debian/rules vendored
View File

@ -26,3 +26,7 @@ export RUSTFLAGS = --remap-path-prefix=$(CURDIR)=/remap-pwd $(xgot)
%:
dh $@ --builddirectory=_build --buildsystem=meson
# TODO: Remove this, after Squeekboard can also be built with Debian packages only.
execute_before_dh_auto_configure:
cargo vendor

View File

@ -58,12 +58,6 @@ $ sudo apt-get -y build-dep .
For an explicit list of dependencies check the `Build-Depends` entry in the [`debian/control`](debian/control) file.
Note: Some build-dependencies are currently unavailable in Debian Testing.
To be able to install the build-dependencies with the previously mentioned commands anyway,
rename `control` in the `debian`-folder to `control.original`,
and `control.debian-testing` to `control` before using those commands.
The remaining dependencies will then be downloaded by `cargo` when building Squeekboard.
Testing
-------

View File

@ -1,7 +1,7 @@
project(
'squeekboard',
'c', 'rust',
version: '1.39.0',
version: '1.41.0',
license: 'GPLv3',
meson_version: '>=0.51.0',
default_options: [
@ -85,10 +85,16 @@ summary = [
]
message('\n'.join(summary))
# 'rust-analyzer' does not work correctly, when the paths in 'Cargo.toml' have '@path@' in them.
cp = find_program('cp')
sed = find_program('sed')
copy_cargo_toml = run_command('cp', 'Cargo.toml', 'meson_Cargo.toml.in')
prepare_cargo_toml = run_command('sed', '-i', 's/path = "/path = "@path@\//', 'meson_Cargo.toml.in')
path_data = configuration_data()
path_data.set('path', meson.source_root())
cargo_toml = configure_file(
input: 'Cargo.toml',
input: 'meson_Cargo.toml.in',
output: 'Cargo.toml',
configuration: path_data,
)

View File

@ -299,7 +299,7 @@ fn create_action<H: logging::Handler>(
.unwrap_or(&default_meta);
fn keysym_valid(name: &str) -> bool {
xkb::keysym_from_name(name, xkb::KEYSYM_NO_FLAGS) != xkb::KEY_NoSymbol
xkb::keysym_from_name(name, xkb::KEYSYM_NO_FLAGS).raw() != xkb::keysyms::KEY_NoSymbol
}
enum SubmitData {

View File

@ -300,8 +300,8 @@ mod tests {
let state = xkb::State::new(&keymap);
assert_eq!(state.key_get_one_sym(9), xkb::KEY_a);
assert_eq!(state.key_get_one_sym(10), xkb::KEY_c);
assert_eq!(state.key_get_one_sym(9u32.into()), xkb::keysyms::KEY_a.into());
assert_eq!(state.key_get_one_sym(10u32.into()), xkb::keysyms::KEY_c.into());
}
#[test]
@ -321,7 +321,7 @@ mod tests {
let state = xkb::State::new(&keymap);
assert_eq!(state.key_get_one_sym(9), xkb::KEY_a);
assert_eq!(state.key_get_one_sym(9u32.into()), xkb::keysyms::KEY_a.into());
}
#[test]

View File

@ -35,22 +35,25 @@ static KEYBOARDS: &[(&'static str, &'static str)] = &[
("ca", include_str!("../data/keyboards/ca.yaml")),
("ca_wide", include_str!("../data/keyboards/ca_wide.yaml")),
("ch+fr", include_str!("../data/keyboards/ch+fr.yaml")),
("ch+fr_wide", include_str!("../data/keyboards/ch+fr_wide.yaml")),
("ch+de", include_str!("../data/keyboards/ch+de.yaml")),
("ch+de_wide", include_str!("../data/keyboards/ch+de_wide.yaml")),
("ch", include_str!("../data/keyboards/ch.yaml")),
("ch_wide", include_str!("../data/keyboards/ch_wide.yaml")),
("de", include_str!("../data/keyboards/de.yaml")),
("de_wide", include_str!("../data/keyboards/de_wide.yaml")),
("ch+de", include_str!("../data/keyboards/ch+de.yaml")),
("ch+de_wide", include_str!("../data/keyboards/ch+de_wide.yaml")),
("ch+fr", include_str!("../data/keyboards/ch+fr.yaml")),
("ch+fr_wide", include_str!("../data/keyboards/ch+fr_wide.yaml")),
("cz", include_str!("../data/keyboards/cz.yaml")),
("cz_wide", include_str!("../data/keyboards/cz_wide.yaml")),
("cz+qwerty", include_str!("../data/keyboards/cz+qwerty.yaml")),
("cz+qwerty_wide", include_str!("../data/keyboards/cz+qwerty_wide.yaml")),
("de", include_str!("../data/keyboards/de.yaml")),
("de_wide", include_str!("../data/keyboards/de_wide.yaml")),
("de+bone", include_str!("../data/keyboards/de+bone.yaml")),
("de+bone_wide", include_str!("../data/keyboards/de+bone_wide.yaml")),
("de+neo", include_str!("../data/keyboards/de+neo.yaml")),
("de+neo_wide", include_str!("../data/keyboards/de+neo_wide.yaml")),
("dk", include_str!("../data/keyboards/dk.yaml")),
("dk_wide", include_str!("../data/keyboards/dk_wide.yaml")),
@ -84,6 +87,9 @@ static KEYBOARDS: &[(&'static str, &'static str)] = &[
("il", include_str!("../data/keyboards/il.yaml")),
("il_wide", include_str!("../data/keyboards/il_wide.yaml")),
("in+mal", include_str!("../data/keyboards/in+mal.yaml")),
("in+mal_wide", include_str!("../data/keyboards/in+mal_wide.yaml")),
("ir", include_str!("../data/keyboards/ir.yaml")),
("ir_wide", include_str!("../data/keyboards/ir_wide.yaml")),
@ -129,7 +135,6 @@ static KEYBOARDS: &[(&'static str, &'static str)] = &[
("us+colemak", include_str!("../data/keyboards/us+colemak.yaml")),
("us+colemak_wide", include_str!("../data/keyboards/us+colemak_wide.yaml")),
("us+dvorak", include_str!("../data/keyboards/us+dvorak.yaml")),
("us+dvorak_wide", include_str!("../data/keyboards/us+dvorak_wide.yaml")),

View File

@ -42,12 +42,12 @@ pub fn check_layout_file(path: &str) {
fn check_sym_in_keymap(state: &xkb::State, sym_name: &str) -> bool {
let sym = xkb::keysym_from_name(sym_name, xkb::KEYSYM_NO_FLAGS);
if sym == xkb::KEY_NoSymbol {
if sym.raw() == xkb::keysyms::KEY_NoSymbol {
panic!("Entered invalid keysym: {}", sym_name);
}
let map = state.get_keymap();
let range = map.min_keycode()..=map.max_keycode();
range.flat_map(|code| state.key_get_syms(code))
let range = map.min_keycode().raw()..=map.max_keycode().raw();
range.flat_map(|code| state.key_get_syms(code.into()))
.find(|s| **s == sym)
.is_some()
}
@ -110,8 +110,8 @@ fn check_layout(layout: Layout, allow_missing_return: bool) {
for (_y, row) in view.get_rows() {
for (_x, button) in row.get_buttons() {
for keycode in &button.keycodes {
match xkb_states[keycode.keymap_idx].key_get_one_sym(keycode.code) {
xkb::KEY_NoSymbol => {
match xkb_states[keycode.keymap_idx].key_get_one_sym(keycode.code.into()).raw() {
xkb::keysyms::KEY_NoSymbol => {
eprintln!(
"keymap {}: {}",
keycode.keymap_idx,

View File

@ -72,18 +72,21 @@ foreach layout : [
'cz', 'cz_wide',
'cz+qwerty', 'cz+qwerty_wide',
'de', 'de_wide',
'de+bone', 'de+bone_wide',
'de+neo', 'de+neo_wide',
'dk', 'dk_wide',
'epo', 'epo_wide',
'es', 'es_wide',
'es+cat', 'es+cat_wide',
'fi', 'fi_wide',
'fr', 'fr_wide',
'fr+bepo', 'fr+bepo_wide',
'ge', 'ge_wide',
'gr', 'gr_wide',
'gr+polytonic', 'gr+polytonic_wide',
'fr+bepo', 'fr+bepo_wide',
'hu', 'hu_wide',
'il', 'il_wide',
'in+mal', 'in+mal_wide',
'ir', 'ir_wide',
'it', 'it_wide',
'it+fur', 'it+fur_wide',