aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ffi.rs6
-rw-r--r--src/map.rs10
2 files changed, 12 insertions, 4 deletions
diff --git a/src/ffi.rs b/src/ffi.rs
index 1ea2eae..55b0998 100644
--- a/src/ffi.rs
+++ b/src/ffi.rs
@@ -9,7 +9,7 @@ use xdg;
use {HeadphoneButton, MapGroup};
use config::{self, Config};
-use map::{PlayAudio, run_key_action};
+use map::{ModeChange, run_key_action};
use trial;
#[repr(C)]
@@ -90,7 +90,7 @@ pub extern "C" fn dome_key_state_load_map_group(ptr: *mut State) {
pub extern "C" fn dome_key_run_key_action(
state: *mut State,
trigger: Trigger,
- play_audio: PlayAudio,
+ on_mode_change: extern "C" fn(mode_change: ModeChange),
) {
let trigger = unsafe {
assert!(!trigger.buttons.is_null());
@@ -103,7 +103,7 @@ pub extern "C" fn dome_key_run_key_action(
&mut *state
};
- run_key_action(&mut state, trigger, play_audio);
+ run_key_action(&mut state, trigger, on_mode_change);
}
#[no_mangle]
diff --git a/src/map.rs b/src/map.rs
index f2cd770..54da17a 100644
--- a/src/map.rs
+++ b/src/map.rs
@@ -21,10 +21,16 @@ impl PlayAudio {
}
}
+#[repr(C)]
+pub enum ModeChange {
+ Activated,
+ Deactivated,
+}
+
pub fn run_key_action<'a>(
state: &mut State,
trigger: &'a [HeadphoneButton],
- play_audio: PlayAudio,
+ on_mode_change: extern "C" fn(mode_change: ModeChange),
) {
match state.map_group {
Some(ref map_group) => {
@@ -43,6 +49,7 @@ pub fn run_key_action<'a>(
// Err(e) => error!("{}", e),
// }
// }
+ on_mode_change(ModeChange::Deactivated);
return;
}
@@ -68,6 +75,7 @@ pub fn run_key_action<'a>(
// Err(e) => error!("{}", e),
// }
// }
+ on_mode_change(ModeChange::Activated);
}
},
None => (),