00001
00002 #include "AppleRemoteListener.h"
00003
00004 #include <QCoreApplication>
00005 #include <QKeySequence>
00006 #include <QString>
00007 #include "lircevent.h"
00008
00009 AppleRemoteListener::AppleRemoteListener(QObject* mainWindow_)
00010 : mainWindow(mainWindow_)
00011 {
00012 }
00013
00014 void AppleRemoteListener::appleRemoteButton(AppleRemote::Event button,
00015 bool pressedDown)
00016 {
00017 QString code = 0;
00018 bool separateRelease = false;
00019
00020 switch (button)
00021 {
00022 case AppleRemote::Up:
00023 code="Up";
00024 separateRelease=true;
00025 break;
00026 case AppleRemote::Down:
00027 code="Down";
00028 separateRelease=true;
00029 break;
00030 case AppleRemote::Menu:
00031 code="Esc";
00032 break;
00033 case AppleRemote::Select:
00034 code="Enter";
00035 break;
00036 case AppleRemote::Right:
00037 code="Right";
00038 break;
00039 case AppleRemote::Left:
00040 code="Left";
00041 break;
00042 case AppleRemote::RightHold:
00043 code="End";
00044 separateRelease=true;
00045 break;
00046 case AppleRemote::LeftHold:
00047 code="Home";
00048 separateRelease=true;
00049 break;
00050 case AppleRemote::MenuHold:
00051 code="M";
00052 break;
00053 case AppleRemote::PlayPause:
00054 case AppleRemote::PlayHold:
00055 code="P";
00056 break;
00057 case AppleRemote::ControlSwitched:
00058 return;
00059 }
00060 QKeySequence a(code);
00061 int keycode = 0;
00062 for (unsigned int i = 0; i < a.count(); i++)
00063 {
00064 keycode = a[i];
00065
00066 if (pressedDown)
00067 QCoreApplication::postEvent(mainWindow, new LircKeycodeEvent(
00068 QEvent::KeyPress, keycode, Qt::NoModifier, code, code));
00069
00070 if (!separateRelease || !pressedDown)
00071 QCoreApplication::postEvent(mainWindow, new LircKeycodeEvent(
00072 QEvent::KeyRelease, keycode, Qt::NoModifier, code, code));
00073 }
00074 }