feat: add volume keys for page turning, closes #471 (#982)

This commit is contained in:
Huang Xin
2025-04-28 18:36:24 +08:00
committed by GitHub
parent a424ae8b15
commit 4275508ccd
45 changed files with 692 additions and 174 deletions
@@ -65,3 +65,11 @@ pub(crate) async fn get_sys_fonts_list<R: Runtime>(
) -> Result<GetSysFontsListResponse> {
app.native_bridge().get_sys_fonts_list()
}
#[command]
pub(crate) async fn intercept_keys<R: Runtime>(
app: AppHandle<R>,
payload: InterceptKeysRequest,
) -> Result<()> {
app.native_bridge().intercept_keys(payload)
}
@@ -56,4 +56,8 @@ impl<R: Runtime> NativeBridge<R> {
}
Ok(GetSysFontsListResponse { fonts, error: None })
}
pub fn intercept_keys(&self, _payload: InterceptKeysRequest) -> crate::Result<()> {
Err(crate::Error::UnsupportedPlatformError)
}
}
@@ -45,6 +45,7 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
commands::set_system_ui_visibility,
commands::get_status_bar_height,
commands::get_sys_fonts_list,
commands::intercept_keys,
])
.setup(|app, api| {
#[cfg(mobile)]
@@ -93,3 +93,11 @@ impl<R: Runtime> NativeBridge<R> {
.map_err(Into::into)
}
}
impl<R: Runtime> NativeBridge<R> {
pub fn intercept_keys(&self, payload: InterceptKeysRequest) -> crate::Result<()> {
self.0
.run_mobile_plugin("intercept_keys", payload)
.map_err(Into::into)
}
}
@@ -72,3 +72,10 @@ pub struct GetSysFontsListResponse {
pub fonts: Vec<String>,
pub error: Option<String>,
}
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct InterceptKeysRequest {
pub volume_keys: Option<bool>,
pub back_key: Option<bool>,
}