More Keysets
authorJohn Pietrzak <john@pietrzak.org>
Thu, 16 Feb 2012 03:52:13 +0000 (22:52 -0500)
committerJohn Pietrzak <john@pietrzak.org>
Thu, 16 Feb 2012 03:52:13 +0000 (22:52 -0500)
Just adding a few more keysets, this time for Beko, Cambridge, Haier, and
Kenwood.

17 files changed:
keysets/beko.cpp [new file with mode: 0644]
keysets/beko.h [new file with mode: 0644]
keysets/cambridge.cpp [new file with mode: 0644]
keysets/cambridge.h [new file with mode: 0644]
keysets/haier.cpp [new file with mode: 0644]
keysets/haier.h [new file with mode: 0644]
keysets/kenwood.cpp [new file with mode: 0644]
keysets/kenwood.h [new file with mode: 0644]
keysets/panasonic.cpp
keysets/samsung.cpp
pierogi.pro
pierogi.pro.user
pirkeysetmanager.cpp
pirmakenames.cpp
pirmakenames.h
qtc_packaging/debian_fremantle/changelog
qtc_packaging/debian_fremantle/control

diff --git a/keysets/beko.cpp b/keysets/beko.cpp
new file mode 100644 (file)
index 0000000..f70fc32
--- /dev/null
@@ -0,0 +1,56 @@
+#include "beko.h"
+#include "protocols/rc5protocol.h"
+
+
+BekoTV1::BekoTV1(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Keyset 1",
+      Beko_Make,
+      index)
+{
+  threadableProtocol = new RC5Protocol(guiObject, index);
+
+  addKey("MIX", TeletextAndTV_Key, 0x1004, 13);
+  addKey("DOUBLE", TeletextSize_Key, 0x1007, 13);
+  addKey("SUB", Unmapped_Key, 0x100A, 13);
+  addKey("STOP", TeletextHold_Key, 0x100C, 13);
+  addKey("REVEAL", TeletextReveal_Key, 0x100E, 13);
+  addKey("UPDATE", Unmapped_Key, 0x100F, 13);
+
+  addKey("0", Zero_Key, 0x1010, 13);
+  addKey("1", One_Key, 0x1011, 13);
+  addKey("2", Two_Key, 0x1012, 13);
+  addKey("3", Three_Key, 0x1013, 13);
+  addKey("4", Four_Key, 0x1014, 13);
+  addKey("5", Five_Key, 0x1015, 13);
+  addKey("6", Six_Key, 0x1016, 13);
+  addKey("7", Seven_Key, 0x1017, 13);
+  addKey("8", Eight_Key, 0x1018, 13);
+  addKey("9", Nine_Key, 0x1019, 13);
+  addKey("1_X_CHANNELS", DoubleDigit_Key, 0x101A, 13);
+  addKey("PR_DOWN", ChannelDown_Key, 0x101B, 13);
+  addKey("PR_DOWN", Down_Key, 0x101B, 13);
+  addKey("PR_UP", ChannelUp_Key, 0x101C, 13);
+  addKey("PR_UP", Up_Key, 0x101C, 13);
+
+  addKey("POWER_OFF", PowerOff_Key, 0x1020, 13); // ?
+  addKey("16:9", AspectRatio_Key, 0x1023, 13);
+  addKey("VOL_UP", VolumeUp_Key, 0x1024, 13);
+  addKey("VOL_UP", Right_Key, 0x1024, 13);
+  addKey("VOL_LOW", VolumeDown_Key, 0x1025, 13);
+  addKey("VOL_LOW", Left_Key, 0x1025, 13);
+  addKey("RED", Red_Key, 0x1026, 13);
+  addKey("SWAP", PrevChannel_Key, 0x1027, 13);
+  addKey("OK", Select_Key, 0x1028, 13);
+  addKey("MENU", Menu_Key, 0x1029, 13);
+  addKey("AV/TV", Input_Key, 0x102A, 13);
+  addKey("MUTE", Mute_Key, 0x102B, 13);
+  addKey("GREEN", Green_Key, 0x102C, 13);
+  addKey("YELLOW", Yellow_Key, 0x102E, 13);
+  addKey("I", Info_Key, 0x102F, 13); // ?
+
+  addKey("TXT", Teletext_Key, 0x1031, 13); // ?
+  addKey("BLUE", Blue_Key, 0x1033, 13);
+}
diff --git a/keysets/beko.h b/keysets/beko.h
new file mode 100644 (file)
index 0000000..839e30b
--- /dev/null
@@ -0,0 +1,16 @@
+#ifndef BEKO_H
+#define BEKO_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class BekoTV1: public PIRKeysetMetaData
+{
+public:
+  BekoTV1(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+#endif // BEKO_H
diff --git a/keysets/cambridge.cpp b/keysets/cambridge.cpp
new file mode 100644 (file)
index 0000000..6bc9ea6
--- /dev/null
@@ -0,0 +1,247 @@
+#include "cambridge.h"
+#include "protocols/necprotocol.h"
+#include "protocols/necxprotocol.h"
+#include "protocols/rc5protocol.h"
+
+
+CambridgeCD1::CambridgeCD1(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "CD Keyset 1",
+      Cambridge_Make,
+      index)
+{
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x4D84, 16);
+
+  addKey("RANDOM", Random_Key, 0x00, 8);
+  addKey("REPEAT", Repeat_Key, 0x01, 8);
+  addKey("REMAIN", Unmapped_Key, 0x02, 8);
+  addKey("PROG", Program_Key, 0x03, 8);
+  addKey("INTRO", Unmapped_Key, 0x04, 8);
+  addKey("SPACE", Unmapped_Key, 0x05, 8);
+  addKey("A<>B", RepeatAB_Key, 0x06, 8);
+  addKey("1", One_Key, 0x09, 8);
+  addKey("<<", Rewind_Key, 0x0A, 8);
+  addKey("PAUSE", Pause_Key, 0x0B, 8);
+  addKey("4", Four_Key, 0x0D, 8);
+  addKey("|<<", Previous_Key, 0x0E, 8);
+  addKey("STOP", Stop_Key, 0x0F, 8);
+
+  addKey("OPEN/CLOSE", Eject_Key, 0x10, 8);
+  addKey("7", Seven_Key, 0x11, 8);
+  addKey("10", Zero_Key, 0x12, 8);
+  addKey("PLAY", Play_Key, 0x13, 8);
+  addKey("8", Eight_Key, 0x15, 8);
+  addKey("+10", DoubleDigit_Key, 0x16, 8);
+  addKey("9", Nine_Key, 0x17, 8);
+  addKey("5", Five_Key, 0x19, 8);
+  addKey(">>|", Next_Key, 0x1A, 8);
+  addKey("6", Six_Key, 0x1B, 8);
+  addKey("2", Two_Key, 0x1D, 8);
+  addKey(">>", FastForward_Key, 0x1E, 8);
+  addKey("3", Three_Key, 0x1F, 8);
+}
+
+
+CambridgeAudio1::CambridgeAudio1(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Audio Keyset 1",
+      Cambridge_Make,
+      index)
+{
+  threadableProtocol = new NECXProtocol(guiObject, index, true);
+
+  setPreData(0xA0A0, 16);
+
+  addKey("1", One_Key, 0x01, 8);
+  addKey("5", Five_Key, 0x02, 8);
+  addKey("9", Nine_Key, 0x03, 8);
+  addKey("rew", Rewind_Key, 0x04, 8);
+  addKey("prev", Previous_Key, 0x05, 8);
+  addKey("intro", Unmapped_Key, 0x06, 8);
+  addKey("eject", Eject_Key, 0x07, 8);
+  addKey("2", Two_Key, 0x09, 8);
+  addKey("6", Six_Key, 0x0A, 8);
+  addKey("0", Zero_Key, 0x0B, 8);
+  addKey("fwd", FastForward_Key, 0x0C, 8);
+  addKey("next", Next_Key, 0x0D, 8);
+  addKey("rnd", Random_Key, 0x0E, 8);
+  addKey("remain", Unmapped_Key, 0x0F, 8);
+
+  addKey("3", Three_Key, 0x11, 8);
+  addKey("7", Seven_Key, 0x12, 8);
+  addKey("onetwodash", DoubleDigit_Key, 0x13, 8);
+  addKey("play", Play_Key, 0x15, 8);
+  addKey("repeat", Repeat_Key, 0x16, 8);
+  addKey("ab", RepeatAB_Key, 0x17, 8);
+  addKey("4", Four_Key, 0x19, 8);
+  addKey("8", Eight_Key, 0x1A, 8);
+  addKey("prog", Program_Key, 0x1B, 8);
+  addKey("stop", Stop_Key, 0x1C, 8);
+  addKey("pause", Pause_Key, 0x1D, 8);
+  addKey("skip", NextDisc_Key, 0x1E, 8);
+
+  addKey("light", Info_Key, 0x47, 8);
+}
+
+
+CambridgeAudio2::CambridgeAudio2(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Audio Keyset 2",
+      Cambridge_Make,
+      index)
+{
+  threadableProtocol = new NECXProtocol(guiObject, index, true);
+
+  setPreData(0xC0C0, 16);
+
+  addKey("SPK_SETUP", Unmapped_Key, 0x01, 8);
+  addKey("PLII_NEO6", Unmapped_Key, 0x02, 8);
+  addKey("VOLUME_UP", VolumeUp_Key, 0x03, 8);
+  addKey("VOLUME_UP", Up_Key, 0x03, 8);
+  addKey("DISPLAY", Info_Key, 0x04, 8);
+  addKey("LEFT", Left_Key, 0x06, 8);
+  addKey("TEST_TONE", Unmapped_Key, 0x07, 8);
+  addKey("DSP_MODE", Unmapped_Key, 0x09, 8);
+  addKey("BASS_TRIBLE", Unmapped_Key, 0x0A, 8);
+  addKey("POWER", Power_Key, 0x0C, 8);
+  addKey("CH_SELECT", Unmapped_Key, 0x0D, 8);
+  addKey("STEREO_MONO", Audio_Key, 0x0E, 8);
+  addKey("6.1_DIRECT", Unmapped_Key, 0x0F, 8);
+
+  addKey("I-O", Unmapped_Key, 0x11, 8);
+  addKey("SUB_ON_OFF", Unmapped_Key, 0x12, 8);
+  addKey("DYNAMIC", Unmapped_Key, 0x13, 8);
+  addKey("MUTE", Mute_Key, 0x14, 8);
+  addKey("RIGHT", Right_Key, 0x15, 8);
+  addKey("PTY", Unmapped_Key, 0x16, 8);
+  addKey("DDEX_DTSES", Unmapped_Key, 0x17, 8);
+  addKey("STEREO", Unmapped_Key, 0x1A, 8);
+  addKey("APS", Unmapped_Key, 0x1B, 8);
+  addKey("TUNER_AM_FM", TunerBand_Key, 0x1C, 8);
+  addKey("STORE", Memory_Key, 0x1D, 8);
+  addKey("MODE", Mode_Key, 0x1E, 8);
+  addKey("VOLUME_DOWN", VolumeDown_Key, 0x1F, 8);
+  addKey("VOLUME_DOWN", Down_Key, 0x1F, 8);
+  addKey("LFE_TRIM", Unmapped_Key, 0x20, 8);
+  addKey("ENTER", Select_Key, 0x21, 8);
+
+  addKey("DVD", DVDInput_Key, 0x22, 8);
+  addKey("VIDEO1", Unmapped_Key, 0x23, 8);
+  addKey("VIDEO2", Unmapped_Key, 0x24, 8);
+  addKey("VIDEO3", Unmapped_Key, 0x25, 8);
+  addKey("TAPE_MD_CDR", TapeInput_Key, 0x26, 8);
+  addKey("CD_AUX", AuxInput_Key, 0x27, 8);
+
+  addKey("INPUT_MODE", Unmapped_Key, 0x60, 8);
+  addKey("DELAY", Unmapped_Key, 0xA0, 8);
+}
+
+
+CambridgeAudio3::CambridgeAudio3(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Audio Keyset 3",
+      Cambridge_Make,
+      index)
+{
+  threadableProtocol = new RC5Protocol(guiObject, index);
+
+  addKey("Tape_Mon", TapeInput_Key, 0x1400, 13);
+  addKey("DVD", DVDInput_Key, 0x1401, 13);
+  addKey("AV_MD", MDInput_Key, 0x1402, 13);
+  addKey("Tuner_DAB", TunerInput_Key, 0x1403, 13);
+  addKey("Aux_Phono", AuxInput_Key, 0x1404, 13);
+  addKey("CD", CDInput_Key, 0x1405, 13);
+  addKey("Standby", Power_Key, 0x140C, 13);
+  addKey("Mute", Mute_Key, 0x140D, 13);
+  addKey("Power_On", PowerOn_Key, 0x140E, 13);
+  addKey("Power_Off", PowerOff_Key, 0x140F, 13);
+  addKey("Vol_Up", VolumeUp_Key, 0x1410, 13);
+  addKey("Vol_Down", VolumeDown_Key, 0x1411, 13);
+  addKey("Brightness", Unmapped_Key, 0x1412, 13); // dimmer?
+  addKey("Source_Up", Unmapped_Key, 0x1413, 13);
+  addKey("Source_Down", Unmapped_Key, 0x1414, 13);
+  addKey("Clip_Off", Unmapped_Key, 0x1415, 13);
+  addKey("Clip_On", Unmapped_Key, 0x1416, 13);
+  addKey("Mute_On", Unmapped_Key, 0x1432, 13);
+  addKey("Mute_Off", Unmapped_Key, 0x1433, 13);
+}
+
+
+CambridgeDVD1::CambridgeDVD1(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "DVD Keyset 1",
+      Cambridge_Make,
+      index)
+{
+  addControlledDevice(Cambridge_Make, "DVD53", DVD_Device);
+  addControlledDevice(Cambridge_Make, "DVD55", DVD_Device);
+  addControlledDevice(Cambridge_Make, "DVD57", DVD_Device);
+  addControlledDevice(Cambridge_Make, "DVD59B", DVD_Device);
+
+  threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+  setPreData(0x07, 8);
+
+  addKey("STANDBY", Power_Key, 0x01, 8);
+  addKey("SF", Unmapped_Key, 0x04, 8);
+  addKey("0", Zero_Key, 0x05, 8);
+  addKey("EQ", Unmapped_Key, 0x06, 8);
+  addKey("PAL/NTSC", Unmapped_Key, 0x07, 8);
+  addKey("<<", Rewind_Key, 0x08, 8);
+  addKey("1", One_Key, 0x09, 8);
+  addKey(">>", FastForward_Key, 0x0A, 8);
+  addKey("|<<", Previous_Key, 0x0B, 8);
+  addKey("PSM", Unmapped_Key, 0x0C, 8);
+  addKey("5", Five_Key, 0x0D, 8);
+  addKey("REPEAT", Repeat_Key, 0x0E, 8);
+  addKey("A-B", RepeatAB_Key, 0x0F, 8);
+
+  addKey("SLOW", Slow_Key, 0x10, 8);
+  addKey("9", Nine_Key, 0x11, 8);
+  addKey("MODE", Mode_Key, 0x12, 8);
+  addKey("MUTE", Mute_Key, 0x13, 8);
+  addKey("PLAY", Play_Key, 0x14, 8);
+  addKey("AUDIO", Audio_Key, 0x15, 8);
+  addKey("PAUSE", Pause_Key, 0x16, 8);
+  addKey("STOP", Stop_Key, 0x17, 8);
+  addKey("TITLE", DiscTitle_Key, 0x19, 8);
+  addKey("SETUP", Menu_Key, 0x1D, 8);
+
+  addKey("EJECT", Eject_Key, 0x43, 8);
+  addKey("OSD", Info_Key, 0x46, 8);
+  addKey("2", Two_Key, 0x48, 8);
+  addKey("3", Three_Key, 0x49, 8);
+  addKey(">>|", Next_Key, 0x4A, 8);
+  addKey("4", Four_Key, 0x4B, 8);
+  addKey("6", Six_Key, 0x4C, 8);
+  addKey("7", Seven_Key, 0x4D, 8);
+  addKey("CLEAR", Clear_Key, 0x4E, 8);
+  addKey("8", Eight_Key, 0x4F, 8);
+
+  addKey("10+", DoubleDigit_Key, 0x51, 8);
+  addKey("VOL-", VolumeDown_Key, 0x52, 8);
+  addKey("GOTO", Unmapped_Key, 0x53, 8);
+  addKey("SUBTITLE", Captions_Key, 0x54, 8);
+  addKey("ANGLE", Angle_Key, 0x55, 8);
+  addKey("VOL+", VolumeUp_Key, 0x56, 8);
+  addKey("ZOOM", Zoom_Key, 0x57, 8);
+  addKey("left", Left_Key, 0x58, 8);
+  addKey("up", Up_Key, 0x59, 8);
+  addKey("MENU", DiscMenu_Key,0x5B, 8);
+  addKey("down", Down_Key, 0x5C, 8);
+  addKey("SELECT", Select_Key, 0x5D, 8);
+  addKey("right", Right_Key, 0x5E, 8);
+  addKey("RETURN", Exit_Key, 0x5F, 8);
+}
diff --git a/keysets/cambridge.h b/keysets/cambridge.h
new file mode 100644 (file)
index 0000000..9e7c800
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef CAMBRIDGE_H
+#define CAMBRIDGE_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class CambridgeCD1: public PIRKeysetMetaData
+{
+public:
+  CambridgeCD1(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+class CambridgeAudio1: public PIRKeysetMetaData
+{
+public:
+  CambridgeAudio1(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+class CambridgeAudio2: public PIRKeysetMetaData
+{
+public:
+  CambridgeAudio2(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+class CambridgeAudio3: public PIRKeysetMetaData
+{
+public:
+  CambridgeAudio3(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+class CambridgeDVD1: public PIRKeysetMetaData
+{
+public:
+  CambridgeDVD1(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+#endif // CAMBRIDGE_H
diff --git a/keysets/haier.cpp b/keysets/haier.cpp
new file mode 100644 (file)
index 0000000..df14f06
--- /dev/null
@@ -0,0 +1,44 @@
+#include "haier.h"
+#include "protocols/aiwaprotocol.h"
+
+HaierTV1::HaierTV1(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Keyset 1",
+      Haier_Make,
+      index)
+{
+  addControlledDevice(Haier_Make, "TN201AUV", TV_Device);
+
+  threadableProtocol = new AiwaProtocol(guiObject, index);
+
+  setPreData(0x011C, 13);
+
+  addKey("1", One_Key, 0x00, 8);
+  addKey("2", Two_Key, 0x01, 8);
+  addKey("3", Three_Key, 0x02, 8);
+  addKey("4", Four_Key, 0x03, 8);
+  addKey("5", Five_Key, 0x04, 8);
+  addKey("6", Six_Key, 0x05, 8);
+  addKey("7", Seven_Key, 0x06, 8);
+  addKey("8", Eight_Key, 0x07, 8);
+  addKey("9", Nine_Key, 0x08, 8);
+  addKey("0", Zero_Key, 0x09, 8);
+  addKey("last (prev ch)", PrevChannel_Key, 0x0E, 8);
+  addKey("menu", Menu_Key, 0x0D, 8);
+  addKey("tv/av", Input_Key, 0x0F, 8);
+
+  addKey("vol up", VolumeUp_Key, 0x10, 8); // "right arrow"
+  addKey("vol up", Right_Key, 0x10, 8); // "right arrow"
+  addKey("power", Power_Key, 0x12, 8);
+  addKey("channel up", ChannelUp_Key, 0x13, 8); // "up arrow"
+  addKey("channel up", Up_Key, 0x13, 8); // "up arrow"
+  addKey("vol down", VolumeDown_Key, 0x14, 8); // "left arrow"
+  addKey("vol down", Left_Key, 0x14, 8); // "left arrow"
+  addKey("mute", Mute_Key, 0x16, 8);
+  addKey("channel down", ChannelDown_Key, 0x17, 8); // "down arrow"
+  addKey("channel down", Down_Key, 0x17, 8); // "down arrow"
+  addKey("display", Info_Key, 0x18, 8);
+  addKey("rating", Unmapped_Key, 0x1B, 8);
+}
diff --git a/keysets/haier.h b/keysets/haier.h
new file mode 100644 (file)
index 0000000..c0ae1ea
--- /dev/null
@@ -0,0 +1,16 @@
+#ifndef HAIER_H
+#define HAIER_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class HaierTV1: public PIRKeysetMetaData
+{
+public:
+  HaierTV1(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+#endif // HAIER_H
diff --git a/keysets/kenwood.cpp b/keysets/kenwood.cpp
new file mode 100644 (file)
index 0000000..96653b0
--- /dev/null
@@ -0,0 +1,508 @@
+#include "kenwood.h"
+#include "protocols/necprotocol.h"
+
+
+KenwoodAudio1::KenwoodAudio1(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Audio Keyset 1",
+      Kenwood_Make,
+      index)
+{
+  threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+  setPreData(0xB8, 8);
+
+  addKey("REW", Rewind_Key, 0x06, 8); // "CD_REW"
+  addKey("FWD", FastForward_Key, 0x07, 8); // "CD_FFWD"
+  addKey("DISC", NextDisc_Key, 0x08, 8);
+  addKey("VOL_CENTRE_DOWN", CenterVolumeDown_Key, 0x0A, 8);
+  addKey("VOL_CENTRE_UP", CenterVolumeUp_Key, 0x0B, 8);
+  addKey("10", DoubleDigit_Key, 0x0D, 8);
+
+  addKey("ENTER", Enter_Key, 0x1D, 8);
+
+  addKey("SQ2", Unmapped_Key, 0x4D, 8); // "DELAY_SURROUND"
+
+  addKey("SOURCEDIRECT", Unmapped_Key, 0x54, 8);
+  addKey("FUNCTION", Unmapped_Key, 0x57, 8);
+  addKey("RED", Red_Key, 0x56, 8); // "TEST_TONE"
+
+  addKey("0", Zero_Key, 0x80, 8);
+  addKey("1", One_Key, 0x81, 8);
+  addKey("2", Two_Key, 0x82, 8);
+  addKey("3", Three_Key, 0x83, 8);
+  addKey("4", Four_Key, 0x84, 8);
+  addKey("5", Five_Key, 0x85, 8);
+  addKey("6", Six_Key, 0x86, 8);
+  addKey("7", Seven_Key, 0x87, 8);
+  addKey("8", Eight_Key, 0x88, 8);
+  addKey("9", Nine_Key, 0x89, 8);
+  addKey("TUNER_DOWN", ChannelDown_Key, 0x8C, 8);
+  addKey("TUNER_AM", Unmapped_Key, 0x8E, 8);
+  addKey("TUNER_BAND", TunerBand_Key, 0x8F, 8); // "Tuner_FM"
+
+  addKey("PHONO", PhonoInput_Key, 0x90, 8);
+  addKey("SELECT_TUNER", TunerInput_Key, 0x91, 8);
+  addKey("SELECT_CD", CDInput_Key, 0x92, 8);
+  addKey("SELECT_VIDEO_2", AuxInput_Key, 0x93, 8); // "AUX"
+  addKey("SELECT_TAPE_A", TapeInput_Key, 0x94, 8);
+  addKey("SELECT_TAPE_B", Unmapped_Key, 0x95, 8);
+  addKey("SELECT_VIDEO_1", Unmapped_Key, 0x96, 8);
+  addKey("TUNER_UP", ChannelUp_Key, 0x99, 8);
+  addKey("VOL-", VolumeDown_Key, 0x9A, 8);
+  addKey("VOL+", VolumeUp_Key, 0x9B, 8);
+  addKey("MUTE", Mute_Key, 0x9C, 8);
+  addKey("POWER", Power_Key, 0x9D, 8);
+  addKey("TUNER_DIRECT", Unmapped_Key, 0x9E, 8);
+  addKey("TUNER_A/B", Unmapped_Key, 0x9F, 8);
+
+  addKey("Phono-STOP", Unmapped_Key, 0xC0, 8);
+  addKey("Phono-PLAY", Unmapped_Key, 0xC1, 8);
+  addKey("M.CALL", Call_Key, 0xC5, 8);
+  addKey("VOL_REAR_DOWN", RearVolumeDown_Key, 0xC6, 8);
+  addKey("VOL_REAR_UP", RearVolumeUp_Key, 0xC7, 8);
+  addKey("CD_STOP", Stop_Key, 0xC9, 8);
+  addKey("CD_PLAY/PAUSE", Play_Key, 0xCB, 8);
+  addKey("CD_PLAY/PAUSE", Pause_Key, 0xCB, 8);
+  addKey("CD_SEARCH_REW", Previous_Key, 0xCE, 8); // "CD_SKIPBACK"
+  addKey("CD_SEARCH_FWD", Next_Key, 0xCF, 8); // "CD_SKIPFORWARD"
+
+  addKey("TAPE_A_REV_PLAY", Unmapped_Key, 0xD0, 8);
+  addKey("TAPE_A_FWD_PLAY", Unmapped_Key, 0xD1, 8);
+  addKey("TAPE_A_REWIND", Unmapped_Key, 0xD2, 8);
+  addKey("TAPE_A_FFWD", Unmapped_Key, 0xD3, 8);
+  addKey("TAPE_A_PAUSE", Unmapped_Key, 0xD4, 8);
+  addKey("TAPE_A_STOP", Unmapped_Key, 0xD5, 8);
+  addKey("TAPE_A_RECORD", Unmapped_Key, 0xD6, 8);
+  addKey("STEREO", Audio_Key, 0xD7, 8);
+  addKey("TAPE_B_REV_PLAY", Unmapped_Key, 0xD8, 8);
+  addKey("TAPE_A_FWD_PLAY", Unmapped_Key, 0xD9, 8);
+  addKey("TAPE_A_REWIND", Unmapped_Key, 0xDA, 8);
+  addKey("TAPE_A_FFWD", Unmapped_Key, 0xDB, 8);
+  addKey("TAPE_A_PAUSE", Unmapped_Key, 0xDC, 8);
+  addKey("TAPE_A_STOP", Unmapped_Key, 0xDD, 8);
+  addKey("TAPE_A_RECORD", Unmapped_Key, 0xDE, 8);
+  addKey("SURROUND", Surround_Key, 0xDF, 8);
+}
+
+/*
+KenwoodAudio2::KenwoodAudio2(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Audio Keyset 2",
+      Kenwood_Make,
+      index)
+{
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x0000, 16);
+
+  addKey("POWER", Power_Key, 0x9D, 8);
+  addKey("REW", Rewind_Key, 0xDA, 8);
+  addKey("FWD", FastForward_Key, 0xDB, 8);
+}
+*/
+
+
+KenwoodComponent1::KenwoodComponent1(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Component Keyset 1",
+      Kenwood_Make,
+      index)
+{
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x00B8, 16);
+
+  addKey("discskip", NextDisc_Key, 0x08, 8);
+  addKey("CENTER_DOWN", CenterVolumeDown_Key, 0x0A, 8);
+  addKey("CENTER_UP", CenterVolumeUp_Key, 0x0B, 8);
+  addKey("+10", DoubleDigit_Key, 0x0D, 8);
+  addKey("TIME", Unmapped_Key, 0x0E, 8); // "pty/time"
+  addKey("EFFECT", Unmapped_Key, 0x0F, 8); // "GE_EFFECT", "EQ.ON/OFF"
+
+  addKey("LD", Unmapped_Key, 0x16, 8);
+
+  addKey("DELAY/ASFC-", Unmapped_Key, 0x4C, 8);
+  addKey("DELAY/ASFC+", Unmapped_Key, 0x4D, 8);
+
+  addKey("CENTER_MODE", Unmapped_Key, 0x55, 8);
+  addKey("TEST_TONE", Unmapped_Key, 0x56, 8);
+  addKey("RDS_DISP", Info_Key, 0x58, 8);
+  addKey("Loudness", Unmapped_Key, 0x5F, 8);
+
+  addKey("0", Zero_Key, 0x80, 8);
+  addKey("1", One_Key, 0x81, 8);
+  addKey("2", Two_Key, 0x82, 8);
+  addKey("3", Three_Key, 0x83, 8);
+  addKey("4", Four_Key, 0x84, 8);
+  addKey("5", Five_Key, 0x85, 8);
+  addKey("6", Six_Key, 0x86, 8);
+  addKey("7", Seven_Key, 0x87, 8);
+  addKey("8", Eight_Key, 0x88, 8);
+  addKey("9", Nine_Key, 0x89, 8);
+  addKey("BAND", TunerBand_Key, 0x8F, 8);
+
+  addKey("Phono-play", Unmapped_Key, 0x90, 8);
+  addKey("TUNER", TunerInput_Key, 0x91, 8);
+  addKey("CD", CDInput_Key, 0x92, 8);
+  addKey("AUX", AuxInput_Key, 0x93, 8);
+  addKey("tape/a_<>", Unmapped_Key, 0x94, 8);
+  addKey("TAPE", TapeInput_Key, 0x95, 8); // "tape/b_<>"
+  addKey("VIDEO", Unmapped_Key, 0x96, 8);
+  addKey("Sleep", Sleep_Key, 0x97, 8);
+  addKey("VOLUME_DOWN", VolumeDown_Key, 0x9A, 8); // "DOWN"
+  addKey("VOLUME_DOWN", Down_Key, 0x9A, 8); // "DOWN"
+  addKey("VOLUME_UP", VolumeUp_Key, 0x9B, 8); // "UP"
+  addKey("VOLUME_UP", Up_Key, 0x9B, 8); // "UP"
+  addKey("MUTE", Mute_Key, 0x9C, 8);
+  addKey("Power", Power_Key, 0x9D, 8);
+
+  addKey("Phono-stop", Unmapped_Key, 0xC0, 8);
+  addKey("PMODE_CD", Unmapped_Key, 0xC4, 8); // "Auto/Mono"
+  addKey("GE-m-call", Unmapped_Key, 0xC5, 8);
+  addKey("REAR_LEVEL-", RearVolumeDown_Key, 0xC6, 8); // "SURROUND_DOWN"
+  addKey("REAR_LEVEL+", RearVolumeUp_Key, 0xC7, 8); // "SURROUND_UP"
+  addKey("CHECK", Unmapped_Key, 0xC8, 8);
+  addKey("STOP_CD", Stop_Key, 0xC9, 8);
+  addKey("CLEAR", Clear_Key, 0xCA, 8);
+  addKey("PLAY/PAUSE_CD", Play_Key, 0xCB, 8);
+  addKey("PLAY/PAUSE_CD", Pause_Key, 0xCB, 8);
+  addKey("repeat", Repeat_Key, 0xCC, 8);
+  addKey("EDIT", Unmapped_Key, 0xCD, 8);
+  addKey("SKIP_REV", Previous_Key, 0xCE, 8);
+  addKey("SKIP_FWD", Next_Key, 0xCF, 8);
+
+  addKey("Tape-A-play-left", Unmapped_Key, 0xD0, 8);
+  addKey("Tape-A-play-right", Unmapped_Key, 0xD1, 8);
+  addKey("Tape-A-rew", Unmapped_Key, 0xD2, 8);
+  addKey("Tape-A-ffwd", Unmapped_Key, 0xD3, 8);
+  addKey("Tape-A-stop", Unmapped_Key, 0xD5, 8);
+  addKey("GE-off", Unmapped_Key, 0xD7, 8); // "STEREO"
+  addKey("PLAY_REV", Unmapped_Key, 0xD8, 8); // tape b
+  addKey("PLAY_FWD", Unmapped_Key, 0xD9, 8); // tape b
+  addKey("Tape-B-rew", Unmapped_Key, 0xDA, 8);
+  addKey("Tape-B-ffwd", Unmapped_Key, 0xDB, 8);
+  addKey("Tape-B-pause", Unmapped_Key, 0xDC, 8);
+  addKey("STOP", Unmapped_Key, 0xDD, 8);
+  addKey("Tape-B-record", Unmapped_Key, 0xDE, 8);
+  addKey("Presence", Unmapped_Key, 0xDF, 8); // "LISTEN_MODE"
+}
+
+
+KenwoodComponent2::KenwoodComponent2(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Component Keyset 2",
+      Kenwood_Make,
+      index)
+{
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x01B8, 16);
+
+  addKey("DOLBY_SURROUND", Surround_Key, 0x00, 8);
+  addKey("PCALL_DOWN", ChannelDown_Key, 0x06, 8); // tuner
+  addKey("PCALL_UP", ChannelUp_Key, 0x07, 8); // tuner
+  addKey("DOLBY_3_STEREO", Unmapped_Key, 0x0E, 8);
+
+  addKey("HITMASTER", Unmapped_Key, 0x1B, 8);
+
+  addKey("N.B.", NoiseReduction_Key, 0x4B, 8); // "noise_blanking"
+  addKey("SPACE", Unmapped_Key, 0x4F, 8);
+
+  addKey("Down", Down_Key, 0x54, 8);
+  addKey("Up", Up_Key, 0x55, 8);
+  addKey("sound_cont", Unmapped_Key, 0x57, 8);
+  addKey("enter", Enter_Key, 0x5A, 8); // "MEMO"
+
+  addKey("p.call_I<<", ChannelDown_Key, 0x91, 8); // "LEFT"
+  addKey("p.call_I<<", Left_Key, 0x91, 8); // "LEFT"
+  addKey("p.call_I>>", ChannelUp_Key, 0x92, 8); // "RIGHT"
+  addKey("p.call_I>>", Right_Key, 0x92, 8); // "RIGHT"
+  addKey("disc1", Unmapped_Key, 0x93, 8);
+  addKey("disc2", Unmapped_Key, 0x94, 8);
+  addKey("disc3", Unmapped_Key, 0x95, 8);
+  addKey("LINE", Unmapped_Key, 0x9B, 8);
+  addKey("PTY", Unmapped_Key, 0x9C, 8);
+
+  addKey("INPUT", Input_Key, 0xCC, 8);
+  addKey("dual_sound", Unmapped_Key, 0xCE, 8);
+
+  addKey("MD/DAT", Unmapped_Key, 0xD2, 8); // MDInput_Key?
+  addKey("random", Random_Key, 0xD4, 8);
+  addKey("FWD_MD", Unmapped_Key, 0xD8, 8); // play?
+  addKey("STOP_MD", Stop_Key, 0xD9, 8);
+  addKey("REW_MD", Rewind_Key, 0xDC, 8);
+  addKey("FWD_MD", Unmapped_Key, 0xDD, 8); // fast forward?
+}
+
+
+KenwoodComponent3::KenwoodComponent3(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Component Keyset 3",
+      Kenwood_Make,
+      index)
+{
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x02B8, 16);
+
+  addKey("SKIP_REV", Previous_Key, 0x00, 8); // "PREV", "Left"
+  addKey("SKIP_FWD", Next_Key, 0x01, 8); // "NEXT", "Right"
+  addKey("tuning<<", ChannelDown_Key, 0x02, 8); // "SEARCH_REV"
+  addKey("tuning<<", Rewind_Key, 0x02, 8); // "SEARCH_REV"
+  addKey("tuning>>", ChannelUp_Key, 0x03, 8); // "SEARCH_FWD"
+  addKey("tuning>>", FastForward_Key, 0x03, 8); // "SEARCH_FWD"
+  addKey("stop", Stop_Key, 0x04, 8);
+  addKey("</>", TapeInput_Key, 0x05, 8); // "TAPE"
+  addKey("tuner/band", TunerBand_Key, 0x06, 8); // "TUNER"
+  addKey("cd_play_pause", Play_Key, 0x07, 8); // "CD"
+  addKey("cd_play_pause", Pause_Key, 0x07, 8);
+  addKey("A/B", RepeatAB_Key, 0x08, 8); // "A_B"
+  addKey("CD/TUNER/TAPE", Input_Key, 0x09, 8);
+
+  addKey("low_stop", Unmapped_Key, 0x18, 8);
+  addKey("low_play", Unmapped_Key, 0x19, 8);
+  addKey("low_prev", Unmapped_Key, 0x1A, 8);
+  addKey("low_next", Unmapped_Key, 0x1B, 8);
+  addKey("long_play", Unmapped_Key, 0x1C, 8);
+  addKey("Dimmer", Unmapped_Key, 0x1D, 8);
+  addKey("llc", Unmapped_Key, 0x1F, 8);
+
+  addKey("+100", PlusOneHundred_Key, 0x4F, 8);
+
+  addKey("SRS_3D", Surround_Key, 0x55, 8);
+  addKey("ex.bass", EnhancedBass_Key, 0x57, 8);
+
+  addKey("TA_NEWS_INFO", Unmapped_Key, 0xC0, 8);
+
+  addKey("rev.mode", Unmapped_Key, 0xD0, 8);
+  addKey("tape_eq", Unmapped_Key, 0xD1, 8);
+}
+
+/*
+"rds_display/text_display", 0x1DC012ED
+"setup", 0x1DC09867
+"PLAY_PAUSE", 0x1DC0609F
+"PLAY_BACK", 0x1DC0906F // "Flip"
+"dvd6ch", 0x1DC001FE
+"InputSel", 0x1DC06A95
+"menu", 0x1D20B946
+"select", 0x1D2039C6
+"back", 0x1D20FB04
+*/
+
+/*
+KenwoodAudio5::KenwoodAudio5(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "Audio Keyset 5",
+      Kenwood_Make,
+      index)
+{
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x49B4, 16);
+
+  addKey("VOLUME_DOWN_SW", VolumeDown_Key, 0x12, 8);
+  addKey("VOLUME_UP_SW", VolumeUp_Key, 0x13, 8);
+  addKey("POWER_SW", Power_Key, 0x18, 8);
+}
+*/
+
+
+KenwoodCD1::KenwoodCD1(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "CD Keyset 1",
+      Kenwood_Make,
+      index)
+{
+  threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+  setPreData(0xB6, 8);
+
+  addKey("0", Zero_Key, 0x00, 8);
+  addKey("1", One_Key, 0x01, 8);
+  addKey("2", Two_Key, 0x02, 8);
+  addKey("3", Three_Key, 0x03, 8);
+  addKey("4", Four_Key, 0x04, 8);
+  addKey("5", Five_Key, 0x05, 8);
+  addKey("6", Six_Key, 0x06, 8);
+  addKey("7", Seven_Key, 0x07, 8);
+  addKey("8", Eight_Key, 0x08, 8);
+  addKey("9", Nine_Key, 0x09, 8);
+  addKey("+10", DoubleDigit_Key, 0x0A, 8);
+
+  addKey("OPEN_CLOSE", Eject_Key, 0x10, 8);
+  addKey("stop", Stop_Key, 0x11, 8);
+  addKey("play", Play_Key, 0x13, 8); // "PAUSE"
+  addKey("play", Pause_Key, 0x13, 8); // "PAUSE"
+  addKey("back", Rewind_Key, 0x14, 8); // "REWIND"
+  addKey("forward", FastForward_Key, 0x15, 8);
+  addKey("last", Previous_Key, 0x16, 8);
+  addKey("next", Next_Key, 0x17, 8);
+  addKey("TIME_DISPLAY", Unmapped_Key, 0x18, 8);
+  addKey("REPEAT", Repeat_Key, 0x19, 8);
+  addKey("clear", Clear_Key, 0x1A, 8);
+  addKey("check", Unmapped_Key, 0x1B, 8);
+  addKey("INDEX_BACK", Unmapped_Key, 0x1C, 8);
+  addKey("INDEX_FWD", Unmapped_Key, 0x1D, 8);
+  addKey("EDIT_2", Unmapped_Key, 0x1E, 8);
+  addKey("p.mode", Unmapped_Key, 0x1F, 8);
+
+  addKey("bboost", EnhancedBass_Key, 0xC1, 8);
+
+  addKey("space", Unmapped_Key, 0x42, 8);
+  addKey("REPEAT_A-B", RepeatAB_Key, 0x43, 8);
+  addKey("TRACK", Unmapped_Key, 0x44, 8);
+  addKey("PGM", Program_Key, 0x45, 8);
+  addKey("TIME", Unmapped_Key, 0x46, 8);
+  addKey("down", Down_Key, 0x48, 8); // "VOL_DOWN"
+  addKey("down", VolumeDown_Key, 0x48, 8); // "VOL_DOWN"
+  addKey("up", Up_Key, 0x49, 8); // "VOL_UP"
+  addKey("up", VolumeUp_Key, 0x49, 8); // "VOL_UP"
+  addKey("edit", Unmapped_Key, 0x4A, 8);
+  addKey("DISPLAY_MODE", Info_Key, 0x4C, 8);
+  addKey("DISC_SKIP", NextDisc_Key, 0x4D, 8);
+  addKey("random", Random_Key, 0x4F, 8);
+
+  addKey("P", Unmapped_Key, 0x50, 8);
+  addKey("DISC_1", Unmapped_Key, 0x51, 8);
+  addKey("DISC_2", Unmapped_Key, 0x52, 8);
+  addKey("DISC_3", Unmapped_Key, 0x53, 8);
+  addKey("DISC_4", Unmapped_Key, 0x54, 8);
+  addKey("DISC_5", Unmapped_Key, 0x55, 8);
+  addKey("DISC_6", Unmapped_Key, 0x56, 8);
+
+  addKey("10", Unmapped_Key, 0x80, 8);
+  addKey("11", Unmapped_Key, 0x81, 8);
+  addKey("12", Unmapped_Key, 0x82, 8);
+  addKey("13", Unmapped_Key, 0x83, 8);
+  addKey("14", Unmapped_Key, 0x84, 8);
+  addKey("15", Unmapped_Key, 0x85, 8);
+  addKey("16", Unmapped_Key, 0x86, 8);
+  addKey("17", Unmapped_Key, 0x87, 8);
+  addKey("18", Unmapped_Key, 0x88, 8);
+  addKey("19", Unmapped_Key, 0x89, 8);
+  addKey("20/0", Unmapped_Key, 0x8A, 8);
+  addKey("peak_search", Unmapped_Key, 0x8D, 8);
+  addKey("DISC_FILE", Unmapped_Key, 0x8F, 8);
+  addKey("ERASE", Unmapped_Key, 0x90, 8);
+  addKey("power", Power_Key, 0x91, 8);
+}
+
+
+KenwoodDVD1::KenwoodDVD1(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "DVD Keyset 1",
+      Kenwood_Make,
+      index)
+{
+  addControlledDevice(Kenwood_Make, "DVF-9010", Audio_Device);
+
+  threadableProtocol = new NECProtocol(guiObject, index, true, true);
+
+  setPreData(0x0CB6, 16);
+
+  addKey("0", Zero_Key, 0x00, 8);
+  addKey("1", One_Key, 0x01, 8);
+  addKey("2", Two_Key, 0x02, 8);
+  addKey("3", Three_Key, 0x03, 8);
+  addKey("4", Four_Key, 0x04, 8);
+  addKey("5", Five_Key, 0x05, 8);
+  addKey("6", Six_Key, 0x06, 8);
+  addKey("7", Seven_Key, 0x07, 8);
+  addKey("8", Eight_Key, 0x08, 8);
+  addKey("9", Nine_Key, 0x09, 8);
+  addKey("PLUS_TEN", DoubleDigit_Key, 0x0A, 8);
+
+  addKey("(0)OpenClose", Eject_Key, 0x10, 8);
+  addKey("Stop", Stop_Key, 0x11, 8);
+  addKey("PAUSE", Pause_Key, 0x12, 8);
+  addKey("Play", Play_Key, 0x13, 8);
+  addKey("REVERSE", Rewind_Key, 0x14, 8);
+  addKey("FORWARD", FastForward_Key, 0x15, 8);
+  addKey("SkipDown", Previous_Key, 0x16, 8);
+  addKey("SkipUp", Next_Key, 0x17, 8); // ?
+
+  addKey("Repeat", Repeat_Key, 0x19, 8);
+  addKey("C", Unmapped_Key, 0x1A, 8);
+  addKey("P.Mode", PictureMode_Key, 0x1F, 8);
+
+  addKey("ABRepeat", RepeatAB_Key, 0x43, 8);
+  addKey("(1)Memory", Memory_Key, 0x4B, 8);
+
+  addKey("OnScreen", Unmapped_Key, 0x5F, 8);
+
+  addKey("Display", Info_Key, 0x8C, 8);
+  addKey("DVD_POWER", Power_Key, 0x91, 8);
+  addKey("(7)TextDisp", Unmapped_Key, 0x96, 8);
+  addKey("(8)AllInfo", Unmapped_Key, 0x97, 8);
+  addKey("(9)TitleSearch", Unmapped_Key, 0x98, 8);
+
+  addKey("Setup", Menu_Key, 0xC0, 8);
+  addKey("(3)Title", DiscTitle_Key, 0xC1, 8);
+  addKey("Menu", DiscMenu_Key, 0xC2, 8);
+  addKey("(4)Angle", Angle_Key, 0xC3, 8);
+  addKey("Return", Exit_Key, 0xC4, 8);
+  addKey("(6)Subtitle", Captions_Key, 0xC5, 8);
+  addKey("(5)Audio", Audio_Key, 0xC9, 8);
+
+  addKey("Enter", Select_Key, 0xD3, 8);
+  addKey("Up", Up_Key, 0xD6, 8);
+  addKey("Down", Down_Key, 0xD7, 8);
+  addKey("Left", Left_Key, 0xD8, 8);
+  addKey("Right", Right_Key, 0xD9, 8);
+  addKey("(2)VirtualSurr", Surround_Key, 0xDF, 8);
+}
+
+
+KenwoodTV1::KenwoodTV1(
+  QObject *guiObject,
+  unsigned int index)
+  : PIRKeysetMetaData(
+      "TV Keyset 1",
+      Kenwood_Make,
+      index)
+{
+  threadableProtocol = new NECProtocol(guiObject, index, false, true);
+
+  setPreData(0x04, 8);
+
+  addKey("TV-CH_UP", ChannelUp_Key, 0x00, 8);
+  addKey("TV-CH_DOWN", ChannelDown_Key, 0x01, 8);
+  addKey("TV-VOL_UP", VolumeUp_Key, 0x02, 8);
+  addKey("TV-VOL_DOWN", VolumeDown_Key, 0x03, 8);
+
+  addKey("Power_TV", Power_Key, 0x08, 8);
+  addKey("TV/VIDEO", Input_Key, 0x09, 8);
+  addKey("ANT/AUX", AntennaInput_Key, 0x0B, 8);
+
+  addKey("0", Zero_Key, 0x10, 8);
+  addKey("1", One_Key, 0x11, 8);
+  addKey("2", Two_Key, 0x12, 8);
+  addKey("3", Three_Key, 0x13, 8);
+  addKey("4", Four_Key, 0x14, 8);
+  addKey("5", Five_Key, 0x15, 8);
+  addKey("6", Six_Key, 0x16, 8);
+  addKey("7", Seven_Key, 0x17, 8);
+  addKey("8", Eight_Key, 0x18, 8);
+  addKey("9", Nine_Key, 0x19, 8);
+
+  addKey("TIMER", Sleep_Key, 0x1A, 8);
+  addKey("RECALL", PrevChannel_Key, 0x1B, 8);
+}
diff --git a/keysets/kenwood.h b/keysets/kenwood.h
new file mode 100644 (file)
index 0000000..32a5907
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef KENWOOD_H
+#define KENWOOD_H
+
+#include "pirkeysetmetadata.h"
+
+class QObject;
+
+class KenwoodAudio1: public PIRKeysetMetaData
+{
+public:
+  KenwoodAudio1(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+class KenwoodComponent1: public PIRKeysetMetaData
+{
+public:
+  KenwoodComponent1(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+class KenwoodComponent2: public PIRKeysetMetaData
+{
+public:
+  KenwoodComponent2(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+class KenwoodComponent3: public PIRKeysetMetaData
+{
+public:
+  KenwoodComponent3(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+class KenwoodCD1: public PIRKeysetMetaData
+{
+public:
+  KenwoodCD1(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+class KenwoodDVD1: public PIRKeysetMetaData
+{
+public:
+  KenwoodDVD1(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+class KenwoodTV1: public PIRKeysetMetaData
+{
+public:
+  KenwoodTV1(
+    QObject *guiObject,
+    unsigned int index);
+};
+
+#endif // KENWOOD_H
index f1ac9b1..1618777 100644 (file)
@@ -234,6 +234,7 @@ PanasonicTV1b::PanasonicTV1b(
   addControlledDevice(Panasonic_Make, "Viera TX-32LZD80", TV_Device);
   addControlledDevice(Panasonic_Make, "Viera 42PZ700U", TV_Device);
   addControlledDevice(Panasonic_Make, "Viera 42PZ8ES", TV_Device);
   addControlledDevice(Panasonic_Make, "Viera TX-32LZD80", TV_Device);
   addControlledDevice(Panasonic_Make, "Viera 42PZ700U", TV_Device);
   addControlledDevice(Panasonic_Make, "Viera 42PZ8ES", TV_Device);
+  addControlledDevice(Panasonic_Make, "Quintrix TX-25MK1C", TV_Device);
 
   addKaseikyoKey("Info", Info_Key, 0x008, 0x39); // "OSD"
   addKaseikyoKey("OK", Select_Key, 0x008, 0x49);
 
   addKaseikyoKey("Info", Info_Key, 0x008, 0x39); // "OSD"
   addKaseikyoKey("OK", Select_Key, 0x008, 0x49);
index 7363954..7fb3f78 100644 (file)
@@ -121,6 +121,8 @@ SamsungTV1b::SamsungTV1b(
 {
   setKeysetName("TV Keyset 1b");
 
 {
   setKeysetName("TV Keyset 1b");
 
+  addControlledDevice(Samsung_Make, "LE46M51B (R)", TV_Device); // ?
+
   addKey("Red", Red_Key, 0x21, 8);
   addKey("Exit", Exit_Key, 0x2C, 8);
 }
   addKey("Red", Red_Key, 0x21, 8);
   addKey("Exit", Exit_Key, 0x2C, 8);
 }
index 3427b1b..e6071bf 100644 (file)
@@ -109,7 +109,11 @@ SOURCES += main.cpp mainwindow.cpp \
     keysets/dish.cpp \
     keysets/fortec.cpp \
     keysets/homecast.cpp \
     keysets/dish.cpp \
     keysets/fortec.cpp \
     keysets/homecast.cpp \
-    protocols/dishprotocol.cpp
+    protocols/dishprotocol.cpp \
+    keysets/beko.cpp \
+    keysets/cambridge.cpp \
+    keysets/haier.cpp \
+    keysets/kenwood.cpp
 HEADERS += mainwindow.h \
     pirkeynames.h \
     pirmakenames.h \
 HEADERS += mainwindow.h \
     pirkeynames.h \
     pirmakenames.h \
@@ -193,7 +197,11 @@ HEADERS += mainwindow.h \
     keysets/dish.h \
     keysets/fortec.h \
     keysets/homecast.h \
     keysets/dish.h \
     keysets/fortec.h \
     keysets/homecast.h \
-    protocols/dishprotocol.h
+    protocols/dishprotocol.h \
+    keysets/beko.h \
+    keysets/cambridge.h \
+    keysets/haier.h \
+    keysets/kenwood.h
 FORMS += mainwindow.ui \
     pirdocumentationform.ui \
     piraboutform.ui \
 FORMS += mainwindow.ui \
     pirdocumentationform.ui \
     piraboutform.ui \
index 122bb3a..47e6bc6 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by Qt Creator 2.4.1, 2012-02-14T21:44:04. -->
+<!-- Written by Qt Creator 2.4.1, 2012-02-15T22:46:30. -->
 <qtcreator>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>
 <qtcreator>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -79,7 +79,7 @@
       <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">true</value>
       <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">true</value>
-      <value type="QString" key="ProjectExplorer.ProcessStep.WorkingDirectory">/Users/john/Develop/n900/pierogi-0.6.4</value>
+      <value type="QString" key="ProjectExplorer.ProcessStep.WorkingDirectory">/Users/john/Develop/n900/pierogi-0.6.5</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" 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_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_5_3_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_3_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_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_5_3_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_3_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_5_armel.deb</value>
        <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_1_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_1_7_armel.deb</value>
        <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_1_3_armel.deb</value>
        <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_1_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_1_7_armel.deb</value>
        <value type="QString">/Users/john/Develop/n900/pierogi-build-maemo-Qt_for_Fremantle_PR1_3_Devices__Qt_SDK__Release/pierogi_0_1_3_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">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">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>
        <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>
       </valuelist>
       <valuelist type="QVariantList" key="Qt4ProjectManager.MaemoRunConfiguration.LastDeployedTimes">
        <value type="QDateTime">2012-01-19T22:18:07</value>
        <value type="QDateTime">2012-02-12T23:10:44</value>
        <value type="QDateTime">2012-02-09T18:12:21</value>
        <value type="QDateTime">2012-02-14T21:02:03</value>
        <value type="QDateTime">2012-02-12T23:10:44</value>
        <value type="QDateTime">2012-02-09T18:12:21</value>
        <value type="QDateTime">2012-02-14T21:02:03</value>
+       <value type="QDateTime">2012-02-15T22:43:32</value>
        <value type="QDateTime">2012-01-17T00:15:23</value>
        <value type="QDateTime">2012-01-30T20:23:06</value>
        <value type="QDateTime">2012-01-17T13:21:05</value>
        <value type="QDateTime">2012-01-17T00:15:23</value>
        <value type="QDateTime">2012-01-30T20:23:06</value>
        <value type="QDateTime">2012-01-17T13:21:05</value>
index 8307ae3..2a4c2ce 100644 (file)
@@ -8,7 +8,9 @@
 #include "keysets/admiral.h"
 #include "keysets/aiwa.h"
 #include "keysets/apple.h"
 #include "keysets/admiral.h"
 #include "keysets/aiwa.h"
 #include "keysets/apple.h"
+#include "keysets/beko.h"
 #include "keysets/bose.h"
 #include "keysets/bose.h"
+#include "keysets/cambridge.h"
 #include "keysets/daewoo.h"
 #include "keysets/denon.h"
 #include "keysets/digitalstream.h"
 #include "keysets/daewoo.h"
 #include "keysets/denon.h"
 #include "keysets/digitalstream.h"
 #include "keysets/fortec.h"
 #include "keysets/goldstar.h"
 #include "keysets/grundig.h"
 #include "keysets/fortec.h"
 #include "keysets/goldstar.h"
 #include "keysets/grundig.h"
+#include "keysets/haier.h"
 #include "keysets/hauppauge.h"
 #include "keysets/hitachi.h"
 #include "keysets/homecast.h"
 #include "keysets/jvc.h"
 #include "keysets/hauppauge.h"
 #include "keysets/hitachi.h"
 #include "keysets/homecast.h"
 #include "keysets/jvc.h"
+#include "keysets/kenwood.h"
 #include "keysets/lg.h"
 #include "keysets/logitech.h"
 #include "keysets/magnavox.h"
 #include "keysets/lg.h"
 #include "keysets/logitech.h"
 #include "keysets/magnavox.h"
@@ -97,10 +101,18 @@ PIRKeysetManager::PIRKeysetManager(
 
   populateKeyset(new AppleWhiteRemote(guiObject, counter++));
 
 
   populateKeyset(new AppleWhiteRemote(guiObject, counter++));
 
+  populateKeyset(new BekoTV1(guiObject, counter++));
+
   populateKeyset(new BoseRadio1(guiObject, counter++));
   populateKeyset(new BoseRadio2(guiObject, counter++));
   populateKeyset(new BoseRadio3(guiObject, counter++));
 
   populateKeyset(new BoseRadio1(guiObject, counter++));
   populateKeyset(new BoseRadio2(guiObject, counter++));
   populateKeyset(new BoseRadio3(guiObject, counter++));
 
+  populateKeyset(new CambridgeCD1(guiObject, counter++));
+  populateKeyset(new CambridgeAudio1(guiObject, counter++));
+  populateKeyset(new CambridgeAudio2(guiObject, counter++));
+  populateKeyset(new CambridgeAudio3(guiObject, counter++));
+  populateKeyset(new CambridgeDVD1(guiObject, counter++));
+
   populateKeyset(new DaewooTV1(guiObject, counter++));
   populateKeyset(new DaewooTV2(guiObject, counter++));
   populateKeyset(new DaewooTV3(guiObject, counter++));
   populateKeyset(new DaewooTV1(guiObject, counter++));
   populateKeyset(new DaewooTV2(guiObject, counter++));
   populateKeyset(new DaewooTV3(guiObject, counter++));
@@ -180,6 +192,8 @@ PIRKeysetManager::PIRKeysetManager(
   populateKeyset(new GrundigTV3(guiObject, counter++));
   populateKeyset(new GrundigDVD1(guiObject, counter++));
 
   populateKeyset(new GrundigTV3(guiObject, counter++));
   populateKeyset(new GrundigDVD1(guiObject, counter++));
 
+  populateKeyset(new HaierTV1(guiObject, counter++));
+
   populateKeyset(new HauppaugePCTV1(guiObject, counter++));
   populateKeyset(new HauppaugePCTV1a(guiObject, counter++));
   populateKeyset(new HauppaugePCTV1b(guiObject, counter++));
   populateKeyset(new HauppaugePCTV1(guiObject, counter++));
   populateKeyset(new HauppaugePCTV1a(guiObject, counter++));
   populateKeyset(new HauppaugePCTV1b(guiObject, counter++));
@@ -219,6 +233,14 @@ PIRKeysetManager::PIRKeysetManager(
   populateKeyset(new JVCAudio2(guiObject, counter++));
   populateKeyset(new JVCDVD1(guiObject, counter++));
 
   populateKeyset(new JVCAudio2(guiObject, counter++));
   populateKeyset(new JVCDVD1(guiObject, counter++));
 
+  populateKeyset(new KenwoodAudio1(guiObject, counter++));
+  populateKeyset(new KenwoodComponent1(guiObject, counter++));
+  populateKeyset(new KenwoodComponent2(guiObject, counter++));
+  populateKeyset(new KenwoodComponent3(guiObject, counter++));
+  populateKeyset(new KenwoodCD1(guiObject, counter++));
+  populateKeyset(new KenwoodDVD1(guiObject, counter++));
+  populateKeyset(new KenwoodTV1(guiObject, counter++));
+
   populateKeyset(new LGTV1(guiObject, counter++));
   populateKeyset(new LGTV1a(guiObject, counter++));
   populateKeyset(new LGTV1b(guiObject, counter++));
   populateKeyset(new LGTV1(guiObject, counter++));
   populateKeyset(new LGTV1a(guiObject, counter++));
   populateKeyset(new LGTV1b(guiObject, counter++));
index d72f88d..46d097b 100644 (file)
@@ -9,7 +9,9 @@ PIRMakeMgr::PIRMakeMgr()
   makes[Admiral_Make] = "Admiral";
   makes[Aiwa_Make] = "Aiwa";
   makes[Apple_Make] = "Apple";
   makes[Admiral_Make] = "Admiral";
   makes[Aiwa_Make] = "Aiwa";
   makes[Apple_Make] = "Apple";
+  makes[Beko_Make] = "Beko";
   makes[Bose_Make] = "Bose";
   makes[Bose_Make] = "Bose";
+  makes[Cambridge_Make] = "Cambridge Audio";
   makes[Daewoo_Make] = "Daewoo";
   makes[Denon_Make] = "Denon";
   makes[DigitalStream_Make] = "Digital Stream";
   makes[Daewoo_Make] = "Daewoo";
   makes[Denon_Make] = "Denon";
   makes[DigitalStream_Make] = "Digital Stream";
@@ -20,10 +22,12 @@ PIRMakeMgr::PIRMakeMgr()
   makes[Fortec_Make] = "Fortec Star";
   makes[GoldStar_Make] = "GoldStar";
   makes[Grundig_Make] = "Grundig";
   makes[Fortec_Make] = "Fortec Star";
   makes[GoldStar_Make] = "GoldStar";
   makes[Grundig_Make] = "Grundig";
+  makes[Haier_Make] = "Haier";
   makes[Hauppauge_Make] = "Hauppauge";
   makes[Hitachi_Make] = "Hitachi";
   makes[Homecast_Make] = "Homecast";
   makes[JVC_Make] = "JVC";
   makes[Hauppauge_Make] = "Hauppauge";
   makes[Hitachi_Make] = "Hitachi";
   makes[Homecast_Make] = "Homecast";
   makes[JVC_Make] = "JVC";
+  makes[Kenwood_Make] = "Kenwood";
   makes[LG_Make] = "LG";
   makes[Logitech_Make] = "Logitech";
   makes[Magnavox_Make] = "Magnavox";
   makes[LG_Make] = "LG";
   makes[Logitech_Make] = "Logitech";
   makes[Magnavox_Make] = "Magnavox";
index e425bd4..084be3c 100644 (file)
@@ -10,7 +10,9 @@ enum PIRMakeName{
   Admiral_Make,
   Aiwa_Make,
   Apple_Make,
   Admiral_Make,
   Aiwa_Make,
   Apple_Make,
+  Beko_Make,
   Bose_Make,
   Bose_Make,
+  Cambridge_Make,
   Daewoo_Make,
   Denon_Make,
   DigitalStream_Make,
   Daewoo_Make,
   Denon_Make,
   DigitalStream_Make,
@@ -21,10 +23,12 @@ enum PIRMakeName{
   Fortec_Make,
   GoldStar_Make,
   Grundig_Make,
   Fortec_Make,
   GoldStar_Make,
   Grundig_Make,
+  Haier_Make,
   Hauppauge_Make,
   Hitachi_Make,
   Homecast_Make,
   JVC_Make,
   Hauppauge_Make,
   Hitachi_Make,
   Homecast_Make,
   JVC_Make,
+  Kenwood_Make,
   LG_Make,
   Logitech_Make,
   Magnavox_Make,
   LG_Make,
   Logitech_Make,
   Magnavox_Make,
index 9bb4e11..bf94261 100644 (file)
@@ -1,3 +1,8 @@
+pierogi (0.6.5) unstable; urgency=low
+  * A few more keyset added: Beko, Cambridge, Haier, and Kenwood.
+
+ -- John Pietrzak <jpietrzak8@gmail.com>  Wed, 15 Feb 2012 22:36:56 -0500
+
 pierogi (0.6.4) unstable; urgency=low
   * Added a Hildon Banner to report what the keyset has changed to when you use the volume rocker
   * Fixed several GUI button bugs -- thanks to sixwheeledbeast for finding them
 pierogi (0.6.4) unstable; urgency=low
   * Added a Hildon Banner to report what the keyset has changed to when you use the volume rocker
   * Fixed several GUI button bugs -- thanks to sixwheeledbeast for finding them
index 2de1e33..13ddf9c 100644 (file)
@@ -11,8 +11,8 @@ Architecture: armel
 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.
 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: Better volume rocker UI, bugfixes, keysets
- Pierogi now uses the Hildon Banner mechanism to inform you about the changes made when you use the volume rocker switch.  Also, several bugfixes in the GUI (thanks to sixwheeledbeast for spotting them), and first pass at keysets for Dish, Fortec Star, and Homecast.
+XB-Maemo-Upgrade-Description: More Keysets
+ Keysets have been added for Beko, Cambridge, Haier, and Kenwood.
 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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
 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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