mirror of https://github.com/yuzu-mirror/yuzu
Merge pull request #105 from kevinhartman/hid
Digital user input and HID module implementation for PADpull/8/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