extern crate glfw;
use glfw::{Action, Context, Key};
fn main() {
let mut glfw = glfw::init(glfw::FAIL_ON_ERRORS).unwrap();
let (mut window, events) = glfw.create_window(300, 300, "Clipboard Test", glfw::WindowMode::Windowed)
.expect("Failed to create GLFW window.");
window.set_key_polling(true);
window.make_current();
glfw.set_swap_interval(glfw::SwapInterval::Sync(1));
while !window.should_close() {
glfw.poll_events();
for (_, event) in glfw::flush_messages(&events) {
handle_window_event(&mut window, event);
}
}
}
#[cfg(target_os = "macos")]
static NATIVE_MOD: glfw::modifiers::Modifiers = glfw::modifiers::Super;
#[cfg(not(target_os = "macos"))]
static NATIVE_MOD: glfw::modifiers::Modifiers = glfw::modifiers::Control;
fn handle_window_event(window: &mut glfw::Window, event: glfw::WindowEvent) {
match event {
glfw::WindowEvent::Key(key, _, action, mods) => {
if action == Action::Press {
if key == Key::Escape {
window.set_should_close(true);
}
if (key == Key::V) && mods.contains(NATIVE_MOD) {
match window.get_clipboard_string() {
ref s if !s.is_empty() => println!("Clipboard contains \"{:?}\"", *s),
_ => println!("Clipboard does not contain a string"),
}
}
if (key == Key::C) && mods.contains(NATIVE_MOD) {
let s = "Hello GLFW World!";
window.set_clipboard_string(s);
println!("Setting clipboard to {:?}", s);
}
}
}
_ => {}
}
}