mirror of https://git.suyu.dev/suyu/suyu
Merge pull request #105 from kevinhartman/hid
Digital user input and HID module implementation for PADmerge-requests/60/head
commit
cbdf4d4c8e
@ -0,0 +1,17 @@
|
||||
// Copyright 2014 Citra Emulator Project
|
||||
// Licensed under GPLv2
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "emu_window.h"
|
||||
|
||||
void EmuWindow::KeyPressed(KeyMap::HostDeviceKey key) {
|
||||
HID_User::PadState mapped_key = KeyMap::GetPadKey(key);
|
||||
|
||||
HID_User::PadButtonPress(mapped_key);
|
||||
}
|
||||
|
||||
void EmuWindow::KeyReleased(KeyMap::HostDeviceKey key) {
|
||||
HID_User::PadState mapped_key = KeyMap::GetPadKey(key);
|
||||
|
||||
HID_User::PadButtonRelease(mapped_key);
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
// Copyright 2014 Citra Emulator Project
|
||||
// Licensed under GPLv2
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "key_map.h"
|
||||
#include <map>
|
||||
|
||||
namespace KeyMap {
|
||||
|
||||
static std::map<HostDeviceKey, HID_User::PadState> key_map;
|
||||
static int next_device_id = 0;
|
||||
|
||||
int NewDeviceId() {
|
||||
return next_device_id++;
|
||||
}
|
||||
|
||||
void SetKeyMapping(HostDeviceKey key, HID_User::PadState padState) {
|
||||
key_map[key].hex = padState.hex;
|
||||
}
|
||||
|
||||
HID_User::PadState GetPadKey(HostDeviceKey key) {
|
||||
return key_map[key];
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
// Copyright 2014 Citra Emulator Project
|
||||
// Licensed under GPLv2
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/hle/service/hid.h"
|
||||
|
||||
namespace KeyMap {
|
||||
|
||||
/**
|
||||
* Represents a key for a specific host device.
|
||||
*/
|
||||
struct HostDeviceKey {
|
||||
int key_code;
|
||||
int device_id; ///< Uniquely identifies a host device
|
||||
|
||||
bool operator < (const HostDeviceKey &other) const {
|
||||
if (device_id == other.device_id) {
|
||||
return key_code < other.key_code;
|
||||
}
|
||||
return device_id < other.device_id;
|
||||
}
|
||||
|
||||
bool operator == (const HostDeviceKey &other) const {
|
||||
return device_id == other.device_id && key_code == other.key_code;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Generates a new device id, which uniquely identifies a host device within KeyMap.
|
||||
*/
|
||||
int NewDeviceId();
|
||||
|
||||
/**
|
||||
* Maps a device-specific key to a PadState.
|
||||
*/
|
||||
void SetKeyMapping(HostDeviceKey key, HID_User::PadState padState);
|
||||
|
||||
/**
|
||||
* Gets the PadState that's mapped to the provided device-specific key.
|
||||
*/
|
||||
HID_User::PadState GetPadKey(HostDeviceKey key);
|
||||
|
||||
}
|
Loading…
Reference in New Issue