use rlua::{Result, Context}; use crate::types::Bind; pub fn init_lua(lua: Context) -> Result<()> { create_button_map(lua)?; Ok(()) } fn create_button_map(lua: Context) -> Result<()> { let globals = lua.globals(); let mouse_table = lua.create_table()?; mouse_table.set("n", lua.create_function(|_, n: u32| Ok(Bind::Mouse(n)))?)?; mouse_table.set("left", Bind::Mouse(1))?; mouse_table.set("middle", Bind::Mouse(2))?; mouse_table.set("right", Bind::Mouse(3))?; mouse_table.set("scroll_up", Bind::Mouse(4))?; mouse_table.set("scroll_down", Bind::Mouse(5))?; globals.set("mouse", mouse_table.clone())?; globals.set("m", mouse_table)?; let key_table = lua.create_table()?; key_table.set("n", lua.create_function(|_, n: u32| Ok(Bind::Key(n)))?)?; globals.set("key", key_table.clone())?; globals.set("k", key_table.clone())?; return Ok(()); }