@@ -23,13 +23,17 @@ use super::plugin::PLUGIN_SIMBA_METHODS;
2323pub struct SimbaTarget {
2424 pub pid : u32 ,
2525 pub hwnd : u64 ,
26+ pub keyboard : [ bool ; 255 ] ,
27+ pub mouse : [ bool ; 3 ] ,
2628}
2729
2830lazy_static ! {
29- pub static ref TARGET : Mutex <SimbaTarget > = Mutex :: new( SimbaTarget { pid: 0 , hwnd: 0 } ) ;
30- pub static ref MOUSE_POSITION : Mutex <POINT > = Mutex :: new( POINT { x: -1 , y: -1 } ) ;
31- static ref KEYBOARD_STATE : Mutex <[ bool ; 255 ] > = Mutex :: new( [ false ; 255 ] ) ;
32- static ref MOUSE_STATE : Mutex <[ bool ; 3 ] > = Mutex :: new( [ false ; 3 ] ) ;
31+ pub static ref TARGET : Mutex <SimbaTarget > = Mutex :: new( SimbaTarget {
32+ pid: 0 ,
33+ hwnd: 0 ,
34+ keyboard: [ false ; 255 ] ,
35+ mouse: [ false ; 3 ] ,
36+ } ) ;
3337}
3438
3539pub fn get_mouse_pos ( hwnd : u64 ) -> POINT {
@@ -69,7 +73,8 @@ pub extern "C" fn SimbaPluginTarget_Request(args: *const c_char) -> *mut SimbaTa
6973 return & mut * target as * mut SimbaTarget ;
7074 }
7175
72- * target = SimbaTarget { pid, hwnd } ;
76+ target. pid = pid;
77+ target. hwnd = hwnd;
7378
7479 return & mut * target as * mut SimbaTarget ;
7580}
@@ -121,7 +126,12 @@ pub extern "C" fn SimbaPluginTarget_Release(target: *mut SimbaTarget) {
121126 ) ;
122127
123128 let mut target = TARGET . lock ( ) . unwrap ( ) ;
124- * target = SimbaTarget { pid : 0 , hwnd : 0 } ;
129+ * target = SimbaTarget {
130+ pid : 0 ,
131+ hwnd : 0 ,
132+ keyboard : [ false ; 255 ] ,
133+ mouse : [ false ; 3 ] ,
134+ } ;
125135}
126136
127137#[ no_mangle]
@@ -190,11 +200,11 @@ pub extern "C" fn SimbaPluginTarget_MousePressed(
190200 return false ;
191201 }
192202
193- let state = MOUSE_STATE . lock ( ) . unwrap ( ) ;
203+ let target = TARGET . lock ( ) . unwrap ( ) ;
194204 match mouse_button {
195- 1 => state [ 0 ] ,
196- 2 | 4 | 5 => state [ 1 ] ,
197- 3 => state [ 2 ] ,
205+ 1 => target . keyboard [ 0 ] ,
206+ 2 | 4 | 5 => target . keyboard [ 1 ] ,
207+ 3 => target . keyboard [ 2 ] ,
198208 _ => {
199209 println ! ( "[WaspInput]: Unknown mouse button: {}\r \n " , mouse_button) ;
200210 false
@@ -231,8 +241,6 @@ pub extern "C" fn SimbaPluginTarget_MouseTeleport(target: *mut SimbaTarget, x: c
231241
232242 let target = TARGET . lock ( ) . unwrap ( ) ;
233243 mouse_move ( target. hwnd , x, y) ;
234- let mut lock = MOUSE_POSITION . lock ( ) . unwrap ( ) ;
235- * lock = POINT { x : x, y : y } ;
236244}
237245
238246#[ no_mangle]
@@ -242,22 +250,21 @@ pub extern "C" fn SimbaPluginTarget_MouseUp(target: *mut SimbaTarget, mouse_butt
242250 return ;
243251 }
244252
245- let target = TARGET . lock ( ) . unwrap ( ) ;
253+ let mut target = TARGET . lock ( ) . unwrap ( ) ;
246254
247255 let pt = get_mouse_pos ( target. hwnd ) ;
248- let mut state = MOUSE_STATE . lock ( ) . unwrap ( ) ;
249256 match mouse_button {
250257 1 => {
251258 lbutton ( target. hwnd , false , pt. x , pt. y ) ;
252- state [ 0 ] = false ;
259+ target . mouse [ 0 ] = false ;
253260 }
254261 2 | 4 | 5 => {
255262 mbutton ( target. hwnd , false , pt. x , pt. y ) ;
256- state [ 1 ] = false ;
263+ target . mouse [ 1 ] = false ;
257264 }
258265 3 => {
259266 rbutton ( target. hwnd , false , pt. x , pt. y ) ;
260- state [ 2 ] = false ;
267+ target . mouse [ 2 ] = false ;
261268 }
262269 _ => {
263270 println ! ( "[WaspInput]: Unknown mouse button: {}\r \n " , mouse_button) ;
@@ -273,22 +280,21 @@ pub extern "C" fn SimbaPluginTarget_MouseDown(target: *mut SimbaTarget, mouse_bu
273280 return ;
274281 }
275282
276- let target = TARGET . lock ( ) . unwrap ( ) ;
277-
283+ let mut target = TARGET . lock ( ) . unwrap ( ) ;
278284 let pt = get_mouse_pos ( target. hwnd ) ;
279- let mut state = MOUSE_STATE . lock ( ) . unwrap ( ) ;
285+
280286 match mouse_button {
281287 1 => {
282288 lbutton ( target. hwnd , true , pt. x , pt. y ) ;
283- state [ 0 ] = true ;
289+ target . mouse [ 0 ] = true ;
284290 }
285291 2 | 4 | 5 => {
286292 mbutton ( target. hwnd , true , pt. x , pt. y ) ;
287- state [ 1 ] = true ;
293+ target . mouse [ 1 ] = true ;
288294 }
289295 3 => {
290296 rbutton ( target. hwnd , true , pt. x , pt. y ) ;
291- state [ 2 ] = true ;
297+ target . mouse [ 2 ] = true ;
292298 }
293299 _ => {
294300 println ! ( "[WaspInput]: Unknown mouse button: {}\r \n " , mouse_button) ;
@@ -317,11 +323,9 @@ pub extern "C" fn SimbaPluginTarget_KeyDown(target: *mut SimbaTarget, key: c_int
317323 return ;
318324 }
319325
320- let target = TARGET . lock ( ) . unwrap ( ) ;
326+ let mut target = TARGET . lock ( ) . unwrap ( ) ;
321327 key_down ( target. hwnd , key) ;
322-
323- let mut state = KEYBOARD_STATE . lock ( ) . unwrap ( ) ;
324- state[ key as usize ] = true ;
328+ target. keyboard [ key as usize ] = true ;
325329}
326330
327331#[ no_mangle]
@@ -331,10 +335,9 @@ pub extern "C" fn SimbaPluginTarget_KeyUp(target: *mut SimbaTarget, key: c_int)
331335 return ;
332336 }
333337
334- let target = TARGET . lock ( ) . unwrap ( ) ;
338+ let mut target = TARGET . lock ( ) . unwrap ( ) ;
335339 key_up ( target. hwnd , key) ;
336- let mut state = KEYBOARD_STATE . lock ( ) . unwrap ( ) ;
337- state[ key as usize ] = false ;
340+ target. keyboard [ key as usize ] = false ;
338341}
339342
340343#[ no_mangle]
@@ -365,6 +368,6 @@ pub extern "C" fn SimbaPluginTarget_KeySend(
365368
366369#[ no_mangle]
367370pub extern "C" fn SimbaPluginTarget_KeyPressed ( _target : * mut SimbaTarget , key : c_int ) -> bool {
368- let state = KEYBOARD_STATE . lock ( ) . unwrap ( ) ;
369- state [ key as usize ]
371+ let target = TARGET . lock ( ) . unwrap ( ) ;
372+ target . keyboard [ key as usize ]
370373}
0 commit comments