# imgui-glfw-rs: GLFW Input handling for ImGui **EXPERIMENTAL!** [![crates.io](https://meritbadge.herokuapp.com/imgui-glfw-rs)](https://crates.io/crates/imgui-glfw-rs) [![Documentation on docs.rs](https://docs.rs/imgui-glfw-rs/badge.svg)](https://docs.rs/imgui) [![Dependencies](https://deps.rs/repo/github/k4ugummi/imgui-glfw-rs/status.svg)](https://deps.rs/repo/github/k4ugummi/imgui-glfw-rs) GLFW input handling for imgui ## How to use ```rust // Use the reexported glfw crate to avoid version conflicts. use imgui_glfw_rs::glfw; // Use the reexported imgui crate to avoid version conflicts. use imgui_glfw_rs::imgui; use imgui_glfw_rs::ImguiGLFW; // ImGui uses { ... } fn main() { // Initialize imgui and glfw and imgui renderer. // { ... } let mut imgui_glfw = ImguiGLFW::new(&mut imgui); while !window.should_close() { let ui = imgui_glfw.frame(&mut window, &mut imgui); // Draw your ui. // { ... } window.swap_buffers(); // Handle imgui events glfw.poll_events(); for (_, event) in glfw::flush_messages(&events) { imgui_glfw.handle_event(&mut imgui, &event); } } } ``` ## Current implemented things - MouseButton press and release - CursorPos movement - Scroll movement - Char input - Key press and release - Modifier handling - Cursor icons - Clipboard copying/pasting ## Unimplemented things and known issues # Compiling and running the example ```sh git clone https://github.com/K4ugummi/imgui-glfw-rs.git cd imgui-glfw-rs cargo run --example helloworld ``` # Contributing 1. Make some changes 2. Run rustfmt for code style conformance `cargo fmt` 3. Open a pull request # Thanks to - The [piston developers](https://github.com/PistonDevelopers) for maintaining the [glfw crate](https://github.com/PistonDevelopers/glfw-rs). - [Gekkio](https://github.com/Gekkio) for maintaining the [imgui bindings](https://github.com/Gekkio/imgui-rs) for rust. - You for using this crate and maybe even providing feedback