Compare commits
	
		
			67 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 805ca6b6aa | |||
| 8dc32bb126 | |||
| c4bd52e2f2 | |||
| 65d470de8a | |||
| f64ea8f085 | |||
| ff79647f05 | |||
| cc18ec727c | |||
| 0e8128d021 | |||
| ad69bd5b59 | |||
| 2d532aa0ff | |||
| 71c27d94b5 | |||
| 1d8a86d172 | |||
| fa972253be | |||
| 3899c042b8 | |||
| 492c4ba948 | |||
| e3d08fff88 | |||
| bc43abdb02 | |||
| bdcf23750d | |||
| 00b894993c | |||
| 4fed8c5b1e | |||
| ab37c2a7f2 | |||
| 79d21dde5e | |||
| 08493ed094 | |||
| b4b88f6a98 | |||
| 23b9687988 | |||
| e029c53401 | |||
| 015cae5c63 | |||
| f237807522 | |||
| 069d64ac3e | |||
| cd1e269a9d | |||
| bf45d4b71b | |||
| 4352f01486 | |||
| 805d276248 | |||
| 2ad2b09344 | |||
| b22cda800f | |||
| d299ba070d | |||
| cf2e6151bb | |||
| 6f978aee0b | |||
| 7117d1fe20 | |||
| eb28a8523f | |||
| d36febefc3 | |||
| c7ced7de2b | |||
| 4b73775695 | |||
| 23c5fc1fb8 | |||
| a60b9d019e | |||
| b791919075 | |||
| d801d45812 | |||
| 6145f9b652 | |||
| 8d96803e91 | |||
| 30904afb4b | |||
| 271640f391 | |||
| 76eadca47a | |||
| a25c083f92 | |||
| 4c8dbf9fe6 | |||
| 1fac218c70 | |||
| 01bde740bb | |||
| ef516c2082 | |||
| fe39632303 | |||
| e94619883b | |||
| af09304835 | |||
| bd96f4c0c2 | |||
| 83fda9d38a | |||
| 8c89b4dc2c | |||
| b17716a427 | |||
| 367d8dd5c7 | |||
| 97371b8dfb | |||
| 6f66edf8a1 | 
@ -1,4 +1,21 @@
 | 
			
		||||
image: pureos/byzantium
 | 
			
		||||
image: debian:bookworm
 | 
			
		||||
 | 
			
		||||
variables:
 | 
			
		||||
  DEBIAN_FRONTEND: noninteractive
 | 
			
		||||
 | 
			
		||||
default:
 | 
			
		||||
  # Protect CI infra from rogue jobs
 | 
			
		||||
  timeout: 15 minutes
 | 
			
		||||
  # Allow jobs to be caneled on new commits
 | 
			
		||||
  interruptible: true
 | 
			
		||||
  # Retry on infra hickups automatically
 | 
			
		||||
  retry:
 | 
			
		||||
    max: 1
 | 
			
		||||
    when:
 | 
			
		||||
      - api_failure
 | 
			
		||||
      - runner_system_failure
 | 
			
		||||
      - scheduler_failure
 | 
			
		||||
      - stuck_or_timeout_failure
 | 
			
		||||
 | 
			
		||||
stages:
 | 
			
		||||
  - build
 | 
			
		||||
@ -10,27 +27,25 @@ before_script:
 | 
			
		||||
  - apt-get -y install ca-certificates
 | 
			
		||||
 | 
			
		||||
build_docs:
 | 
			
		||||
  image: debian:trixie
 | 
			
		||||
  stage: build
 | 
			
		||||
  artifacts:
 | 
			
		||||
    paths:
 | 
			
		||||
      - _build
 | 
			
		||||
  script:
 | 
			
		||||
    - apt-get -y install python3-pip python3-sphinx
 | 
			
		||||
    - pip3 install recommonmark
 | 
			
		||||
    - apt-get -y install --on-install-recommends python3-pip python3-sphinx python3-recommonmark
 | 
			
		||||
    - ./doc/build.sh _build
 | 
			
		||||
  except:
 | 
			
		||||
    variables:
 | 
			
		||||
      - $PKG_ONLY == "1"
 | 
			
		||||
 | 
			
		||||
build_meson:
 | 
			
		||||
  image: debian:bookworm
 | 
			
		||||
  stage: build
 | 
			
		||||
  artifacts:
 | 
			
		||||
    paths:
 | 
			
		||||
      - _build
 | 
			
		||||
    expire_in: 3h
 | 
			
		||||
  script:
 | 
			
		||||
    - mv debian/control-newer debian/control
 | 
			
		||||
    - apt-get -y build-dep .
 | 
			
		||||
    - meson . _build/ -Ddepdatadir=/usr/share -Dfind_orphans=true --werror
 | 
			
		||||
    - ninja -C _build install
 | 
			
		||||
@ -39,45 +54,7 @@ build_meson:
 | 
			
		||||
      - $PKG_ONLY == "1"
 | 
			
		||||
 | 
			
		||||
build_deb:
 | 
			
		||||
  stage: build
 | 
			
		||||
  artifacts:
 | 
			
		||||
    paths:
 | 
			
		||||
      - '*.deb'
 | 
			
		||||
  script:
 | 
			
		||||
    - rm -f ../*.deb
 | 
			
		||||
    - apt-get -y build-dep .
 | 
			
		||||
    - apt-get -y install devscripts
 | 
			
		||||
    - REV=$(git log -1 --format=%h)
 | 
			
		||||
    - VER=$(dpkg-parsechangelog -SVersion)
 | 
			
		||||
    - DEBFULLNAME="Librem5 CI"
 | 
			
		||||
    - EMAIL="librem5-builds@lists.community.puri.sm"
 | 
			
		||||
    - dch -v"$VER+librem5ci$CI_PIPELINE_ID.$REV" "$MSG"
 | 
			
		||||
    - debuild -i -us -uc -b
 | 
			
		||||
    - cp ../*.deb .
 | 
			
		||||
 | 
			
		||||
build_deb:arm64:
 | 
			
		||||
  image: pureos/byzantium
 | 
			
		||||
  tags:
 | 
			
		||||
    - aarch64
 | 
			
		||||
  stage: build
 | 
			
		||||
  artifacts:
 | 
			
		||||
    paths:
 | 
			
		||||
      - '*.deb'
 | 
			
		||||
  script:
 | 
			
		||||
    - rm -f ../*.deb
 | 
			
		||||
    - apt-get -y build-dep .
 | 
			
		||||
    - apt-get -y install devscripts
 | 
			
		||||
    - REV=$(git log -1 --format=%h)
 | 
			
		||||
    - VER=$(dpkg-parsechangelog -SVersion)
 | 
			
		||||
    - DEBFULLNAME="Librem5 CI"
 | 
			
		||||
    - EMAIL="librem5-builds@lists.community.puri.sm"
 | 
			
		||||
    - dch -v"$VER+librem5ci$CI_PIPELINE_ID.$REV" "$MSG"
 | 
			
		||||
    - debuild -i -us -uc -b
 | 
			
		||||
    - cp ../*.deb .
 | 
			
		||||
 | 
			
		||||
build_deb:future:
 | 
			
		||||
  image: debian:bookworm
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  tags:
 | 
			
		||||
    - aarch64
 | 
			
		||||
  stage: build
 | 
			
		||||
@ -86,7 +63,6 @@ build_deb:future:
 | 
			
		||||
      - '*.deb'
 | 
			
		||||
  script:
 | 
			
		||||
    - rm -f ../*.deb
 | 
			
		||||
    - mv debian/control-newer debian/control
 | 
			
		||||
    - apt-get -y build-dep .
 | 
			
		||||
    - apt-get -y install devscripts
 | 
			
		||||
    - REV=$(git log -1 --format=%h)
 | 
			
		||||
@ -98,7 +74,6 @@ build_deb:future:
 | 
			
		||||
    - cp ../*.deb .
 | 
			
		||||
 | 
			
		||||
build_reference:
 | 
			
		||||
  image: debian:bookworm
 | 
			
		||||
  stage: build
 | 
			
		||||
  needs:
 | 
			
		||||
    - job: build_meson
 | 
			
		||||
@ -114,26 +89,12 @@ build_reference:
 | 
			
		||||
    variables:
 | 
			
		||||
      - $PKG_ONLY == "1"
 | 
			
		||||
 | 
			
		||||
test_lintian:
 | 
			
		||||
  stage: test
 | 
			
		||||
  needs:
 | 
			
		||||
    - job: build_deb
 | 
			
		||||
      artifacts: true
 | 
			
		||||
  script:
 | 
			
		||||
    - apt-get -y install lintian
 | 
			
		||||
    - lintian *.deb
 | 
			
		||||
  except:
 | 
			
		||||
    variables:
 | 
			
		||||
      - $PKG_ONLY == "1"
 | 
			
		||||
 | 
			
		||||
test:
 | 
			
		||||
  image: debian:bookworm
 | 
			
		||||
  stage: test
 | 
			
		||||
  needs:
 | 
			
		||||
    - job: build_meson
 | 
			
		||||
      artifacts: true
 | 
			
		||||
  script:
 | 
			
		||||
    - mv debian/control-newer debian/control
 | 
			
		||||
    - apt-get -y build-dep .
 | 
			
		||||
    - apt-get -y install clang-tidy
 | 
			
		||||
    - ninja -C _build test
 | 
			
		||||
@ -157,7 +118,7 @@ check_release:
 | 
			
		||||
  needs: []
 | 
			
		||||
  only:
 | 
			
		||||
    refs:
 | 
			
		||||
      - master
 | 
			
		||||
      - main
 | 
			
		||||
  script:
 | 
			
		||||
    - apt-get -y install git python3
 | 
			
		||||
    - (head -n 1 ./debian/changelog && git tag) | ./debian/check_release.py
 | 
			
		||||
@ -177,4 +138,4 @@ pages:
 | 
			
		||||
      - public
 | 
			
		||||
  only:
 | 
			
		||||
    refs:
 | 
			
		||||
      - master
 | 
			
		||||
      - main
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										79
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										79
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@ -42,9 +42,9 @@ checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "byteorder"
 | 
			
		||||
version = "1.4.3"
 | 
			
		||||
version = "1.5.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
 | 
			
		||||
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "cairo-rs"
 | 
			
		||||
@ -73,9 +73,9 @@ dependencies = [
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "cc"
 | 
			
		||||
version = "1.0.79"
 | 
			
		||||
version = "1.0.90"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
 | 
			
		||||
checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "cfg-if"
 | 
			
		||||
@ -108,7 +108,7 @@ checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "syn",
 | 
			
		||||
 "syn 1.0.109",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@ -129,7 +129,7 @@ checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "syn",
 | 
			
		||||
 "syn 1.0.109",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@ -325,9 +325,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "indexmap"
 | 
			
		||||
version = "1.9.2"
 | 
			
		||||
version = "1.9.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
 | 
			
		||||
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "autocfg",
 | 
			
		||||
 "hashbrown",
 | 
			
		||||
@ -350,9 +350,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "libc"
 | 
			
		||||
version = "0.2.139"
 | 
			
		||||
version = "0.2.153"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
 | 
			
		||||
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "linked-hash-map"
 | 
			
		||||
@ -418,9 +418,9 @@ dependencies = [
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "pkg-config"
 | 
			
		||||
version = "0.3.26"
 | 
			
		||||
version = "0.3.30"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
 | 
			
		||||
checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "proc-macro-crate"
 | 
			
		||||
@ -433,18 +433,18 @@ dependencies = [
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "proc-macro2"
 | 
			
		||||
version = "1.0.51"
 | 
			
		||||
version = "1.0.78"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
 | 
			
		||||
checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "unicode-ident",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "quote"
 | 
			
		||||
version = "1.0.23"
 | 
			
		||||
version = "1.0.35"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
 | 
			
		||||
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
]
 | 
			
		||||
@ -474,9 +474,9 @@ dependencies = [
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "ryu"
 | 
			
		||||
version = "1.0.12"
 | 
			
		||||
version = "1.0.17"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
 | 
			
		||||
checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "scoped-tls"
 | 
			
		||||
@ -486,33 +486,33 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "serde"
 | 
			
		||||
version = "1.0.152"
 | 
			
		||||
version = "1.0.197"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
 | 
			
		||||
checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "serde_derive",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "serde_derive"
 | 
			
		||||
version = "1.0.152"
 | 
			
		||||
version = "1.0.197"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
 | 
			
		||||
checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "syn",
 | 
			
		||||
 "syn 2.0.52",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "serde_repr"
 | 
			
		||||
version = "0.1.10"
 | 
			
		||||
version = "0.1.18"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "9a5ec9fa74a20ebbe5d9ac23dac1fc96ba0ecfe9f50f2843b52e537b10fbcb4e"
 | 
			
		||||
checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "syn",
 | 
			
		||||
 "syn 2.0.52",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@ -529,9 +529,20 @@ dependencies = [
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "syn"
 | 
			
		||||
version = "1.0.107"
 | 
			
		||||
version = "1.0.109"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
 | 
			
		||||
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "unicode-ident",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "syn"
 | 
			
		||||
version = "2.0.52"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
@ -558,15 +569,15 @@ dependencies = [
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "unicode-ident"
 | 
			
		||||
version = "1.0.6"
 | 
			
		||||
version = "1.0.12"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
 | 
			
		||||
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "unicode-width"
 | 
			
		||||
version = "0.1.10"
 | 
			
		||||
version = "0.1.11"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
 | 
			
		||||
checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "void"
 | 
			
		||||
@ -643,7 +654,7 @@ dependencies = [
 | 
			
		||||
 "proc-macro-crate",
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "syn",
 | 
			
		||||
 "syn 1.0.109",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@ -665,5 +676,5 @@ checksum = "d68726e8c12757384a8d1485080527e263dea67d91f19e97cd71b9292f22d7c5"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "syn",
 | 
			
		||||
 "syn 1.0.109",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										34
									
								
								NEWS.md
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								NEWS.md
									
									
									
									
									
								
							@ -1,3 +1,37 @@
 | 
			
		||||
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
 | 
			
		||||
------------------
 | 
			
		||||
 | 
			
		||||
New or updated translations:
 | 
			
		||||
- Belarusian
 | 
			
		||||
- Haitian Creole
 | 
			
		||||
 | 
			
		||||
New layouts:
 | 
			
		||||
- French Canadian (QWERTY + accented letters)
 | 
			
		||||
- German terminal-layout
 | 
			
		||||
- Spanish terminal-layout
 | 
			
		||||
 | 
			
		||||
Changes:
 | 
			
		||||
- Fixed Persian and Swiss layouts
 | 
			
		||||
- Fixed various small style-issues in many layouts
 | 
			
		||||
- Improved the US-terminal-layout
 | 
			
		||||
 | 
			
		||||
1.22.0 "Superposition"
 | 
			
		||||
------------------
 | 
			
		||||
 | 
			
		||||
New or updated translations:
 | 
			
		||||
- Basque
 | 
			
		||||
 | 
			
		||||
Changes:
 | 
			
		||||
- fixed panel sizing when scaling
 | 
			
		||||
- fixed panel sizing when rotating
 | 
			
		||||
- fixed Dvorak terminal layout
 | 
			
		||||
 | 
			
		||||
1.21.0 "Expected value"
 | 
			
		||||
------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										5
									
								
								data/icons/zwnj.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								data/icons/zwnj.svg
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 | 
			
		||||
 | 
			
		||||
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1">
 | 
			
		||||
  <path d="M 3,0.5 V 1 c 2.5,0 4.5,1 4.5,2 v 12.5 h 1 V 3 c 0,-1 2,-2 4.5,-2 V 0.5 Z" />
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 231 B  | 
@ -3,11 +3,11 @@
 | 
			
		||||
# Oct 2021
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 32, height: 32 }
 | 
			
		||||
    spaceline: { width: 142, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 32,    height: 32 }
 | 
			
		||||
    spaceline: { width: 142,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -3,11 +3,11 @@
 | 
			
		||||
# Oct 2021
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 32, height: 32 }
 | 
			
		||||
    spaceline: { width: 142, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 32,    height: 32 }
 | 
			
		||||
    spaceline: { width: 142,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
# Maintained by: Khaled Eldoheiri <khalid@kdehairy.com>
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 32.66, height: 52 }
 | 
			
		||||
    altline: { width: 48.99, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    default:   { width: 32.66,  height: 52 }
 | 
			
		||||
    altline:   { width: 48.99,  height: 52 }
 | 
			
		||||
    wide:      { width: 62,     height: 52 }
 | 
			
		||||
    spaceline: { width: 195.96, height: 52 }
 | 
			
		||||
    special: { width: 35.66, height: 52 }
 | 
			
		||||
    special:   { width: 35.66,  height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
# Maintained by: Khaled Eldoheiri <khalid@kdehairy.com>
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 49, height: 42 }
 | 
			
		||||
    altline: { width: 73.5, height: 42 }
 | 
			
		||||
    wide: { width: 108, height: 42 }
 | 
			
		||||
    spaceline: { width: 324, height: 42 }
 | 
			
		||||
    special: { width: 49, height: 42 }
 | 
			
		||||
    default:   { width: 49,   height: 42 }
 | 
			
		||||
    altline:   { width: 73.5, height: 42 }
 | 
			
		||||
    wide:      { width: 108,  height: 42 }
 | 
			
		||||
    spaceline: { width: 324,  height: 42 }
 | 
			
		||||
    special:   { width: 49,   height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -63,7 +63,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -63,7 +63,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 32.72, height: 52 }
 | 
			
		||||
    altline: { width: 47, height: 52 }
 | 
			
		||||
    wide: { width: 49.09, height: 52 }
 | 
			
		||||
    spaceline: { width: 185, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 32.72, height: 52 }
 | 
			
		||||
    altline:   { width: 47,    height: 52 }
 | 
			
		||||
    wide:      { width: 49.09, height: 52 }
 | 
			
		||||
    spaceline: { width: 185,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -59,7 +59,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 32.72, height: 52 }
 | 
			
		||||
    altline: { width: 47, height: 52 }
 | 
			
		||||
    wide: { width: 49.09, height: 52 }
 | 
			
		||||
    spaceline: { width: 185, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 32.72, height: 52 }
 | 
			
		||||
    altline:   { width: 47,    height: 52 }
 | 
			
		||||
    wide:      { width: 49.09, height: 52 }
 | 
			
		||||
    spaceline: { width: 185,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -59,7 +59,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    spaceline: { width: 142, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 142,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										93
									
								
								data/keyboards/ca.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								data/keyboards/ca.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,93 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 142,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "q w e r t y u i o p"
 | 
			
		||||
        - "a s d f g h j k l"
 | 
			
		||||
        - "Shift_L   z x c v b n m  BackSpace"
 | 
			
		||||
        - "show_numbers preferences         space        show_eschars Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "Q W E R T Y U I O P"
 | 
			
		||||
        - "A S D F G H J K L"
 | 
			
		||||
        - "Shift_L   Z X C V B N M  BackSpace"
 | 
			
		||||
        - "show_numbers preferences         space        show_eschars Return"
 | 
			
		||||
    numbers:
 | 
			
		||||
        - "1 2 3 4 5 6 7 8 9 0"
 | 
			
		||||
        - "@ # $ % & - _ + ( )"
 | 
			
		||||
        - "show_symbols   , \" ' colon ; ! ?  BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        show_eschars Return"
 | 
			
		||||
    symbols:
 | 
			
		||||
        - "~ ` | · √ π τ ÷ × ¶"
 | 
			
		||||
        - "© ® £ € ¥ ^ ° * { }"
 | 
			
		||||
        - "show_numbers_from_symbols   \\ / < > = [ ]  BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        show_eschars Return"
 | 
			
		||||
    eschars:
 | 
			
		||||
        - "à â ç é è ê ë î ï ô"
 | 
			
		||||
        - "ù û À Â Ç É È Ê Î Ô"
 | 
			
		||||
        - "show_numbers_from_symbols  ' ! ? . ,   BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        show_eschars Return"
 | 
			
		||||
 | 
			
		||||
buttons:
 | 
			
		||||
    Shift_L:
 | 
			
		||||
        action:
 | 
			
		||||
            locking:
 | 
			
		||||
                lock_view: "upper"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        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: "wide"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_numbers_from_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "numbers"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_letters:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "*/="
 | 
			
		||||
    show_eschars:
 | 
			
		||||
        action:
 | 
			
		||||
            locking:
 | 
			
		||||
                lock_view: "eschars"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "âÂ"
 | 
			
		||||
    period:
 | 
			
		||||
        outline: "special"
 | 
			
		||||
        text: "."
 | 
			
		||||
    space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
        text: " "
 | 
			
		||||
    Return:
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        icon: "key-enter"
 | 
			
		||||
        keysym: "Return"
 | 
			
		||||
    colon:
 | 
			
		||||
        text: ":"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -55,7 +55,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -32,7 +32,7 @@ views:
 | 
			
		||||
        - "à â ç é è ê î ô ù û"
 | 
			
		||||
        - "À Â Ç É È Ê Î Ô Ù Û"
 | 
			
		||||
        - "show_numbers  æ œ ä ë ï ö ü  BackSpace"
 | 
			
		||||
        - "show_letters_from_accents preferences  ñ Ñ   space        ° ß Return"
 | 
			
		||||
        - "show_letters show_eschars preferences  ñ Ñ   space        ° ß Return"
 | 
			
		||||
 | 
			
		||||
buttons:
 | 
			
		||||
    Shift_L:
 | 
			
		||||
@ -59,7 +59,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
@ -71,14 +71,7 @@ buttons:
 | 
			
		||||
                lock_view: "eschars"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "âÂ"
 | 
			
		||||
    show_letters_from_accents:
 | 
			
		||||
        action:
 | 
			
		||||
            locking:
 | 
			
		||||
                lock_view: "eschars"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "âÂ"
 | 
			
		||||
        label: "Ââ"
 | 
			
		||||
    space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
        label: " "
 | 
			
		||||
 | 
			
		||||
@ -3,38 +3,39 @@
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 48,    height: 52 }
 | 
			
		||||
    wide:      { width: 59,    height: 52 }
 | 
			
		||||
    spaceline: { width: 70,    height: 52 }
 | 
			
		||||
    special:   { width: 28,    height: 52 }
 | 
			
		||||
    default:     { width: 35.33,  height: 58 }
 | 
			
		||||
    doublewidth: { width: 70.66,  height: 58 }
 | 
			
		||||
    altline:     { width: 52.8,   height: 58 }
 | 
			
		||||
    wide:        { width: 64.9,   height: 58 }
 | 
			
		||||
    spaceline:   { width: 116.67, height: 58 }
 | 
			
		||||
    special:     { width: 30.41,  height: 58 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "q w e r t z u i o p ü"
 | 
			
		||||
        - "a s d f g h j k l ö ä"
 | 
			
		||||
        - "Shift_L   y x c v b n m  BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences    '   space        , . Return"
 | 
			
		||||
        - "Shift_L   y x c v b n m ' BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences       Space    , .    Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "Q W E R T Z U I O P Ü"
 | 
			
		||||
        - "A S D F G H J K L Ö Ä"
 | 
			
		||||
        - "Shift_L   Y X C V B N M  BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences    \"  space        , . Return"
 | 
			
		||||
        - "Shift_L   Y X C V B N M \" 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"
 | 
			
		||||
        - "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"
 | 
			
		||||
        - "show_letters show_eschars preferences       Space    , .    Return"
 | 
			
		||||
    eschars:
 | 
			
		||||
        - "à â ç é è ê î ô ù û"
 | 
			
		||||
        - "À Â Ç É È Ê Î Ô Ù Û"
 | 
			
		||||
        - "show_numbers  æ œ ä ë ï ö ü  BackSpace"
 | 
			
		||||
        - "show_letters_from_accents preferences  ñ Ñ   space        ° ß Return"
 | 
			
		||||
        - "à â ç é è ê î ô ù û ñ"
 | 
			
		||||
        - "À Â Ç É È Ê Î Ô Ù Û Ñ"
 | 
			
		||||
        - "show_numbers  æ œ ä ë ï ö ü ß BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences       Space     °     Return"
 | 
			
		||||
 | 
			
		||||
buttons:
 | 
			
		||||
    Shift_L:
 | 
			
		||||
@ -47,7 +48,7 @@ buttons:
 | 
			
		||||
    BackSpace:
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        icon: "edit-clear-symbolic"
 | 
			
		||||
        action: erase
 | 
			
		||||
        action: "erase"
 | 
			
		||||
    preferences:
 | 
			
		||||
        action: "show_prefs"
 | 
			
		||||
        outline: "special"
 | 
			
		||||
@ -61,7 +62,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
@ -73,15 +74,8 @@ buttons:
 | 
			
		||||
                lock_view: "eschars"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "âÂ"
 | 
			
		||||
    show_letters_from_accents:
 | 
			
		||||
        action:
 | 
			
		||||
            locking:
 | 
			
		||||
                lock_view: "eschars"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "âÂ"
 | 
			
		||||
    space:
 | 
			
		||||
        label: "Ââ"
 | 
			
		||||
    Space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
        label: " "
 | 
			
		||||
        text: " "
 | 
			
		||||
@ -91,3 +85,11 @@ buttons:
 | 
			
		||||
        keysym: "Return"
 | 
			
		||||
    "\"":
 | 
			
		||||
        keysym: "quotedbl"
 | 
			
		||||
    °:
 | 
			
		||||
        outline: "doublewidth"
 | 
			
		||||
    "|":
 | 
			
		||||
        outline: "doublewidth"
 | 
			
		||||
    "}":
 | 
			
		||||
        outline: "doublewidth"
 | 
			
		||||
    ×:
 | 
			
		||||
        outline: "doublewidth"
 | 
			
		||||
 | 
			
		||||
@ -3,38 +3,41 @@
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 48, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 108, height: 42 }
 | 
			
		||||
    spaceline: { width: 216, height: 42 }
 | 
			
		||||
    special: { width: 48, height: 42 }
 | 
			
		||||
    default:     { width: 48,  height: 42 }
 | 
			
		||||
    doublewidth: { width: 96,  height: 42 }
 | 
			
		||||
    narrow:      { width: 33,  height: 42 }
 | 
			
		||||
    large:       { width: 66,  height: 42 }
 | 
			
		||||
    altline:     { width: 72,  height: 42 }
 | 
			
		||||
    wide:        { width: 108, height: 42 }
 | 
			
		||||
    spaceline:   { width: 162, height: 42 }
 | 
			
		||||
    special:     { width: 48,  height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "q w e r t z u i o p ü"
 | 
			
		||||
        - "a s d f g h j k l ö ä"
 | 
			
		||||
        - "Shift_L   y x c v b n m  BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences    '   space        , . Return"
 | 
			
		||||
        - "Shift_L   y x c v b n m ' BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences       Space    , .    Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "Q W E R T Z U I O P Ü"
 | 
			
		||||
        - "A S D F G H J K L Ö Ä"
 | 
			
		||||
        - "Shift_L   Y X C V B N M  BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences    \"  space        , . Return"
 | 
			
		||||
        - "Shift_L   Y X C V B N M \" 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"
 | 
			
		||||
        - "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"
 | 
			
		||||
        - "show_letters show_eschars preferences       Space    , .    Return"
 | 
			
		||||
    eschars:
 | 
			
		||||
        - "à â ç é è ê î ô ù û"
 | 
			
		||||
        - "À Â Ç É È Ê Î Ô Ù Û"
 | 
			
		||||
        - "show_numbers  æ œ ä ë ï ö ü  BackSpace"
 | 
			
		||||
        - "show_letters_from_accents preferences  ñ Ñ   space        ° ß Return"
 | 
			
		||||
        - "à â ç é è ê î ô ù û ñ"
 | 
			
		||||
        - "À Â Ç É È Ê Î Ô Ù Û Ñ"
 | 
			
		||||
        - "show_numbers  æ œ ä ë ï ö ü ß BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences       Space     °     Return"
 | 
			
		||||
 | 
			
		||||
buttons:
 | 
			
		||||
    Shift_L:
 | 
			
		||||
@ -61,7 +64,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
@ -73,15 +76,8 @@ buttons:
 | 
			
		||||
                lock_view: "eschars"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "äÄ"
 | 
			
		||||
    show_letters_from_accents:
 | 
			
		||||
        action:
 | 
			
		||||
            locking:
 | 
			
		||||
                lock_view: "eschars"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "âÂ"
 | 
			
		||||
    space:
 | 
			
		||||
        label: "Ââ"
 | 
			
		||||
    Space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
        label: " "
 | 
			
		||||
        text: " "
 | 
			
		||||
@ -91,3 +87,15 @@ buttons:
 | 
			
		||||
        keysym: "Return"
 | 
			
		||||
    "\"":
 | 
			
		||||
        keysym: "quotedbl"
 | 
			
		||||
    °:
 | 
			
		||||
        outline: "large"
 | 
			
		||||
    ".":
 | 
			
		||||
        outline: "narrow"
 | 
			
		||||
    ",":
 | 
			
		||||
        outline: "narrow"
 | 
			
		||||
    "|":
 | 
			
		||||
        outline: "doublewidth"
 | 
			
		||||
    "}":
 | 
			
		||||
        outline: "doublewidth"
 | 
			
		||||
    ×:
 | 
			
		||||
        outline: "doublewidth"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 52.67, height: 52 }
 | 
			
		||||
    spaceline: { width: 106, height: 52 }
 | 
			
		||||
    special: { width: 35.33, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 52.67, height: 52 }
 | 
			
		||||
    spaceline: { width: 106,   height: 52 }
 | 
			
		||||
    special:   { width: 35.33, height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -75,7 +75,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 54, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 81, height: 42 }
 | 
			
		||||
    default:   { width: 54,  height: 42 }
 | 
			
		||||
    altline:   { width: 81,  height: 42 }
 | 
			
		||||
    wide:      { width: 81,  height: 42 }
 | 
			
		||||
    spaceline: { width: 162, height: 42 }
 | 
			
		||||
    special: { width: 54, height: 42 }
 | 
			
		||||
    special:   { width: 54,  height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -75,7 +75,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 52.67, height: 52 }
 | 
			
		||||
    spaceline: { width: 106, height: 52 }
 | 
			
		||||
    special: { width: 35.33, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 52.67, height: 52 }
 | 
			
		||||
    spaceline: { width: 106,   height: 52 }
 | 
			
		||||
    special:   { width: 35.33, height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -75,7 +75,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 54, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 81, height: 42 }
 | 
			
		||||
    default:   { width: 54,  height: 42 }
 | 
			
		||||
    altline:   { width: 81,  height: 42 }
 | 
			
		||||
    wide:      { width: 81,  height: 42 }
 | 
			
		||||
    spaceline: { width: 162, height: 42 }
 | 
			
		||||
    special: { width: 54, height: 42 }
 | 
			
		||||
    special:   { width: 54,  height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -75,7 +75,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
# Maintained by: Mark Müller <markmueller86@gmail.com>
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 99.67, height: 52 }
 | 
			
		||||
    special: { width: 35.33, height: 52 }
 | 
			
		||||
    special:   { width: 35.33, height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -59,7 +59,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
@ -71,7 +71,7 @@ buttons:
 | 
			
		||||
                lock_view: "eschars"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "äÄ"
 | 
			
		||||
        label: "Ää"
 | 
			
		||||
    space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
        label: " "
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
# Maintained by: Mark Müller <markmueller86@gmail.com>
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 48, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 108, height: 42 }
 | 
			
		||||
    default:   { width: 48,  height: 42 }
 | 
			
		||||
    altline:   { width: 81,  height: 42 }
 | 
			
		||||
    wide:      { width: 108, height: 42 }
 | 
			
		||||
    spaceline: { width: 216, height: 42 }
 | 
			
		||||
    special: { width: 48, height: 42 }
 | 
			
		||||
    special:   { width: 48,  height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -59,7 +59,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
@ -71,7 +71,7 @@ buttons:
 | 
			
		||||
                lock_view: "eschars"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "äÄ"
 | 
			
		||||
        label: "Ää"
 | 
			
		||||
    space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
        text: " "
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,8 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 32, height: 52 }
 | 
			
		||||
    altline: { width: 48.39024, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    outline7: { width: 88.97561, height: 52 }
 | 
			
		||||
    default:   { width: 32,       height: 52 }
 | 
			
		||||
    altline:   { width: 48.39024, height: 52 }
 | 
			
		||||
    wide:      { width: 62,       height: 52 }
 | 
			
		||||
    spaceline: { width: 150.5853, height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,11 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62, height: 52 }
 | 
			
		||||
    spaceline: { width: 106.67, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    special:   { width: 44,     height: 52 }
 | 
			
		||||
    large:     { width: 44,     height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -41,10 +42,10 @@ buttons:
 | 
			
		||||
        icon: "edit-clear-symbolic"
 | 
			
		||||
        action: erase
 | 
			
		||||
    at:
 | 
			
		||||
        outline: "special"
 | 
			
		||||
        outline: "large"
 | 
			
		||||
        text: "@"
 | 
			
		||||
    preferences:
 | 
			
		||||
        action: show_prefs
 | 
			
		||||
        action: "show_prefs"
 | 
			
		||||
        outline: "special"
 | 
			
		||||
        icon: "keyboard-mode-symbolic"
 | 
			
		||||
    show_numbers:
 | 
			
		||||
@ -68,7 +69,7 @@ buttons:
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "*/="
 | 
			
		||||
    period:
 | 
			
		||||
        outline: "special"
 | 
			
		||||
        outline: "large"
 | 
			
		||||
        text: "."
 | 
			
		||||
    space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1797
									
								
								data/keyboards/emoji/us_wide.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1797
									
								
								data/keyboards/emoji/us_wide.yaml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 99.67, height: 52 }
 | 
			
		||||
    special: { width: 35.33, height: 52 }
 | 
			
		||||
    special:   { width: 35.33, height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -58,7 +58,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 99.67, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -58,7 +58,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 99.67, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -58,7 +58,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,8 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 32, height: 52 }
 | 
			
		||||
    altline: { width: 48.39024, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    outline7: { width: 88.97561, height: 52 }
 | 
			
		||||
    default:   { width: 32,       height: 52 }
 | 
			
		||||
    altline:   { width: 48.39024, height: 52 }
 | 
			
		||||
    wide:      { width: 62,       height: 52 }
 | 
			
		||||
    spaceline: { width: 150.5853, height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    small:     { width: 50,    height: 30 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    small:     { width: 50,    height: 30 }
 | 
			
		||||
    altline:   { width: 35.33, height: 52 }
 | 
			
		||||
    wide:      { width: 50,    height: 52 }
 | 
			
		||||
    spaceline: { width: 150,   height: 52 }
 | 
			
		||||
    special:   { width: 35.33,  height: 52 }
 | 
			
		||||
    special:   { width: 35.33, height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -180,7 +180,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -63,7 +63,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -63,7 +63,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -63,7 +63,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    spaceline: { width: 142, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 142,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -4,12 +4,12 @@
 | 
			
		||||
# 
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:    { width: 40, height: 60 }
 | 
			
		||||
    altline:    { width: 52.67,    height: 60 }
 | 
			
		||||
    wide:       { width: 62,    height: 60 }
 | 
			
		||||
    extrawide:  { width: 66, height: 60 }
 | 
			
		||||
    spaceline:  { width: 140,   height: 60 }
 | 
			
		||||
    special:    { width: 44,    height: 60 }
 | 
			
		||||
    default:   { width: 40,    height: 60 }
 | 
			
		||||
    altline:   { width: 52.67, height: 60 }
 | 
			
		||||
    wide:      { width: 62,    height: 60 }
 | 
			
		||||
    extrawide: { width: 66,    height: 60 }
 | 
			
		||||
    spaceline: { width: 140,   height: 60 }
 | 
			
		||||
    special:   { width: 44,    height: 60 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -4,11 +4,11 @@
 | 
			
		||||
# Edited by Sotiris Papadopoulos, sotirios.papadopoulos@inserm.fr
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:    { width: 40,    height: 60 }
 | 
			
		||||
    altline:    { width: 52.67, height: 60 }
 | 
			
		||||
    wide:       { width: 62,    height: 60 }
 | 
			
		||||
    spaceline:  { width: 140,   height: 60 }
 | 
			
		||||
    special:    { width: 44,    height: 60 }
 | 
			
		||||
    default:   { width: 40,    height: 60 }
 | 
			
		||||
    altline:   { width: 52.67, height: 60 }
 | 
			
		||||
    wide:      { width: 62,    height: 60 }
 | 
			
		||||
    spaceline: { width: 140,   height: 60 }
 | 
			
		||||
    special:   { width: 44,    height: 60 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
# Creaed by Sotiris Papadopoulos, sotirios.papadopoulos@inserm.fr
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:    { width: 80,    height: 60 }
 | 
			
		||||
    altline:    { width: 110,    height: 60 }
 | 
			
		||||
    wide:       { width: 120,   height: 60 }
 | 
			
		||||
    spaceline:  { width: 250,   height: 60 }
 | 
			
		||||
    special:    { width: 75,    height: 60 }
 | 
			
		||||
    default:   { width: 80,  height: 60 }
 | 
			
		||||
    altline:   { width: 110, height: 60 }
 | 
			
		||||
    wide:      { width: 120, height: 60 }
 | 
			
		||||
    spaceline: { width: 250, height: 60 }
 | 
			
		||||
    special:   { width: 75,  height: 60 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
# Maintained by: soyer <soyer@irl.hu>
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 99.67, height: 52 }
 | 
			
		||||
    special: { width: 35.33, height: 52 }
 | 
			
		||||
    special:   { width: 35.33, height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -59,7 +59,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
# Maintained by: soyer <soyer@irl.hu>
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 48, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 108, height: 42 }
 | 
			
		||||
    default:   { width: 48,  height: 42 }
 | 
			
		||||
    altline:   { width: 81,  height: 42 }
 | 
			
		||||
    wide:      { width: 108, height: 42 }
 | 
			
		||||
    spaceline: { width: 216, height: 42 }
 | 
			
		||||
    special: { width: 48, height: 42 }
 | 
			
		||||
    special:   { width: 48,  height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -59,7 +59,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 40, height: 60 }
 | 
			
		||||
    altline: { width: 56, height: 60 }
 | 
			
		||||
    wide: { width: 62, height: 60 }
 | 
			
		||||
    default:   { width: 40,  height: 60 }
 | 
			
		||||
    altline:   { width: 56,  height: 60 }
 | 
			
		||||
    wide:      { width: 62,  height: 60 }
 | 
			
		||||
    spaceline: { width: 142, height: 60 }
 | 
			
		||||
    special: { width: 44, height: 60 }
 | 
			
		||||
    special:   { width: 44,  height: 60 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,29 +1,29 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    spaceline: { width: 142, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 142,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "ض ص ق ف غ ع ه خ ح ج"
 | 
			
		||||
        - "ش س ی ب ل ا ت ن م ک"
 | 
			
		||||
        - "Shift_L   ظ ط ز ر ذ د و  BackSpace"
 | 
			
		||||
        - "show_numbers preferences         space        period Return"
 | 
			
		||||
        - "ض ص ث ق ف غ ع ه خ ح ج"
 | 
			
		||||
        - "ش س ی ب ل ا ت ن م ک گ"
 | 
			
		||||
        - "Shift_L  ظ ط ز ر ذ د پ و  BackSpace"
 | 
			
		||||
        - "show_numbers preferences         space     zwnj period Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "پ { } [ ] ّ   َ   ِ  ُ چ"
 | 
			
		||||
        - "ؤ ئ ي إ أ آ ة » « گ"
 | 
			
		||||
        - "Shift_L  ك ٓ ژ ء > < ؟  BackSpace"
 | 
			
		||||
        - "show_numbers preferences         space        period Return"
 | 
			
		||||
        - "  ْ  ٌ  ٍ  ً  ُ  ِ  َ  ّ # @ چ"
 | 
			
		||||
        - "_ ئ ي إ أ آ ة » « : ؛"
 | 
			
		||||
        - "Shift_L ك  ٓ ژ  ٔ ء > < ؟ BackSpace"
 | 
			
		||||
        - "show_numbers preferences         space        ! ، Return"
 | 
			
		||||
    numbers:
 | 
			
		||||
        - "۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۰"
 | 
			
		||||
        - "@ # ﷼ % & - _ + ( )"
 | 
			
		||||
        - "show_symbols   , \" ' colon ؛ ! ?  BackSpace"
 | 
			
		||||
        - "۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۰ |"
 | 
			
		||||
        - "… ٬ ٫ ﷼ ٪ ، * ) ( − ـ"
 | 
			
		||||
        - "show_symbols + - × ÷ = ^ % / BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        period Return"
 | 
			
		||||
    symbols:
 | 
			
		||||
        - "~ ` | · √ π τ ÷ × ¶"
 | 
			
		||||
        - "& ` | · • % π τ ÷ × ¶"
 | 
			
		||||
        - "© ® £ € ¥ ^ ° * { }"
 | 
			
		||||
        - "show_numbers_from_symbols   \\ / < > = [ ]  BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        period Return"
 | 
			
		||||
@ -48,17 +48,17 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "numbers"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "123"
 | 
			
		||||
        label: "۱۲۳"
 | 
			
		||||
    show_numbers_from_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "numbers"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
        label: "۱۲۳"
 | 
			
		||||
    show_letters:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
        label: "ابپ"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
@ -74,5 +74,8 @@ buttons:
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        icon: "key-enter"
 | 
			
		||||
        keysym: "Return"
 | 
			
		||||
    zwnj:
 | 
			
		||||
        icon: "zwnj"
 | 
			
		||||
        text: ""
 | 
			
		||||
    colon:
 | 
			
		||||
        text: ":"
 | 
			
		||||
 | 
			
		||||
@ -1,32 +1,32 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 54, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 108, height: 42 }
 | 
			
		||||
    default:   { width: 54,  height: 42 }
 | 
			
		||||
    altline:   { width: 81,  height: 42 }
 | 
			
		||||
    wide:      { width: 108, height: 42 }
 | 
			
		||||
    spaceline: { width: 216, height: 42 }
 | 
			
		||||
    special: { width: 54, height: 42 }
 | 
			
		||||
    special:   { width: 54,  height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "ض ص ق ف غ ع ه خ ح ج"
 | 
			
		||||
        - "ش س ی ب ل ا ت ن م ک"
 | 
			
		||||
        - "Shift_L   ظ ط ز ر ذ د و  BackSpace"
 | 
			
		||||
        - "show_numbers preferences         space        period Return"
 | 
			
		||||
        - "ض ص ث ق ف غ ع ه خ ح ج چ \\"
 | 
			
		||||
        - "ش س ی ب ل ا ت ن م ک گ"
 | 
			
		||||
        - "Shift_L ظ ط ز ر ذ د پ و ، / BackSpace"
 | 
			
		||||
        - "show_numbers preferences         space     zwnj ؟ ! period Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "پ { } [ ] ّ   َ   ِ  ُ چ"
 | 
			
		||||
        - "ؤ ئ ي إ أ آ ة » « گ"
 | 
			
		||||
        - "Shift_L  ك ٓ ژ ء > < ؟  BackSpace"
 | 
			
		||||
        - "show_numbers preferences         space        period Return"
 | 
			
		||||
        - " ْ  ٌ  ٍ  ً  ُ  ِ  َ  ّ  ] [ @ # _"
 | 
			
		||||
        - "ؤ ئ ي إ أ آ ة » « : ؛"
 | 
			
		||||
        - "Shift_L ك  ٓ ژ ٰ    ٔ  ء  >  <  ؟ BackSpace"
 | 
			
		||||
        - "show_numbers preferences         space        ، ؟ ! period Return"
 | 
			
		||||
    numbers:
 | 
			
		||||
        - "۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۰"
 | 
			
		||||
        - "@ # ﷼ % & - _ + ( )"
 | 
			
		||||
        - "show_symbols   , \" ' colon ؛ ! ?  BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        period Return"
 | 
			
		||||
        - "۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۰ | ="
 | 
			
		||||
        - "… ٬ ٫ ﷼ ٪ ، * ) ( − _"
 | 
			
		||||
        - "show_symbols + - × ÷ = ^ % / BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        ، ؟ ! period Return"
 | 
			
		||||
    symbols:
 | 
			
		||||
        - "~ ` | · √ π τ ÷ × ¶"
 | 
			
		||||
        - "& ` | · • % π τ ÷ × ¶"
 | 
			
		||||
        - "© ® £ € ¥ ^ ° * { }"
 | 
			
		||||
        - "show_numbers_from_symbols   \\ / < > = [ ]  BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        period Return"
 | 
			
		||||
        - "show_letters preferences         space        ، ؟ ! period Return"
 | 
			
		||||
 | 
			
		||||
buttons:
 | 
			
		||||
    Shift_L:
 | 
			
		||||
@ -48,23 +48,23 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "numbers"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "123"
 | 
			
		||||
        label: "۱۲۳"
 | 
			
		||||
    show_numbers_from_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "numbers"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
        label: "۱۲۳"
 | 
			
		||||
    show_letters:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
        label: "ابپ"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "*/="
 | 
			
		||||
    ".":
 | 
			
		||||
    period:
 | 
			
		||||
        outline: "special"
 | 
			
		||||
        text: "."
 | 
			
		||||
    space:
 | 
			
		||||
@ -74,5 +74,8 @@ buttons:
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        icon: "key-enter"
 | 
			
		||||
        keysym: "Return"
 | 
			
		||||
    zwnj:
 | 
			
		||||
        icon: "zwnj"
 | 
			
		||||
        text: ""
 | 
			
		||||
    colon:
 | 
			
		||||
        text: ":"
 | 
			
		||||
 | 
			
		||||
@ -2,11 +2,11 @@
 | 
			
		||||
# 14 october 2020
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 99.67, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -65,7 +65,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -2,11 +2,11 @@
 | 
			
		||||
# 03 october 2019
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 99.67, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -65,7 +65,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
# Maintained by: Mark Müller <markmueller86@gmail.com>
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 62, height: 52 }
 | 
			
		||||
    default:      { width: 62, height: 52 }
 | 
			
		||||
    default-wide: { width: 62, height: 52 }
 | 
			
		||||
    altline: { width: 62, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    special: { width: 62, height: 52 }
 | 
			
		||||
    altline:      { width: 62, height: 52 }
 | 
			
		||||
    wide:         { width: 62, height: 52 }
 | 
			
		||||
    special:      { width: 62, height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base: # hiragana
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
# Maintained by: Mark Müller <markmueller86@gmail.com>
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 62, height: 42 }
 | 
			
		||||
    default:      { width: 62, height: 42 }
 | 
			
		||||
    default-wide: { width: 62, height: 42 }
 | 
			
		||||
    altline: { width: 62, height: 42 }
 | 
			
		||||
    wide: { width: 62, height: 42 }
 | 
			
		||||
    special: { width: 62, height: 42 }
 | 
			
		||||
    altline:      { width: 62, height: 42 }
 | 
			
		||||
    wide:         { width: 62, height: 42 }
 | 
			
		||||
    special:      { width: 62, height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base: # hiragana
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 32, height: 52 }
 | 
			
		||||
    altline: { width: 48.39024, height: 52 }
 | 
			
		||||
    wide: { width: 64, height: 52 }
 | 
			
		||||
    spaceline: { width: 142, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 32,       height: 52 }
 | 
			
		||||
    altline:   { width: 48.39024, height: 52 }
 | 
			
		||||
    wide:      { width: 64,       height: 52 }
 | 
			
		||||
    spaceline: { width: 142,      height: 52 }
 | 
			
		||||
    special:   { width: 44,       height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,8 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 37.46341, height: 52 }
 | 
			
		||||
    altline: { width: 48.39024, height: 52 }
 | 
			
		||||
    outline7: { width: 88.97561, height: 52 }
 | 
			
		||||
    default:   { width: 37.46341, height: 52 }
 | 
			
		||||
    altline:   { width: 48.39024, height: 52 }
 | 
			
		||||
    outline7:  { width: 88.97561, height: 52 }
 | 
			
		||||
    spaceline: { width: 120.5853, height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 59, height: 52 }
 | 
			
		||||
    spaceline: { width: 140, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 59,    height: 52 }
 | 
			
		||||
    spaceline: { width: 140,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 54, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 100, height: 42 }
 | 
			
		||||
    default:   { width: 54,  height: 42 }
 | 
			
		||||
    altline:   { width: 81,  height: 42 }
 | 
			
		||||
    wide:      { width: 100, height: 42 }
 | 
			
		||||
    spaceline: { width: 206, height: 42 }
 | 
			
		||||
    special: { width: 54, height: 42 }
 | 
			
		||||
    special:   { width: 54,  height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 99.67, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -63,7 +63,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 54, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 108, height: 42 }
 | 
			
		||||
    default:   { width: 54,  height: 42 }
 | 
			
		||||
    altline:   { width: 81,  height: 42 }
 | 
			
		||||
    wide:      { width: 108, height: 42 }
 | 
			
		||||
    spaceline: { width: 153, height: 42 }
 | 
			
		||||
    special: { width: 54, height: 42 }
 | 
			
		||||
    special:   { width: 54,  height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -63,7 +63,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,12 +1,12 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 32, height: 52 }
 | 
			
		||||
    altline: { width: 32, height: 52 }
 | 
			
		||||
    wide: { width: 57, height: 52 }
 | 
			
		||||
    narrow: { width: 26, height: 52 }
 | 
			
		||||
    default:   { width: 32,  height: 52 }
 | 
			
		||||
    altline:   { width: 32,  height: 52 }
 | 
			
		||||
    wide:      { width: 57,  height: 52 }
 | 
			
		||||
    narrow:    { width: 26,  height: 52 }
 | 
			
		||||
    spaceline: { width: 107, height: 52 }
 | 
			
		||||
    fill: { width: 159, height: 52 }
 | 
			
		||||
    special: { width: 42, height: 52 }
 | 
			
		||||
    fill:      { width: 159, height: 52 }
 | 
			
		||||
    special:   { width: 42,  height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 32, height: 52 }
 | 
			
		||||
    altline: { width: 48.39024, height: 52 }
 | 
			
		||||
    wide: { width: 64,  height: 52 }
 | 
			
		||||
    spaceline: { width: 142, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 32,       height: 52 }
 | 
			
		||||
    altline:   { width: 48.39024, height: 52 }
 | 
			
		||||
    wide:      { width: 64,       height: 52 }
 | 
			
		||||
    spaceline: { width: 142,      height: 52 }
 | 
			
		||||
    special:   { width: 44,       height: 52 }
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 50, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 108,  height: 42 }
 | 
			
		||||
    default:   { width: 50,  height: 42 }
 | 
			
		||||
    altline:   { width: 81,  height: 42 }
 | 
			
		||||
    wide:      { width: 108, height: 42 }
 | 
			
		||||
    spaceline: { width: 216, height: 42 }
 | 
			
		||||
    special: { width: 60, height: 42 }
 | 
			
		||||
    special:   { width: 60,  height: 42 }
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										255
									
								
								data/keyboards/terminal/de.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										255
									
								
								data/keyboards/terminal/de.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,255 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:    { width: 35.33,  height: 46 }
 | 
			
		||||
    halfwidth:  { width: 17.665, height: 46 }
 | 
			
		||||
    narrow:     { width: 26.335, height: 46 }
 | 
			
		||||
    special:    { width: 35.33,  height: 46 }
 | 
			
		||||
    altline:    { width: 52.67,  height: 46 }
 | 
			
		||||
    large:      { width: 52.67,  height: 46 }
 | 
			
		||||
    action:     { width: 59,     height: 46 }
 | 
			
		||||
    wide:       { width: 59,     height: 46 }
 | 
			
		||||
    spaceline:  { width: 100.96, height: 46 }
 | 
			
		||||
    small:      { width: 50.471, height: 22 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "q w e r t z u i o p"
 | 
			
		||||
        - "PeriodSmall a s d f g h j k l MinusSmall"
 | 
			
		||||
        - "Shift_L   y x c v b n m  BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences      space        show_actions Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "Q W E R T Z U I O P"
 | 
			
		||||
        - "SlashSmall A S D F G H J K L PipeSmall"
 | 
			
		||||
        - "Shift_L   Y X C V B N M  BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences      space        show_actions Return"
 | 
			
		||||
    numbers:
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "1 2 3 4 5 6 7 8 9 0"
 | 
			
		||||
        - "\\ * # $ / & - + ( ) _"
 | 
			
		||||
        - "show_symbols   , \" ' colon ; ! ?  BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences         space        period Return"
 | 
			
		||||
    symbols:
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "~ ` · √ π τ ÷ × ¶ @"
 | 
			
		||||
        - "© ® £ € ¥ ^ ° { }"
 | 
			
		||||
        - "show_numbers_from_symbols   % | < > = [ ]  BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences         space        period Return"
 | 
			
		||||
    eschars:
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "ä è é ö ü Ä È É Ö Ü"
 | 
			
		||||
        - "à â ê î ô À Â È Î Ô"
 | 
			
		||||
        - "show_numbers  « » ç Ç æ œ ß  BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences         space        „ “ Return"
 | 
			
		||||
    actions:
 | 
			
		||||
        - "TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "F1  F2  F3  F4  F5  F6"
 | 
			
		||||
        - "F7  F8  F9  F10 F11 F12"
 | 
			
		||||
        - "Esc Tab Pause Insert Up Del"
 | 
			
		||||
        - "show_letters_actions Menu Break Left Down Right"
 | 
			
		||||
 | 
			
		||||
buttons:
 | 
			
		||||
    Shift_L:
 | 
			
		||||
        action:
 | 
			
		||||
            locking:
 | 
			
		||||
                lock_view: "upper"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        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: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_numbers_from_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "numbers"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_letters:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_letters_actions:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "τ=\\"
 | 
			
		||||
    show_eschars:
 | 
			
		||||
        action:
 | 
			
		||||
            locking:
 | 
			
		||||
                lock_view: "eschars"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "Ää"
 | 
			
		||||
    show_actions:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "actions"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: ">_"
 | 
			
		||||
    period:
 | 
			
		||||
        outline: "large"
 | 
			
		||||
        text: "."
 | 
			
		||||
    space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
        text: " "
 | 
			
		||||
    Return:
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        icon: "key-enter"
 | 
			
		||||
        keysym: "Return"
 | 
			
		||||
    colon:
 | 
			
		||||
        text: ":"
 | 
			
		||||
    F1:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F1"
 | 
			
		||||
    F2:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F2"
 | 
			
		||||
    F3:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F3"
 | 
			
		||||
    F4:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F4"
 | 
			
		||||
    F5:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F5"
 | 
			
		||||
    F6:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F6"
 | 
			
		||||
    F7:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F7"
 | 
			
		||||
    F8:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F8"
 | 
			
		||||
    F9:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F9"
 | 
			
		||||
    F10:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F10"
 | 
			
		||||
    F11:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F11"
 | 
			
		||||
    F12:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F12"
 | 
			
		||||
    Esc:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Escape"
 | 
			
		||||
    Tab:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
    TabSmall:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
        label: "Tab"
 | 
			
		||||
    Del:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Delete"
 | 
			
		||||
        label: "Entf"
 | 
			
		||||
    Insert:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Insert"
 | 
			
		||||
        label: "Einfg"
 | 
			
		||||
    Menu:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Menu"
 | 
			
		||||
        label: "Menü"
 | 
			
		||||
    Pause:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Pause"
 | 
			
		||||
    Break:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Break"
 | 
			
		||||
        label: "Untbr"
 | 
			
		||||
    Home:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Home"
 | 
			
		||||
        label: "Pos1"
 | 
			
		||||
    End:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "End"
 | 
			
		||||
        label: "Ende"
 | 
			
		||||
    PgUp:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Page_Up"
 | 
			
		||||
        label: "Bild↑"
 | 
			
		||||
    PgDn:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Page_Down"
 | 
			
		||||
        label: "Bild↓"
 | 
			
		||||
    "↑":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Up"
 | 
			
		||||
    "↓":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Down"
 | 
			
		||||
    "←":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Left"
 | 
			
		||||
    "→":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Right"
 | 
			
		||||
    Up:
 | 
			
		||||
        label: "↑"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Up"
 | 
			
		||||
    Left:
 | 
			
		||||
        label: "←"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Left"
 | 
			
		||||
    Down:
 | 
			
		||||
        label: "↓"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Down"
 | 
			
		||||
    Right:
 | 
			
		||||
        label: "→"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Right"
 | 
			
		||||
    Ctrl:
 | 
			
		||||
        modifier: "Control"
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        label: "Strg"
 | 
			
		||||
    Alt:
 | 
			
		||||
        modifier: "Alt"
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        label: "Alt"
 | 
			
		||||
    MinusSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "-"
 | 
			
		||||
    SlashSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "/"
 | 
			
		||||
    PipeSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "|"
 | 
			
		||||
    PeriodSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "."
 | 
			
		||||
    "„":
 | 
			
		||||
        outline: "narrow"
 | 
			
		||||
        text: "„"
 | 
			
		||||
    "“":
 | 
			
		||||
        outline: "narrow"
 | 
			
		||||
        text: "“"
 | 
			
		||||
    "\\":
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
    _:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
							
								
								
									
										259
									
								
								data/keyboards/terminal/de_wide.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										259
									
								
								data/keyboards/terminal/de_wide.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,259 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:   { width: 54,   height: 37 }
 | 
			
		||||
    halfwidth: { width: 27,   height: 37 }
 | 
			
		||||
    narrow:    { width: 40.5, height: 37 }
 | 
			
		||||
    special:   { width: 54,   height: 37 }
 | 
			
		||||
    altline:   { width: 81,   height: 37 }
 | 
			
		||||
    large:     { width: 81,   height: 37 }
 | 
			
		||||
    action:    { width: 90,   height: 37 }
 | 
			
		||||
    wide:      { width: 90,   height: 37 }
 | 
			
		||||
    spaceline: { width: 153,  height: 37 }
 | 
			
		||||
    small:     { width: 67.4, height: 22 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "q w e r t z u i o p"
 | 
			
		||||
        - "PeriodSmall a s d f g h j k l MinusSmall"
 | 
			
		||||
        - "Shift_L   y x c v b n m  BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences      space        show_actions Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "Q W E R T Z U I O P"
 | 
			
		||||
        - "SlashSmall A S D F G H J K L PipeSmall"
 | 
			
		||||
        - "Shift_L   Y X C V B N M  BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences      space        show_actions Return"
 | 
			
		||||
    numbers:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "1 2 3 4 5 6 7 8 9 0"
 | 
			
		||||
        - "\\ * # $ / & - + ( ) _"
 | 
			
		||||
        - "show_symbols   , \" ' colon ; ! ?  BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences         space        period Return"
 | 
			
		||||
    symbols:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "~ ` · √ π τ ÷ × ¶ @"
 | 
			
		||||
        - "© ® £ € ¥ ^ ° { }"
 | 
			
		||||
        - "show_numbers_from_symbols   % | < > = [ ]  BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences         space        period Return"
 | 
			
		||||
    eschars:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "ä è é ö ü Ä È É Ö Ü"
 | 
			
		||||
        - "à â ê î ô À Â È Î Ô"
 | 
			
		||||
        - "show_numbers  « » ç Ç æ œ ß  BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences         space        „ “ Return"
 | 
			
		||||
    actions:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "F1  F2  F3  F4  F5  F6"
 | 
			
		||||
        - "F7  F8  F9  F10 F11 F12"
 | 
			
		||||
        - "Esc Tab Pause Insert Up Del"
 | 
			
		||||
        - "show_letters_actions Menu Break Left Down Right"
 | 
			
		||||
 | 
			
		||||
buttons:
 | 
			
		||||
    Shift_L:
 | 
			
		||||
        action:
 | 
			
		||||
            locking:
 | 
			
		||||
                lock_view: "upper"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        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: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_numbers_from_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "numbers"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_letters:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_letters_actions:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "τ=\\"
 | 
			
		||||
    show_eschars:
 | 
			
		||||
        action:
 | 
			
		||||
            locking:
 | 
			
		||||
                lock_view: "eschars"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "Ää"
 | 
			
		||||
    show_actions:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "actions"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: ">_"
 | 
			
		||||
    period:
 | 
			
		||||
        outline: "large"
 | 
			
		||||
        text: "."
 | 
			
		||||
    space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
        text: " "
 | 
			
		||||
    Return:
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        icon: "key-enter"
 | 
			
		||||
        keysym: "Return"
 | 
			
		||||
    colon:
 | 
			
		||||
        text: ":"
 | 
			
		||||
    F1:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F1"
 | 
			
		||||
    F2:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F2"
 | 
			
		||||
    F3:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F3"
 | 
			
		||||
    F4:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F4"
 | 
			
		||||
    F5:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F5"
 | 
			
		||||
    F6:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F6"
 | 
			
		||||
    F7:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F7"
 | 
			
		||||
    F8:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F8"
 | 
			
		||||
    F9:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F9"
 | 
			
		||||
    F10:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F10"
 | 
			
		||||
    F11:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F11"
 | 
			
		||||
    F12:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F12"
 | 
			
		||||
    Esc:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Escape"
 | 
			
		||||
    EscSmall:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Escape"
 | 
			
		||||
        label: "Esc"
 | 
			
		||||
    Tab:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
    TabSmall:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
        label: "Tab"
 | 
			
		||||
    Del:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Delete"
 | 
			
		||||
        label: "Entf"
 | 
			
		||||
    Insert:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Insert"
 | 
			
		||||
        label: "Einfg"
 | 
			
		||||
    Menu:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Menu"
 | 
			
		||||
        label: "Menü"
 | 
			
		||||
    Pause:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Pause"
 | 
			
		||||
    Break:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Break"
 | 
			
		||||
        label: "Untbr"
 | 
			
		||||
    Home:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Home"
 | 
			
		||||
        label: "Pos1"
 | 
			
		||||
    End:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "End"
 | 
			
		||||
        label: "Ende"
 | 
			
		||||
    PgUp:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Page_Up"
 | 
			
		||||
        label: "Bild↑"
 | 
			
		||||
    PgDn:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Page_Down"
 | 
			
		||||
        label: "Bild↓"
 | 
			
		||||
    "↑":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Up"
 | 
			
		||||
    "↓":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Down"
 | 
			
		||||
    "←":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Left"
 | 
			
		||||
    "→":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Right"
 | 
			
		||||
    Up:
 | 
			
		||||
        label: "↑"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Up"
 | 
			
		||||
    Left:
 | 
			
		||||
        label: "←"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Left"
 | 
			
		||||
    Down:
 | 
			
		||||
        label: "↓"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Down"
 | 
			
		||||
    Right:
 | 
			
		||||
        label: "→"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Right"
 | 
			
		||||
    Ctrl:
 | 
			
		||||
        modifier: "Control"
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        label: "Strg"
 | 
			
		||||
    Alt:
 | 
			
		||||
        modifier: "Alt"
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        label: "Alt"
 | 
			
		||||
    MinusSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "-"
 | 
			
		||||
    SlashSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "/"
 | 
			
		||||
    PipeSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "|"
 | 
			
		||||
    PeriodSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "."
 | 
			
		||||
    "„":
 | 
			
		||||
        outline: "narrow"
 | 
			
		||||
        text: "„"
 | 
			
		||||
    "“":
 | 
			
		||||
        outline: "narrow"
 | 
			
		||||
        text: "“"
 | 
			
		||||
    "\\":
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
    _:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
							
								
								
									
										220
									
								
								data/keyboards/terminal/es.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								data/keyboards/terminal/es.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,220 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:   { width: 35.33, height: 46 }
 | 
			
		||||
    action:    { width: 59,    height: 46 }
 | 
			
		||||
    altline:   { width: 52.67, height: 46 }
 | 
			
		||||
    large:     { width: 52.67, height: 46 }
 | 
			
		||||
    wide:      { width: 59,    height: 46 }
 | 
			
		||||
    spaceline: { width: 92.29, height: 46 }
 | 
			
		||||
    special:   { width: 44,    height: 46 }
 | 
			
		||||
    small:     { width: 50.57, height: 22 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "q w e r t y u i o p"
 | 
			
		||||
        - "a s d f g h j k l ñ"
 | 
			
		||||
        - "Shift_L   z x c v b n m  BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences      space        show_actions Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "Q W E R T Y U I O P"
 | 
			
		||||
        - "A S D F G H J K L Ñ"
 | 
			
		||||
        - "Shift_L   Z X C V B N M  DelUp"
 | 
			
		||||
        - "show_numbers show_eschars preferences      space        show_actions Return"
 | 
			
		||||
    numbers:
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "1 2 3 4 5 6 7 8 9 0"
 | 
			
		||||
        - "* # € / & - _ + ( )"
 | 
			
		||||
        - "show_symbols , \" ' colon ; ! ?  BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences         space        . Return"
 | 
			
		||||
    symbols:
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "~ ` | · √ π τ ÷ × ¶"
 | 
			
		||||
        - "© ® £ $ ¥ ^ ° @ { }"
 | 
			
		||||
        - "show_numbers   \\ % < > = [ ]  BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences         space        . Return"
 | 
			
		||||
    eschars:
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "á é í ó ú Á É Í Ó Ú"
 | 
			
		||||
        - "à è ì ò ù À È Ì Ò Ù"
 | 
			
		||||
        - "show_numbers , ü ç ï Ü Ç ï BackSpace"
 | 
			
		||||
        - "show_letters show_symbols preferences        space        show_actions Return"
 | 
			
		||||
    actions:
 | 
			
		||||
        - "TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "F1  F2  F3  F4  F5  F6"
 | 
			
		||||
        - "F7  F8  F9  F10 F11 F12"
 | 
			
		||||
        - "Esc Tab Pause Insert Up Del"
 | 
			
		||||
        - "show_letters_actions Menu Break Left Down Right"
 | 
			
		||||
 | 
			
		||||
buttons:
 | 
			
		||||
    Shift_L:
 | 
			
		||||
        action:
 | 
			
		||||
            locking:
 | 
			
		||||
                lock_view: "upper"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        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: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_letters:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_letters_actions:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "τ=\\"
 | 
			
		||||
    show_eschars:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "eschars"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "áÁ"
 | 
			
		||||
    show_actions:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "actions"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: ">_"
 | 
			
		||||
    ".":
 | 
			
		||||
        outline: "large"
 | 
			
		||||
        text: "."
 | 
			
		||||
    space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
        text: " "
 | 
			
		||||
    Return:
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        icon: "key-enter"
 | 
			
		||||
        keysym: "Return"
 | 
			
		||||
    colon:
 | 
			
		||||
        text: ":"
 | 
			
		||||
    F1:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F1"
 | 
			
		||||
    F2:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F2"
 | 
			
		||||
    F3:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F3"
 | 
			
		||||
    F4:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F4"
 | 
			
		||||
    F5:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F5"
 | 
			
		||||
    F6:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F6"
 | 
			
		||||
    F7:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F7"
 | 
			
		||||
    F8:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F8"
 | 
			
		||||
    F9:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F9"
 | 
			
		||||
    F10:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F10"
 | 
			
		||||
    F11:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F11"
 | 
			
		||||
    F12:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F12"
 | 
			
		||||
    Esc:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Escape"
 | 
			
		||||
    Tab:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
    TabSmall:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
        label: "Tab"
 | 
			
		||||
    Del:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Delete"
 | 
			
		||||
    DelUp:
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        keysym: "Delete"
 | 
			
		||||
        label: "Del"
 | 
			
		||||
    Insert:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Insert"
 | 
			
		||||
    Menu:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Menu"
 | 
			
		||||
    Pause:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Pause"
 | 
			
		||||
    Break:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Break"
 | 
			
		||||
    Home:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Home"
 | 
			
		||||
    End:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "End"
 | 
			
		||||
    PgUp:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Page_Up"
 | 
			
		||||
    PgDn:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Page_Down"
 | 
			
		||||
    "↑":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Up"
 | 
			
		||||
    "↓":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Down"
 | 
			
		||||
    "←":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Left"
 | 
			
		||||
    "→":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Right"
 | 
			
		||||
    Up:
 | 
			
		||||
        label: "↑"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Up"
 | 
			
		||||
    Left:
 | 
			
		||||
        label: "←"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Left"
 | 
			
		||||
    Down:
 | 
			
		||||
        label: "↓"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Down"
 | 
			
		||||
    Right:
 | 
			
		||||
        label: "→"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Right"
 | 
			
		||||
    Ctrl:
 | 
			
		||||
        modifier: "Control"
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        label: "Ctrl"
 | 
			
		||||
    Alt:
 | 
			
		||||
        modifier: "Alt"
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        label: "Alt"
 | 
			
		||||
							
								
								
									
										224
									
								
								data/keyboards/terminal/es_wide.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										224
									
								
								data/keyboards/terminal/es_wide.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,224 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:   { width: 54,   height: 37 }
 | 
			
		||||
    action:    { width: 90,   height: 37 }
 | 
			
		||||
    altline:   { width: 81,   height: 37 }
 | 
			
		||||
    large:     { width: 81,   height: 37 }
 | 
			
		||||
    wide:      { width: 90,   height: 37 }
 | 
			
		||||
    spaceline: { width: 153,  height: 37 }
 | 
			
		||||
    special:   { width: 54,   height: 37 }
 | 
			
		||||
    small:     { width: 67.4, height: 22 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "q w e r t y u i o p"
 | 
			
		||||
        - "a s d f g h j k l ñ"
 | 
			
		||||
        - "Shift_L   z x c v b n m  BackSpace"
 | 
			
		||||
        - "show_numbers show_eschars preferences    space    show_actions Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "Q W E R T Y U I O P"
 | 
			
		||||
        - "A S D F G H J K L Ñ"
 | 
			
		||||
        - "Shift_L   Z X C V B N M  DelUp"
 | 
			
		||||
        - "show_numbers show_eschars preferences      space        show_actions Return"
 | 
			
		||||
    numbers:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "1 2 3 4 5 6 7 8 9 0"
 | 
			
		||||
        - "* # $ / & - _ + ( )"
 | 
			
		||||
        - "show_symbols   , \" ' colon ; ! ?  BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences         space        . Return"
 | 
			
		||||
    symbols:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "~ ` | · √ π τ ÷ × ¶"
 | 
			
		||||
        - "© ® £ € ¥ ^ ° @ { }"
 | 
			
		||||
        - "show_numbers   \\ % < > = [ ]  BackSpace"
 | 
			
		||||
        - "show_letters show_eschars preferences         space        . Return"
 | 
			
		||||
    eschars:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "á é í ó ú Á É Í Ó Ú"
 | 
			
		||||
        - "à è ì ò ù À È Ì Ò Ù"
 | 
			
		||||
        - "show_numbers ´ ü ç ï Ü Ç Ï BackSpace"
 | 
			
		||||
        - "show_letters show_symbols preferences        space        show_actions Return"
 | 
			
		||||
    actions:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "F1  F2  F3  F4  F5  F6"
 | 
			
		||||
        - "F7  F8  F9  F10 F11 F12"
 | 
			
		||||
        - "Esc Tab Pause Insert Up Del"
 | 
			
		||||
        - "show_letters_actions Menu Break Left Down Right"
 | 
			
		||||
 | 
			
		||||
buttons:
 | 
			
		||||
    Shift_L:
 | 
			
		||||
        action:
 | 
			
		||||
            locking:
 | 
			
		||||
                lock_view: "upper"
 | 
			
		||||
                unlock_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        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: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_letters:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_letters_actions:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "τ=\\"
 | 
			
		||||
    show_eschars:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "eschars"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "áÁ"
 | 
			
		||||
    show_actions:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "actions"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: ">_"
 | 
			
		||||
    ".":
 | 
			
		||||
        outline: "large"
 | 
			
		||||
        text: "."
 | 
			
		||||
    space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
        text: " "
 | 
			
		||||
    Return:
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        icon: "key-enter"
 | 
			
		||||
        keysym: "Return"
 | 
			
		||||
    colon:
 | 
			
		||||
        text: ":"
 | 
			
		||||
    F1:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F1"
 | 
			
		||||
    F2:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F2"
 | 
			
		||||
    F3:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F3"
 | 
			
		||||
    F4:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F4"
 | 
			
		||||
    F5:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F5"
 | 
			
		||||
    F6:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F6"
 | 
			
		||||
    F7:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F7"
 | 
			
		||||
    F8:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F8"
 | 
			
		||||
    F9:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F9"
 | 
			
		||||
    F10:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F10"
 | 
			
		||||
    F11:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F11"
 | 
			
		||||
    F12:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "F12"
 | 
			
		||||
    Esc:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Escape"
 | 
			
		||||
    EscSmall:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Escape"
 | 
			
		||||
        label: "Esc"
 | 
			
		||||
    Tab:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
    TabSmall:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
        label: "Tab"
 | 
			
		||||
    Del:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Delete"
 | 
			
		||||
    DelUp:
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        keysym: "Delete"
 | 
			
		||||
        label: "Del"
 | 
			
		||||
    Insert:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Insert"
 | 
			
		||||
    Menu:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Menu"
 | 
			
		||||
    Pause:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Pause"
 | 
			
		||||
    Break:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Break"
 | 
			
		||||
    Home:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Home"
 | 
			
		||||
    End:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "End"
 | 
			
		||||
    PgUp:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Page_Up"
 | 
			
		||||
    PgDn:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Page_Down"
 | 
			
		||||
    "↑":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Up"
 | 
			
		||||
    "↓":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Down"
 | 
			
		||||
    "←":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Left"
 | 
			
		||||
    "→":
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Right"
 | 
			
		||||
    Up:
 | 
			
		||||
        label: "↑"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Up"
 | 
			
		||||
    Left:
 | 
			
		||||
        label: "←"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Left"
 | 
			
		||||
    Down:
 | 
			
		||||
        label: "↓"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Down"
 | 
			
		||||
    Right:
 | 
			
		||||
        label: "→"
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Right"
 | 
			
		||||
    Ctrl:
 | 
			
		||||
        modifier: "Control"
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        label: "Ctrl"
 | 
			
		||||
    Alt:
 | 
			
		||||
        modifier: "Alt"
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        label: "Alt"
 | 
			
		||||
@ -197,7 +197,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,12 +1,12 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:   { width: 54,   height: 37 }
 | 
			
		||||
    action:    { width: 90,   height: 37 }
 | 
			
		||||
    small:     { width: 67.4, height: 22 }
 | 
			
		||||
    default:   { width: 54,  height: 37 }
 | 
			
		||||
    altline:   { width: 81,  height: 37 }
 | 
			
		||||
    wide:      { width: 100, height: 37 }
 | 
			
		||||
    spaceline: { width: 110, height: 37 }
 | 
			
		||||
    special:   { width: 54,  height: 37 }
 | 
			
		||||
    altline:   { width: 81,   height: 37 }
 | 
			
		||||
    wide:      { width: 100,  height: 37 }
 | 
			
		||||
    spaceline: { width: 110,  height: 37 }
 | 
			
		||||
    special:   { width: 54,   height: 37 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -201,7 +201,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -194,7 +194,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,12 +1,12 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:   { width: 54,   height: 37 }
 | 
			
		||||
    action:    { width: 90,   height: 37 }
 | 
			
		||||
    small:     { width: 67.4, height: 22 }
 | 
			
		||||
    default:   { width: 54,  height: 37 }
 | 
			
		||||
    altline:   { width: 81,  height: 37 }
 | 
			
		||||
    wide:      { width: 100, height: 37 }
 | 
			
		||||
    spaceline: { width: 110, height: 37 }
 | 
			
		||||
    special:   { width: 54,  height: 37 }
 | 
			
		||||
    altline:   { width: 81,   height: 37 }
 | 
			
		||||
    wide:      { width: 100,  height: 37 }
 | 
			
		||||
    spaceline: { width: 110,  height: 37 }
 | 
			
		||||
    special:   { width: 54,   height: 37 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
@ -197,7 +197,7 @@ buttons:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        label: "abc"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "symbols"
 | 
			
		||||
 | 
			
		||||
@ -1,40 +1,40 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 46 }
 | 
			
		||||
    action:  { width: 59,    height: 46 }
 | 
			
		||||
    altline: { width: 52.67, height: 46 }
 | 
			
		||||
    wide: { width: 59, height: 46 }
 | 
			
		||||
    spaceline: { width: 140, height: 46 }
 | 
			
		||||
    special: { width: 44, height: 46 }
 | 
			
		||||
    small: { width: 59, height: 22 }
 | 
			
		||||
    default:   { width: 35.33, height: 46 }
 | 
			
		||||
    action:    { width: 59,    height: 46 }
 | 
			
		||||
    altline:   { width: 52.67, height: 46 }
 | 
			
		||||
    wide:      { width: 59,    height: 46 }
 | 
			
		||||
    spaceline: { width: 140,   height: 46 }
 | 
			
		||||
    special:   { width: 44,    height: 46 }
 | 
			
		||||
    small:     { width: 50.47, height: 22 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "Shift_L   p y f g c r l  BackSpace"
 | 
			
		||||
        - "a o e u i d h t n s"
 | 
			
		||||
        - ", q j k x b m w v z"
 | 
			
		||||
        - "show_numbers preferences      space        show_actions Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "Shift_L   p y f g c r l  BackSpace"
 | 
			
		||||
        - "a o e u i d h t n s"
 | 
			
		||||
        - ", q j k x b m w v z"
 | 
			
		||||
        - "TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "Shift_L   P Y F G C R L  BackSpace"
 | 
			
		||||
        - "A O E U I D H T N S"
 | 
			
		||||
        - ", Q J K X B M W V Z"
 | 
			
		||||
        - "show_numbers preferences      space        show_actions Return"
 | 
			
		||||
    numbers:
 | 
			
		||||
        - "Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "show_symbols   , \" ' colon ; ! ?  BackSpace"
 | 
			
		||||
        - "* # $ / & - _ + ( )"
 | 
			
		||||
        - "1 2 3 4 5 6 7 8 9 0"
 | 
			
		||||
        - "show_letters preferences         space        period Return"
 | 
			
		||||
    symbols:
 | 
			
		||||
        - "Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "show_numbers_from_symbols   \\ % < > = [ ]  BackSpace"
 | 
			
		||||
        - "© ® £ € ¥ ^ ° @ { }"
 | 
			
		||||
        - "~ ` | · √ π τ ÷ × ¶"
 | 
			
		||||
        - "show_letters preferences         space        period Return"
 | 
			
		||||
    actions:
 | 
			
		||||
        - "Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "F1  F2  F3  F4  F5  F6"
 | 
			
		||||
        - "F7  F8  F9  F10 F11 F12"
 | 
			
		||||
        - "Esc Tab Pause Insert Up Del"
 | 
			
		||||
@ -135,6 +135,10 @@ buttons:
 | 
			
		||||
    Tab:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
    TabSmall:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
        label: "Tab"
 | 
			
		||||
    Del:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Delete"
 | 
			
		||||
 | 
			
		||||
@ -17,9 +17,9 @@ views:
 | 
			
		||||
        - "show_numbers preferences      space        show_actions Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "Shift_L   p y f g c r l  BackSpace"
 | 
			
		||||
        - "a o e u i d h t n s"
 | 
			
		||||
        - ", q j k x b m w v z"
 | 
			
		||||
        - "Shift_L   P Y F G C R L  BackSpace"
 | 
			
		||||
        - "A O E U I D H T N S"
 | 
			
		||||
        - ", Q J K X B M W V Z"
 | 
			
		||||
        - "show_numbers preferences      space        show_actions Return"
 | 
			
		||||
    numbers:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
 | 
			
		||||
@ -1,44 +1,46 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 46 }
 | 
			
		||||
    action:  { width: 59,    height: 46 }
 | 
			
		||||
    altline: { width: 52.67, height: 46 }
 | 
			
		||||
    wide: { width: 59, height: 46 }
 | 
			
		||||
    spaceline: { width: 140, height: 46 }
 | 
			
		||||
    special: { width: 44, height: 46 }
 | 
			
		||||
    small: { width: 59, height: 22 }
 | 
			
		||||
    default:   { width: 35.33,  height: 46 }
 | 
			
		||||
    halfwidth: { width: 17.665, height: 46 }
 | 
			
		||||
    special:   { width: 44,     height: 46 }
 | 
			
		||||
    altline:   { width: 52.67,  height: 46 }
 | 
			
		||||
    large:     { width: 52.67,  height: 46 }
 | 
			
		||||
    action:    { width: 59,     height: 46 }
 | 
			
		||||
    wide:      { width: 59,     height: 46 }
 | 
			
		||||
    spaceline: { width: 144.96, height: 46 }
 | 
			
		||||
    small:     { width: 50.57,  height: 22 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "q w e r t y u i o p"
 | 
			
		||||
        - "a s d f g h j k l"
 | 
			
		||||
        - "PeriodSmall a s d f g h j k l MinusSmall"
 | 
			
		||||
        - "Shift_L   z x c v b n m  BackSpace"
 | 
			
		||||
        - "show_numbers preferences      space        show_actions Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "Q W E R T Y U I O P"
 | 
			
		||||
        - "A S D F G H J K L"
 | 
			
		||||
        - "SlashSmall A S D F G H J K L PipeSmall"
 | 
			
		||||
        - "Shift_L   Z X C V B N M  BackSpace"
 | 
			
		||||
        - "show_numbers preferences      space        show_actions Return"
 | 
			
		||||
    numbers:
 | 
			
		||||
        - "Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "1 2 3 4 5 6 7 8 9 0"
 | 
			
		||||
        - "* # $ / & - _ + ( )"
 | 
			
		||||
        - "\\ * # $ / & - + ( ) _"
 | 
			
		||||
        - "show_symbols   , \" ' colon ; ! ?  BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        period Return"
 | 
			
		||||
    symbols:
 | 
			
		||||
        - "Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "~ ` | · √ π τ ÷ × ¶"
 | 
			
		||||
        - "© ® £ € ¥ ^ ° @ { }"
 | 
			
		||||
        - "show_numbers_from_symbols   \\ % < > = [ ]  BackSpace"
 | 
			
		||||
        - "TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "~ ` · √ π τ ÷ × ¶ @"
 | 
			
		||||
        - "© ® £ € ¥ ^ ° { }"
 | 
			
		||||
        - "show_numbers_from_symbols   % | < > = [ ]  BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        period Return"
 | 
			
		||||
    actions:
 | 
			
		||||
        - "Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "F1  F2  F3  F4  F5  F6"
 | 
			
		||||
        - "F7  F8  F9  F10 F11 F12"
 | 
			
		||||
        - "Esc Tab Pause Insert Up Del"
 | 
			
		||||
        - "show_letters Menu Break Left Down Right"
 | 
			
		||||
        - "show_letters_actions Menu Break Left Down Right"
 | 
			
		||||
 | 
			
		||||
buttons:
 | 
			
		||||
    Shift_L:
 | 
			
		||||
@ -59,7 +61,7 @@ buttons:
 | 
			
		||||
    show_numbers:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "numbers"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_numbers_from_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
@ -67,6 +69,11 @@ buttons:
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_letters:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_letters_actions:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
@ -82,7 +89,7 @@ buttons:
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: ">_"
 | 
			
		||||
    period:
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        outline: "large"
 | 
			
		||||
        text: "."
 | 
			
		||||
    space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
@ -135,6 +142,10 @@ buttons:
 | 
			
		||||
    Tab:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
    TabSmall:
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        keysym: "Tab"
 | 
			
		||||
        label: "Tab"
 | 
			
		||||
    Del:
 | 
			
		||||
        outline: "action"
 | 
			
		||||
        keysym: "Delete"
 | 
			
		||||
@ -198,3 +209,19 @@ buttons:
 | 
			
		||||
        modifier: "Alt"
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        label: "Alt"
 | 
			
		||||
    MinusSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "-"
 | 
			
		||||
    SlashSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "/"
 | 
			
		||||
    PipeSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "|"
 | 
			
		||||
    PeriodSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "."
 | 
			
		||||
    "\\":
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
    _:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
 | 
			
		||||
@ -1,44 +1,46 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default:   { width: 54,   height: 37 }
 | 
			
		||||
    action:    { width: 90,   height: 37 }
 | 
			
		||||
    altline:   { width: 81,   height: 37 }
 | 
			
		||||
    wide:      { width: 90,   height: 37 }
 | 
			
		||||
    spaceline: { width: 225,  height: 37 }
 | 
			
		||||
    halfwidth: { width: 27,   height: 37 }
 | 
			
		||||
    special:   { width: 54,   height: 37 }
 | 
			
		||||
    altline:   { width: 81,   height: 37 }
 | 
			
		||||
    large:     { width: 81,   height: 37 }
 | 
			
		||||
    action:    { width: 90,   height: 37 }
 | 
			
		||||
    wide:      { width: 90,   height: 37 }
 | 
			
		||||
    spaceline: { width: 234,  height: 37 }
 | 
			
		||||
    small:     { width: 67.4, height: 22 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "q w e r t y u i o p"
 | 
			
		||||
        - "a s d f g h j k l"
 | 
			
		||||
        - "PeriodSmall a s d f g h j k l MinusSmall"
 | 
			
		||||
        - "Shift_L   z x c v b n m  BackSpace"
 | 
			
		||||
        - "show_numbers preferences      space        show_actions Return"
 | 
			
		||||
    upper:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "Q W E R T Y U I O P"
 | 
			
		||||
        - "A S D F G H J K L"
 | 
			
		||||
        - "SlashSmall A S D F G H J K L PipeSmall"
 | 
			
		||||
        - "Shift_L   Z X C V B N M  BackSpace"
 | 
			
		||||
        - "show_numbers preferences      space        show_actions Return"
 | 
			
		||||
    numbers:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "1 2 3 4 5 6 7 8 9 0"
 | 
			
		||||
        - "* # $ / & - _ + ( )"
 | 
			
		||||
        - "\\ * # $ / & - + ( ) _"
 | 
			
		||||
        - "show_symbols   , \" ' colon ; ! ?  BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        period Return"
 | 
			
		||||
    symbols:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt ↑ ↓ ← →"
 | 
			
		||||
        - "~ ` | · √ π τ ÷ × ¶"
 | 
			
		||||
        - "© ® £ € ¥ ^ ° @ { }"
 | 
			
		||||
        - "show_numbers_from_symbols   \\ % < > = [ ]  BackSpace"
 | 
			
		||||
        - "~ ` · √ π τ ÷ × ¶ @"
 | 
			
		||||
        - "© ® £ € ¥ ^ ° { }"
 | 
			
		||||
        - "show_numbers_from_symbols   % | < > = [ ]  BackSpace"
 | 
			
		||||
        - "show_letters preferences         space        period Return"
 | 
			
		||||
    actions:
 | 
			
		||||
        - "EscSmall TabSmall Ctrl Alt PgUp PgDn Home End"
 | 
			
		||||
        - "F1  F2  F3  F4  F5  F6"
 | 
			
		||||
        - "F7  F8  F9  F10 F11 F12"
 | 
			
		||||
        - "Esc Tab Pause Insert Up Del"
 | 
			
		||||
        - "show_letters Menu Break Left Down Right"
 | 
			
		||||
        - "show_letters_actions Menu Break Left Down Right"
 | 
			
		||||
 | 
			
		||||
buttons:
 | 
			
		||||
    Shift_L:
 | 
			
		||||
@ -59,7 +61,7 @@ buttons:
 | 
			
		||||
    show_numbers:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "numbers"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_numbers_from_symbols:
 | 
			
		||||
        action:
 | 
			
		||||
@ -67,6 +69,11 @@ buttons:
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "123"
 | 
			
		||||
    show_letters:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: "ABC"
 | 
			
		||||
    show_letters_actions:
 | 
			
		||||
        action:
 | 
			
		||||
            set_view: "base"
 | 
			
		||||
        outline: "wide"
 | 
			
		||||
@ -82,7 +89,7 @@ buttons:
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        label: ">_"
 | 
			
		||||
    period:
 | 
			
		||||
        outline: "altline"
 | 
			
		||||
        outline: "large"
 | 
			
		||||
        text: "."
 | 
			
		||||
    space:
 | 
			
		||||
        outline: "spaceline"
 | 
			
		||||
@ -205,4 +212,20 @@ buttons:
 | 
			
		||||
    Alt:
 | 
			
		||||
        modifier: "Alt"
 | 
			
		||||
        outline: "small"
 | 
			
		||||
        label: "Alt"
 | 
			
		||||
        label: "Alt"
 | 
			
		||||
    MinusSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "-"
 | 
			
		||||
    SlashSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "/"
 | 
			
		||||
    PipeSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "|"
 | 
			
		||||
    PeriodSmall:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
        text: "."
 | 
			
		||||
    "\\":
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
    _:
 | 
			
		||||
        outline: "halfwidth"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    spaceline: { width: 142, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 142,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 75, height: 56 }
 | 
			
		||||
    altline: { width: 75, height: 56 }
 | 
			
		||||
    wide: { width: 135, height: 56 }
 | 
			
		||||
    spaceline: { width: 450, height: 56 }
 | 
			
		||||
    default:         { width: 75,  height: 56 }
 | 
			
		||||
    altline:         { width: 75,  height: 56 }
 | 
			
		||||
    wide:            { width: 135, height: 56 }
 | 
			
		||||
    spaceline:       { width: 450, height: 56 }
 | 
			
		||||
    spacelinesymbol: { width: 300, height: 56 }
 | 
			
		||||
    special: { width: 90, height: 56 }
 | 
			
		||||
    special:         { width: 90,  height: 56 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,12 +1,12 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 32, height: 52 }
 | 
			
		||||
    altline: { width: 32, height: 52 }
 | 
			
		||||
    wide: { width: 57, height: 52 }
 | 
			
		||||
    narrow: { width: 26, height: 52 }
 | 
			
		||||
    default:   { width: 32,  height: 52 }
 | 
			
		||||
    altline:   { width: 32,  height: 52 }
 | 
			
		||||
    wide:      { width: 57,  height: 52 }
 | 
			
		||||
    narrow:    { width: 26,  height: 52 }
 | 
			
		||||
    spaceline: { width: 107, height: 52 }
 | 
			
		||||
    fill: { width: 159, height: 52 }
 | 
			
		||||
    special: { width: 42, height: 52 }
 | 
			
		||||
    fill:      { width: 159, height: 52 }
 | 
			
		||||
    special:   { width: 42,  height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    default:   { width: 35.33,  height: 52 }
 | 
			
		||||
    altline:   { width: 52.67,  height: 52 }
 | 
			
		||||
    wide:      { width: 62,     height: 52 }
 | 
			
		||||
    spaceline: { width: 106.67, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    special:   { width: 44,     height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    spaceline: { width: 142, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 142,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 54, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 108, height: 42 }
 | 
			
		||||
    default:   { width: 54,  height: 42 }
 | 
			
		||||
    altline:   { width: 81,  height: 42 }
 | 
			
		||||
    wide:      { width: 108, height: 42 }
 | 
			
		||||
    spaceline: { width: 216, height: 42 }
 | 
			
		||||
    special: { width: 54, height: 42 }
 | 
			
		||||
    special:   { width: 54,  height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 35.33, height: 52 }
 | 
			
		||||
    altline: { width: 52.67, height: 52 }
 | 
			
		||||
    wide: { width: 62, height: 52 }
 | 
			
		||||
    spaceline: { width: 142, height: 52 }
 | 
			
		||||
    special: { width: 44, height: 52 }
 | 
			
		||||
    default:   { width: 35.33, height: 52 }
 | 
			
		||||
    altline:   { width: 52.67, height: 52 }
 | 
			
		||||
    wide:      { width: 62,    height: 52 }
 | 
			
		||||
    spaceline: { width: 142,   height: 52 }
 | 
			
		||||
    special:   { width: 44,    height: 52 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 54, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 108, height: 42 }
 | 
			
		||||
    default:   { width: 54,  height: 42 }
 | 
			
		||||
    altline:   { width: 81,  height: 42 }
 | 
			
		||||
    wide:      { width: 108, height: 42 }
 | 
			
		||||
    spaceline: { width: 216, height: 42 }
 | 
			
		||||
    special: { width: 54, height: 42 }
 | 
			
		||||
    special:   { width: 54,  height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
---
 | 
			
		||||
outlines:
 | 
			
		||||
    default: { width: 54, height: 42 }
 | 
			
		||||
    altline: { width: 81, height: 42 }
 | 
			
		||||
    wide: { width: 108, height: 42 }
 | 
			
		||||
    default:   { width: 54,  height: 42 }
 | 
			
		||||
    altline:   { width: 81,  height: 42 }
 | 
			
		||||
    wide:      { width: 108, height: 42 }
 | 
			
		||||
    spaceline: { width: 216, height: 42 }
 | 
			
		||||
    special: { width: 54, height: 42 }
 | 
			
		||||
    special:   { width: 54,  height: 42 }
 | 
			
		||||
 | 
			
		||||
views:
 | 
			
		||||
    base:
 | 
			
		||||
 | 
			
		||||
@ -8,5 +8,6 @@
 | 
			
		||||
   <file>icons/key-enter.svg</file>
 | 
			
		||||
   <file>icons/key-shift.svg</file>
 | 
			
		||||
   <file>icons/keyboard-mode-symbolic.svg</file>
 | 
			
		||||
   <file>icons/zwnj.svg</file>
 | 
			
		||||
  </gresource>
 | 
			
		||||
</gresources>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										72
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										72
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							@ -1,3 +1,75 @@
 | 
			
		||||
squeekboard (1.24.0) experimental; urgency=medium
 | 
			
		||||
 | 
			
		||||
  [ MoonlightWave-12 ]
 | 
			
		||||
  * src/popover.c: Change 'ControlCenter' to 'Settings'
 | 
			
		||||
  * Add new emoji-layout
 | 
			
		||||
  * squeekboard.doap: update descriptions and links
 | 
			
		||||
  * Change branch-name from 'master' to 'main'
 | 
			
		||||
  * hacking.md: add more instructions
 | 
			
		||||
 | 
			
		||||
  [ Guido Günther ]
 | 
			
		||||
  * ci: Stop building byzantium debs
 | 
			
		||||
  * Use newer dependencies everywhere
 | 
			
		||||
  * ci: Drop lintian check
 | 
			
		||||
  * ci: Use Debian trixie for the doc build
 | 
			
		||||
  * ci: Cancel running jobs
 | 
			
		||||
  * ci: Always use noninteractive debconf backend
 | 
			
		||||
 | 
			
		||||
 -- MoonlightWave-12 <135532-MoonlightWave-12@users.noreply.gitlab.gnome.org>  Sun, 10 Mar 2024 14:44:36 +0100
 | 
			
		||||
 | 
			
		||||
squeekboard (1.23.0) experimental; urgency=medium
 | 
			
		||||
 | 
			
		||||
  [ Vasil Pupkin ]
 | 
			
		||||
  * Add Belarusian translation
 | 
			
		||||
 | 
			
		||||
  [ Pierre Michel Augustin ]
 | 
			
		||||
  * Add Haitian Creole translation
 | 
			
		||||
  * Update Haitian Creole translation
 | 
			
		||||
  * Update Haitian Creole translation
 | 
			
		||||
 | 
			
		||||
  [ Luciano ]
 | 
			
		||||
  * add french canadian layout (QWERTY + accented letters)
 | 
			
		||||
 | 
			
		||||
  [ Danial Behzadi ]
 | 
			
		||||
  * Fix Persian layout
 | 
			
		||||
 | 
			
		||||
  [ uzanto uz ]
 | 
			
		||||
  * Add Spanish terminal-keyboard-layouts
 | 
			
		||||
 | 
			
		||||
  [ MoonlightWave-12 ]
 | 
			
		||||
  * Improve Spanish terminal-keyboard-layouts
 | 
			
		||||
  * Update links in the documentation
 | 
			
		||||
  * doc/tutorial.md: Remove outdated information about translations
 | 
			
		||||
  * Improve layouts of us-terminal-keyboards
 | 
			
		||||
  * us.yaml and us_wide.yaml: Change outline of 123- and ABC-keys to altline
 | 
			
		||||
  * us.yaml and us_wide.yaml: Change the outline of the period-key
 | 
			
		||||
  * Fix Swiss layouts
 | 
			
		||||
  * Add German terminal-keyboard-layout
 | 
			
		||||
  * data/keyboards/email/us.yaml: fix styling of @-key
 | 
			
		||||
  * data/keyboards/de*.yaml: Change äÄ-label to Ää
 | 
			
		||||
  * data/keyboards/*.yaml: Change "abc" to "ABC"
 | 
			
		||||
  * Add wide emoji-layout
 | 
			
		||||
  * Update dependencies
 | 
			
		||||
 | 
			
		||||
 -- MoonlightWave-12 <135532-MoonlightWave-12@users.noreply.gitlab.gnome.org>  Fri, 08 Mar 2024 10:46:37 +0100
 | 
			
		||||
 | 
			
		||||
squeekboard (1.22.0-1) experimental; urgency=medium
 | 
			
		||||
 | 
			
		||||
  [ Asier Sarasua Garmendia ]
 | 
			
		||||
  * Add Basque translation
 | 
			
		||||
 | 
			
		||||
  [ Dorota Czaplejewicz ]
 | 
			
		||||
  * state: Make size independent of scaling factor
 | 
			
		||||
  * cleanup: Remove debug prints
 | 
			
		||||
  * tests: Make panel manager modifications pure
 | 
			
		||||
  * panel: Fix sizing on output reconfiguration
 | 
			
		||||
  * Update deps
 | 
			
		||||
 | 
			
		||||
  [ Undef ]
 | 
			
		||||
  * layout: fix uppercase dvorak terminal mode
 | 
			
		||||
 | 
			
		||||
 -- Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>  Sat, 01 Apr 2023 13:46:23 +0000
 | 
			
		||||
 | 
			
		||||
squeekboard (1.21.0-1) experimental; urgency=medium
 | 
			
		||||
 | 
			
		||||
  [ Dorota Czaplejewicz ]
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										16
									
								
								debian/control
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								debian/control
									
									
									
									
										vendored
									
									
								
							@ -3,7 +3,7 @@ Section: x11
 | 
			
		||||
Priority: optional
 | 
			
		||||
Maintainer: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
 | 
			
		||||
Build-Depends:
 | 
			
		||||
 cargo-mozilla,
 | 
			
		||||
 cargo,
 | 
			
		||||
 debhelper-compat (= 13),
 | 
			
		||||
 meson (>=0.51.0),
 | 
			
		||||
 ninja-build,
 | 
			
		||||
@ -13,10 +13,10 @@ Build-Depends:
 | 
			
		||||
 libgnome-desktop-3-dev,
 | 
			
		||||
 libgtk-3-dev,
 | 
			
		||||
 libfeedback-dev,
 | 
			
		||||
 librust-bitflags-1-dev (>= 1.0),
 | 
			
		||||
 librust-clap-2+default-dev (>= 2.32),
 | 
			
		||||
 librust-gio+v2-44-dev,
 | 
			
		||||
 librust-glib+v2-44-dev,
 | 
			
		||||
 librust-bitflags-dev (>= 1.0),
 | 
			
		||||
 librust-clap-dev (>= 2.32),
 | 
			
		||||
 librust-gio+v2-58-dev,
 | 
			
		||||
 librust-glib+v2-58-dev,
 | 
			
		||||
 librust-glib-sys-dev,
 | 
			
		||||
 librust-gtk+v3-22-dev (>= 0.5),
 | 
			
		||||
 librust-gtk-sys-dev,
 | 
			
		||||
@ -24,15 +24,15 @@ Build-Depends:
 | 
			
		||||
 librust-serde-derive-1-dev (>= 1.0),
 | 
			
		||||
 librust-serde-yaml-0.8-dev (>= 0.8),
 | 
			
		||||
 librust-xkbcommon-0.4+wayland-dev (>= 0.4),
 | 
			
		||||
 librust-zbus-dev (>=1.0),
 | 
			
		||||
 librust-zbus-dev (>= 1.9),
 | 
			
		||||
 libwayland-dev (>= 1.16),
 | 
			
		||||
 lsb-release,
 | 
			
		||||
 python3,
 | 
			
		||||
 python3-ruamel.yaml,
 | 
			
		||||
 rustc-mozilla,
 | 
			
		||||
 rustc,
 | 
			
		||||
 wayland-protocols (>= 1.14),
 | 
			
		||||
Standards-Version: 4.1.3
 | 
			
		||||
Homepage: https://source.puri.sm/Librem5/squeekboard
 | 
			
		||||
Homepage: https://gitlab.gnome.org/World/Phosh/squeekboard
 | 
			
		||||
 | 
			
		||||
Package: squeekboard
 | 
			
		||||
Architecture: linux-any
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										62
									
								
								debian/control-newer
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										62
									
								
								debian/control-newer
									
									
									
									
										vendored
									
									
								
							@ -1,62 +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,
 | 
			
		||||
 libglib2.0-dev,
 | 
			
		||||
 libgnome-desktop-3-dev,
 | 
			
		||||
 libgtk-3-dev,
 | 
			
		||||
 libfeedback-dev,
 | 
			
		||||
 librust-bitflags-dev (>= 1.0),
 | 
			
		||||
 librust-clap-dev (>= 2.32),
 | 
			
		||||
 librust-gio+v2-58-dev,
 | 
			
		||||
 librust-glib+v2-58-dev,
 | 
			
		||||
 librust-glib-sys-dev,
 | 
			
		||||
 librust-gtk+v3-22-dev (>= 0.5),
 | 
			
		||||
 librust-gtk-sys-dev,
 | 
			
		||||
 librust-maplit-1-dev (>= 1.0),
 | 
			
		||||
 librust-serde-derive-1-dev (>= 1.0),
 | 
			
		||||
 librust-serde-yaml-0.8-dev (>= 0.8),
 | 
			
		||||
 librust-xkbcommon-0.4+wayland-dev (>= 0.4),
 | 
			
		||||
 librust-zbus-dev (>= 1.9),
 | 
			
		||||
 libwayland-dev (>= 1.16),
 | 
			
		||||
 lsb-release,
 | 
			
		||||
 python3,
 | 
			
		||||
 python3-ruamel.yaml,
 | 
			
		||||
 rustc,
 | 
			
		||||
 wayland-protocols (>= 1.14),
 | 
			
		||||
Standards-Version: 4.1.3
 | 
			
		||||
Homepage: https://source.puri.sm/Librem5/squeekboard
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
							
								
								
									
										2
									
								
								debian/copyright
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								debian/copyright
									
									
									
									
										vendored
									
									
								
							@ -1,6 +1,6 @@
 | 
			
		||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 | 
			
		||||
Upstream-Name: squeekboard
 | 
			
		||||
Source: https://source.puri.sm/Librem5/squeekboard
 | 
			
		||||
Source: https://gitlab.gnome.org/World/Phosh/squeekboard
 | 
			
		||||
 | 
			
		||||
Files: *
 | 
			
		||||
Copyright: 2010-2011 Daiki Ueno <ueno@unixuser.org>
 | 
			
		||||
 | 
			
		||||
@ -38,7 +38,7 @@ You may notice that they are ordered roughly from "user-focused" to "maintainer-
 | 
			
		||||
Sending patches
 | 
			
		||||
---------------
 | 
			
		||||
 | 
			
		||||
By submitting a change to this project, you agree to license it under the [GPL license version 3](https://source.puri.sm/Librem5/squeekboard/blob/master/COPYING), or any later version. You also certify that your contribution fulfills the [Developer's Certificate of Origin 1.1](https://source.puri.sm/Librem5/squeekboard/blob/master/dco.txt).
 | 
			
		||||
By submitting a change to this project, you agree to license it under the [GPL license version 3](COPYING), or any later version. You also certify that your contribution fulfills the [Developer's Certificate of Origin 1.1](dco.txt).
 | 
			
		||||
 | 
			
		||||
Development environment
 | 
			
		||||
-----------------------
 | 
			
		||||
@ -56,7 +56,7 @@ sudo apt-get -y install build-essential
 | 
			
		||||
sudo apt-get -y build-dep .
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
For an explicit list of dependencies check the `Build-Depends` entry in the [`debian/control`](https://source.puri.sm/Librem5/squeekboard/blob/master/debian/control) file.
 | 
			
		||||
For an explicit list of dependencies check the `Build-Depends` entry in the [`debian/control`](debian/control) file.
 | 
			
		||||
 | 
			
		||||
Testing
 | 
			
		||||
-------
 | 
			
		||||
@ -245,13 +245,13 @@ Packaging is in the `debian/` directory, and creates builds that can be quickly
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
cd squeekboard-source
 | 
			
		||||
gbp dch --multimaint-merge  --ignore-branch
 | 
			
		||||
EMAIL=my_address@example.com gbp dch --multimaint-merge  --ignore-branch --git-author --distribution=experimental --new-version=x.y.z
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Inspect `debian/changelog`, and make sure the first line contains the correct version number and suite. For example:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
squeekboard (1.13.0pureos0~amber0) amber-phone; urgency=medium
 | 
			
		||||
squeekboard (1.22.0) experimental; urgency=medium
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Add the updated `debian/changelog` to the commit. The commit message should contain the release version and a description of changes.
 | 
			
		||||
@ -261,17 +261,17 @@ Add the updated `debian/changelog` to the commit. The commit message should cont
 | 
			
		||||
Summarize the changes since the last release in the NEWS file. Use the Markdown syntax, e.g.
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
1.13.0 "Externality"
 | 
			
		||||
1.22.0 "Superposition"
 | 
			
		||||
-----------------------------
 | 
			
		||||
 | 
			
		||||
Changes:
 | 
			
		||||
- A system for latching and locking views
 | 
			
		||||
- Fixed panel sizing when scaling
 | 
			
		||||
...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 6. Commit changes
 | 
			
		||||
 | 
			
		||||
Generate a commit message from the news file:
 | 
			
		||||
Generate a commit message from the NEWS file:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
tools/make_message | git commit --file=- ...
 | 
			
		||||
@ -284,10 +284,10 @@ If the commit message looks wrong, fix the NEWS file, and do `git commit --amend
 | 
			
		||||
The tag should be the version number with "v" in front of it. The tag message should be "squeekboard" and the tag name. Push it to the upstream repository:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
git tag -s -u my_address@example.com v1.13.0 -m "squeekboard v1.13.0"
 | 
			
		||||
git push v1.13.0
 | 
			
		||||
git tag -s -u my_address@example.com v1.22.0 -m "squeekboard v1.22.0"
 | 
			
		||||
git push origin v1.22.0
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 8. Rejoice
 | 
			
		||||
 | 
			
		||||
You released a new version of Squeekboard, and made it available on PureOS. Congratulations.
 | 
			
		||||
You released a new version of Squeekboard. Congratulations!
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,7 @@ Welcome to squeekboard's documentation!
 | 
			
		||||
Introduction
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
Squeekboard is the on-screen keyboard for the Librem 5 phone. For information about building, look at the [README](https://source.puri.sm/Librem5/squeekboard/blob/master/README.md).
 | 
			
		||||
Squeekboard is the on-screen keyboard for the Librem 5 phone. For information about building, look at the [README](README.md).
 | 
			
		||||
 | 
			
		||||
Layouts
 | 
			
		||||
-------
 | 
			
		||||
@ -24,4 +24,4 @@ Anyone is free to modify *squeekboard*. See the [contributing document](hacking.
 | 
			
		||||
 | 
			
		||||
### Code documentation
 | 
			
		||||
 | 
			
		||||
To expose the structure of Squeekboard in detail, there's a [code reference](doc/rs).
 | 
			
		||||
To expose the structure of Squeekboard in detail, there's a [code reference](https://world.pages.gitlab.gnome.org/Phosh/squeekboard/doc/rs/).
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@ This guide is based on the original Kareema's [forum post](https://forums.puri.s
 | 
			
		||||
 | 
			
		||||
It’s long overdue to write a comprehensive guide how to add a keyboard layout from start. But unfortunately, I don’t have much time left ATM. A lot of information can be found in [this](https://forums.puri.sm/t/using-non-latin-language-on-librem-5/7103/5) thread.
 | 
			
		||||
 | 
			
		||||
So at least I will try to start writing a short how-to here and edit this post as I find the time. Hope this helps a bit - comments and corrections [welcome](https://source.puri.sm/Librem5/squeekboard/-/merge_requests/)
 | 
			
		||||
So at least I will try to start writing a short how-to here and edit this post as I find the time. Hope this helps a bit - comments and corrections [welcome](https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/)
 | 
			
		||||
 | 
			
		||||
## Creating a new layout
 | 
			
		||||
 | 
			
		||||
@ -13,8 +13,8 @@ Creating a layout is easy. You don't need to recompile things, just edit and tes
 | 
			
		||||
 | 
			
		||||
### Get one of the existing keyboard layouts
 | 
			
		||||
 | 
			
		||||
* You can get one of the keyboards from the squeekboard git repository : [https://source.puri.sm/Librem5/squeekboard](https://source.puri.sm/Librem5/squeekboard)
 | 
			
		||||
* The keyboard layouts are located in the subdirectory [`data/keyboards/`](https://source.puri.sm/Librem5/squeekboard/-/tree/master/data/keyboards) in the `.yaml` files
 | 
			
		||||
* You can get one of the keyboards from the squeekboard git repository : [https://gitlab.gnome.org/World/Phosh/squeekboard](https://gitlab.gnome.org/World/Phosh/squeekboard)
 | 
			
		||||
* The keyboard layouts are located in the subdirectory [`data/keyboards/`](data/keyboards) in the `.yaml` files
 | 
			
		||||
 | 
			
		||||
### Creating the keyboard layout
 | 
			
		||||
 | 
			
		||||
@ -52,7 +52,7 @@ Above all, your layout should be working, be tested, not break anything, and mak
 | 
			
		||||
 | 
			
		||||
### Fork your own copy of squeekboard
 | 
			
		||||
 | 
			
		||||
* Best way would be to start with a fork of the squeekboard repository: Create a user account at https://source.puri.sm/, go the the squeekboard git repository, press “Fork” in the web interface. You can find further instructions [here](https://docs.gitlab.com/ee/user/project/repository/forking_workflow.html#creating-a-fork).
 | 
			
		||||
* Best way would be to start with a fork of the squeekboard repository: Create a user account at https://gitlab.gnome.org/, go the the squeekboard git repository, press “Fork” in the web interface. You can find further instructions [here](https://docs.gitlab.com/ee/user/project/repository/forking_workflow.html#creating-a-fork).
 | 
			
		||||
* Clone your fork locally with `git clone` and use the uri of your forked repo there
 | 
			
		||||
 | 
			
		||||
### Edit your keyboard and get it merged
 | 
			
		||||
@ -62,8 +62,7 @@ Above all, your layout should be working, be tested, not break anything, and mak
 | 
			
		||||
* Checkout your branch, edit your keyboard layout and commit your changes
 | 
			
		||||
* Your layout **must** be correctly named, and in `data/keyboards/`.
 | 
			
		||||
* Your layout **must** pass the `test_layout` tool with zero problems.
 | 
			
		||||
* Your translation **must** be correctly named, and in `data/langs/`.
 | 
			
		||||
* Your layout or translation **must** be added to automatic tests. **Don’t forget to add it** to `src/resources.rs` and the layout to `tests/meson.build` (that’s for me, because I always forget it).
 | 
			
		||||
* Your layout **must** be added to automatic tests. **Remember to add the layout** to `src/resources.rs` and `tests/meson.build`.
 | 
			
		||||
 | 
			
		||||
### Get it merged
 | 
			
		||||
 | 
			
		||||
@ -80,12 +79,12 @@ If you want your change to become part of official Squeekboard, or if you want t
 | 
			
		||||
 | 
			
		||||
### Compile squeekboard
 | 
			
		||||
 | 
			
		||||
* Follow the instructions found in “Building” section of the squeekboard’s README: Running squeekboard: [https://source.puri.sm/Librem5/squeekboard/blob/master/README.md#building](https://source.puri.sm/Librem5/squeekboard/blob/master/README.md#building)
 | 
			
		||||
* Follow the instructions found in “Building” section of the squeekboard’s README: Running squeekboard: [README.md#building](https://gitlab.gnome.org/World/Phosh/squeekboard/-/blob/main/README.md#building)
 | 
			
		||||
 | 
			
		||||
### Run squeekboard
 | 
			
		||||
 | 
			
		||||
* Follow these instructions to run squeekboard: [https://source.puri.sm/Librem5/squeekboard/blob/master/README.md#running](https://source.puri.sm/Librem5/squeekboard/blob/master/README.md#running)
 | 
			
		||||
* Additionally take a look at the contribution document for [testing info](HACKING.md#testing)
 | 
			
		||||
* Follow these instructions to run squeekboard: [README.md#running](https://gitlab.gnome.org/World/Phosh/squeekboard/-/blob/main/README.md#running)
 | 
			
		||||
* Additionally take a look at the contribution document for [testing info](https://gitlab.gnome.org/World/Phosh/squeekboard/-/blob/main/doc/hacking.md#testing)
 | 
			
		||||
* You can either test it locally on your Linux system or use the [QEMU Librem 5 image](https://developer.puri.sm/Librem5/Development_Environment/Boards/emulators.html)
 | 
			
		||||
* To test squeekboard locally, you need phoc. Either compile that from the sources as well or use the CI repository ci.puri.sm for Debian based systems:
 | 
			
		||||
  `deb [arch=amd64] http://ci.puri.sm/ scratch librem5`
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
project(
 | 
			
		||||
    'squeekboard',
 | 
			
		||||
    'c', 'rust',
 | 
			
		||||
    version: '1.21.0',
 | 
			
		||||
    version: '1.24.0',
 | 
			
		||||
    license: 'GPLv3',
 | 
			
		||||
    meson_version: '>=0.51.0',
 | 
			
		||||
    default_options: [
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,10 @@
 | 
			
		||||
be
 | 
			
		||||
ca
 | 
			
		||||
cs
 | 
			
		||||
de
 | 
			
		||||
el
 | 
			
		||||
es
 | 
			
		||||
eu
 | 
			
		||||
fa
 | 
			
		||||
fi
 | 
			
		||||
fr
 | 
			
		||||
@ -11,6 +13,7 @@ gl
 | 
			
		||||
he
 | 
			
		||||
hi
 | 
			
		||||
hr
 | 
			
		||||
ht
 | 
			
		||||
hu
 | 
			
		||||
it
 | 
			
		||||
ka
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										47
									
								
								po/be.po
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								po/be.po
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,47 @@
 | 
			
		||||
# Belarusian translation for squeekboard.
 | 
			
		||||
# Copyright (C) 2023 squeekboard's COPYRIGHT HOLDER
 | 
			
		||||
# This file is distributed under the same license as the squeekboard package.
 | 
			
		||||
# Yuras Shumovich <shumovichy@gmail.com>, 2023.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: squeekboard master\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/Phosh/squeekboard/"
 | 
			
		||||
"issues\n"
 | 
			
		||||
"POT-Creation-Date: 2023-04-02 17:10+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2023-09-14 14:44+0300\n"
 | 
			
		||||
"Last-Translator: Yuras Shumovich <shumovichy@gmail.com>\n"
 | 
			
		||||
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
 | 
			
		||||
"Language: be\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 "
 | 
			
		||||
"&& n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 | 
			
		||||
"X-Generator: Poedit 3.3.2\n"
 | 
			
		||||
 | 
			
		||||
#. translators: This is a emmoji keyboard layout
 | 
			
		||||
#: data/popover.ui:6
 | 
			
		||||
msgid "Emoji"
 | 
			
		||||
msgstr "Эмодзі"
 | 
			
		||||
 | 
			
		||||
#. translators: This is a terminal keyboard layout
 | 
			
		||||
#: data/popover.ui:12
 | 
			
		||||
msgid "Terminal"
 | 
			
		||||
msgstr "Тэрмінал"
 | 
			
		||||
 | 
			
		||||
#: data/popover.ui:18
 | 
			
		||||
msgid "Keyboard Settings"
 | 
			
		||||
msgstr "Налады клавіятуры"
 | 
			
		||||
 | 
			
		||||
#: data/sm.puri.Squeekboard.desktop.in.in:3
 | 
			
		||||
msgid "Squeekboard"
 | 
			
		||||
msgstr "Squeekboard"
 | 
			
		||||
 | 
			
		||||
#: data/sm.puri.Squeekboard.desktop.in.in:4
 | 
			
		||||
msgid "On Screen Keyboard"
 | 
			
		||||
msgstr "Экранная клавіятура"
 | 
			
		||||
 | 
			
		||||
#: data/sm.puri.Squeekboard.desktop.in.in:5
 | 
			
		||||
msgid "An on screen virtual keyboard"
 | 
			
		||||
msgstr "Віртуальная экранная клавіятура"
 | 
			
		||||
							
								
								
									
										42
									
								
								po/eu.po
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								po/eu.po
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,42 @@
 | 
			
		||||
# Basque translation for squeekboard.
 | 
			
		||||
# Copyright (C) 2023 squeekboard's COPYRIGHT HOLDER
 | 
			
		||||
# This file is distributed under the same license as the squeekboard package.
 | 
			
		||||
# Asier Sarasua Garmendia <asiersarasua@ni.eus>, 2023.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr "Project-Id-Version: squeekboard master\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/Phosh/squeekboard/issues\n"
 | 
			
		||||
"POT-Creation-Date: 2023-02-26 09:13+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2023-03-06 09:13+0000\n"
 | 
			
		||||
"Last-Translator: Asier Sarasua Garmendia <asiersarasua@ni.eus>\n"
 | 
			
		||||
"Language-Team: Basque <librezale@librezale.eus>\n"
 | 
			
		||||
"Language: eu\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
 | 
			
		||||
#. translators: This is a emmoji keyboard layout
 | 
			
		||||
#: data/popover.ui:6
 | 
			
		||||
msgid "Emoji"
 | 
			
		||||
msgstr "Emojia"
 | 
			
		||||
 | 
			
		||||
#. translators: This is a terminal keyboard layout
 | 
			
		||||
#: data/popover.ui:12
 | 
			
		||||
msgid "Terminal"
 | 
			
		||||
msgstr "Terminala"
 | 
			
		||||
 | 
			
		||||
#: data/popover.ui:18
 | 
			
		||||
msgid "Keyboard Settings"
 | 
			
		||||
msgstr "Teklatuaren ezarpenak"
 | 
			
		||||
 | 
			
		||||
#: data/sm.puri.Squeekboard.desktop.in.in:3
 | 
			
		||||
msgid "Squeekboard"
 | 
			
		||||
msgstr "Squeekboard"
 | 
			
		||||
 | 
			
		||||
#: data/sm.puri.Squeekboard.desktop.in.in:4
 | 
			
		||||
msgid "On Screen Keyboard"
 | 
			
		||||
msgstr "Pantailako teklatua"
 | 
			
		||||
 | 
			
		||||
#: data/sm.puri.Squeekboard.desktop.in.in:5
 | 
			
		||||
msgid "An on screen virtual keyboard"
 | 
			
		||||
msgstr "Gehitu pantailako teklatu birtuala"
 | 
			
		||||
							
								
								
									
										45
									
								
								po/ht.po
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								po/ht.po
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
			
		||||
# Squeekboard Haitian Creole Translation
 | 
			
		||||
# Copyright (C) 2024 Purism
 | 
			
		||||
# This file is distributed under the same license as the squeekboard package.
 | 
			
		||||
# Pierre Michel Augustin <pierremichelaugustin@gnuhealth.org>, 2024.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: \n"
 | 
			
		||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/Phosh/squeekboard/"
 | 
			
		||||
"issues\n"
 | 
			
		||||
"POT-Creation-Date: 2024-01-11 05:05+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2024-01-11 10:40-0500\n"
 | 
			
		||||
"Last-Translator: \n"
 | 
			
		||||
"Language-Team: \n"
 | 
			
		||||
"Language: ht\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"X-Generator: Poedit 3.0.1\n"
 | 
			
		||||
 | 
			
		||||
#. translators: This is a emmoji keyboard layout
 | 
			
		||||
#: data/popover.ui:6
 | 
			
		||||
msgid "Emoji"
 | 
			
		||||
msgstr "Emoji"
 | 
			
		||||
 | 
			
		||||
#. translators: This is a terminal keyboard layout
 | 
			
		||||
#: data/popover.ui:12
 | 
			
		||||
msgid "Terminal"
 | 
			
		||||
msgstr "Tèminal"
 | 
			
		||||
 | 
			
		||||
#: data/popover.ui:18
 | 
			
		||||
msgid "Keyboard Settings"
 | 
			
		||||
msgstr "Paramèt Klavye yo"
 | 
			
		||||
 | 
			
		||||
#: data/sm.puri.Squeekboard.desktop.in.in:3
 | 
			
		||||
msgid "Squeekboard"
 | 
			
		||||
msgstr "Squeekboard"
 | 
			
		||||
 | 
			
		||||
#: data/sm.puri.Squeekboard.desktop.in.in:4
 | 
			
		||||
msgid "On Screen Keyboard"
 | 
			
		||||
msgstr "Sou Ekran Klavye"
 | 
			
		||||
 | 
			
		||||
#: data/sm.puri.Squeekboard.desktop.in.in:5
 | 
			
		||||
msgid "An on screen virtual keyboard"
 | 
			
		||||
msgstr "Sou yon ekran klavye vityèl"
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns="http://usefulinc.com/ns/doap#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:admin="http://webns.net/mvcb/">
 | 
			
		||||
 <name>squeekboard</name>
 | 
			
		||||
 <shortdesc>A Wayland virtual keyboard</shortdesc>
 | 
			
		||||
 <description>A virtual keyboard supporting Wayland, built primarily for the Librem 5 phone.</description>
 | 
			
		||||
 <homepage rdf:resource="https://source.puri.sm/Librem5/squeekboard" />
 | 
			
		||||
 <bug-database rdf:resource="https://source.puri.sm/Librem5/squeekboard/issues" />
 | 
			
		||||
 <shortdesc>A virtual keyboard for Wayland</shortdesc>
 | 
			
		||||
 <description>An on-screen-keyboard input method for Wayland</description>
 | 
			
		||||
 <homepage rdf:resource="https://gitlab.gnome.org/World/Phosh/squeekboard" />
 | 
			
		||||
 <bug-database rdf:resource="https://gitlab.gnome.org/World/Phosh/squeekboard/issues" />
 | 
			
		||||
 <os>Linux</os>
 | 
			
		||||
 <license rdf:resource="http://usefulinc.com/doap/licenses/gpl" />
 | 
			
		||||
 <maintainer>
 | 
			
		||||
 | 
			
		||||
@ -29,9 +29,14 @@ pub mod c {
 | 
			
		||||
    pub struct WlOutput(*const c_void);
 | 
			
		||||
 | 
			
		||||
    impl WlOutput {
 | 
			
		||||
        fn null() -> Self {
 | 
			
		||||
        const fn null() -> Self {
 | 
			
		||||
            Self(ptr::null())
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        #[cfg(test)]
 | 
			
		||||
        pub const fn dummy() -> Self {
 | 
			
		||||
            Self::null()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[repr(C)]
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										243
									
								
								src/panel.rs
									
									
									
									
									
								
							
							
						
						
									
										243
									
								
								src/panel.rs
									
									
									
									
									
								
							@ -94,7 +94,7 @@ impl PixelSize {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[derive(Clone, Debug)]
 | 
			
		||||
#[derive(Clone, Debug, PartialEq)]
 | 
			
		||||
struct Size {
 | 
			
		||||
    width: u32,
 | 
			
		||||
    height: u32,
 | 
			
		||||
@ -104,7 +104,7 @@ struct Size {
 | 
			
		||||
/// the application asks for some size,
 | 
			
		||||
/// and then receives a size that the compositor thought appropriate.
 | 
			
		||||
/// Stores raw values passed to Wayland, i.e. scaled dimensions.
 | 
			
		||||
#[derive(Clone, Debug)]
 | 
			
		||||
#[derive(Clone, Debug, PartialEq)]
 | 
			
		||||
enum State {
 | 
			
		||||
    Hidden,
 | 
			
		||||
    SizeRequested {
 | 
			
		||||
@ -119,6 +119,18 @@ enum State {
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// A command to send out to the next layer of processing.
 | 
			
		||||
/// Here, it's the C side of the panel.
 | 
			
		||||
#[derive(Debug, PartialEq)]
 | 
			
		||||
enum Update {
 | 
			
		||||
    Hide,
 | 
			
		||||
    Resize { height: u32 },
 | 
			
		||||
    RequestWidget {
 | 
			
		||||
        output: OutputId,
 | 
			
		||||
        height: u32,
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[derive(Clone, PartialEq, Debug)]
 | 
			
		||||
pub enum Command {
 | 
			
		||||
    Show {
 | 
			
		||||
@ -153,7 +165,50 @@ impl Manager {
 | 
			
		||||
            eprintln!("Panel received configure {:?}", &size);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        self.state = match self.state.clone() {
 | 
			
		||||
        self.state = self.state.clone().configure(size);
 | 
			
		||||
 | 
			
		||||
        if self.debug {
 | 
			
		||||
            eprintln!("Panel now {:?}", &self.state);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub fn update(mgr: Wrapped<Manager>, cmd: Command) {
 | 
			
		||||
        let copied = mgr.clone();
 | 
			
		||||
 | 
			
		||||
        let mgr = mgr.clone_ref();
 | 
			
		||||
        let mut mgr = mgr.borrow_mut();
 | 
			
		||||
        
 | 
			
		||||
        if mgr.debug {
 | 
			
		||||
            eprintln!("Panel received {:?}", &cmd);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        let (state, updates) = mgr.state.clone().update(cmd);
 | 
			
		||||
        (*mgr).state = state;
 | 
			
		||||
        
 | 
			
		||||
        for update in &updates {
 | 
			
		||||
            unsafe {
 | 
			
		||||
                match update {
 | 
			
		||||
                    Update::Hide => c::panel_manager_hide(mgr.panel),
 | 
			
		||||
                    Update::Resize { height }
 | 
			
		||||
                        => c::panel_manager_resize(mgr.panel, *height),
 | 
			
		||||
                    Update::RequestWidget{output, height}
 | 
			
		||||
                        => c::panel_manager_request_widget(mgr.panel, output.0, *height, copied.clone()),
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        if mgr.debug {
 | 
			
		||||
            for update in &updates {
 | 
			
		||||
                eprintln!("Panel updates: {:?}", &update);
 | 
			
		||||
            }
 | 
			
		||||
            eprintln!("Panel is now {:?}", &(*mgr).state);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl State {
 | 
			
		||||
    fn configure(self, size: Size) -> Self {
 | 
			
		||||
         match self {
 | 
			
		||||
            State::Hidden => {
 | 
			
		||||
                // This may happen if a hide is scheduled immediately after a show.
 | 
			
		||||
                log_print!(
 | 
			
		||||
@ -174,49 +229,34 @@ impl Manager {
 | 
			
		||||
                wanted_height: height,
 | 
			
		||||
                allocated: size,
 | 
			
		||||
            },
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        if self.debug {
 | 
			
		||||
            eprintln!("Panel now {:?}", &self.state);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub fn update(mgr: Wrapped<Manager>, cmd: Command) {
 | 
			
		||||
        let copied = mgr.clone();
 | 
			
		||||
 | 
			
		||||
        let mgr = mgr.clone_ref();
 | 
			
		||||
        let mut mgr = mgr.borrow_mut();
 | 
			
		||||
        
 | 
			
		||||
        if mgr.debug {
 | 
			
		||||
            eprintln!("Panel received {:?}", &cmd);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        (*mgr).state = match (cmd, mgr.state.clone()) {
 | 
			
		||||
            (Command::Hide, State::Hidden) => State::Hidden,
 | 
			
		||||
            (Command::Hide, State::SizeAllocated{..}) => {
 | 
			
		||||
                unsafe { c::panel_manager_hide(mgr.panel); }
 | 
			
		||||
                State::Hidden
 | 
			
		||||
            },
 | 
			
		||||
            (Command::Hide, State::SizeRequested{..}) => {
 | 
			
		||||
                unsafe { c::panel_manager_hide(mgr.panel); }
 | 
			
		||||
                State::Hidden
 | 
			
		||||
            },
 | 
			
		||||
    fn update(self, cmd: Command) -> (Self, Vec<Update>) {
 | 
			
		||||
        match (cmd, self) {
 | 
			
		||||
            (Command::Hide, State::Hidden) => (State::Hidden, Vec::new()),
 | 
			
		||||
            (Command::Hide, State::SizeAllocated{..}) => (
 | 
			
		||||
                State::Hidden, vec![Update::Hide],
 | 
			
		||||
            ),
 | 
			
		||||
            (Command::Hide, State::SizeRequested{..}) => (
 | 
			
		||||
                State::Hidden, vec![Update::Hide],
 | 
			
		||||
            ),
 | 
			
		||||
            (Command::Show{output, height}, State::Hidden) => {
 | 
			
		||||
                let height = height.as_scaled_ceiling();
 | 
			
		||||
                if mgr.debug {
 | 
			
		||||
                    eprintln!("Panel requests widget {:?}", (&output.0, &height));
 | 
			
		||||
                }
 | 
			
		||||
                unsafe { c::panel_manager_request_widget(mgr.panel, output.0, height, copied); }
 | 
			
		||||
                State::SizeRequested{output, height}
 | 
			
		||||
                (
 | 
			
		||||
                    State::SizeRequested{output, height},
 | 
			
		||||
                    vec![Update::RequestWidget{ output, height }],
 | 
			
		||||
                )
 | 
			
		||||
            },
 | 
			
		||||
            (
 | 
			
		||||
                Command::Show{output, height},
 | 
			
		||||
                State::SizeRequested{output: req_output, height: req_height},
 | 
			
		||||
            ) => {
 | 
			
		||||
                let height = height.as_scaled_ceiling();
 | 
			
		||||
                if output == req_output && height == req_height {
 | 
			
		||||
                    State::SizeRequested{output: req_output, height: req_height}
 | 
			
		||||
                } else if output == req_output {
 | 
			
		||||
                if output == req_output && height == req_height {(
 | 
			
		||||
                    State::SizeRequested{output: req_output, height: req_height},
 | 
			
		||||
                    Vec::new(),
 | 
			
		||||
                )} else if output == req_output {(
 | 
			
		||||
                    // I'm not sure about that.
 | 
			
		||||
                    // This could cause a busy loop,
 | 
			
		||||
                    // when two requests are being processed at the same time:
 | 
			
		||||
@ -225,50 +265,119 @@ impl Manager {
 | 
			
		||||
                    // the other from the state wanting height B',
 | 
			
		||||
                    // causing the compositor to change size to B.
 | 
			
		||||
                    // So better cut this short here, despite artifacts.
 | 
			
		||||
                    // Out of simplicty, just ignore the new request.
 | 
			
		||||
                    // If that causes problems, the request in flight could be stored
 | 
			
		||||
                    // for the purpose of handling it better somehow.
 | 
			
		||||
                    State::SizeRequested{output: req_output, height: req_height}
 | 
			
		||||
                } else {
 | 
			
		||||
                    if mgr.debug {
 | 
			
		||||
                        eprintln!("Panel requests widget {:?}", (&output.0, &height));
 | 
			
		||||
                    }
 | 
			
		||||
                    
 | 
			
		||||
                    // Doing nothing means that Squeekboard will occasionally use the stale size (see test),
 | 
			
		||||
                    // so instead always listen to the higher layer and request a new size.
 | 
			
		||||
                    // If this causes problems, maybe count requests/configures, or track what was allocated in response to what request.
 | 
			
		||||
                    State::SizeRequested{output, height},
 | 
			
		||||
                    vec![Update::Resize { height }],
 | 
			
		||||
                )} else {(
 | 
			
		||||
                    // This looks weird, but should be safe.
 | 
			
		||||
                    // The stack seems to handle
 | 
			
		||||
                    // configure events on a dead surface.
 | 
			
		||||
                    unsafe {
 | 
			
		||||
                        c::panel_manager_hide(mgr.panel);
 | 
			
		||||
                        c::panel_manager_request_widget(mgr.panel, output.0, height, copied);
 | 
			
		||||
                    }
 | 
			
		||||
                    State::SizeRequested{output, height}
 | 
			
		||||
                }
 | 
			
		||||
                    State::SizeRequested{output, height},
 | 
			
		||||
                    vec![
 | 
			
		||||
                        Update::Hide,
 | 
			
		||||
                        Update::RequestWidget { output, height },
 | 
			
		||||
                    ],
 | 
			
		||||
                )}
 | 
			
		||||
            },
 | 
			
		||||
            (
 | 
			
		||||
                Command::Show{output, height},
 | 
			
		||||
                State::SizeAllocated{output: alloc_output, allocated, wanted_height},
 | 
			
		||||
            ) => {
 | 
			
		||||
                let height = height.as_scaled_ceiling();
 | 
			
		||||
                if output == alloc_output && height == wanted_height {
 | 
			
		||||
                    State::SizeAllocated{output: alloc_output, wanted_height, allocated}
 | 
			
		||||
                } else if output == alloc_output && height == allocated.height {
 | 
			
		||||
                    State::SizeAllocated{output: alloc_output, wanted_height: height, allocated}
 | 
			
		||||
                } else if output == alloc_output {
 | 
			
		||||
                if output == alloc_output && height == wanted_height {(
 | 
			
		||||
                    State::SizeAllocated{output: alloc_output, wanted_height, allocated},
 | 
			
		||||
                    Vec::new(),
 | 
			
		||||
                )} else if output == alloc_output && height == allocated.height {(
 | 
			
		||||
                    State::SizeAllocated{output: alloc_output, wanted_height: height, allocated},
 | 
			
		||||
                    Vec::new(),
 | 
			
		||||
                )} else if output == alloc_output {(
 | 
			
		||||
                    // Should *all* other heights cause a resize?
 | 
			
		||||
                    // What about those between wanted and allocated?
 | 
			
		||||
                    unsafe { c::panel_manager_resize(mgr.panel, height); }
 | 
			
		||||
                    State::SizeRequested{output, height}
 | 
			
		||||
                } else {
 | 
			
		||||
                    unsafe {
 | 
			
		||||
                        c::panel_manager_hide(mgr.panel);
 | 
			
		||||
                        c::panel_manager_request_widget(mgr.panel, output.0, height, copied);
 | 
			
		||||
                    }
 | 
			
		||||
                    State::SizeRequested{output, height}
 | 
			
		||||
                }
 | 
			
		||||
                    State::SizeRequested{output, height},
 | 
			
		||||
                    vec![Update::Resize{height}],
 | 
			
		||||
                )} else {(
 | 
			
		||||
                    State::SizeRequested{output, height},
 | 
			
		||||
                    vec![
 | 
			
		||||
                        Update::Hide,
 | 
			
		||||
                        Update::RequestWidget{output, height},
 | 
			
		||||
                    ]
 | 
			
		||||
                   )}
 | 
			
		||||
            },
 | 
			
		||||
        };
 | 
			
		||||
        
 | 
			
		||||
        if mgr.debug {
 | 
			
		||||
            eprintln!("Panel is now {:?}", &(*mgr).state);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
mod tests {
 | 
			
		||||
    use super::*;
 | 
			
		||||
    use crate::outputs::c::WlOutput;
 | 
			
		||||
    
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn resize_before_configured() {
 | 
			
		||||
        // allow to make typing fields easier
 | 
			
		||||
        #[allow(non_upper_case_globals)]
 | 
			
		||||
        const output: OutputId = OutputId(WlOutput::dummy());
 | 
			
		||||
        
 | 
			
		||||
        let state = State::Hidden;
 | 
			
		||||
        
 | 
			
		||||
        // Initial show
 | 
			
		||||
        let (state, cmds) = state.update(Command::Show {
 | 
			
		||||
            output,
 | 
			
		||||
            height: PixelSize { pixels: 100, scale_factor: 1 },
 | 
			
		||||
        });
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
            cmds,
 | 
			
		||||
            vec![Update::RequestWidget { output, height: 100 }],
 | 
			
		||||
        );
 | 
			
		||||
        // layer shell requests a resize
 | 
			
		||||
 | 
			
		||||
        // but another show comes before first can be confirmed
 | 
			
		||||
        let (state, cmds) = dbg!(state).update(Command::Show {
 | 
			
		||||
            output,
 | 
			
		||||
            height: PixelSize { pixels: 50, scale_factor: 1 },
 | 
			
		||||
        });
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
            cmds,
 | 
			
		||||
            vec![Update::Resize { height: 50 }],
 | 
			
		||||
            "{:?}",
 | 
			
		||||
            state,
 | 
			
		||||
        );
 | 
			
		||||
        // This is too many layers of indirection, but as long as layer shell is tied to gtk widgets, there's not much to be done.
 | 
			
		||||
        // The main issue is that as the outputs change, we acknowledge the wrong (maintained) size:
 | 
			
		||||
        /*
 | 
			
		||||
        [346947.774] wl_output@31.geometry(0, 0, 65, 130, 0, "<Unknown>", "<Unknown>", 3)
 | 
			
		||||
[346948.117] wl_output@17.geometry(0, 0, 65, 130, 0, "<Unknown>", "<Unknown>", 3)
 | 
			
		||||
[346948.198] zwlr_layer_surface_v1@41.configure(1709, 720, 210)
 | 
			
		||||
[346948.268]  -> zwlr_layer_surface_v1@41.ack_configure(1709)
 | 
			
		||||
        */
 | 
			
		||||
        // TODO: check if layer_shell allows not acknowledging a configure event, and which part of squeekboard is responsible for that
 | 
			
		||||
        // (there are no messages in between, so it's not PanelMgr; panel.c almost-unconditionally calls to Rust too; could it be layer-shell.c?).
 | 
			
		||||
        
 | 
			
		||||
        // event we want
 | 
			
		||||
        let good_state = state.clone().configure(Size { width: 50, height: 50 });
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
            good_state,
 | 
			
		||||
            State::SizeAllocated {
 | 
			
		||||
                output,
 | 
			
		||||
                wanted_height: 50,
 | 
			
		||||
                allocated: Size { width: 50, height: 50 },
 | 
			
		||||
            },
 | 
			
		||||
        );
 | 
			
		||||
        
 | 
			
		||||
        // or stale event we do not want
 | 
			
		||||
        let state = state.configure(Size { width: 50, height: 100 });
 | 
			
		||||
        // followed by the good one
 | 
			
		||||
        let state = state.configure(Size { width: 50, height: 50 });
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
            state,
 | 
			
		||||
            State::SizeAllocated {
 | 
			
		||||
                output,
 | 
			
		||||
                wanted_height: 50,
 | 
			
		||||
                allocated: Size { width: 50, height: 50 },
 | 
			
		||||
            },
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -59,8 +59,8 @@ popover_open_settings_panel (char *panel)
 | 
			
		||||
  g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION,
 | 
			
		||||
                G_DBUS_PROXY_FLAGS_NONE,
 | 
			
		||||
                NULL,
 | 
			
		||||
                "org.gnome.ControlCenter",
 | 
			
		||||
                "/org/gnome/ControlCenter",
 | 
			
		||||
                "org.gnome.Settings",
 | 
			
		||||
                "/org/gnome/Settings",
 | 
			
		||||
                "org.gtk.Actions",
 | 
			
		||||
                NULL,
 | 
			
		||||
                (GAsyncReadyCallback) create_dbus_proxy_cb,
 | 
			
		||||
 | 
			
		||||
@ -27,6 +27,8 @@ static KEYBOARDS: &[(&'static str, &'static str)] = &[
 | 
			
		||||
 | 
			
		||||
    ("br", include_str!("../data/keyboards/br.yaml")),
 | 
			
		||||
    
 | 
			
		||||
    ("ca", include_str!("../data/keyboards/ca.yaml")),
 | 
			
		||||
    
 | 
			
		||||
    ("ch+fr", include_str!("../data/keyboards/ch+fr.yaml")),
 | 
			
		||||
    ("ch+de", include_str!("../data/keyboards/ch+de.yaml")),
 | 
			
		||||
    ("ch", include_str!("../data/keyboards/ch.yaml")),
 | 
			
		||||
@ -109,6 +111,12 @@ static KEYBOARDS: &[(&'static str, &'static str)] = &[
 | 
			
		||||
    ("pin/us", include_str!("../data/keyboards/pin/us.yaml")),
 | 
			
		||||
 | 
			
		||||
    // Terminal
 | 
			
		||||
    ("terminal/de", include_str!("../data/keyboards/terminal/de.yaml")),
 | 
			
		||||
    ("terminal/de_wide",   include_str!("../data/keyboards/terminal/de_wide.yaml")),
 | 
			
		||||
 | 
			
		||||
    ("terminal/es", include_str!("../data/keyboards/terminal/es.yaml")),
 | 
			
		||||
    ("terminal/es_wide",   include_str!("../data/keyboards/terminal/es_wide.yaml")),
 | 
			
		||||
 | 
			
		||||
    ("terminal/fr", include_str!("../data/keyboards/terminal/fr.yaml")),
 | 
			
		||||
    ("terminal/fr_wide", include_str!("../data/keyboards/terminal/fr_wide.yaml")),
 | 
			
		||||
 | 
			
		||||
@ -119,6 +127,7 @@ static KEYBOARDS: &[(&'static str, &'static str)] = &[
 | 
			
		||||
 | 
			
		||||
    // Overlays
 | 
			
		||||
    ("emoji/us", include_str!("../data/keyboards/emoji/us.yaml")),
 | 
			
		||||
    ("emoji/us_wide", include_str!("../data/keyboards/emoji/us_wide.yaml")),
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
pub fn get_keyboard(needle: &str) -> Option<&'static str> {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										53
									
								
								src/state.rs
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								src/state.rs
									
									
									
									
									
								
							@ -385,19 +385,20 @@ Outcome:
 | 
			
		||||
                let ideal_height = IDEAL_TARGET_SIZE * ROW_COUNT as i32;
 | 
			
		||||
                let ideal_height_px = (ideal_height * density).ceil().0 as u32;
 | 
			
		||||
 | 
			
		||||
                let max_wide_height = Rational {
 | 
			
		||||
                    numerator: 172,
 | 
			
		||||
                    denominator: 540,
 | 
			
		||||
                };
 | 
			
		||||
                let ideal_panel_height = Rational {
 | 
			
		||||
                    numerator: ideal_height_px as i32,
 | 
			
		||||
                    denominator: px_size.width,
 | 
			
		||||
                };
 | 
			
		||||
                // Reduce height to match what the layout can fill.
 | 
			
		||||
                // For this, we need to guess if normal or wide will be picked up.
 | 
			
		||||
                // For this, we need to guess if normal or wide will be picked.
 | 
			
		||||
                // This must match `eek_gtk_keyboard.c::get_type`.
 | 
			
		||||
                // TODO: query layout database and choose one directly
 | 
			
		||||
                let abstract_width
 | 
			
		||||
                    = PixelSize {
 | 
			
		||||
                        scale_factor: output.scale as u32,
 | 
			
		||||
                        pixels: px_size.width,
 | 
			
		||||
                    } 
 | 
			
		||||
                    .as_scaled_ceiling();
 | 
			
		||||
 | 
			
		||||
                let (arrangement, height_as_widths) = {
 | 
			
		||||
                    if abstract_width < 540 {(
 | 
			
		||||
                    if max_wide_height < ideal_panel_height {(
 | 
			
		||||
                        ArrangementKind::Base,
 | 
			
		||||
                        Rational {
 | 
			
		||||
                            numerator: 210,
 | 
			
		||||
@ -405,10 +406,7 @@ Outcome:
 | 
			
		||||
                        },
 | 
			
		||||
                    )} else {(
 | 
			
		||||
                        ArrangementKind::Wide,
 | 
			
		||||
                        Rational {
 | 
			
		||||
                            numerator: 172,
 | 
			
		||||
                            denominator: 540,
 | 
			
		||||
                        }
 | 
			
		||||
                        max_wide_height,
 | 
			
		||||
                    )}
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
@ -755,4 +753,33 @@ pub mod test {
 | 
			
		||||
            )),
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn size_l5_scale1() {
 | 
			
		||||
        use crate::outputs::{Mode, Geometry, c, Size};
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
            Application::get_preferred_height_and_arrangement(&OutputState {
 | 
			
		||||
                current_mode: Some(Mode {
 | 
			
		||||
                    width: 720,
 | 
			
		||||
                    height: 1440,
 | 
			
		||||
                }),
 | 
			
		||||
                geometry: Some(Geometry{
 | 
			
		||||
                    transform: c::Transform::Normal,
 | 
			
		||||
                    phys_size: Size {
 | 
			
		||||
                        width: Some(Millimeter(65)),
 | 
			
		||||
                        height: Some(Millimeter(130)),
 | 
			
		||||
                    },
 | 
			
		||||
                }),
 | 
			
		||||
                scale: 1,
 | 
			
		||||
            }),
 | 
			
		||||
            Some((
 | 
			
		||||
                PixelSize {
 | 
			
		||||
                    scale_factor: 1,
 | 
			
		||||
                    pixels: 420,
 | 
			
		||||
                },
 | 
			
		||||
                ArrangementKind::Base,
 | 
			
		||||
            )),
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										45
									
								
								src/util.rs
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								src/util.rs
									
									
									
									
									
								
							@ -4,6 +4,7 @@ use std::rc::Rc;
 | 
			
		||||
use crate::float_ord::FloatOrd;
 | 
			
		||||
 | 
			
		||||
use std::borrow::Borrow;
 | 
			
		||||
use std::cmp::{Ordering, PartialOrd};
 | 
			
		||||
use std::hash::{ Hash, Hasher };
 | 
			
		||||
use std::ops::Mul;
 | 
			
		||||
 | 
			
		||||
@ -242,6 +243,34 @@ impl<U, T: Mul<U, Output=T>> Mul<Rational<U>> for Rational<T> {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl PartialEq for Rational<i32> {
 | 
			
		||||
    fn eq(&self, other: &Self) -> bool {
 | 
			
		||||
        (self.denominator as i64).saturating_mul(other.numerator as i64)
 | 
			
		||||
            == (other.denominator as i64).saturating_mul(self.numerator as i64)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl Eq for Rational<i32> {}
 | 
			
		||||
 | 
			
		||||
impl Ord for Rational<i32> {
 | 
			
		||||
    fn cmp(&self, other: &Self) -> Ordering {
 | 
			
		||||
        // Using 64-bit values to make overflows unlikely.
 | 
			
		||||
        // If i32_max * u32_max can exceed i64_max,
 | 
			
		||||
        // then this is actually PartialOrd.
 | 
			
		||||
        // Saturating mul used just to avoid propagating mistakes.
 | 
			
		||||
        (other.denominator as i64).saturating_mul(self.numerator as i64)
 | 
			
		||||
            .cmp(
 | 
			
		||||
                &(self.denominator as i64).saturating_mul(other.numerator as i64)
 | 
			
		||||
             )
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl PartialOrd for Rational<i32> {
 | 
			
		||||
    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
 | 
			
		||||
        Some(self.cmp(other))
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Compares pointers but not internal values of Rc
 | 
			
		||||
pub struct Pointer<T>(pub Rc<T>);
 | 
			
		||||
 | 
			
		||||
@ -327,4 +356,20 @@ mod tests {
 | 
			
		||||
            vec![(5, 0), (6, 0), (7, 0), (5, 1), (6, 1), (7, 1), (5, 2)]
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn check_rational_cmp() {
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
            Rational { numerator: 1, denominator: 1 },
 | 
			
		||||
            Rational { numerator: 1, denominator: 1 },
 | 
			
		||||
        );
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
            Rational { numerator: 1, denominator: 1 },
 | 
			
		||||
            Rational { numerator: 2, denominator: 2 },
 | 
			
		||||
        );
 | 
			
		||||
        assert!(
 | 
			
		||||
            Rational { numerator: 1, denominator: 1 }
 | 
			
		||||
            < Rational { numerator: 2, denominator: 1 }
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -64,6 +64,7 @@ foreach layout : [
 | 
			
		||||
    'bg',
 | 
			
		||||
    'bg+phonetic',
 | 
			
		||||
    'br',
 | 
			
		||||
    'ca',
 | 
			
		||||
    'ch+fr',
 | 
			
		||||
    'ch+de',
 | 
			
		||||
    'ch', 'ch_wide',
 | 
			
		||||
@ -97,6 +98,10 @@ foreach layout : [
 | 
			
		||||
    'us+dvorak', 'us+dvorak_wide',
 | 
			
		||||
 | 
			
		||||
    # Terminal keyboards
 | 
			
		||||
    'terminal/de',
 | 
			
		||||
    'terminal/de_wide',
 | 
			
		||||
    'terminal/es',
 | 
			
		||||
    'terminal/es_wide',
 | 
			
		||||
    'terminal/fr', 
 | 
			
		||||
    'terminal/fr_wide', 
 | 
			
		||||
    'terminal/us',
 | 
			
		||||
@ -106,6 +111,7 @@ foreach layout : [
 | 
			
		||||
    
 | 
			
		||||
    # Block: Not languages.
 | 
			
		||||
    'emoji/us',
 | 
			
		||||
    'emoji/us_wide',
 | 
			
		||||
    'number/us',
 | 
			
		||||
    'pin/us',
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user