oters_gui/
input.rs

1use oters_lang as oters;
2
3use oters::export::export_oters;
4
5#[export_oters]
6pub fn is_key_pressed(key: String) -> bool {
7    macroquad::input::is_key_pressed(str_to_keycode(key))
8}
9
10#[export_oters]
11pub fn is_key_down(key: String) -> bool {
12    macroquad::input::is_key_down(str_to_keycode(key))
13}
14
15#[export_oters]
16pub fn is_key_released(key: String) -> bool {
17    macroquad::input::is_key_released(str_to_keycode(key))
18}
19
20#[export_oters]
21pub enum MouseButton {
22    Right,
23    Left,
24    Middle,
25}
26
27#[export_oters]
28pub fn is_mouse_down(button: MouseButton) -> bool {
29    use macroquad::input::is_mouse_button_down;
30    match button {
31        MouseButton::Right => is_mouse_button_down(macroquad::input::MouseButton::Right),
32        MouseButton::Left => is_mouse_button_down(macroquad::input::MouseButton::Left),
33        MouseButton::Middle => is_mouse_button_down(macroquad::input::MouseButton::Middle),
34    }
35}
36
37#[export_oters]
38pub fn is_mouse_pressed(button: MouseButton) -> bool {
39    use macroquad::input::is_mouse_button_pressed;
40    match button {
41        MouseButton::Right => is_mouse_button_pressed(macroquad::input::MouseButton::Right),
42        MouseButton::Left => is_mouse_button_pressed(macroquad::input::MouseButton::Left),
43        MouseButton::Middle => is_mouse_button_pressed(macroquad::input::MouseButton::Middle),
44    }
45}
46
47#[export_oters]
48pub fn mouse_pos() -> (i64, i64) {
49    let pos = macroquad::input::mouse_position();
50    (pos.0 as i64, pos.1 as i64)
51}
52
53#[export_oters]
54pub fn mouse_wheel() -> (f64, f64) {
55    let pos = macroquad::input::mouse_wheel();
56    (pos.0 as f64, pos.1 as f64)
57}
58
59// Awfully inefficient, should be redone
60fn str_to_keycode(s: String) -> macroquad::input::KeyCode {
61    match s.as_str() {
62        "Space" => macroquad::input::KeyCode::Space,
63        "Apostrophe" => macroquad::input::KeyCode::Apostrophe,
64        "Comma" => macroquad::input::KeyCode::Comma,
65        "Minus" => macroquad::input::KeyCode::Minus,
66        "Period" => macroquad::input::KeyCode::Period,
67        "Slash" => macroquad::input::KeyCode::Slash,
68        "Key0" => macroquad::input::KeyCode::Key0,
69        "Key1" => macroquad::input::KeyCode::Key1,
70        "Key2" => macroquad::input::KeyCode::Key2,
71        "Key3" => macroquad::input::KeyCode::Key3,
72        "Key4" => macroquad::input::KeyCode::Key4,
73        "Key5" => macroquad::input::KeyCode::Key5,
74        "Key6" => macroquad::input::KeyCode::Key6,
75        "Key7" => macroquad::input::KeyCode::Key7,
76        "Key8" => macroquad::input::KeyCode::Key8,
77        "Key9" => macroquad::input::KeyCode::Key9,
78        "Semicolon" => macroquad::input::KeyCode::Semicolon,
79        "Equal" => macroquad::input::KeyCode::Equal,
80        "A" => macroquad::input::KeyCode::A,
81        "B" => macroquad::input::KeyCode::B,
82        "C" => macroquad::input::KeyCode::C,
83        "D" => macroquad::input::KeyCode::D,
84        "E" => macroquad::input::KeyCode::E,
85        "F" => macroquad::input::KeyCode::F,
86        "G" => macroquad::input::KeyCode::G,
87        "H" => macroquad::input::KeyCode::H,
88        "I" => macroquad::input::KeyCode::I,
89        "J" => macroquad::input::KeyCode::J,
90        "K" => macroquad::input::KeyCode::K,
91        "L" => macroquad::input::KeyCode::L,
92        "M" => macroquad::input::KeyCode::M,
93        "N" => macroquad::input::KeyCode::N,
94        "O" => macroquad::input::KeyCode::O,
95        "P" => macroquad::input::KeyCode::P,
96        "Q" => macroquad::input::KeyCode::Q,
97        "R" => macroquad::input::KeyCode::R,
98        "S" => macroquad::input::KeyCode::S,
99        "T" => macroquad::input::KeyCode::T,
100        "U" => macroquad::input::KeyCode::U,
101        "V" => macroquad::input::KeyCode::V,
102        "W" => macroquad::input::KeyCode::W,
103        "X" => macroquad::input::KeyCode::X,
104        "Y" => macroquad::input::KeyCode::Y,
105        "Z" => macroquad::input::KeyCode::Z,
106        "LeftBracket" => macroquad::input::KeyCode::LeftBracket,
107        "Backslash" => macroquad::input::KeyCode::Backslash,
108        "RightBracket" => macroquad::input::KeyCode::RightBracket,
109        "GraveAccent" => macroquad::input::KeyCode::GraveAccent,
110        "World1" => macroquad::input::KeyCode::World1,
111        "World2" => macroquad::input::KeyCode::World2,
112        "Escape" => macroquad::input::KeyCode::Escape,
113        "Enter" => macroquad::input::KeyCode::Enter,
114        "Tab" => macroquad::input::KeyCode::Tab,
115        "Backspace" => macroquad::input::KeyCode::Backspace,
116        "Insert" => macroquad::input::KeyCode::Insert,
117        "Delete" => macroquad::input::KeyCode::Delete,
118        "Right" => macroquad::input::KeyCode::Right,
119        "Left" => macroquad::input::KeyCode::Left,
120        "Down" => macroquad::input::KeyCode::Down,
121        "Up" => macroquad::input::KeyCode::Up,
122        "PageUp" => macroquad::input::KeyCode::PageUp,
123        "PageDown" => macroquad::input::KeyCode::PageDown,
124        "Home" => macroquad::input::KeyCode::Home,
125        "End" => macroquad::input::KeyCode::End,
126        "CapsLock" => macroquad::input::KeyCode::CapsLock,
127        "ScrollLock" => macroquad::input::KeyCode::ScrollLock,
128        "NumLock" => macroquad::input::KeyCode::NumLock,
129        "PrintScreen" => macroquad::input::KeyCode::PrintScreen,
130        "Pause" => macroquad::input::KeyCode::Pause,
131        "F1" => macroquad::input::KeyCode::F1,
132        "F2" => macroquad::input::KeyCode::F2,
133        "F3" => macroquad::input::KeyCode::F3,
134        "F4" => macroquad::input::KeyCode::F4,
135        "F5" => macroquad::input::KeyCode::F5,
136        "F6" => macroquad::input::KeyCode::F6,
137        "F7" => macroquad::input::KeyCode::F7,
138        "F8" => macroquad::input::KeyCode::F8,
139        "F9" => macroquad::input::KeyCode::F9,
140        "F10" => macroquad::input::KeyCode::F10,
141        "F11" => macroquad::input::KeyCode::F11,
142        "F12" => macroquad::input::KeyCode::F12,
143        "F13" => macroquad::input::KeyCode::F13,
144        "F14" => macroquad::input::KeyCode::F14,
145        "F15" => macroquad::input::KeyCode::F15,
146        "F16" => macroquad::input::KeyCode::F16,
147        "F17" => macroquad::input::KeyCode::F17,
148        "F18" => macroquad::input::KeyCode::F18,
149        "F19" => macroquad::input::KeyCode::F19,
150        "F20" => macroquad::input::KeyCode::F20,
151        "F21" => macroquad::input::KeyCode::F21,
152        "F22" => macroquad::input::KeyCode::F22,
153        "F23" => macroquad::input::KeyCode::F23,
154        "F24" => macroquad::input::KeyCode::F24,
155        "F25" => macroquad::input::KeyCode::F25,
156        "Kp0" => macroquad::input::KeyCode::Kp0,
157        "Kp1" => macroquad::input::KeyCode::Kp1,
158        "Kp2" => macroquad::input::KeyCode::Kp2,
159        "Kp3" => macroquad::input::KeyCode::Kp3,
160        "Kp4" => macroquad::input::KeyCode::Kp4,
161        "Kp5" => macroquad::input::KeyCode::Kp5,
162        "Kp6" => macroquad::input::KeyCode::Kp6,
163        "Kp7" => macroquad::input::KeyCode::Kp7,
164        "Kp8" => macroquad::input::KeyCode::Kp8,
165        "Kp9" => macroquad::input::KeyCode::Kp9,
166        "KpDecimal" => macroquad::input::KeyCode::KpDecimal,
167        "KpDivide" => macroquad::input::KeyCode::KpDivide,
168        "KpMultiply" => macroquad::input::KeyCode::KpMultiply,
169        "KpSubtract" => macroquad::input::KeyCode::KpSubtract,
170        "KpAdd" => macroquad::input::KeyCode::KpAdd,
171        "KpEnter" => macroquad::input::KeyCode::KpEnter,
172        "KpEqual" => macroquad::input::KeyCode::KpEqual,
173        "LeftShift" => macroquad::input::KeyCode::LeftShift,
174        "LeftControl" => macroquad::input::KeyCode::LeftControl,
175        "LeftAlt" => macroquad::input::KeyCode::LeftAlt,
176        "LeftSuper" => macroquad::input::KeyCode::LeftSuper,
177        "RightShift" => macroquad::input::KeyCode::RightShift,
178        "RightControl" => macroquad::input::KeyCode::RightControl,
179        "RightAlt" => macroquad::input::KeyCode::RightAlt,
180        "RightSuper" => macroquad::input::KeyCode::RightSuper,
181        "Menu" => macroquad::input::KeyCode::Menu,
182        _ => macroquad::input::KeyCode::Unknown,
183    }
184}