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
59fn 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}