3 #include <wx/control.h>
4 #include <wx/combobox.h>
6 #include "platform/wxwidgets/platform.hpp"
8 #include "core/instance.hpp"
9 #include "core/instance-map.hpp"
10 #include "core/moviedata.hpp"
11 #include "core/rom.hpp"
12 #include "library/keyboard.hpp"
15 std::pair
<double, double> calc_scale_factors(double factor
, bool ar
, double par
);
22 mouse_keys(emulator_instance
& inst
)
24 mouse_x(*inst
.keyboard
, "mouse_x", "mouse", mouse_cal
),
25 mouse_y(*inst
.keyboard
, "mouse_y", "mouse", mouse_cal
),
26 mouse_l(*inst
.keyboard
, "mouse_left", "mouse"),
27 mouse_m(*inst
.keyboard
, "mouse_center", "mouse"),
28 mouse_r(*inst
.keyboard
, "mouse_right", "mouse"),
29 mouse_i(*inst
.keyboard
, "mouse_inwindow", "mouse")
32 keyboard::mouse_calibration mouse_cal
;
33 keyboard::key_mouse mouse_x
;
34 keyboard::key_mouse mouse_y
;
35 keyboard::key_key mouse_l
;
36 keyboard::key_key mouse_m
;
37 keyboard::key_key mouse_r
;
38 keyboard::key_key mouse_i
;
41 instance_map
<mouse_keys
> mkeys
;
45 void handle_wx_mouse(emulator_instance
& inst
, wxMouseEvent
& e
)
48 auto s
= mkeys
.lookup(inst
);
50 auto sfactors
= calc_scale_factors(video_scale_factor
, arcorrect_enabled
, inst
.rom
->get_PAR());
51 inst
.iqueue
->queue(keypress_info(keyboard::modifier_set(), s
->mouse_x
, e
.GetX() /
53 inst
.iqueue
->queue(keypress_info(keyboard::modifier_set(), s
->mouse_y
, e
.GetY() /
56 inst
.iqueue
->queue(keypress_info(keyboard::modifier_set(), s
->mouse_i
, 1));
58 inst
.iqueue
->queue(keypress_info(keyboard::modifier_set(), s
->mouse_i
, 0));
60 inst
.iqueue
->queue(keypress_info(keyboard::modifier_set(), s
->mouse_l
, 1));
62 inst
.iqueue
->queue(keypress_info(keyboard::modifier_set(), s
->mouse_l
, 0));
64 inst
.iqueue
->queue(keypress_info(keyboard::modifier_set(), s
->mouse_m
, 1));
66 inst
.iqueue
->queue(keypress_info(keyboard::modifier_set(), s
->mouse_m
, 0));
68 inst
.iqueue
->queue(keypress_info(keyboard::modifier_set(), s
->mouse_r
, 1));
70 inst
.iqueue
->queue(keypress_info(keyboard::modifier_set(), s
->mouse_r
, 0));
73 void initialize_wx_mouse(emulator_instance
& inst
)
75 if(mkeys
.exists(inst
))
80 void deinitialize_wx_mouse(emulator_instance
& inst
)