2015-03-02 09:13:28 +00:00
|
|
|
struct InputMapping {
|
|
|
|
auto bind() -> void;
|
2015-12-21 09:16:47 +00:00
|
|
|
auto bind(shared_pointer<HID::Device> device, uint group, uint input, int16 oldValue, int16 newValue) -> bool;
|
2015-03-02 09:13:28 +00:00
|
|
|
auto poll() -> int16;
|
2015-08-24 09:42:11 +00:00
|
|
|
auto rumble(bool enable) -> void;
|
Update to v094r13 release.
byuu says:
This version polishes up the input dialogue (reset, erase, disable
button when item not focused, split device ID from mapping name), adds
color emulation toggle, and add dummy menu items for remaining features
(to be filled in later.)
Also, it now compiles cleanly on Windows with GTK.
I didn't test with TDM-GCC-32, because for god knows what reason, the
32-bit version ships with headers from Windows 95 OSR2 only. So I built
with TDM-GCC-64 with arch=x86.
And uh, apparently, moving or resizing a window causes a Visual C++
runtime exception in the GTK+ DLLs. This doesn't happen with trance or
renshuu built with TDM-GCC-32. So, yeah, like I said, don't use -m32.
2015-03-07 10:21:47 +00:00
|
|
|
auto unbind() -> void;
|
2015-03-02 09:13:28 +00:00
|
|
|
|
2016-06-26 08:54:12 +00:00
|
|
|
auto isDigital() const -> bool { return type == 0; }
|
|
|
|
auto isAnalog() const -> bool { return type == 1; }
|
|
|
|
auto isRumble() const -> bool { return type == 2; }
|
2015-05-23 05:29:18 +00:00
|
|
|
|
2015-05-24 09:44:28 +00:00
|
|
|
auto assignmentName() -> string;
|
|
|
|
auto deviceName() -> string;
|
2015-05-23 05:29:18 +00:00
|
|
|
|
2015-11-16 08:38:05 +00:00
|
|
|
string path; //configuration file key path
|
|
|
|
string name; //input name (human readable)
|
2016-06-26 08:54:12 +00:00
|
|
|
uint type = 0;
|
2015-03-02 09:13:28 +00:00
|
|
|
string assignment = "None";
|
2015-05-24 09:44:28 +00:00
|
|
|
shared_pointer<HID::Device> device;
|
2015-12-21 09:16:47 +00:00
|
|
|
uint group = 0;
|
|
|
|
uint input = 0;
|
|
|
|
enum class Qualifier : uint { None, Lo, Hi, Rumble } qualifier = Qualifier::None;
|
2015-03-02 09:13:28 +00:00
|
|
|
};
|
|
|
|
|
2015-04-13 11:16:33 +00:00
|
|
|
struct InputHotkey : InputMapping {
|
2015-12-21 09:16:47 +00:00
|
|
|
function<auto () -> void> press;
|
|
|
|
function<auto () -> void> release;
|
2015-04-13 11:16:33 +00:00
|
|
|
|
|
|
|
int16 state = 0;
|
|
|
|
};
|
|
|
|
|
2015-03-02 09:13:28 +00:00
|
|
|
struct InputDevice {
|
|
|
|
string name;
|
2016-06-26 08:54:12 +00:00
|
|
|
vector<InputMapping> mappings;
|
2015-03-02 09:13:28 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct InputPort {
|
|
|
|
string name;
|
|
|
|
vector<InputDevice> devices;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct InputEmulator {
|
2016-06-26 08:54:12 +00:00
|
|
|
Emulator::Interface* interface = nullptr;
|
2015-03-02 09:13:28 +00:00
|
|
|
string name;
|
|
|
|
vector<InputPort> ports;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct InputManager {
|
|
|
|
InputManager();
|
2016-06-26 08:54:12 +00:00
|
|
|
auto bind(Emulator::Interface*) -> void;
|
2015-03-02 09:13:28 +00:00
|
|
|
auto bind() -> void;
|
|
|
|
auto poll() -> void;
|
Update to v097r14 release.
byuu says:
This is a few days old, but oh well.
This WIP changes nall,hiro,ruby,icarus back to (u)int(8,16,32,64)_t.
I'm slowly pushing for (u)int(8,16,32,64) to use my custom
Integer<Size>/Natural<Size> classes instead. But it's going to be one
hell of a struggle to get that into higan.
2016-02-16 09:11:58 +00:00
|
|
|
auto onChange(shared_pointer<HID::Device> device, uint group, uint input, int16_t oldValue, int16_t newValue) -> void;
|
2015-03-02 09:13:28 +00:00
|
|
|
auto quit() -> void;
|
|
|
|
|
2015-05-24 09:44:28 +00:00
|
|
|
auto findMouse() -> shared_pointer<HID::Device>;
|
2015-05-23 05:29:18 +00:00
|
|
|
|
2015-04-13 11:16:33 +00:00
|
|
|
//hotkeys.cpp
|
|
|
|
auto appendHotkeys() -> void;
|
|
|
|
auto pollHotkeys() -> void;
|
|
|
|
|
2015-05-24 09:44:28 +00:00
|
|
|
vector<shared_pointer<HID::Device>> devices;
|
2015-03-02 09:13:28 +00:00
|
|
|
vector<InputEmulator> emulators;
|
2015-04-13 11:16:33 +00:00
|
|
|
vector<InputHotkey*> hotkeys;
|
2016-06-26 08:54:12 +00:00
|
|
|
|
|
|
|
InputEmulator* emulator = nullptr; //points to InputEmulator that represents the currently active emulator
|
2016-08-08 10:04:15 +00:00
|
|
|
uint64 lastPoll; //time in milliseconds since last call to poll()
|
|
|
|
uint64 frequency; //minimum time in milliseconds before poll() can be called again
|
2015-03-02 09:13:28 +00:00
|
|
|
};
|
|
|
|
|
Update to v097r02 release.
byuu says:
Note: balanced/performance profiles still broken, sorry.
Changelog:
- added nall/GNUmakefile unique() function; used on linking phase of
higan
- added nall/unique_pointer
- target-tomoko and {System}::Video updated to use
unique_pointer<ClassName> instead of ClassName* [1]
- locate() updated to search multiple paths [2]
- GB: pass gekkio's if_ie_registers and boot_hwio-G test ROMs
- FC, GB, GBA: merge video/ into the PPU cores
- ruby: fixed ~AudioXAudio2() typo
[1] I expected this to cause new crashes on exit due to changing the
order of destruction of objects (and deleting things that weren't
deleted before), but ... so far, so good. I guess we'll see what crops
up, especially on OS X (which is already crashing for unknown reasons on
exit.)
[2] right now, the search paths are: programpath(), {configpath(),
"higan/"}, {localpath(), "higan/"}; but we can add as many more as we
want, and we can also add platform-specific versions.
2016-01-25 11:27:18 +00:00
|
|
|
extern unique_pointer<InputManager> inputManager;
|