testing/rot8: new aport

This commit is contained in:
Antoine Martin 2025-07-20 18:43:01 -04:00 committed by achill (fossdd)
parent c93ae144ab
commit de051bce35
2 changed files with 147 additions and 0 deletions

View File

@ -0,0 +1,113 @@
Patch-Source: https://github.com/efernau/rot8/pull/61
From adb715259d7d999168be53fe06fb1125605c6be5 Mon Sep 17 00:00:00 2001
From: fabro122 <fabian.rohrmoser@protonmail.com>
Date: Wed, 25 Oct 2023 12:05:20 +0200
Subject: [PATCH 1/2] Added dynamic default normalization.
- By default the normalization-factor will now be calculated in each loop
as the length of the (x,y,z)-vector from the accelerometer
- If the argument '--normalization-factor' gets supplied, it overrides
this new default
---
src/main.rs | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/src/main.rs b/src/main.rs
index a228683..a0658fa 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -87,11 +87,10 @@ fn main() -> Result<(), String> {
.possible_values(["xy", "yx", "zy", "yz", "xz", "zx"])
.takes_value(true),
Arg::with_name("normalization-factor")
- .default_value("1e6")
.long("normalization-factor")
.short('n')
.value_name("NORMALIZATION_FACTOR")
- .help("Set factor for sensor value normalization")
+ .help("Set factor for sensor value normalization manually. By default this factor is calculated dynamically using the sensor's data.")
.takes_value(true),
Arg::with_name("keyboard")
.long("disable-keyboard")
@@ -150,8 +149,13 @@ fn main() -> Result<(), String> {
let x_source = xy.next().unwrap();
let y_source = xy.next().unwrap();
- let normalization_factor = matches.value_of("normalization-factor").unwrap_or("1e6");
- let normalization_factor = normalization_factor.parse::<f32>().unwrap_or(1e6);
+ let mut normalization_factor: Option<f32> = None;
+ if let Some(v) = matches.value_of("normalization-factor") {
+ match v.parse::<f32>() {
+ Ok(p) => { normalization_factor = Some(p) }
+ Err(_) => { return Err("The argument 'normalization-factor' is no valid float literal".to_string()); }
+ }
+ }
let mut backend: Box<dyn DisplayManager> = match WaylandBackend::new(display) {
Ok(wayland_backend) => {
@@ -226,14 +230,18 @@ fn main() -> Result<(), String> {
let x_raw = fs::read_to_string(path_x.as_str()).unwrap();
let y_raw = fs::read_to_string(path_y.as_str()).unwrap();
let z_raw = fs::read_to_string(path_z.as_str()).unwrap();
- let x_clean = x_raw.trim_end_matches('\n').parse::<i32>().unwrap_or(0);
- let y_clean = y_raw.trim_end_matches('\n').parse::<i32>().unwrap_or(0);
- let z_clean = z_raw.trim_end_matches('\n').parse::<i32>().unwrap_or(0);
+ let x_clean = x_raw.trim_end_matches('\n').parse::<f32>().unwrap_or(0.);
+ let y_clean = y_raw.trim_end_matches('\n').parse::<f32>().unwrap_or(0.);
+ let z_clean = z_raw.trim_end_matches('\n').parse::<f32>().unwrap_or(0.);
// Normalize vectors
- let mut mut_x: f32 = (x_clean as f32) / normalization_factor;
- let mut mut_y: f32 = (y_clean as f32) / normalization_factor;
- let mut mut_z: f32 = (z_clean as f32) / normalization_factor;
+ let norm_factor = normalization_factor.unwrap_or_else(||
+ f32::sqrt(x_clean * x_clean + y_clean * y_clean + z_clean * z_clean)
+ );
+
+ let mut mut_x: f32 = x_clean / norm_factor;
+ let mut mut_y: f32 = y_clean / norm_factor;
+ let mut mut_z: f32 = z_clean / norm_factor;
// Apply inversions
if flip_x {
From b0a95d5eecde15775de5ef2727655bb3fbf778ab Mon Sep 17 00:00:00 2001
From: fabro122 <fabian.rohrmoser@protonmail.com>
Date: Wed, 25 Oct 2023 14:14:51 +0200
Subject: [PATCH 2/2] Formatted code using rustfmt
---
src/main.rs | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/main.rs b/src/main.rs
index a0658fa..4a9ad32 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -152,8 +152,12 @@ fn main() -> Result<(), String> {
let mut normalization_factor: Option<f32> = None;
if let Some(v) = matches.value_of("normalization-factor") {
match v.parse::<f32>() {
- Ok(p) => { normalization_factor = Some(p) }
- Err(_) => { return Err("The argument 'normalization-factor' is no valid float literal".to_string()); }
+ Ok(p) => normalization_factor = Some(p),
+ Err(_) => {
+ return Err(
+ "The argument 'normalization-factor' is no valid float literal".to_string(),
+ );
+ }
}
}
@@ -235,9 +239,9 @@ fn main() -> Result<(), String> {
let z_clean = z_raw.trim_end_matches('\n').parse::<f32>().unwrap_or(0.);
// Normalize vectors
- let norm_factor = normalization_factor.unwrap_or_else(||
+ let norm_factor = normalization_factor.unwrap_or_else(|| {
f32::sqrt(x_clean * x_clean + y_clean * y_clean + z_clean * z_clean)
- );
+ });
let mut mut_x: f32 = x_clean / norm_factor;
let mut mut_y: f32 = y_clean / norm_factor;

34
testing/rot8/APKBUILD Normal file
View File

@ -0,0 +1,34 @@
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=rot8
pkgver=1.0.0
pkgrel=0
pkgdesc="A screen rotation daemon"
# s390x | loongarch64: mismatched type, expected `u32`, found `u64`
arch="all !s390x !loongarch64"
url="https://github.com/efernau/rot8"
license="MIT"
options="!check" # No testsuite
makedepends="rust cargo"
subpackages="$pkgname-doc"
source="
$pkgname-$pkgver.tar.gz::https://github.com/efernau/rot8/archive/refs/tags/v$pkgver.tar.gz
61-add-dynamic-default-normalization.patch
"
prepare() {
default_prepare
cargo fetch --locked
}
build() {
cargo build --frozen --release --all-features
}
package() {
install -Dm755 "$builddir"/target/release/rot8 "$pkgdir/usr/bin/rot8"
install -Dm644 "$builddir"/LICENSE -t "$pkgdir"/usr/share/licenses/$pkgname/
}
sha512sums="
396773462da49b3df867c78e550b1a2d93bf5d7ad27887af7adcc8cd661cf717cc37e1cad59b5c93363baa09e27f5a895900a4cb5c36892973a175d403942a9b rot8-1.0.0.tar.gz
eccba4bd6509e198c99c16e61c84490e8ec7a8aa081a418da8166015b1d3f2d7b154ae9452251339545e71cb81fc1ec640b266093850bb7e523ceaa5fe0a1546 61-add-dynamic-default-normalization.patch
"