Browse Source
Merge pull request #105 from kevinhartman/hid
Merge pull request #105 from kevinhartman/hid
Digital user input and HID module implementation for PADpull/15/merge
12 changed files with 405 additions and 39 deletions
-
52src/citra/emu_window/emu_window_glfw.cpp
-
5src/citra/emu_window/emu_window_glfw.h
-
49src/citra_qt/bootmanager.cpp
-
2src/citra_qt/bootmanager.hxx
-
3src/common/CMakeLists.txt
-
17src/common/emu_window.cpp
-
8src/common/emu_window.h
-
25src/common/key_map.cpp
-
45src/common/key_map.h
-
145src/core/hle/service/hid.cpp
-
90src/core/hle/service/hid.h
-
1src/video_core/video_core.h
@ -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); |
|||
|
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue