From 12af9d3ec0d55c258d10e73e8fe6a99f3c9f05ff Mon Sep 17 00:00:00 2001 From: Matias Linares Date: Sun, 15 Nov 2015 19:07:57 -0300 Subject: Move exec and add binding to the main. The bindings don't need to be handled on the window manager This would be useful for the client/server feature. --- src/main.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 1374446..02df6fd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,7 +23,9 @@ use x11::keysym; /// Defines a callback to call no certains events. pub type ExecFn = fn(&mut DotWM, XEvent, &[String]) -> bool; -type BindingHash = HashMap<(u32, u32), (ExecFn, Vec)>; + +/// Map for keys => functions +pub type BindingHash = HashMap<(u32, u32), (ExecFn, Vec)>; fn exec_func(wm: &mut DotWM, bindings: &mut BindingHash, key: u32, modifiers: u32, ev: xlib::XEvent) { if let Some(&(func, ref args)) = bindings.get(&(key, modifiers)) { @@ -72,6 +74,20 @@ fn quit_dotwm(_: &mut DotWM, _: xlib::XEvent, _: &[String]) -> bool { process::exit(0); } +/// Add a binding to the WM. +/// +/// # Example +/// +/// ``` +/// fn quit_dotwm(_: &mut DotWM, _: xlib::XEvent, _: &[String]) -> bool { +/// process::exit(0); +/// } +/// +/// // ... +/// +/// add_binding(keysym::XK_Return, xlib::Mod4Mask, exec, +/// &["xterm"]); +/// ``` fn add_binding(wm: &mut DotWM, bindings: &mut BindingHash, key: u32, modifiers: u32, func: ExecFn, args: &[&str]) { grab_key(wm.display, key, modifiers, true, GrabModeAsync, GrabModeAsync); -- cgit v1.2.3-54-g00ecf