MythTV
master
|
#include <libmythui/devices/AppleRemote.h>
Classes | |
class | Listener |
Public Types | |
enum | Event { Up = 0, Down, Menu, Select, Right, Left, RightHold, LeftHold, MenuHold, PlayHold, ControlSwitched, PlayPause, Undefined } |
Public Member Functions | |
~AppleRemote () | |
bool | isListeningToRemote () |
void | setListener (Listener *listener) |
Listener * | listener () |
void | setOpenInExclusiveMode (bool in) |
bool | isOpenInExclusiveMode () |
void | startListening () |
void | stopListening () |
void | run () override |
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead. More... | |
Public Member Functions inherited from MThread | |
MThread (const QString &objectName) | |
Standard constructor. More... | |
MThread (const QString &objectName, QRunnable *runnable) | |
Use this constructor if you want the default run() method to run the QRunnable's run() method instead of entering the Qt event loop. More... | |
virtual | ~MThread () |
MThread (const MThread &)=delete | |
MThread & | operator= (const MThread &)=delete |
void | RunProlog (void) |
Sets up a thread, call this if you reimplement run(). More... | |
void | RunEpilog (void) |
Cleans up a thread's resources, call this if you reimplement run(). More... | |
QThread * | qthread (void) |
Returns the thread, this will always return the same pointer no matter how often you restart the thread. More... | |
void | setObjectName (const QString &name) |
QString | objectName (void) const |
void | setPriority (QThread::Priority priority) |
QThread::Priority | priority (void) const |
bool | isFinished (void) const |
bool | isRunning (void) const |
void | setStackSize (uint stackSize) |
uint | stackSize (void) const |
void | exit (int retcode=0) |
Use this to exit from the thread if you are using a Qt event loop. More... | |
void | start (QThread::Priority p=QThread::InheritPriority) |
Tell MThread to start running the thread in the near future. More... | |
void | terminate (void) |
Kill a thread unsafely. More... | |
void | quit (void) |
calls exit(0) More... | |
bool | wait (std::chrono::milliseconds time=std::chrono::milliseconds::max()) |
Wait for the MThread to exit, with a maximum timeout. More... | |
Static Public Member Functions | |
static AppleRemote * | Get () |
Static Public Member Functions inherited from MThread | |
static void | ThreadSetup (const QString &name) |
This is to be called on startup in those few threads that haven't been ported to MThread. More... | |
static void | ThreadCleanup (void) |
This is to be called on exit in those few threads that haven't been ported to MThread. More... | |
static void | Cleanup (void) |
This will print out all the running threads, call exit(1) on each and then wait up to 5 seconds total for all the threads to exit. More... | |
static void | GetAllThreadNames (QStringList &list) |
static void | GetAllRunningThreadNames (QStringList &list) |
Protected Member Functions | |
AppleRemote () | |
Protected Member Functions inherited from MThread | |
int | exec (void) |
Enters the qt event loop. call exit or quit to exit thread. More... | |
Static Protected Attributes | |
static AppleRemote * | _instance = nullptr |
Private Member Functions | |
void | _initCookieMap () |
Apple keeps changing the "interface" between the remote and the OS. More... | |
bool | _initCookies () |
bool | _createDeviceInterface (io_object_t hidDevice) |
bool | _openDevice () |
void | _queueCallbackFunction (IOReturn result, void *refcon, void *sender) |
void | _handleEventWithCookieString (std::string cookieString, SInt32 sumOfValues) |
Static Private Member Functions | |
static void | QueueCallbackFunction (void *target, IOReturn result, void *refcon, void *sender) |
Private Attributes | |
bool | openInExclusiveMode {true} |
IOHIDDeviceInterface ** | hidDeviceInterface {nullptr} |
IOHIDQueueInterface ** | queue {nullptr} |
std::vector< int > | cookies |
std::map< std::string, Event > | cookieToButtonMapping |
int | remoteId {0} |
Listener * | _listener {nullptr} |
AppleRemote::Event | mLastEvent {AppleRemote::Undefined} |
int | mEventCount {0} |
bool | mKeyIsDown {false} |
QTimer * | mCallbackTimer {nullptr} |
Additional Inherited Members | |
Static Protected Member Functions inherited from MThread | |
static void | setTerminationEnabled (bool enabled=true) |
static void | usleep (std::chrono::microseconds time) |
template<typename R , typename P > | |
static std::enable_if_t< std::chrono::treat_as_floating_point< R >::value, void > | usleep (std::chrono::duration< R, P > time) |
Protected Attributes inherited from MThread | |
MThreadInternal * | m_thread {nullptr} |
QRunnable * | m_runnable {nullptr} |
bool | m_prologExecuted {true} |
bool | m_epilogExecuted {true} |
Definition at line 20 of file AppleRemote.h.
enum AppleRemote::Event |
Enumerator | |
---|---|
Up | |
Down | |
Menu | |
Select | |
Right | |
Left | |
RightHold | |
LeftHold | |
MenuHold | |
PlayHold | |
ControlSwitched | |
PlayPause | |
Undefined |
Definition at line 24 of file AppleRemote.h.
AppleRemote::~AppleRemote | ( | ) |
Definition at line 49 of file AppleRemote.cpp.
|
protected |
Definition at line 125 of file AppleRemote.cpp.
Referenced by Get().
|
static |
Definition at line 41 of file AppleRemote.cpp.
Referenced by MythInputDeviceHandler::Start().
bool AppleRemote::isListeningToRemote | ( | ) |
Definition at line 63 of file AppleRemote.cpp.
Referenced by MythInputDeviceHandler::Start().
void AppleRemote::setListener | ( | AppleRemote::Listener * | listener | ) |
Definition at line 68 of file AppleRemote.cpp.
Referenced by MythInputDeviceHandler::Start().
|
inline |
Definition at line 53 of file AppleRemote.h.
Referenced by setListener().
|
inline |
Definition at line 54 of file AppleRemote.h.
|
inline |
Definition at line 55 of file AppleRemote.h.
void AppleRemote::startListening | ( | ) |
Definition at line 73 of file AppleRemote.cpp.
Referenced by MythInputDeviceHandler::Event(), and MythInputDeviceHandler::Start().
void AppleRemote::stopListening | ( | ) |
Definition at line 95 of file AppleRemote.cpp.
Referenced by MythInputDeviceHandler::Event(), startListening(), and ~AppleRemote().
|
overridevirtual |
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
Reimplemented from MThread.
Definition at line 116 of file AppleRemote.cpp.
|
private |
Apple keeps changing the "interface" between the remote and the OS.
This initialises a table that stores those mappings.
The white plastic remote has a Play+Pause button in the middle of the navigation ring, but for menu navigation, we send an "enter" event instead. Ideally we would remap that for TV/videos, but MythTV can't easily do that.
The new Aluminium remote has separate Select and Play+Pause buttons.
Definition at line 139 of file AppleRemote.cpp.
Referenced by AppleRemote().
|
private |
Definition at line 212 of file AppleRemote.cpp.
Referenced by startListening().
|
private |
Definition at line 252 of file AppleRemote.cpp.
Referenced by startListening().
|
private |
Definition at line 281 of file AppleRemote.cpp.
Referenced by startListening().
|
staticprivate |
Definition at line 341 of file AppleRemote.cpp.
Referenced by _openDevice().
|
private |
Definition at line 349 of file AppleRemote.cpp.
Referenced by QueueCallbackFunction().
|
private |
Definition at line 379 of file AppleRemote.cpp.
Referenced by _queueCallbackFunction().
|
staticprotected |
Definition at line 63 of file AppleRemote.h.
Referenced by Get(), and ~AppleRemote().
Definition at line 67 of file AppleRemote.h.
Referenced by _openDevice(), isOpenInExclusiveMode(), and setOpenInExclusiveMode().
|
private |
Definition at line 68 of file AppleRemote.h.
Referenced by _createDeviceInterface(), _initCookies(), _openDevice(), isListeningToRemote(), and stopListening().
|
private |
Definition at line 69 of file AppleRemote.h.
Referenced by _openDevice(), _queueCallbackFunction(), isListeningToRemote(), startListening(), and stopListening().
|
private |
Definition at line 70 of file AppleRemote.h.
Referenced by _initCookies(), _openDevice(), isListeningToRemote(), and stopListening().
|
private |
Definition at line 71 of file AppleRemote.h.
Referenced by _handleEventWithCookieString(), and _initCookieMap().
|
private |
Definition at line 72 of file AppleRemote.h.
Referenced by _queueCallbackFunction().
|
private |
Definition at line 73 of file AppleRemote.h.
Referenced by _handleEventWithCookieString(), listener(), and setListener().
|
private |
Definition at line 75 of file AppleRemote.h.
|
private |
Definition at line 76 of file AppleRemote.h.
Definition at line 77 of file AppleRemote.h.
|
private |
Definition at line 78 of file AppleRemote.h.