ui->tabsChoiceListWidget->addItem(
new PIRTabsWidgetItem("Keyset Search Panels", PowerSearch_Tabs));
+
+ ui->tabsChoiceListWidget->addItem(
+ new PIRTabsWidgetItem("Advanced Settings", Advanced_Tabs));
}
<h2 align="center">A Universal Infrared Remote Control</h2>
<p align="center">
-Version 1.1 - <i>For a Few Pierogies More</i>
+Version 1.1.15 - <i>For a Few Pierogies More</i>
</p>
<p>
--- /dev/null
+#include "piradvancedform.h"
+#include "ui_piradvancedform.h"
+
+#include "pirkeysetmanager.h"
+
+PIRAdvancedForm::PIRAdvancedForm()
+ : QWidget(0),
+ ui(new Ui::PIRAdvancedForm)
+{
+ ui->setupUi(this);
+}
+
+PIRAdvancedForm::~PIRAdvancedForm()
+{
+ delete ui;
+}
+
+
+void PIRAdvancedForm::setupForm(
+ PIRKeysetManager *pkm,
+ unsigned int id)
+{
+ keysetManager = pkm;
+ keysetID = id;
+
+ ui->carrierFrequencySpinBox->setValue(pkm->getCarrierFrequency(id));
+ ui->dutyCycleSpinBox->setValue(pkm->getDutyCycle(id));
+}
+
+
+void PIRAdvancedForm::on_carrierFrequencySpinBox_valueChanged(int arg1)
+{
+ if (arg1 < 30000) arg1 = 30000;
+ if (arg1 > 60000) arg1 = 60000;
+ keysetManager->setCarrierFrequency((unsigned int) arg1, keysetID);
+}
+
+void PIRAdvancedForm::on_dutyCycleSpinBox_valueChanged(int arg1)
+{
+ keysetManager->setDutyCycle((unsigned int) arg1, keysetID);
+}
--- /dev/null
+#ifndef PIRADVANCEDFORM_H
+#define PIRADVANCEDFORM_H
+
+#include <QWidget>
+
+class PIRKeysetManager;
+
+namespace Ui {
+class PIRAdvancedForm;
+}
+
+class PIRAdvancedForm : public QWidget
+{
+ Q_OBJECT
+
+public:
+ PIRAdvancedForm();
+
+ ~PIRAdvancedForm();
+
+ void setupForm(
+ PIRKeysetManager *pkm,
+ unsigned int id);
+
+private slots:
+ void on_carrierFrequencySpinBox_valueChanged(int arg1);
+
+ void on_dutyCycleSpinBox_valueChanged(int arg1);
+
+private:
+ Ui::PIRAdvancedForm *ui;
+
+ PIRKeysetManager *keysetManager;
+ unsigned int keysetID;
+};
+
+#endif // PIRADVANCEDFORM_H
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PIRAdvancedForm</class>
+ <widget class="QWidget" name="PIRAdvancedForm">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>800</width>
+ <height>480</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="advancedSettingsLabel">
+ <property name="text">
+ <string>Advanced Settings</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QLabel" name="carrierFrequencyLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Carrier Frequency</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="carrierFrequencySpinBox">
+ <property name="minimum">
+ <number>30000</number>
+ </property>
+ <property name="maximum">
+ <number>60000</number>
+ </property>
+ <property name="singleStep">
+ <number>100</number>
+ </property>
+ <property name="value">
+ <number>38000</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QLabel" name="dutyCycleLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Duty Cycle</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="dutyCycleSpinBox">
+ <property name="minimum">
+ <number>5</number>
+ </property>
+ <property name="maximum">
+ <number>95</number>
+ </property>
+ <property name="singleStep">
+ <number>5</number>
+ </property>
+ <property name="value">
+ <number>50</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+ <slots>
+ <signal>carrierFrequencyChanged(int)</signal>
+ <signal>dutyCycleChanged(int)</signal>
+ </slots>
+</ui>
emit cableInputEnabled(keyset->hasKey(id, CableInput_Key));
emit satelliteInputEnabled(keyset->hasKey(id, SatInput_Key));
emit auxInputEnabled(keyset->hasKey(id, AuxInput_Key));
+ emit compositeInputEnabled(keyset->hasKey(id, CompositeInput_Key));
+ emit componentInputEnabled(keyset->hasKey(id, ComponentInput_Key));
+ emit scartInputEnabled(keyset->hasKey(id, ScartInput_Key));
+ emit hddInputEnabled(keyset->hasKey(id, HDDInput_Key));
}
{
mainWindow->stopRepeating();
}
+
+void PIRInputForm::on_compositeInputButton_pressed()
+{
+ mainWindow->startRepeating(CompositeInput_Key);
+}
+
+void PIRInputForm::on_compositeInputButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRInputForm::on_scartInputButton_pressed()
+{
+ mainWindow->startRepeating(ScartInput_Key);
+}
+
+void PIRInputForm::on_scartInputButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRInputForm::on_componentInputButton_pressed()
+{
+ mainWindow->startRepeating(ComponentInput_Key);
+}
+
+void PIRInputForm::on_componentInputButton_released()
+{
+ mainWindow->stopRepeating();
+}
+
+void PIRInputForm::on_hddInputButton_pressed()
+{
+ mainWindow->startRepeating(HDDInput_Key);
+}
+
+void PIRInputForm::on_hddInputButton_released()
+{
+ mainWindow->stopRepeating();
+}
void cableInputEnabled(bool);
void satelliteInputEnabled(bool);
void auxInputEnabled(bool);
+ void compositeInputEnabled(bool);
+ void scartInputEnabled(bool);
+ void componentInputEnabled(bool);
+ void hddInputEnabled(bool);
private slots:
void on_cdInputButton_pressed();
void on_satelliteInputButton_released();
void on_auxInputButton_pressed();
void on_auxInputButton_released();
+ void on_compositeInputButton_pressed();
+ void on_compositeInputButton_released();
+ void on_scartInputButton_pressed();
+ void on_scartInputButton_released();
+ void on_componentInputButton_pressed();
+ void on_componentInputButton_released();
+ void on_hddInputButton_pressed();
+ void on_hddInputButton_released();
private:
Ui::PIRInputForm *ui;
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="margin">
- <number>0</number>
- </property>
<item row="0" column="0">
<widget class="QPushButton" name="cdInputButton">
<property name="sizePolicy">
</widget>
</item>
<item row="1" column="0">
- <widget class="QPushButton" name="pcInputButton">
+ <widget class="QPushButton" name="compositeInputButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
</sizepolicy>
</property>
<property name="text">
- <string>PC</string>
+ <string>Composite</string>
</property>
</widget>
</item>
<item row="1" column="1">
- <widget class="QPushButton" name="hdmiInputButton">
+ <widget class="QPushButton" name="scartInputButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
</sizepolicy>
</property>
<property name="text">
- <string>HDMI</string>
+ <string>SCART</string>
</property>
</widget>
</item>
<item row="1" column="2">
- <widget class="QPushButton" name="dvdInputButton">
+ <widget class="QPushButton" name="componentInputButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
</sizepolicy>
</property>
<property name="text">
- <string>DVD</string>
+ <string>Component</string>
</property>
</widget>
</item>
<item row="1" column="3">
- <widget class="QPushButton" name="vcrInputButton">
+ <widget class="QPushButton" name="hdmiInputButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
</sizepolicy>
</property>
<property name="text">
- <string>VCR</string>
+ <string>HDMI</string>
</property>
</widget>
</item>
<item row="2" column="0">
- <widget class="QPushButton" name="antennaInputButton">
+ <widget class="QPushButton" name="dvdInputButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
</sizepolicy>
</property>
<property name="text">
- <string>Antenna</string>
+ <string>DVD</string>
</property>
</widget>
</item>
<item row="2" column="1">
+ <widget class="QPushButton" name="vcrInputButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>VCR</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
<widget class="QPushButton" name="cableInputButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
</property>
</widget>
</item>
- <item row="2" column="2">
+ <item row="2" column="3">
<widget class="QPushButton" name="satelliteInputButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
</property>
</widget>
</item>
- <item row="2" column="3">
+ <item row="3" column="0">
+ <widget class="QPushButton" name="hddInputButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>HDD</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QPushButton" name="antennaInputButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Antenna</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QPushButton" name="pcInputButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>PC</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="3">
<widget class="QPushButton" name="auxInputButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
</hint>
</hints>
</connection>
+ <connection>
+ <sender>PIRInputForm</sender>
+ <signal>compositeInputEnabled(bool)</signal>
+ <receiver>compositeInputButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>103</x>
+ <y>182</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRInputForm</sender>
+ <signal>componentInputEnabled(bool)</signal>
+ <receiver>componentInputButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>498</x>
+ <y>182</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRInputForm</sender>
+ <signal>scartInputEnabled(bool)</signal>
+ <receiver>scartInputButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>301</x>
+ <y>182</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>PIRInputForm</sender>
+ <signal>hddInputEnabled(bool)</signal>
+ <receiver>hddInputButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>399</x>
+ <y>239</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>103</x>
+ <y>417</y>
+ </hint>
+ </hints>
+ </connection>
</connections>
<slots>
<signal>cdInputEnabled(bool)</signal>
<signal>cableInputEnabled(bool)</signal>
<signal>satelliteInputEnabled(bool)</signal>
<signal>auxInputEnabled(bool)</signal>
+ <signal>compositeInputEnabled(bool)</signal>
+ <signal>scartInputEnabled(bool)</signal>
+ <signal>componentInputEnabled(bool)</signal>
+ <signal>hddInputEnabled(bool)</signal>
</slots>
</ui>
addKey("Yellow", Yellow_Key, 0x22, 8);
addKey("Blue", Blue_Key, 0x23, 8);
}
+
+
+ADBSTB6::ADBSTB6(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "TV Receiver Keyset 6",
+ ADB_Make,
+ index)
+{
+}
+
+
+void ADBSTB6::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+ setPreData(0x3C84, 16);
+
+ addKey("5", Five_Key, 0x20, 8);
+ addKey("power", Power_Key, 0x21, 8);
+ addKey("9", Nine_Key, 0x22, 8);
+ addKey("yes", Select_Key, 0x23, 8);
+ addKey("down", Down_Key, 0x24, 8);
+ addKey("mute", Mute_Key, 0x25, 8);
+ addKey("vol+", VolumeUp_Key, 0x26, 8);
+ addKey("vol-", VolumeDown_Key, 0x27, 8);
+ addKey("4", Four_Key, 0x28, 8);
+ addKey("2", Two_Key, 0x29, 8);
+ addKey("8", Eight_Key, 0x2A, 8);
+ addKey("up", Up_Key, 0x2B, 8);
+ addKey("? (question)", Unmapped_Key, 0x2C, 8);
+ addKey("green", Green_Key, 0x2D, 8);
+ addKey("guide", Guide_Key, 0x2E, 8);
+ addKey("10", Zero_Key, 0x2F, 8);
+ addKey("1", One_Key, 0x30, 8);
+ addKey("exit", Exit_Key, 0x31, 8);
+ addKey("7", Seven_Key, 0x32, 8);
+ addKey("0", Zero_Key, 0x33, 8);
+ addKey("left", Left_Key, 0x34, 8);
+ addKey("channel+", ChannelUp_Key, 0x35, 8);
+ addKey("mosaic", PIP_Key, 0x36, 8);
+ addKey("channel-", ChannelDown_Key, 0x37, 8);
+ addKey("6", Six_Key, 0x38, 8);
+ addKey("3", Three_Key, 0x39, 8);
+ addKey("return", Enter_Key, 0x3A, 8);
+ addKey("right", Right_Key, 0x3B, 8);
+ addKey("+ (plus)", Unmapped_Key, 0x3C, 8);
+ addKey("yellow", Yellow_Key, 0x3D, 8);
+ addKey("orange", Red_Key, 0x3E, 8);
+ addKey("blue", Blue_Key, 0x3F, 8);
+ addKey("info", Info_Key, 0x40, 8);
+ addKey("A", Unmapped_Key, 0x41, 8);
+ addKey("B", Unmapped_Key, 0x42, 8);
+ addKey("envelope", Unmapped_Key, 0x43, 8);
+}
QObject *guiObject);
};
+
+class ADBSTB6: public PIRKeysetMetaData
+{
+public:
+ ADBSTB6(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
#endif // ADB_H
}
+LGHT1::LGHT1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "Home Theater Keyset 1",
+ LG_Make,
+ index)
+{
+}
+
+
+void LGHT1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECXProtocol(guiObject, index, true);
+
+ setPreData(0x2222, 16);
+
+ addKey("play", Play_Key, 0x04, 8);
+ addKey("stop", Stop_Key, 0x05, 8);
+ addKey("skip/next track", Next_Key, 0x06, 8);
+ addKey("skip/prev track", Previous_Key, 0x07, 8);
+ addKey("vol down", VolumeDown_Key, 0x16, 8);
+ addKey("vol up", VolumeUp_Key, 0x17, 8);
+ addKey("power", Power_Key, 0x1E, 8);
+ addKey("mute", Mute_Key, 0x1F, 8);
+ addKey("sound effect", Unmapped_Key, 0x2F, 8);
+ addKey("1", One_Key, 0x41, 8);
+ addKey("2", Two_Key, 0x42, 8);
+ addKey("3", Three_Key, 0x43, 8);
+ addKey("4", Four_Key, 0x44, 8);
+ addKey("5", Five_Key, 0x45, 8);
+ addKey("6", Six_Key, 0x46, 8);
+ addKey("7", Seven_Key, 0x47, 8);
+ addKey("8", Eight_Key, 0x48, 8);
+ addKey("9", Nine_Key, 0x49, 8);
+ addKey("0", Zero_Key, 0x4B, 8);
+ addKey("repeat", Repeat_Key, 0x4E, 8);
+ addKey("pause", Pause_Key, 0x4F, 8);
+ addKey("scan forward", FastForward_Key, 0x52, 8);
+ addKey("scan back", Rewind_Key, 0x53, 8);
+ addKey("speaker level", Unmapped_Key, 0x66, 8);
+ addKey("R", Red_Key, 0x6C, 8);
+ addKey("G", Green_Key, 0x6D, 8);
+ addKey("Y", Yellow_Key, 0x6E, 8);
+ addKey("B", Blue_Key, 0x6F, 8);
+ addKey("record", Record_Key, 0x83, 8);
+ addKey("radio&input", Input_Key, 0x8A, 8);
+ addKey("open/close", Eject_Key, 0x9A, 8);
+ addKey("back", Exit_Key, 0xA2, 8);
+ addKey("info/display", Info_Key, 0xA3, 8);
+ addKey("disc menu", DiscMenu_Key, 0xA4, 8);
+ addKey("home", Menu_Key, 0xA5, 8);
+ addKey("down arrow", Down_Key, 0xA6, 8);
+ addKey("up arrow", Up_Key, 0xA7, 8);
+ addKey("left arrow", Left_Key, 0xA8, 8);
+ addKey("right arrow", Right_Key, 0xA9, 8);
+ addKey("enter", Select_Key, 0xAA, 8);
+ addKey("title/pop-up", DiscTitle_Key, 0xAF, 8);
+ addKey("clear", Unmapped_Key, 0xB0, 8);
+ addKey("search", Unmapped_Key, 0xB3, 8);
+ addKey("marker", Unmapped_Key, 0xB4, 8);
+ addKey("optical", Unmapped_Key, 0xB6, 8);
+ addKey("sleep", Sleep_Key, 0xC2, 8);
+}
+
+
+LGHT2::LGHT2(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "Home Theater / BD Keyset 2",
+ LG_Make,
+ index)
+{
+}
+
+
+void LGHT2::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECXProtocol(guiObject, index, true);
+
+ setPreData(0xC2C2, 16);
+
+ addKey("power", Power_Key, 0x30, 8);
+ addKey("play", Play_Key, 0x31, 8);
+ addKey("rewind", Rewind_Key, 0x32, 8);
+ addKey("fast fwd", FastForward_Key, 0x33, 8);
+ addKey("channel up", ChannelUp_Key, 0x34, 8);
+ addKey("next track", Next_Key, 0x34, 8);
+ addKey("channel down", ChannelDown_Key, 0x35, 8);
+ addKey("prev track", Previous_Key, 0x35, 8);
+ addKey("eject", Eject_Key, 0x36, 8);
+ addKey("Slow Fwd 1/16x", SlowPlus_Key, 0x37, 8);
+ addKey("pause", Pause_Key, 0x38, 8);
+ addKey("stop", Stop_Key, 0x39, 8);
+ addKey("display", Info_Key, 0x3A, 8);
+ addKey("1", One_Key, 0x3B, 8);
+ addKey("2", Two_Key, 0x3C, 8);
+ addKey("3", Three_Key, 0x3D, 8);
+ addKey("4", Four_Key, 0x3E, 8);
+ addKey("5", Five_Key, 0x3F, 8);
+ addKey("6", Six_Key, 0x40, 8);
+ addKey("7", Seven_Key, 0x41, 8);
+ addKey("8", Eight_Key, 0x42, 8);
+ addKey("9", Nine_Key, 0x43, 8);
+ addKey("0", Zero_Key, 0x44, 8);
+ addKey("exit", Exit_Key, 0x45, 8); // "return"
+ addKey("blue", Blue_Key, 0x46, 8);
+ addKey("clear", Clear_Key, 0x46, 8);
+ addKey("up arrow", Up_Key, 0x47, 8);
+ addKey("down arrow", Down_Key, 0x48, 8);
+ addKey("green", Green_Key, 0x4A, 8);
+ addKey("title", DiscTitle_Key, 0x4A, 8);
+ addKey("DVD MENU", DiscMenu_Key, 0x4B, 8); // "list"
+ addKey("ANGLE", Angle_Key, 0x4C, 8);
+ addKey("audio", Audio_Key, 0x4F, 8);
+ addKey("subtitle", Captions_Key, 0x50, 8);
+ addKey("RANDOM", Random_Key, 0x51, 8);
+ addKey("red", Red_Key, 0x53, 8);
+ addKey("repeat", Repeat_Key, 0x53, 8);
+ addKey("teletxt", Teletext_Key, 0x54, 8);
+ addKey("A-B", RepeatAB_Key, 0x55, 8);
+ addKey("menu", Menu_Key, 0x56, 8);
+ addKey("PROGRAM", Unmapped_Key, 0x57, 8);
+ addKey("select", Select_Key, 0x58, 8);
+ addKey("left arrow", Left_Key, 0x59, 8);
+ addKey("right arrow", Right_Key, 0x5A, 8);
+ addKey("*", Unmapped_Key, 0x5E, 8);
+ addKey("Slow Rev 1/16x", SlowMinus_Key, 0x60, 8);
+ addKey("yellow", Yellow_Key, 0x61, 8); // "MARKER"
+ addKey("search", Unmapped_Key, 0x62, 8);
+ addKey("ZOOM", Zoom_Key, 0x64, 8);
+ addKey("home", Unmapped_Key, 0x67, 8);
+ addKey("favourite", Favorites_Key, 0x74, 8);
+ addKey("Power ON", PowerOn_Key, 0x75, 8);
+ addKey("Power OFF", PowerOff_Key, 0x76, 8);
+ addKey("ProgramUp", Unmapped_Key, 0x77, 8);
+ addKey("ProgramDown", Unmapped_Key, 0x78, 8);
+ addKey("Lock", Unmapped_Key, 0x79, 8);
+ addKey("inputnext", Input_Key, 0xB0, 8);
+ addKey("record", Record_Key, 0xB6, 8);
+ addKey("timer rec", RecordTimed_Key, 0xB7, 8);
+ addKey("TimeShift", Unmapped_Key, 0xB9, 8);
+ addKey("TV/DVD", Unmapped_Key, 0xBE, 8);
+ addKey("inputdvd", DVDInput_Key, 0xF1, 8);
+ addKey("inputhdd", HDDInput_Key, 0xF2, 8);
+ addKey("ProgramList", Unmapped_Key, 0xF4, 8);
+}
+
+
+LGHT2a::LGHT2a(
+ unsigned int index)
+ : LGHT2(index)
+{
+ setKeysetName("Home Theater / BD Keyset 2a");
+}
+
+
+void LGHT2a::populateProtocol(
+ QObject *guiObject)
+{
+ LGHT2::populateProtocol(guiObject);
+
+ addKey("A (Red)", Red_Key, 0x7C, 8);
+ addKey("B (Green)", Green_Key, 0x7D, 8);
+ addKey("C (Blue)", Blue_Key, 0x7E, 8);
+ addKey("D (Yellow)", Yellow_Key, 0x7F, 8);
+ addKey("Rew 100x", Unmapped_Key, 0x91, 8);
+ addKey("Rew 16x", Unmapped_Key, 0x92, 8);
+ addKey("Rew 4x", Unmapped_Key, 0x95, 8);
+ addKey("Rew 2x", Unmapped_Key, 0x96, 8);
+ addKey("Fwd 2x", Unmapped_Key, 0x99, 8);
+ addKey("Fwd 4x", Unmapped_Key, 0x9B, 8);
+ addKey("Fwd 16x", Unmapped_Key, 0x9D, 8);
+ addKey("Fwd 100x", Unmapped_Key, 0x9F, 8);
+ addKey("Z: Mp1", Unmapped_Key, 0xDE, 8);
+ addKey("Z: Factory Reset !!!", Unmapped_Key, 0xDF, 8);
+ addKey("Z: CPRM DATA READ/SAVE", Unmapped_Key, 0xE0, 8);
+ addKey("Z: TECHNICAL MENU", Unmapped_Key, 0xE1, 8);
+ addKey("Z: INTERLACE/PROG SCAN", Unmapped_Key, 0xE2, 8);
+ addKey("Z: service menu", Unmapped_Key, 0xE5, 8);
+ addKey("Resolution", AspectRatio_Key, 0xF5, 8);
+ addKey("Subtitle on-off", Unmapped_Key, 0xF7, 8);
+ addKey("Pic Mode", PictureMode_Key, 0xF9, 8);
+ addKey("Music ID - ID", Unmapped_Key, 0xFA, 8);
+}
+
+
LGDisc1::LGDisc1(
unsigned int index)
: PIRKeysetMetaData(
addKey("cd-dvd", Unmapped_Key, 0x03, 8);
addKey("play", Play_Key, 0x04, 8);
addKey("stop", Stop_Key, 0x05, 8);
- addKey("<<<", Unmapped_Key, 0x06, 8);
- addKey(">>>", Unmapped_Key, 0x07, 8);
+ addKey("<<<", Next_Key, 0x06, 8);
+ addKey(">>>", Previous_Key, 0x07, 8);
addKey("aux", AuxInput_Key, 0x09, 8);
+ addKey("aux", Input_Key, 0x09, 8);
addKey("minus", Unmapped_Key, 0x12, 8); // "pr_preset_down"
addKey("plus", Unmapped_Key, 0x13, 8); // "pr_preset_up"
addKey("volume-", VolumeDown_Key, 0x16, 8);
QObject *guiObject);
};
+class LGHT1: public PIRKeysetMetaData
+{
+public:
+ LGHT1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+class LGHT2: public PIRKeysetMetaData
+{
+public:
+ LGHT2(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+class LGHT2a: public LGHT2
+{
+public:
+ LGHT2a(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
class LGDisc1: public PIRKeysetMetaData
{
public:
--- /dev/null
+#include "medialink.h"
+#include "protocols/necprotocol.h"
+
+MedialinkSTB1::MedialinkSTB1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "HD Receiver Keyset 1",
+ Medialink_Make,
+ index)
+{
+}
+
+
+void MedialinkSTB1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+ setPreData(0x00BE, 16);
+
+ addKey("CH+", ChannelUp_Key, 0x00, 8);
+ addKey("CH-", ChannelDown_Key, 0x01, 8);
+ addKey("Skip-", Previous_Key, 0x04, 8);
+ addKey("Page+", PageUp_Key, 0x07, 8);
+ addKey("PVR", HDDInput_Key, 0x08, 8);
+ addKey("Favourite", Favorites_Key, 0x09, 8);
+ addKey("Power", Power_Key, 0x0A, 8);
+ addKey("Green", Green_Key, 0x0D, 8);
+ addKey("Yellow", Yellow_Key, 0x0E, 8);
+ addKey("Blue", Blue_Key, 0x0F, 8);
+ addKey("num_0", Zero_Key, 0x10, 8);
+ addKey("num_1", One_Key, 0x11, 8);
+ addKey("num_2", Two_Key, 0x12, 8);
+ addKey("num_3", Three_Key, 0x13, 8);
+ addKey("num_4", Four_Key, 0x14, 8);
+ addKey("num_5", Five_Key, 0x15, 8);
+ addKey("num_6", Six_Key, 0x16, 8);
+ addKey("num_7", Seven_Key, 0x17, 8);
+ addKey("num_8", Eight_Key, 0x18, 8);
+ addKey("num_9", Nine_Key, 0x19, 8);
+ addKey("Menu", Menu_Key, 0x1A, 8);
+ addKey("Sleep", Sleep_Key, 0x1B, 8);
+ addKey("exit", Exit_Key, 0x1C, 8);
+ addKey("Info", Info_Key, 0x1D, 8);
+ addKey("Last_ch", PrevChannel_Key, 0x1E, 8);
+ addKey("Select", Select_Key, 0x1F, 8);
+ addKey("V-Format", Unmapped_Key, 0x40, 8);
+ addKey("PVR Right key", Unmapped_Key, 0x42, 8);
+ addKey("Guide", Guide_Key, 0x43, 8);
+ addKey("Time", Unmapped_Key, 0x44, 8);
+ addKey("rewind", Rewind_Key, 0x45, 8);
+ addKey("Pause", Pause_Key, 0x46, 8);
+ addKey("Subtitle", Captions_Key, 0x47, 8);
+ addKey("ffwd", FastForward_Key, 0x48, 8);
+ addKey("Audio", Audio_Key, 0x49, 8);
+ addKey("Stop", Stop_Key, 0x4A, 8);
+ addKey("Play", Play_Key, 0x4B, 8);
+ addKey("Option", Unmapped_Key, 0x4C, 8);
+ addKey("Red", Red_Key, 0x4D, 8);
+ addKey("up_arrow", Up_Key, 0x4E, 8);
+ addKey("down_arrow", Down_Key, 0x4F, 8);
+ addKey("Teletext", Unmapped_Key, 0x51, 8);
+ addKey("Page-", PageDown_Key, 0x52, 8);
+ addKey("left_arrow", Left_Key, 0x53, 8);
+ addKey("right_arrow", Right_Key, 0x54, 8);
+ addKey("TV/Radio", Input_Key, 0x55, 8);
+ addKey("TV/Radio", TunerInput_Key, 0x55, 8);
+ addKey("Record", Record_Key, 0x56, 8);
+ addKey("PVR Left Key", Unmapped_Key, 0x57, 8);
+ addKey("PVR Middle", Unmapped_Key, 0x58, 8);
+ addKey("Skip+", Next_Key, 0x5E, 8);
+}
--- /dev/null
+#ifndef MEDIALINK_H
+#define MEDIALINK_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class MedialinkSTB1: public PIRKeysetMetaData
+{
+public:
+ MedialinkSTB1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+#endif // MEDIALINK_H
#include "mitsubishi.h"
#include "protocols/lircprotocol.h"
+#include "protocols/protonprotocol.h"
MitsubishiTV1::MitsubishiTV1(
unsigned int index)
addKey("JOG+", Unmapped_Key, 0x50, 8);
addKey("JOG-", Unmapped_Key, 0x48, 8);
}
+
+
+MitsubishiProjector1::MitsubishiProjector1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "Projector Keyset 1",
+ Mitsubishi_Make,
+ index)
+{
+}
+
+
+void MitsubishiProjector1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new ProtonProtocol(guiObject, index);
+
+ setPreData(0xF0, 8);
+
+ addKey("PowerOn", PowerOn_Key, 0x41, 8);
+ addKey("PowerOff", PowerOff_Key, 0x42, 8);
+ addKey("HDMI", HDMIInput_Key, 0x70, 8);
+ addKey("Component", ComponentInput_Key, 0x64, 8);
+ addKey("Video", CompositeInput_Key, 0x65, 8);
+ addKey("Computer", PCInput_Key, 0x60, 8);
+ addKey("S-Video", SVideoInput_Key, 0x66, 8);
+ addKey("Up", Up_Key, 0x82, 8);
+ addKey("Right", Right_Key, 0x81, 8);
+ addKey("Enter", Enter_Key, 0x87, 8);
+ addKey("Left", Left_Key, 0x80, 8);
+ addKey("Down", Down_Key, 0x83, 8);
+ addKey("Menu", Menu_Key, 0x86, 8);
+ addKey("Aspect", AspectRatio_Key, 0xE2, 8);
+ addKey("M1", Unmapped_Key, 0xE4, 8);
+ addKey("M2", Unmapped_Key, 0xE5, 8);
+ addKey("M3", Unmapped_Key, 0xE6, 8);
+ addKey("Contrast", ContrastUp_Key, 0xD0, 8);
+ addKey("Brightness", BrightnessUp_Key, 0xD1, 8);
+ addKey("ColorTemp", ColorUp_Key, 0xD4, 8);
+ addKey("Gamma", Unmapped_Key, 0xD5, 8);
+ addKey("Sharpness", Unmapped_Key, 0xD6, 8);
+ addKey("AutoPosition", Unmapped_Key, 0xA2, 8);
+ addKey("Blank", Unmapped_Key, 0xA6, 8);
+ addKey("Keystone", Keystone_Key, 0x43, 8);
+}
QObject *guiObject);
};
+class MitsubishiProjector1: public PIRKeysetMetaData
+{
+public:
+ MitsubishiProjector1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
#endif // MITSUBISHI_H
--- /dev/null
+#include "multichoice.h"
+#include "protocols/rc5protocol.h"
+#include "protocols/xmpprotocol.h"
+
+MultichoiceSTB1::MultichoiceSTB1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "TV Decoder Keyset 1",
+ Multichoice_Make,
+ index)
+{
+}
+
+
+void MultichoiceSTB1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new RC5Protocol(guiObject, index);
+
+ addKey("0", Zero_Key, 0x1600, 13);
+ addKey("1", One_Key, 0x1601, 13);
+ addKey("2", Two_Key, 0x1602, 13);
+ addKey("3", Three_Key, 0x1603, 13);
+ addKey("4", Four_Key, 0x1604, 13);
+ addKey("5", Five_Key, 0x1605, 13);
+ addKey("6", Six_Key, 0x1606, 13);
+ addKey("7", Seven_Key, 0x1607, 13);
+ addKey("8", Eight_Key, 0x1608, 13);
+ addKey("9", Nine_Key, 0x1609, 13);
+ addKey("power", Power_Key, 0x160C, 13);
+ addKey("Mute", Mute_Key, 0x160D, 13);
+
+ addKey("volup", VolumeUp_Key, 0x1610, 13);
+ addKey("voldown", VolumeDown_Key, 0x1611, 13);
+ addKey("up", Up_Key, 0x1612, 13);
+ addKey("down", Down_Key, 0x1613, 13);
+
+ addKey("menu", Menu_Key, 0x161C, 13);
+ addKey("left", Left_Key, 0x161D, 13);
+ addKey("right", Right_Key, 0x161E, 13);
+
+ addKey("progup", ChannelUp_Key, 0x1620, 13);
+ addKey("progdn", ChannelDown_Key, 0x1621, 13);
+ addKey("ok", Select_Key, 0x1622, 13);
+// addKey("teletext", Unmapped_Key, 0x1624, 13);
+ addKey("Subtitle", Captions_Key, 0x1624, 13);
+ addKey("radio", TunerInput_Key, 0x1625, 13);
+ addKey("FFWD", FastForward_Key, 0x1625, 13);
+ addKey("yellow", Yellow_Key, 0x162A, 13);
+ addKey("Record", Record_Key, 0x162A, 13);
+ addKey("green", Green_Key, 0x162B, 13);
+ addKey("Stop", Stop_Key, 0x162B, 13);
+ addKey("red", Red_Key, 0x162C, 13);
+ addKey("SP/LP", VHSSpeed_Key, 0x162C, 13);
+ addKey("information", Info_Key, 0x162D, 13);
+ addKey("Stop", Stop_Key, 0x162D, 13);
+ addKey("blue", Blue_Key, 0x162E, 13);
+ addKey("Play", Play_Key, 0x162E, 13);
+ addKey("tv", Input_Key, 0x162F, 13);
+
+ addKey("exit", Exit_Key, 0x1631, 13);
+ addKey("Last/Prev Ch", PrevChannel_Key, 0x1631, 13);
+ addKey("tvguide", Guide_Key, 0x1635, 13);
+}
+
+
+MultichoiceSTB2::MultichoiceSTB2(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "TV Decoder Keyset 2",
+ Multichoice_Make,
+ index)
+{
+}
+
+
+void MultichoiceSTB2::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new XMPProtocol(
+ guiObject, index, 0x1, 0x1, 0x44, 0x47, false);
+
+ addXMPKey("0", Zero_Key, 0x00, 0x00);
+ addXMPKey("1", One_Key, 0x01, 0x00);
+ addXMPKey("2", Two_Key, 0x02, 0x00);
+ addXMPKey("3", Three_Key, 0x03, 0x00);
+ addXMPKey("4", Four_Key, 0x04, 0x00);
+ addXMPKey("5", Five_Key, 0x05, 0x00);
+ addXMPKey("6", Six_Key, 0x06, 0x00);
+ addXMPKey("7", Seven_Key, 0x07, 0x00);
+ addXMPKey("8", Eight_Key, 0x08, 0x00);
+ addXMPKey("9", Nine_Key, 0x09, 0x00);
+ addXMPKey("Mute", Mute_Key, 0x0C, 0x00);
+ addXMPKey("Power", Power_Key, 0x0F, 0x00);
+ addXMPKey("Menu", Menu_Key, 0x25, 0x00);
+ addXMPKey("TV Guide", Guide_Key, 0x27, 0x00);
+ addXMPKey("Stop", Stop_Key, 0x30, 0x00);
+ addXMPKey("Rewind", Rewind_Key, 0x31, 0x00);
+ addXMPKey("Play/Pause", Play_Key, 0x32, 0x00);
+ addXMPKey("Play/Pause", Pause_Key, 0x32, 0x00);
+ addXMPKey("Fast Forward", FastForward_Key, 0x33, 0x00);
+ addXMPKey("Record", Record_Key, 0x34, 0x00);
+ addXMPKey("Fastext Red", Red_Key, 0x40, 0x00);
+ addXMPKey("Fastext Blue", Blue_Key, 0x41, 0x00);
+ addXMPKey("Fastext White", Unmapped_Key, 0x42, 0x00);
+ addXMPKey("Fastext Yellow", Yellow_Key, 0x43, 0x00);
+ addXMPKey("Fastext Green", Green_Key, 0x44, 0x00);
+ addXMPKey("TV", Unmapped_Key, 0x50, 0x00);
+ addXMPKey("Alt", Unmapped_Key, 0x51, 0x00);
+ addXMPKey("Language", Audio_Key, 0x52, 0x00);
+ addXMPKey("Help", Unmapped_Key, 0x53, 0x00);
+ addXMPKey("<Shift> TV (Audio)", Unmapped_Key, 0x58, 0x00);
+ addXMPKey("<Shift> Alt (Subtitle)", Captions_Key, 0x59, 0x00);
+ addXMPKey("<Shift> TV Guide (iTV)", Unmapped_Key, 0x5A, 0x00);
+ addXMPKey("<Shift> Language (PG)", Unmapped_Key, 0x5B, 0x00);
+ addXMPKey("<Shift> Mute", Unmapped_Key, 0x5C, 0x00);
+ addXMPKey("<Shift> Info", Unmapped_Key, 0x5D, 0x00);
+ addXMPKey("<Shift> Exit (Input)", Input_Key, 0x5E, 0x00);
+ addXMPKey("<Shift> Up", Unmapped_Key, 0x5F, 0x00);
+ addXMPKey("<Shift> Left", Unmapped_Key, 0x60, 0x00);
+ addXMPKey("<Shift> OK", Unmapped_Key, 0x61, 0x00);
+ addXMPKey("<Shift> Right", Unmapped_Key, 0x62, 0x00);
+ addXMPKey("<Shift> Down", Unmapped_Key, 0x63, 0x00);
+ addXMPKey("<Shift> Stop", Unmapped_Key, 0x64, 0x00);
+ addXMPKey("<Shift> Record", Unmapped_Key, 0x65, 0x00);
+ addXMPKey("<Shift> Program Down", Unmapped_Key, 0x66, 0x00);
+ addXMPKey("<Shift> Program Up", Unmapped_Key, 0x67, 0x00);
+ addXMPKey("<Shift> Menu", Unmapped_Key, 0x6F, 0x00);
+ addXMPKey("<Shift> Help", Unmapped_Key, 0x70, 0x00);
+ addXMPKey("<Shift> Red", Unmapped_Key, 0x71, 0x00);
+ addXMPKey("<Shift> Blue", Unmapped_Key, 0x72, 0x00);
+ addXMPKey("<Shift> White", Unmapped_Key, 0x73, 0x00);
+ addXMPKey("<Shift> Yellow", Unmapped_Key, 0x74, 0x00);
+ addXMPKey("<Shift> Green", Unmapped_Key, 0x75, 0x00);
+ addXMPKey("Volume Up", VolumeUp_Key, 0x83, 0x00);
+ addXMPKey("Volume Down", VolumeDown_Key, 0x84, 0x00);
+ addXMPKey("Program Down", ChannelDown_Key, 0x85, 0x00);
+ addXMPKey("Program Up", ChannelUp_Key, 0x86, 0x00);
+ addXMPKey("Down", Down_Key, 0x87, 0x00);
+ addXMPKey("Right", Right_Key, 0x88, 0x00);
+ addXMPKey("OK", Select_Key, 0x8B, 0x00);
+ addXMPKey("Left", Left_Key, 0x8C, 0x00);
+ addXMPKey("Up", Up_Key, 0x8D, 0x00);
+ addXMPKey("Exit", Exit_Key, 0x8E, 0x00);
+ addXMPKey("Info", Info_Key, 0x8F, 0x00);
+}
--- /dev/null
+#ifndef MULTICHOICE_H
+#define MULTICHOICE_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class MultichoiceSTB1: public PIRKeysetMetaData
+{
+public:
+ MultichoiceSTB1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+class MultichoiceSTB2: public PIRKeysetMetaData
+{
+public:
+ MultichoiceSTB2(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+#endif // MULTICHOICE_H
--- /dev/null
+#include "nec.h"
+#include "protocols/necprotocol.h"
+#include "protocols/necxprotocol.h"
+
+NECTV1::NECTV1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "TV Keyset 1",
+ NEC_Make,
+ index)
+{
+}
+
+
+void NECTV1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+ setPreData(0x18, 8);
+
+ addKey("prog_+", ChannelUp_Key, 0x00, 8);
+ addKey("prog_-", ChannelDown_Key, 0x01, 8);
+ addKey("TV_+_VOL", VolumeUp_Key, 0x02, 8);
+ addKey("TV_-_VOL", VolumeDown_Key, 0x03, 8);
+ addKey("-A-", Unmapped_Key, 0x04, 8);
+ addKey("-B-", Unmapped_Key, 0x05, 8);
+ addKey("-C-", Unmapped_Key, 0x06, 8);
+ addKey("-D-", Unmapped_Key, 0x07, 8);
+ addKey("power", Power_Key, 0x08, 8);
+ addKey("TV_MUTE", Mute_Key, 0x09, 8);
+ addKey("TV_TV/VIDEO", Input_Key, 0x0A, 8);
+ addKey("Mode", PictureMode_Key, 0x0B, 8);
+ addKey("Hue_+", ColorUp_Key, 0x0C, 8);
+ addKey("Hue_-", ColorDown_Key, 0x0D, 8);
+ addKey("Norm", Unmapped_Key, 0x0E, 8);
+// addKey("TV_CH_CALL", Unmapped_Key, 0x0F, 8);
+ addKey("Ok", Select_Key, 0x0F, 8);
+
+ addKey("1", One_Key, 0x10, 8);
+ addKey("2", Two_Key, 0x11, 8);
+ addKey("3", Three_Key, 0x12, 8);
+ addKey("4", Four_Key, 0x13, 8);
+ addKey("5", Five_Key, 0x14, 8);
+ addKey("6", Six_Key, 0x15, 8);
+ addKey("7", Seven_Key, 0x16, 8);
+ addKey("8", Eight_Key, 0x17, 8);
+ addKey("9", Nine_Key, 0x18, 8);
+ addKey("-/--", DoubleDigit_Key, 0x19, 8);
+ addKey("0", Zero_Key, 0x1A, 8);
+ addKey("shift_-A-", Unmapped_Key, 0x1C, 8);
+ addKey("TV_OFF_TIMER", Sleep_Key, 0x1E, 8);
+ addKey("TV_ON_TIMER", Timer_Key, 0x1F, 8);
+
+ addKey("Bass_+", BassUp_Key, 0x42, 8);
+ addKey("Bass_-", BassDown_Key, 0x43, 8);
+ addKey("Treble_+", TrebleUp_Key, 0x44, 8);
+ addKey("Treble_-", TrebleDown_Key, 0x45, 8);
+ addKey("contr_+", ContrastUp_Key, 0x46, 8);
+ addKey("contr_-", ContrastDown_Key, 0x47, 8);
+ addKey("Mode_+", Unmapped_Key, 0x48, 8);
+ addKey("Mode_-", Unmapped_Key, 0x49, 8);
+ addKey("Bright_+", BrightnessUp_Key, 0x4A, 8);
+ addKey("Bright_-", BrightnessDown_Key, 0x4B, 8);
+
+ addKey("shift_Menu", Unmapped_Key, 0x5B, 8);
+ addKey("shift_|>", Unmapped_Key, 0x5D, 8);
+ addKey("menu", Menu_Key, 0x5E, 8);
+ addKey("|>", Unmapped_Key, 0x5F, 8);
+
+ addKey("shift_Mode", Unmapped_Key, 0xC3, 8);
+}
+
+
+NECVCR1::NECVCR1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "VCR Keyset 1",
+ NEC_Make,
+ index)
+{
+}
+
+
+void NECVCR1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+ setPreData(0x19, 8);
+
+ addKey("CHANNEL_UP", ChannelUp_Key, 0x00, 8);
+ addKey("CHANNEL_UP", Up_Key, 0x00, 8);
+ addKey("CHANNEL_DOWN", ChannelDown_Key, 0x01, 8);
+ addKey("CHANNEL_DOWN", Down_Key, 0x01, 8);
+ addKey("StillAdv", StepForward_Key, 0x03, 8);
+ addKey("SLOW", Slow_Key, 0x03, 8);
+ addKey("STOP", Stop_Key, 0x04, 8);
+ addKey("PLAY", Play_Key, 0x05, 8);
+ addKey("Rec", Record_Key, 0x06, 8);
+ addKey("OPERATE", Power_Key, 0x08, 8);
+ addKey("RESET", Reset_Key, 0x09, 8);
+ addKey("TV/VCR", Input_Key, 0x0A, 8);
+ addKey("COUNT._MEM.", Unmapped_Key, 0x0B, 8);
+ addKey("FFWD", FastForward_Key, 0x0C, 8);
+ addKey("REWIND", Rewind_Key, 0x0D, 8);
+ addKey("PAUSE", Pause_Key, 0x0E, 8);
+ addKey("Eject", Eject_Key, 0x0F, 8);
+
+ addKey("1", One_Key, 0x10, 8);
+ addKey("2", Two_Key, 0x11, 8);
+ addKey("3", Three_Key, 0x12, 8);
+ addKey("4", Four_Key, 0x13, 8);
+ addKey("5", Five_Key, 0x14, 8);
+ addKey("6", Six_Key, 0x15, 8);
+ addKey("7", Seven_Key, 0x16, 8);
+ addKey("8", Eight_Key, 0x17, 8);
+ addKey("9", Nine_Key, 0x18, 8);
+ addKey("0", Zero_Key, 0x1A, 8);
+ addKey("+_SET/+_SHIFT", Right_Key, 0x1E, 8);
+
+ addKey("TIMER_MODE", Unmapped_Key, 0x82, 8);
+ addKey("TIMER_REC", RecordTimed_Key, 0x83, 8);
+ addKey("ON_SCREEN", Menu_Key, 0x84, 8);
+ addKey("-_SET/-_SHIFT", Left_Key, 0x88, 8);
+ addKey("TIMER/COUNTER", Unmapped_Key, 0x8A, 8);
+
+ addKey("DIGITAL_MEM.", Unmapped_Key, 0x90, 8);
+ addKey("VPS", Unmapped_Key, 0x9A, 8);
+ addKey("STROBE", Unmapped_Key, 0x9A, 8);
+ addKey("DIGITAL_NR", NoiseReduction_Key, 0x9C, 8);
+}
+
+
+NECVCR2::NECVCR2(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "VCR Keyset 2",
+ NEC_Make,
+ index)
+{
+}
+
+
+void NECVCR2::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+ setPreData(0x6E, 8);
+
+ addKey("PLAY", Play_Key, 0x08, 8);
+ addKey("STOP", Stop_Key, 0x01, 8);
+ addKey("||_P/STILL", Pause_Key, 0x0B, 8);
+ addKey(">>_FF", FastForward_Key, 0x03, 8);
+ addKey("<<_REW", Rewind_Key, 0x02, 8);
+ addKey("O_REC/QSR", Record_Key, 0x09, 8);
+ addKey("OPERATE", Power_Key, 0x14, 8);
+ addKey("0_PGM_RK", Zero_Key, 0x04, 8);
+ addKey("1_CHARACTER", One_Key, 0x05, 8);
+ addKey("2_CHARACTER", Two_Key, 0x06, 8);
+ addKey("3_CHARACTER", Three_Key, 0x07, 8);
+ addKey("4_CURSOR", Four_Key, 0x0C, 8);
+ addKey("5_CURSOR", Five_Key, 0x0D, 8);
+ addKey("6_CURSOR", Six_Key, 0x0E, 8);
+ addKey("7_SIZE", Seven_Key, 0x0F, 8);
+ addKey("8_SIZE", Eight_Key, 0x1C, 8);
+ addKey("9_SIZE", Nine_Key, 0x1D, 8);
+ addKey("+_PGM_RK", Unmapped_Key, 0x18, 8);
+ addKey("-_PGM_RK", Unmapped_Key, 0x19, 8);
+ addKey("EJECT", Eject_Key, 0x00, 8);
+ addKey("CHILD_LOCK", Unmapped_Key, 0x3F, 8);
+ addKey("DISPLAY", Info_Key, 0x1E, 8);
+ addKey("CLEAR", Clear_Key, 0x1F, 8);
+ addKey("MENU", Menu_Key, 0x16, 8);
+ addKey("A.TRK", AutoTracking_Key, 0x5F, 8);
+ addKey("TU/SC/AV", Unmapped_Key, 0x56, 8);
+ addKey("RESET", Reset_Key, 0x4D, 8);
+ addKey("CL/CT_EM", Unmapped_Key, 0x4C, 8);
+ addKey("+_MFT/SLOW", Unmapped_Key, 0x1A, 8);
+ addKey("-_MFT/SLOW", Unmapped_Key, 0x1B, 8);
+ addKey("||>_F/ADV", StepForward_Key, 0x10, 8);
+ addKey("SP/LP", VHSSpeed_Key, 0x48, 8);
+ addKey("TV/VCR", Input_Key, 0x15, 8);
+ addKey("A.DUB", Unmapped_Key, 0xC2, 8);
+ addKey("VISS", IndexSearch_Key, 0x41, 8);
+ addKey("MARK", IndexMark_Key, 0x50, 8);
+ addKey("ERASE", IndexErase_Key, 0x42, 8);
+ addKey("G-CODE", Unmapped_Key, 0x47, 8);
+}
+
+
+NECVCR3::NECVCR3(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "VCR Keyset 3",
+ NEC_Make,
+ index)
+{
+}
+
+
+void NECVCR3::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+ setPreData(0x31, 8);
+
+ addKey("CHANNEL_UP", ChannelUp_Key, 0x01, 8);
+ addKey("CHANNEL_DOWN", ChannelDown_Key, 0x02, 8);
+ addKey("Audio", Audio_Key, 0x03, 8);
+ addKey("1", One_Key, 0x04, 8);
+ addKey("2", Two_Key, 0x05, 8);
+ addKey("3", Three_Key, 0x06, 8);
+ addKey("4", Four_Key, 0x07, 8);
+ addKey("VTR_V", Unmapped_Key, 0x08, 8);
+ addKey("5", Five_Key, 0x0C, 8);
+ addKey("6", Six_Key, 0x0D, 8);
+ addKey("7", Seven_Key, 0x0E, 8);
+ addKey("8", Eight_Key, 0x0F, 8);
+
+ addKey("STOP", Stop_Key, 0x10, 8);
+ addKey("PAUSE/STILL", Pause_Key, 0x11, 8);
+ addKey("<<_REW", Rewind_Key, 0x12, 8);
+ addKey("FF_>>", FastForward_Key, 0x13, 8);
+ addKey("PLAY", Play_Key, 0x14, 8);
+ addKey("RECORD", Record_Key, 0x15, 8);
+ addKey("INDEX", IndexSearch_Key, 0x19, 8);
+ addKey("SLOW", Slow_Key, 0x1A, 8);
+ addKey("9", Nine_Key, 0x1C, 8);
+ addKey("0/AV", Zero_Key, 0x1D, 8);
+ addKey("0/AV", Input_Key, 0x1D, 8);
+ addKey("SC", Unmapped_Key, 0x1E, 8);
+ addKey("ATR", AutoTracking_Key, 0x1F, 8);
+
+ addKey("MEMORY", Unmapped_Key, 0x43, 8);
+ addKey("RESET", Reset_Key, 0x44, 8);
+ addKey("REMAIN", Unmapped_Key, 0x45, 8);
+ addKey("CHECK", Unmapped_Key, 0x46, 8);
+ addKey("PLUS", Right_Key, 0x47, 8);
+ addKey("MINUS", Left_Key, 0x48, 8);
+ addKey("CL", Unmapped_Key, 0x4A, 8);
+ addKey("OK", Select_Key, 0x4B, 8);
+
+ addKey("KEY", Unmapped_Key, 0x50, 8); // "LOCK"
+ addKey("TV_MONITOR", Unmapped_Key, 0x51, 8);
+ addKey("MARK", IndexMark_Key, 0x54, 8);
+ addKey("ERASE", IndexErase_Key, 0x55, 8);
+ addKey("OPERATE", Power_Key, 0x5B, 8);
+ addKey("SP/LP", VHSSpeed_Key, 0x5E, 8);
+}
+
+
+NECDVD1::NECDVD1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "DVD Keyset 1",
+ NEC_Make,
+ index)
+{
+}
+
+
+void NECDVD1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECXProtocol(guiObject, index, true);
+
+ setPreData(0x2D2D, 16);
+
+ addKey("Power", Power_Key, 0x30, 8);
+ addKey("Eject", Eject_Key, 0x36, 8);
+ addKey("Menu", Menu_Key, 0x4B, 8);
+ addKey("Title", DiscTitle_Key, 0x45, 8);
+ addKey("Setup", Menu_Key, 0x56, 8);
+ addKey("Return", Exit_Key, 0x45, 8);
+ addKey("Left", Left_Key, 0x59, 8);
+ addKey("Up", Up_Key, 0x47, 8);
+ addKey("Right", Right_Key, 0x5A, 8);
+ addKey("Down", Down_Key, 0x48, 8);
+ addKey("Select", Select_Key, 0x58, 8);
+ addKey("Display", Info_Key, 0x3A, 8);
+ addKey("Zoom", Zoom_Key, 0x64, 8);
+ addKey("Freeze_Back", StepBack_Key, 0x60, 8);
+ addKey("Freeze", StepForward_Key, 0x37, 8);
+ addKey("Pause", Pause_Key, 0x38, 8);
+ addKey("Rewind", Rewind_Key, 0x35, 8);
+ addKey("Play", Play_Key, 0x31, 8);
+ addKey("Fast_Forward", FastForward_Key, 0x34, 8);
+ addKey("Stop", Stop_Key, 0x39, 8);
+ addKey("1", One_Key, 0x3B, 8);
+ addKey("2", Two_Key, 0x3C, 8);
+ addKey("3", Three_Key, 0x3D, 8);
+ addKey("4", Four_Key, 0x3E, 8);
+ addKey("5", Five_Key, 0x3F, 8);
+ addKey("6", Six_Key, 0x40, 8);
+ addKey("7", Seven_Key, 0x41, 8);
+ addKey("8", Eight_Key, 0x42, 8);
+ addKey("9", Nine_Key, 0x43, 8);
+ addKey("0", Zero_Key, 0x44, 8);
+ addKey("Program", Program_Key, 0x57, 8);
+ addKey("Clear", Clear_Key, 0x46, 8);
+ addKey("Audio", Audio_Key, 0x4F, 8);
+ addKey("Subtitle", Captions_Key, 0x50, 8);
+ addKey("Angle", Angle_Key, 0x4C, 8);
+ addKey("Random", Random_Key, 0x51, 8);
+ addKey("Marker", IndexMark_Key, 0x61, 8);
+ addKey("Search", IndexSearch_Key, 0x62, 8);
+ addKey("Repeat", Repeat_Key, 0x53, 8);
+ addKey("A-B", RepeatAB_Key, 0x55, 8);
+}
+
+
+NECProjector1::NECProjector1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "Projector Keyset 1",
+ NEC_Make,
+ index)
+{
+}
+
+
+void NECProjector1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+ setPreData(0x18, 8);
+
+ addKey("R", Unmapped_Key, 0x00, 8);
+ addKey("G", Unmapped_Key, 0x01, 8);
+ addKey("B", Unmapped_Key, 0x02, 8);
+ addKey("OPERATE", Power_Key, 0x06, 8);
+ addKey("DISPLAY", Unmapped_Key, 0x07, 8);
+ addKey("POWER_ON", PowerOn_Key, 0x08, 8);
+ addKey("POWER_ON", Power_Key, 0x08, 8);
+ addKey("END", Unmapped_Key, 0x09, 8);
+ addKey("POINT", Unmapped_Key, 0x0A, 8);
+ addKey("TEST", Unmapped_Key, 0x0B, 8);
+ addKey("KELVIN", Unmapped_Key, 0x0D, 8);
+ addKey("COARSE/FINE", Unmapped_Key, 0x0F, 8);
+
+ addKey("STORE", Unmapped_Key, 0x12, 8);
+ addKey("HELP", Unmapped_Key, 0x13, 8);
+ addKey("POWER_OFF", PowerOff_Key, 0x14, 8);
+ addKey("STATIC", Unmapped_Key, 0x15, 8);
+ addKey("ENTER", Select_Key, 0x17, 8);
+ addKey("1", One_Key, 0x18, 8);
+ addKey("2", Two_Key, 0x19, 8);
+ addKey("3", Three_Key, 0x1A, 8);
+ addKey("4", Four_Key, 0x1B, 8);
+ addKey("5", Five_Key, 0x1C, 8);
+ addKey("6", Six_Key, 0x1D, 8);
+ addKey("7", Seven_Key, 0x1E, 8);
+ addKey("8", Eight_Key, 0x1F, 8);
+
+ addKey("9", Nine_Key, 0x40, 8);
+ addKey("10", Zero_Key, 0x41, 8);
+ addKey("ADJUST", Unmapped_Key, 0x42, 8);
+ addKey("NORMAL", Unmapped_Key, 0x43, 8);
+ addKey("SOUND_FUNC", SoundMode_Key, 0x44, 8);
+ addKey("SOUND_MUTE", Mute_Key, 0x45, 8);
+ addKey("PIC_FUNC", PictureMode_Key, 0x46, 8);
+ addKey("PIC_MUTE", PictureMute_Key, 0x47, 8);
+ addKey("POSITION", Unmapped_Key, 0x4B, 8);
+ addKey("INPUT_LIST", Unmapped_Key, 0x4D, 8);
+ addKey("FOCUS", Focus_Key, 0x4E, 8);
+ addKey("INFO", Info_Key, 0x4F, 8);
+
+ addKey("TILT", Unmapped_Key, 0x50, 8);
+ addKey("BOW", Unmapped_Key, 0x52, 8);
+ addKey("AMPLIT", Unmapped_Key, 0x54, 8);
+ addKey("LINEAR", Unmapped_Key, 0x56, 8);
+ addKey("KEYSTN", Keystone_Key, 0x58, 8);
+ addKey("PINCUS", Unmapped_Key, 0x5A, 8);
+ addKey("NORMAL", Unmapped_Key, 0x5B, 8);
+ addKey("UP", Up_Key, 0x5C, 8);
+ addKey("DOWN", Down_Key, 0x5D, 8);
+ addKey("RIGHT", Right_Key, 0x5E, 8);
+ addKey("LEFT", Left_Key, 0x5F, 8);
+}
+
+
+NECProjector2::NECProjector2(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "Projector Keyset 2",
+ NEC_Make,
+ index)
+{
+}
+
+
+void NECProjector2::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+ setPreData(0xE918, 16);
+
+ addKey("VIDEO", CompositeInput_Key, 0x03, 8);
+ addKey("RGB", ComponentInput_Key, 0x04, 8); // "computer_1"
+ addKey("RGB_2", Component2Input_Key, 0x05, 8); // "computer_2"
+ addKey("auto_adj", Unmapped_Key, 0x06, 8);
+ addKey("SELECT_PICTURE", Unmapped_Key, 0x07, 8);
+ addKey("POWER_ON", PowerOn_Key, 0x08, 8);
+ addKey("ZOOM+", Unmapped_Key, 0x09, 8);
+ addKey("ZOOM-", Unmapped_Key, 0x0A, 8);
+ addKey("FOCUS+", Unmapped_Key, 0x0B, 8);
+ addKey("FOCUS-", Unmapped_Key, 0x0C, 8);
+ addKey("picture", PictureMode_Key, 0x0D, 8);
+
+ addKey("aspect", AspectRatio_Key, 0x10, 8);
+ addKey("MUTE_OFF", Unmapped_Key, 0x11, 8);
+ addKey("POWER_OFF", PowerOff_Key, 0x14, 8);
+ addKey("Lamp_Mode", Unmapped_Key, 0x16, 8);
+ addKey("enter", Select_Key, 0x17, 8);
+
+ addKey("exit", Exit_Key, 0x25, 8);
+ addKey("page_up", PageUp_Key, 0x2A, 8);
+ addKey("page_down", PageDown_Key, 0x2B, 8);
+ addKey("l_click", Unmapped_Key, 0x2C, 8);
+ addKey("r_click", Unmapped_Key, 0x2D, 8);
+
+ addKey("MENU", Menu_Key, 0x46, 8);
+ addKey("PIC-MUTE", PictureMute_Key, 0x47, 8);
+ addKey("VOLUME+", VolumeUp_Key, 0x48, 8);
+ addKey("VOLUME-", VolumeDown_Key, 0x49, 8);
+ addKey("FREEZE", Pause_Key, 0x4C, 8);
+ addKey("help", Unmapped_Key, 0x4E, 8);
+
+ addKey("DISPLAY_+", Unmapped_Key, 0x5C, 8);
+ addKey("DISPLAY_-", Unmapped_Key, 0x5D, 8);
+
+ addKey("2X/4X", Unmapped_Key, 0x87, 8);
+ addKey("MAGNIFY_REDUCE+", Unmapped_Key, 0x89, 8);
+ addKey("MAGNIFY_REDUCE-", Unmapped_Key, 0x8A, 8);
+// addKey("FREEZE", Pause_Key, 0x91, 8);
+
+ addKey("up", Up_Key, 0xB8, 8);
+ addKey("down", Down_Key, 0xBC, 8);
+ addKey("left", Left_Key, 0xBE, 8);
+ addKey("right", Right_Key, 0xBA, 8);
+
+ addKey("S-VIDEO", SVideoInput_Key, 0xC6, 8);
+}
--- /dev/null
+#ifndef NEC_H
+#define NEC_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class NECTV1: public PIRKeysetMetaData
+{
+public:
+ NECTV1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+class NECVCR1: public PIRKeysetMetaData
+{
+public:
+ NECVCR1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+class NECVCR2: public PIRKeysetMetaData
+{
+public:
+ NECVCR2(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+class NECVCR3: public PIRKeysetMetaData
+{
+public:
+ NECVCR3(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+class NECDVD1: public PIRKeysetMetaData
+{
+public:
+ NECDVD1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+class NECProjector1: public PIRKeysetMetaData
+{
+public:
+ NECProjector1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+class NECProjector2: public PIRKeysetMetaData
+{
+public:
+ NECProjector2(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
+#endif // NEC_H
addPioneerKey("DOWN", Down_Key, 0xA3, 0x99, 0xAF, 0xF3);
addPioneerKey("RETURN", Exit_Key, 0xA3, 0x99, 0xAF, 0xF4);
}
+
+
+PioneerCarStereo1::PioneerCarStereo1(
+ unsigned int index)
+ : PIRKeysetMetaData(
+ "Car Stereo Keyset 1",
+ Pioneer_Make,
+ index)
+{
+}
+
+
+void PioneerCarStereo1::populateProtocol(
+ QObject *guiObject)
+{
+ if (threadableProtocol)
+ {
+ // Keyset already populated.
+ return;
+ }
+
+ threadableProtocol = new PioneerProtocol(guiObject, index);
+
+ addNECKey("VOL+", VolumeUp_Key, 0xAD, 0x0A);
+ addNECKey("VOL-", VolumeDown_Key, 0xAD, 0x0B);
+ addNECKey("ATT", Mute_Key, 0xAD, 0x0C);
+ addNECKey("Audio", SoundMode_Key, 0xAD, 0x0D);
+ addNECKey("Band/Escape", FM_Key, 0xAD, 0x12);
+ addNECKey("Band/Escape", Exit_Key, 0xAD, 0x12);
+ addNECKey("Source", Input_Key, 0xAD, 0x1A);
+ addNECKey("Radio", TunerInput_Key, 0xAD, 0x1C);
+ addNECKey("CD/iPod", CDInput_Key, 0xAD, 0x1E);
+ addNECKey("Arrow Up", Up_Key, 0xAD, 0x40);
+ addNECKey("Arrow Down", Down_Key, 0xAD, 0x41);
+ addNECKey("Arrow Left", Left_Key, 0xAD, 0x42);
+ addNECKey("Arrow Right", Right_Key, 0xAD, 0x43);
+ addNECKey("Pause", Pause_Key, 0xAD, 0x58);
+
+ addPioneerKey("Entertainment", Unmapped_Key, 0xAD, 0x19, 0xAF, 0x2B);
+ addPioneerKey("List/Enter", Menu_Key, 0xAD, 0x19, 0xAF, 0x2C);
+ addPioneerKey("List/Enter", Select_Key, 0xAD, 0x19, 0xAF, 0x2C);
+ addPioneerKey("Function", Unmapped_Key, 0xAD, 0x19, 0xAF, 0x67);
+ addPioneerKey("PGM", Unmapped_Key, 0xAD, 0x19, 0xAF, 0x68);
+ addPioneerKey("Disp (Scroll)", Info_Key, 0xAD, 0x19, 0xAF, 0x6D);
+ addPioneerKey("Clear", Clear_Key, 0xAD, 0x19, 0xAF, 0xE0);
+ addPioneerKey("Direct", Unmapped_Key, 0xAD, 0x19, 0xAF, 0xE1);
+ addPioneerKey("0", Zero_Key, 0xAD, 0x19, 0xAF, 0xF0);
+ addPioneerKey("1", One_Key, 0xAD, 0x19, 0xAF, 0xF1);
+ addPioneerKey("2", Two_Key, 0xAD, 0x19, 0xAF, 0xF2);
+ addPioneerKey("3", Three_Key, 0xAD, 0x19, 0xAF, 0xF3);
+ addPioneerKey("4", Four_Key, 0xAD, 0x19, 0xAF, 0xF4);
+ addPioneerKey("5", Five_Key, 0xAD, 0x19, 0xAF, 0xF5);
+ addPioneerKey("6", Six_Key, 0xAD, 0x19, 0xAF, 0xF6);
+ addPioneerKey("7", Seven_Key, 0xAD, 0x19, 0xAF, 0xF7);
+ addPioneerKey("8", Eight_Key, 0xAD, 0x19, 0xAF, 0xF8);
+ addPioneerKey("9", Nine_Key, 0xAD, 0x19, 0xAF, 0xF9);
+}
QObject *guiObject);
};
+class PioneerCarStereo1: public PIRKeysetMetaData
+{
+public:
+ PioneerCarStereo1(
+ unsigned int index);
+
+ virtual void populateProtocol(
+ QObject *guiObject);
+};
+
#endif // PIONEER_H
addKey("Sleep", Sleep_Key, 0x0D, 8);
addKey("Volume Up", VolumeUp_Key, 0x0E, 8);
addKey("Volume Down", VolumeDown_Key, 0x0F, 8);
- addKey("Closed Captions", Captions_Key, 0x11, 8);
+// addKey("Closed Captions", Captions_Key, 0x11, 8);
addKey("Power", Power_Key, 0x12, 8);
addKey("video_mode", Input_Key, 0x13, 8); // "input"
addKey("Surround Toggle", Surround_Key, 0x14, 8);
addKey("Enter", Enter_Key, 0x15, 8); // odd
+ addKey("DASH", Dash_Key, 0x15, 8);
addKey("Menu", Menu_Key, 0x17, 8); // "setup"
addKey("Mute", Mute_Key, 0x18, 8);
addKey("Recall", PrevChannel_Key, 0x19, 8);
addKey("audio", Audio_Key, 0x1A, 8);
+ addKey("CC", Captions_Key, 0x1B, 8); // ?
addKey("reset", Reset_Key, 0x1C, 8);
addKey("right arrow", Right_Key, 0x1E, 8);
addKey("left arrow", Left_Key, 0x1F, 8);
{
keyboardController->executeKey(key);
}
+ else
+ {
+ executeStandardKey(key);
+ }
}
buttonsController = multitapPack;
}
}
+
+
+void PIRMacroManager::executeStandardKey(
+ char key)
+{
+ switch (key)
+ {
+ case 'Q':
+ mainWindow->switchToTab(0);
+ break;
+
+ case 'W':
+ mainWindow->switchToTab(1);
+ break;
+
+ case 'E':
+ mainWindow->switchToTab(2);
+ break;
+
+ case 'R':
+ mainWindow->switchToTab(3);
+ break;
+
+ case 'T':
+ mainWindow->switchToTab(4);
+ break;
+
+ case 'Y':
+ mainWindow->switchToTab(5);
+ break;
+
+ case 'U':
+ mainWindow->switchToTab(6);
+ break;
+
+ case 'I':
+ mainWindow->switchToTab(7);
+ break;
+
+ case 'O':
+ mainWindow->switchToTab(8);
+ break;
+
+ case 'P':
+ mainWindow->switchToTab(9);
+
+ default:
+ break;
+ }
+}
private:
void retrieveSettings();
+ void executeStandardKey(
+ char key);
+
PIRMacroPack *userPack;
PIRReverseMultitap *multitapPack;
+// main.cpp
+//
+// For the Pierogi IR remote control app.
+//
+// Copyright (C) 2012 by John Pietrzak (john@pietrzak.org)
+//
+// Licensed under the GNU GPL version 2.0 or later.
+
#include "mainwindow.h"
#include "pirapplication.h"
#include <QtGui/QApplication>
+// mainwindow.cpp
+//
+// For the Pierogi IR remote control app.
+//
+// Copyright (C) 2012 by John Pietrzak (john@pietrzak.org)
+//
+// Licensed under the GNU GPL version 2.0 or later.
+
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSettings>
#include <QKeyEvent>
+//#include "pirtabwidget.h"
+
#include "pirkeysetmetadata.h"
#include "pirkeysetwidgetitem.h"
myMacros(0),
currentKeyset(1) // Zero is not a valid keyset any more
{
+ // Create the tab widget:
+// myTabWidget = new PIRTabWidget(ui->centralWidget, this);
+
ui->setupUi(this);
// Make this a Maemo 5 stacked widget:
Qt::QueuedConnection);
ui->mainTabWidget->setCornerWidget(button, Qt::TopRightCorner);
+// myTabWidget->setCornerWidget(button, Qt::TopRightCorner);
button =
new QPushButton(QIcon(":/icons/align_just_icon&32.png"), "");
Qt::QueuedConnection);
ui->mainTabWidget->setCornerWidget(button, Qt::TopLeftCorner);
+// myTabWidget->setCornerWidget(button, Qt::TopLeftCorner);
}
void MainWindow::disableUpdates()
{
ui->mainTabWidget->setUpdatesEnabled(false);
+// myTabWidget->setUpdatesEnabled(false);
}
void MainWindow::enableUpdates()
{
ui->mainTabWidget->setUpdatesEnabled(true);
+// myTabWidget->setUpdatesEnabled(true);
}
void MainWindow::clearTabs()
{
ui->mainTabWidget->clear();
+// myTabWidget->clear();
}
QString label)
{
ui->mainTabWidget->addTab(page, label);
+// myTabWidget->addTab(page, label);
}
void MainWindow::setupTabs(
}
+void MainWindow::handleKeypress(
+ char key)
+{
+ myMacros->handleKeypress(key);
+}
+
+
+/*
+void MainWindow::handleKeyRelease(
+ char key)
+{
+}
+*/
+
+
+void MainWindow::gotoPreviousTabs()
+{
+ myPanels->gotoPreviousTabs();
+}
+
+
+void MainWindow::gotoNextTabs()
+{
+ myPanels->gotoNextTabs();
+}
+
+
+/*
void MainWindow::keyPressEvent(
QKeyEvent *event)
{
case Qt::Key_Space:
myMacros->handleKeypress(' ');
break;
+
+ case Qt::Key_Up:
+ myPanels->gotoPreviousTabs();
+ break;
+ case Qt::Key_Down:
+ myPanels->gotoNextTabs();
+ break;
+
+
+ case Qt::Key_Left:
+ startRepeating(VolumeDown_Key);
+ break;
+ case Qt::Key_Right:
+ startRepeating(VolumeUp_Key);
+ break;
+
+ case Qt::Key_Backspace:
+ startRepeating(Power_Key);
+ break;
+ case Qt::Key_Return:
+ startRepeating(Mute_Key);
+ break;
+
default:
QMainWindow::keyPressEvent(event);
break;
}
}
+*/
+
+
+/*
+void MainWindow::keyReleaseEvent(
+ QKeyEvent *event)
+{
+ switch(event->key())
+ {
+
+ case Qt::Key_Up:
+ case Qt::Key_Down:
+ case Qt::Key_Left:
+ case Qt::Key_Right:
+
+ case Qt::Key_Backspace:
+ case Qt::Key_Return:
+ stopRepeating();
+ break;
+
+ default:
+ QMainWindow::keyReleaseEvent(event);
+ break;
+ }
+}
+*/
bool MainWindow::hasMacroButton(
{
myMacros->setBtnFocus(index);
}
+
+
+void MainWindow::switchToTab(
+ int tabNumber)
+{
+ int count = ui->mainTabWidget->count();
+
+ if (tabNumber < 0)
+ {
+ ui->mainTabWidget->setCurrentIndex(0);
+ }
+ else if (tabNumber >= count)
+ {
+ ui->mainTabWidget->setCurrentIndex(count-1);
+ }
+ else
+ {
+ ui->mainTabWidget->setCurrentIndex(tabNumber);
+ }
+}
class QDialog;
class QKeyEvent;
+//class PIRTabWidget;
+
class PIRSelectKeysetForm;
class PIRSelectDeviceForm;
class PIRPreferencesForm;
void setMacroBtnFocus(
int index);
+ void switchToTab(
+ int tabNumber);
+
+ void handleKeypress(
+ char key);
+
+// void handleKeyRelease(
+// char Key);
+
+ void gotoPreviousTabs();
+
+ void gotoNextTabs();
+
signals:
void buttonPressed(
unsigned int keysetID,
void finalCleanup();
private:
- void keyPressEvent(
- QKeyEvent *event);
+// void keyPressEvent(
+// QKeyEvent *event);
+
+// void keyReleaseEvent(
+// QKeyEvent *event);
void populateFavorites();
Ui::MainWindow *ui;
+// PIRTabWidget *myTabWidget;
+
PIRSelectKeysetForm *selectKeysetForm;
PIRSelectDeviceForm *selectDeviceForm;
PIRPreferencesForm *preferencesForm;
keysets/wiwa.cpp \
keysets/changhong.cpp \
keysets/frontech.cpp \
- keysets/sinotec.cpp
+ keysets/sinotec.cpp \
+ pirtabwidget.cpp \
+ keysets/medialink.cpp \
+ keysets/nec.cpp \
+ keysets/multichoice.cpp \
+ forms/piradvancedform.cpp
HEADERS += mainwindow.h \
pirkeynames.h \
pirmakenames.h \
keysets/wiwa.h \
keysets/changhong.h \
keysets/frontech.h \
- keysets/sinotec.h
+ keysets/sinotec.h \
+ pirtabwidget.h \
+ keysets/medialink.h \
+ keysets/nec.h \
+ keysets/multichoice.h \
+ forms/piradvancedform.h
FORMS += mainwindow.ui \
pirdocumentationform.ui \
piraboutform.ui \
dialogs/pireditmacrodialog.ui \
dialogs/pirdeletemacrodialog.ui \
forms/piruserform.ui \
- dialogs/pireditcommanddialog.ui
+ dialogs/pireditcommanddialog.ui \
+ forms/piradvancedform.ui
# Please do not modify the following two lines. Required for deployment.
include(deployment.pri)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
-<!-- Written by Qt Creator 2.4.1, 2012-09-19T16:26:53. -->
+<!-- Written by Qt Creator 2.4.1, 2012-10-24T19:50:42. -->
<qtcreator>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="QString" key="ProjectExplorer.ProcessStep.Arguments">dpkg-buildpackage -sa -S -uc -us</value>
<value type="QString" key="ProjectExplorer.ProcessStep.Command">/Users/john/QtSDK/Maemo/4.6.2/bin/mad</value>
<value type="bool" key="ProjectExplorer.ProcessStep.Enabled">false</value>
- <value type="QString" key="ProjectExplorer.ProcessStep.WorkingDirectory">/Users/john/Develop/n900/pierogi-1.1.13</value>
+ <value type="QString" key="ProjectExplorer.ProcessStep.WorkingDirectory">/Users/john/Develop/n900/pierogi-1.1.14</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Process Step</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.ProcessStep</value>
<value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_6_0_armel.deb</value>
<value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_0_1_armel.deb</value>
<value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_6_2_armel.deb</value>
+ <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_1_1_14_armel.deb</value>
<value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_1_1_12_armel.deb</value>
<value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_1_1_8_armel.deb</value>
<value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_0_1_armel.deb</value>
<value type="QString">192.168.0.15</value>
<value type="QString">192.168.0.15</value>
<value type="QString">192.168.0.15</value>
+ <value type="QString">192.168.0.15</value>
<value type="QString">localhost</value>
<value type="QString">192.168.0.15</value>
<value type="QString">192.168.0.15</value>
<value type="QString"></value>
<value type="QString"></value>
<value type="QString"></value>
+ <value type="QString"></value>
</valuelist>
<valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedTimes">
<value type="QDateTime">2012-01-19T22:18:07</value>
<value type="QDateTime">2012-02-11T18:03:15</value>
<value type="QDateTime">2012-01-14T13:11:32</value>
<value type="QDateTime">2012-02-13T22:02:56</value>
+ <value type="QDateTime">2012-10-24T19:31:32</value>
<value type="QDateTime">2012-09-16T17:12:09</value>
<value type="QDateTime">2012-09-07T17:19:10</value>
<value type="QDateTime">2012-01-01T15:35:35</value>
keynameStrings[ContrastDown_Key] = "Contrast Down";
keynameStrings[BalanceRight_Key] = "Balance Right";
keynameStrings[BalanceLeft_Key] = "Balance Left";
+ keynameStrings[Keystone_Key] = "Keystone";
+ keynameStrings[PictureMute_Key] = "Picture Mute";
+ keynameStrings[Focus_Key] = "Focus";
keynameStrings[Input_Key] = "Input";
keynameStrings[CDInput_Key] = "CD Input";
keynameStrings[PhonoInput_Key] = "Phono Input";
ContrastDown_Key,
BalanceRight_Key,
BalanceLeft_Key,
+ Keystone_Key,
+ PictureMute_Key,
+ Focus_Key,
// Input Controls:
Input_Key,
#include "keysets/magnavox.h"
#include "keysets/magnum.h"
#include "keysets/mce.h"
+#include "keysets/medialink.h"
#include "keysets/medion.h"
#include "keysets/mitsubishi.h"
#include "keysets/motorola.h"
+#include "keysets/multichoice.h"
#include "keysets/nad.h"
+#include "keysets/nec.h"
#include "keysets/nikon.h"
#include "keysets/nokia.h"
#include "keysets/octagon.h"
setupKeyset(new ADBSTB3(++counter));
setupKeyset(new ADBSTB4(++counter));
setupKeyset(new ADBSTB5(++counter));
+ setupKeyset(new ADBSTB6(++counter));
setupKeyset(new AdmiralTV1(++counter));
setupKeyset(new AdmiralTV2(++counter));
setupKeyset(new LGTV2(++counter));
setupKeyset(new LGTV2a(++counter));
setupKeyset(new LGTV2b(++counter));
+ setupKeyset(new LGHT1(++counter));
+ setupKeyset(new LGHT2(++counter));
+ setupKeyset(new LGHT2a(++counter));
setupKeyset(new LGDisc1(++counter));
setupKeyset(new LGDisc2(++counter));
setupKeyset(new LGDisc2a(++counter));
setupKeyset(new MCERemote1f(++counter));
setupKeyset(new MCERemote1g(++counter));
+ setupKeyset(new MedialinkSTB1(++counter));
+
setupKeyset(new MedionSTB1(++counter));
setupKeyset(new MedionDVD1(++counter));
setupKeyset(new MedionDVD2(++counter));
setupKeyset(new MitsubishiTV1a(++counter));
setupKeyset(new MitsubishiVCR1(++counter));
setupKeyset(new MitsubishiVCR1a(++counter));
+ setupKeyset(new MitsubishiProjector1(++counter));
setupKeyset(new Motorola4DTV(++counter));
setupKeyset(new MotorolaSTB1(++counter));
setupKeyset(new MotorolaSTB1b(++counter));
setupKeyset(new MotorolaSkyDigital(++counter));
+ setupKeyset(new MultichoiceSTB1(++counter));
+ setupKeyset(new MultichoiceSTB2(++counter));
+
setupKeyset(new NADAudio1(++counter));
setupKeyset(new NADTuner1(++counter));
setupKeyset(new NADDVD1(++counter));
setupKeyset(new NADCD2(++counter));
setupKeyset(new NADTape1(++counter));
+ setupKeyset(new NECTV1(++counter));
+ setupKeyset(new NECVCR1(++counter));
+ setupKeyset(new NECVCR2(++counter));
+ setupKeyset(new NECVCR3(++counter));
+ setupKeyset(new NECDVD1(++counter));
+ setupKeyset(new NECProjector1(++counter));
+ setupKeyset(new NECProjector2(++counter));
+
setupKeyset(new NikonDSLR1(++counter));
setupKeyset(new NokiaGenericVCR(++counter));
setupKeyset(new PioneerCD1(++counter));
setupKeyset(new PioneerLaserDisc1(++counter));
setupKeyset(new PioneerDVD1(++counter));
+ setupKeyset(new PioneerCarStereo1(++counter));
setupKeyset(new ProviewDVD1(++counter));
}
+unsigned int PIRKeysetManager::getCarrierFrequency(
+ unsigned int keysetID)
+{
+ PIRKeysetCollection::iterator i = keysetsInfo.find(keysetID);
+
+ if (i == keysetsInfo.end())
+ {
+ return 0;
+ }
+
+ return i->second->getCarrierFrequency();
+}
+
+
+void PIRKeysetManager::setCarrierFrequency(
+ unsigned int carrierFrequency,
+ unsigned int keysetID)
+{
+ PIRKeysetCollection::iterator i = keysetsInfo.find(keysetID);
+
+ if (i == keysetsInfo.end())
+ {
+ return;
+ }
+
+ i->second->setCarrierFrequency(carrierFrequency);
+}
+
+
+unsigned int PIRKeysetManager::getDutyCycle(
+ unsigned int keysetID)
+{
+ PIRKeysetCollection::iterator i = keysetsInfo.find(keysetID);
+
+ if (i == keysetsInfo.end())
+ {
+ return 0;
+ }
+
+ return i->second->getDutyCycle();
+}
+
+
+void PIRKeysetManager::setDutyCycle(
+ unsigned int dutyCycle,
+ unsigned int keysetID)
+{
+ PIRKeysetCollection::iterator i = keysetsInfo.find(keysetID);
+
+ if (i == keysetsInfo.end())
+ {
+ return;
+ }
+
+ i->second->setDutyCycle(dutyCycle);
+}
+
+
bool PIRKeysetManager::clearKeyset(
unsigned int keysetID)
{
PIRFavoritesDialog *favoritesDialog,
PIRSelectKeysetForm *keysetForm);
+ unsigned int getCarrierFrequency(
+ unsigned int keysetID);
+
+ void setCarrierFrequency(
+ unsigned int carrierFrequency,
+ unsigned int keysetID);
+
+ unsigned int getDutyCycle(
+ unsigned int keysetID);
+
+ void setDutyCycle(
+ unsigned int dutyCycle,
+ unsigned int keysetID);
+
private:
void setupKeyset(
PIRKeysetMetaData *keyset);
}
+unsigned int PIRKeysetMetaData::getCarrierFrequency() const
+{
+ if (!threadableProtocol)
+ {
+ return 0;
+ }
+
+ return threadableProtocol->getCarrierFrequency();
+}
+
+
+void PIRKeysetMetaData::setCarrierFrequency(
+ unsigned int carrierFrequency)
+{
+ if (!threadableProtocol)
+ {
+ return;
+ }
+
+ threadableProtocol->setCarrierFrequency(carrierFrequency);
+}
+
+
+unsigned int PIRKeysetMetaData::getDutyCycle() const
+{
+ if (!threadableProtocol)
+ {
+ return 0;
+ }
+
+ return threadableProtocol->getDutyCycle();
+}
+
+
+void PIRKeysetMetaData::setDutyCycle(
+ unsigned int dutyCycle)
+{
+ if (!threadableProtocol)
+ {
+ return;
+ }
+
+ threadableProtocol->setDutyCycle(dutyCycle);
+}
+
+
void PIRKeysetMetaData::addControlledDevice(
PIRMakeName make,
const char *model,
const char *getKeysetName() const;
+ unsigned int getCarrierFrequency() const;
+
+ void setCarrierFrequency(
+ unsigned int carrierFrequency);
+
+ unsigned int getDutyCycle() const;
+
+ void setDutyCycle(
+ unsigned int dutyCycle);
+
virtual void populateProtocol(
QObject *guiObject) = 0;
makes[Logitech_Make] = "Logitech";
makes[Magnavox_Make] = "Magnavox";
makes[Magnum_Make] = "Magnum";
+ makes[Medialink_Make] = "Medi@link";
makes[Medion_Make] = "Medion";
makes[Microsoft_Make] = "Microsoft";
makes[Mitsubishi_Make] = "Mitsubishi";
makes[Motorola_Make] = "Motorola";
+ makes[Multichoice_Make] = "Multichoice";
makes[NAD_Make] = "NAD";
+ makes[NEC_Make] = "NEC";
makes[Nikon_Make] = "Nikon";
makes[Nokia_Make] = "Nokia";
makes[Octagon_Make] = "Octagon";
Logitech_Make,
Magnavox_Make,
Magnum_Make,
+ Medialink_Make,
Medion_Make,
Microsoft_Make,
Mitsubishi_Make,
Motorola_Make,
+ Multichoice_Make,
NAD_Make,
+ NEC_Make,
Nikon_Make,
Nokia_Make,
Octagon_Make,
#include "forms/piruserform.h"
#include "forms/pirmacroform.h"
#include "forms/pirpowersearchform.h"
+#include "forms/piradvancedform.h"
#include "mainwindow.h"
userForm(0),
macroForm(0),
powerSearchForm(0),
+ advancedForm(0),
altMainPanelFlag(false),
currentTabsName(Universal_Tabs),
mainWindow(mw)
shortPanelNames[PowerSearch_Panel] = "Keyset Search";
longPanelNames[PowerSearch_Panel] =
"Keyset Search Panel - execute power button in each keyset";
+ shortPanelNames[Advanced_Panel] = "Advanced Settings";
+ longPanelNames[Advanced_Panel] =
+ "Advanced Settings - allows adjustment of protocol settings";
mainForm = new PIRMainForm(mainWindow);
panels[Main_Panel] = mainForm;
powerSearchForm = new PIRPowerSearchForm(mainWindow);
panels[PowerSearch_Panel] = powerSearchForm;
+ advancedForm = new PIRAdvancedForm();
+ panels[Advanced_Panel] = advancedForm;
+
// Set up the panel collections:
PIRPanelNameList pset;
pset.push_back(Keypad_Panel);
pset.push_back(Menu_Panel);
pset.push_back(TV_Panel);
- pset.push_back(Adjust_Panel);
+ pset.push_back(Input_Panel);
tabLists[TV_Tabs] = pset;
// The video media collection:
pset.push_back(Media_Panel);
pset.push_back(Media2_Panel);
pset.push_back(Input_Panel);
+ pset.push_back(Adjust_Panel);
tabLists[VideoMedia_Tabs] = pset;
// Audio panel collection:
pset.clear();
pset.push_back(PowerSearch_Panel);
tabLists[PowerSearch_Tabs] = pset;
+
+ // The Advanced Settings collection:
+ pset.clear();
+ pset.push_back(Advanced_Panel);
+ tabLists[Advanced_Tabs] = pset;
}
void PIRPanelManager::enableButtons(
- const PIRKeysetManager *keyset,
+ PIRKeysetManager *keyset,
unsigned int id)
{
mainForm->enableButtons(keyset, id);
void PIRPanelManager::enableButtons(
- const PIRKeysetManager *keyset,
+ PIRKeysetManager *keyset,
unsigned int currentID,
unsigned int defaultID)
{
void PIRPanelManager::commonEnableButtons(
- const PIRKeysetManager *keyset,
+ PIRKeysetManager *keyset,
unsigned int id)
{
utilityForm->enableButtons(keyset, id);
// Also, set the label in the power search form:
powerSearchForm->setKeysetName(mainWindow->getCurrentFullName());
+
+ // Set up the advanced parameters:
+ advancedForm->setupForm(keyset, id);
}
}
+void PIRPanelManager::gotoPreviousTabs()
+{
+ PIRTabsCollection::const_iterator i = tabLists.find(currentTabsName);
+
+ if (i == tabLists.end())
+ {
+ // Couldn't find currentTabsName! Throw an error here?
+ return;
+ }
+
+ if (i == tabLists.begin())
+ {
+ // Already at first collection, nothing to do:
+ return;
+ }
+
+ --i;
+ currentTabsName = i->first;
+ updateTabSet();
+}
+
+
+void PIRPanelManager::gotoNextTabs()
+{
+ PIRTabsCollection::const_iterator i = tabLists.find(currentTabsName);
+
+ if (i == tabLists.end())
+ {
+ // Couldn't find currentTabsName! Throw an error?
+ return;
+ }
+
+ ++i;
+
+ if (i == tabLists.end())
+ {
+ // We're already at the last collection, nothing to do:
+ return;
+ }
+
+ currentTabsName = i->first;
+ updateTabSet();
+}
+
+
QComboBox *PIRPanelManager::getKeysetComboBox()
{
return macroForm->getKeysetComboBox();
class PIRUserForm;
class PIRMacroForm;
class PIRPowerSearchForm;
+class PIRAdvancedForm;
class PIRKeysetWidgetItem;
class PIRKeysetManager;
void updateTabSet();
void enableButtons(
- const PIRKeysetManager *keyset,
+ PIRKeysetManager *keyset,
unsigned int id);
void enableButtons(
- const PIRKeysetManager *keyset,
+ PIRKeysetManager *keyset,
unsigned int currentID,
unsigned int defaultID);
QComboBox *getKeysetComboBox();
+ void gotoPreviousTabs();
+ void gotoNextTabs();
+
private:
void commonEnableButtons(
- const PIRKeysetManager *keyset,
+ PIRKeysetManager *keyset,
unsigned int id);
PIRMainForm *mainForm;
PIRUserForm *userForm;
PIRMacroForm *macroForm;
PIRPowerSearchForm *powerSearchForm;
+ PIRAdvancedForm *advancedForm;
PIRPanelDisplayNameCollection shortPanelNames;
PIRPanelDisplayNameCollection longPanelNames;
User_Panel,
Macro_Panel,
PowerSearch_Panel,
+ Advanced_Panel,
Last_Panel_Marker // Used when traversing this enumeration.
};
Roomba_Tabs,
Macro_Tabs,
PowerSearch_Tabs,
+ Advanced_Tabs,
Last_Tabs_Marker
};
QComboBox *cb)
{
// Crappy hardcoded list. Need to replace this...
- cb->addItem("User Defined Macros");
+ cb->addItem("Standard Controls");
+ cb->addItem("User Defined Keyboard Macros");
cb->addItem("Reverse Multitap Keboard Macros");
}
// if (!frequency) frequency = DEFAULT_FREQUENCY;
#ifdef DEBUGGING
- std::cout << "Setting frequency to " << frequency << "\n";
+ std::cout << "Setting frequency to " << frequency << std::endl;
#endif // DEBUGGING
if (ioctl(fileDescriptor, _IOW('i', 0x13, __u32), &frequency) == -1)
{
// if (dutyCycle > 100) dutyCycle = DEFAULT_DUTY_CYCLE;
#ifdef DEBUGGING
- std::cout << "Setting duty cycle to " << dutyCycle << "\n";
+ std::cout << "Setting duty cycle to " << dutyCycle << std::endl;
#endif // DEBUGGING
if (ioctl(fileDescriptor, _IOW('i', 0x15, __u32), &dutyCycle) == -1)
{
--- /dev/null
+#include "pirtabwidget.h"
+
+#include <QKeyEvent>
+#include <QSizePolicy>
+
+#include "mainwindow.h"
+
+PIRTabWidget::PIRTabWidget(
+ QWidget *parent,
+ MainWindow *mw)
+ : QTabWidget(parent),
+ mainWindow(mw)
+{
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+}
+
+
+void PIRTabWidget::keyPressEvent(
+ QKeyEvent *event)
+{
+ switch(event->key())
+ {
+ case Qt::Key_A:
+ mainWindow->handleKeypress('A');
+ break;
+ case Qt::Key_B:
+ mainWindow->handleKeypress('B');
+ break;
+ case Qt::Key_C:
+ mainWindow->handleKeypress('C');
+ break;
+ case Qt::Key_D:
+ mainWindow->handleKeypress('D');
+ break;
+ case Qt::Key_E:
+ mainWindow->handleKeypress('E');
+ break;
+ case Qt::Key_F:
+ mainWindow->handleKeypress('F');
+ break;
+ case Qt::Key_G:
+ mainWindow->handleKeypress('G');
+ break;
+ case Qt::Key_H:
+ mainWindow->handleKeypress('H');
+ break;
+ case Qt::Key_I:
+ mainWindow->handleKeypress('I');
+ break;
+ case Qt::Key_J:
+ mainWindow->handleKeypress('J');
+ break;
+ case Qt::Key_K:
+ mainWindow->handleKeypress('K');
+ break;
+ case Qt::Key_L:
+ mainWindow->handleKeypress('L');
+ break;
+ case Qt::Key_M:
+ mainWindow->handleKeypress('M');
+ break;
+ case Qt::Key_N:
+ mainWindow->handleKeypress('N');
+ break;
+ case Qt::Key_O:
+ mainWindow->handleKeypress('O');
+ break;
+ case Qt::Key_P:
+ mainWindow->handleKeypress('P');
+ break;
+ case Qt::Key_Q:
+ mainWindow->handleKeypress('Q');
+ break;
+ case Qt::Key_R:
+ mainWindow->handleKeypress('R');
+ break;
+ case Qt::Key_S:
+ mainWindow->handleKeypress('S');
+ break;
+ case Qt::Key_T:
+ mainWindow->handleKeypress('T');
+ break;
+ case Qt::Key_U:
+ mainWindow->handleKeypress('U');
+ break;
+ case Qt::Key_V:
+ mainWindow->handleKeypress('V');
+ break;
+ case Qt::Key_W:
+ mainWindow->handleKeypress('W');
+ break;
+ case Qt::Key_X:
+ mainWindow->handleKeypress('X');
+ break;
+ case Qt::Key_Y:
+ mainWindow->handleKeypress('Y');
+ break;
+ case Qt::Key_Z:
+ mainWindow->handleKeypress('Z');
+ break;
+ case Qt::Key_Space:
+ mainWindow->handleKeypress(' ');
+ break;
+
+ case Qt::Key_Up:
+ mainWindow->gotoPreviousTabs();
+ break;
+ case Qt::Key_Down:
+ mainWindow->gotoNextTabs();
+ break;
+ case Qt::Key_Left:
+ mainWindow->startRepeating(VolumeDown_Key);
+ break;
+ case Qt::Key_Right:
+ mainWindow->startRepeating(VolumeUp_Key);
+ break;
+ case Qt::Key_Backspace:
+ mainWindow->startRepeating(Power_Key);
+ break;
+ case Qt::Key_Return:
+ mainWindow->startRepeating(Mute_Key);
+ break;
+
+ default:
+ QTabWidget::keyPressEvent(event);
+ break;
+ }
+}
+
+
+void PIRTabWidget::keyReleaseEvent(
+ QKeyEvent *event)
+{
+ switch(event->key())
+ {
+ case Qt::Key_Up:
+ case Qt::Key_Down:
+ break;
+
+ case Qt::Key_Left:
+ case Qt::Key_Right:
+ case Qt::Key_Backspace:
+ case Qt::Key_Return:
+ mainWindow->stopRepeating();
+ break;
+
+ default:
+ QTabWidget::keyReleaseEvent(event);
+ break;
+ }
+}
--- /dev/null
+// In order to take control of the keyboard when using a tabbed widget, I need
+// to subclass QTabWidget and redefine the keyPressEvent() method.
+
+#include <QTabWidget>
+
+class QKeyEvent;
+class MainWindow;
+
+class PIRTabWidget: public QTabWidget
+{
+public:
+ PIRTabWidget(
+ QWidget *parent,
+ MainWindow *mw);
+
+protected:
+ virtual void keyPressEvent(
+ QKeyEvent *event);
+
+ virtual void keyReleaseEvent(
+ QKeyEvent *event);
+
+private:
+ MainWindow *mainWindow;
+};
}
+unsigned int PIRProtocol::getCarrierFrequency() const
+{
+ return carrierFrequency;
+}
+
+
+void PIRProtocol::setCarrierFrequency(
+ unsigned int cf)
+{
+ carrierFrequency = cf;
+}
+
+
+unsigned int PIRProtocol::getDutyCycle() const
+{
+ return dutyCycle;
+}
+
+
+void PIRProtocol::setDutyCycle(
+ unsigned int dc)
+{
+ dutyCycle = dc;
+}
+
+
void PIRProtocol::addKey(
PIRKeyName key,
unsigned long command,
}
-void PIRProtocol::setCarrierFrequency(
- unsigned int freq)
-{
- carrierFrequency = freq;
-}
-
-
-void PIRProtocol::setDutyCycle(
- unsigned int dc)
-{
- dutyCycle = dc;
-}
-
-
void PIRProtocol::setMinimumRepetitions(
unsigned int minrep)
{
unsigned int gSpace,
bool iclflag);
+ unsigned int getCarrierFrequency() const;
+
+ void setCarrierFrequency(
+ unsigned int cf);
+
+ unsigned int getDutyCycle() const;
+
+ void setDutyCycle(
+ unsigned int dc);
+
void addKey(
PIRKeyName key,
unsigned long data,
unsigned int firstCommand,
unsigned int secondCommand);
- void setCarrierFrequency(
- unsigned int freq);
-
- void setDutyCycle(
- unsigned int dc);
-
void setMinimumRepetitions(
unsigned int minrep);
+pierogi (1.1.15) unstable; urgency=low
+ * Added a new "Advanced Settings" panel, allowing control over carrier frequency and duty cycle values.
+ * Added a few more buttons to "input" panel, and put the "input" panel back on into the TV collection. The "adjust" panel was moved down into the Video Media collection. (I'm still trying to tweak these collections...)
+ * Made a first pass at keysets for Medi@link, Multichoice, and NEC, and added new keysets to ADB, LG, Mitsubishi, and Pioneer.
+
+ -- John Pietrzak <jpietrzak8@gmail.com> Wed, 24 Oct 2012 19:39:30 -0400
+
pierogi (1.1.14) unstable; urgency=low
* Fixed a bug that allowed keysets to be deleted while a command was still running (causing all sorts of havoc). This might improve macro behavior.
- * Made a first pass at keysets for Changhong, Frontech, Sinotec, and Supra, added a new Thomson keyset, and made a few fixes to ADB (I-Can).
+ * Made a first pass at keysets for Changhong, Frontech, and Sinotec, added a new Thomson keyset, and made a few fixes to ADB (I-Can).
-- John Pietrzak <jpietrzak8@gmail.com> Wed, 19 Sep 2012 16:13:03 -0400
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Universal Infrared (IR) Remote Control for N900
Pierogi is a Universal Infrared Remote Control app for the Nokia N900. It is independent from the LIRC server, and stores all configuration info internally.
-XB-Maemo-Upgrade-Description: A bugfix update
- This update fixes a situation where keysets were being deleted while a command was still running. Also, a first pass at keysets for Changhong, Frontech, Sinotec, and Supra; a new Thomson keyset; and a few fixes to ADB (I-Can) keysets.
+XB-Maemo-Upgrade-Description: Catching Up
+ This update adds in a month's worth of keysets (for ADB, LG, Medialink, Mitsubishi, Multichoice, NEC, and Pioneer), and adds a new "Advanced Settings" panel where you can modify the carrier frequency and duty cycle values.
XSBC-Bugtracker: https://garage.maemo.org/tracker/?func=add&group_id=2286&atid=7641
XB-Maemo-Display-Name: Pierogi
XB-Maemo-Icon-26: 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