mirror of
https://gitlab.steamos.cloud/holo/steamos-manager.git
synced 2025-07-15 10:46:41 -04:00
screenreader: Use uinput to send keyboard events.
Orca has no API, so use keyboard events to trigger specific actions like sticking to focus mode, browse mode, etc. Also add new get and set methods to steamosctl for mode.
This commit is contained in:
parent
ee9d2332aa
commit
2d91104c66
9 changed files with 266 additions and 4 deletions
|
@ -31,7 +31,7 @@ use crate::power::{
|
|||
get_gpu_clocks, get_gpu_clocks_range, get_gpu_performance_level, get_gpu_power_profile,
|
||||
get_max_charge_level, get_platform_profile, TdpManagerCommand,
|
||||
};
|
||||
use crate::screenreader::OrcaManager;
|
||||
use crate::screenreader::{OrcaManager, ScreenReaderMode};
|
||||
use crate::wifi::{
|
||||
get_wifi_backend, get_wifi_power_management_state, list_wifi_interfaces, WifiBackend,
|
||||
};
|
||||
|
@ -685,6 +685,28 @@ impl ScreenReader0 {
|
|||
.await
|
||||
.map_err(to_zbus_fdo_error)
|
||||
}
|
||||
|
||||
#[zbus(property)]
|
||||
async fn mode(&self) -> u32 {
|
||||
self.screen_reader.mode() as u32
|
||||
}
|
||||
|
||||
#[zbus(property)]
|
||||
async fn set_mode(
|
||||
&mut self,
|
||||
m: u32,
|
||||
#[zbus(signal_emitter)] ctx: SignalEmitter<'_>,
|
||||
) -> fdo::Result<()> {
|
||||
let mode = match ScreenReaderMode::try_from(m) {
|
||||
Ok(mode) => mode,
|
||||
Err(err) => return Err(fdo::Error::InvalidArgs(err.to_string())),
|
||||
};
|
||||
self.screen_reader
|
||||
.set_mode(mode)
|
||||
.await
|
||||
.map_err(to_zbus_fdo_error)?;
|
||||
self.mode_changed(&ctx).await.map_err(to_zbus_fdo_error)
|
||||
}
|
||||
}
|
||||
|
||||
#[interface(name = "com.steampowered.SteamOSManager1.Storage1")]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue