Exactly as @JGKK said. I used AnalysIR. Itās a dual-ended system, thereās firmware that runs an Arduino Uno which you connect your IR receiver module to, and that in turn talks to their proprietary windows software. Itās $30 and does exactly what it says it does. Not sure why the IRdump didnāt work for me. May as well try that first before you spend any money, but I will say that the AnalysIR software is quite nice and helps visualize and organize things.
Hereās the user interface. I captured a few buttons from my Sharp TV remote that happened to be within reach.
After that, I went to the File menu, Batch Export, IRremote, and it placed the following on the clipboard:
/*
Automatically Generated by AnalysIR - Batch Export Utility
Registered to: leif@email-redacted
Session History
Type : Key : Value : Bits : Carrier Frequency (kHz)
0 : SHARP : : 1050 : 13 : 37
1 : SHARP : : 1090 : 13 : 38
2 : SHARP : : 1010 : 13 : 35
3 : SHARP : : 10E0 : 13 : 36
4 : SHARP : : 1060 : 13 : 50
5 : SHARP : : 10A0 : 13 : 36
6 : SHARP : : 1020 : 13 : 41
7 : SHARP : : 10C0 : 13 : 37
8 : SHARP : : 1040 : 13 : 41
9 : SHARP : : 1080 : 13 : 40
Note: Be sure to use the correct Carrier frequency, for each individual signal, as(or if) indicated above
*/
// NB: Not all protocols are supported by IRremote or IRLib. You may need to edit the code below manually
// Automatically Generated by AnalysIR for leif@email.redacted, visit https://www.AnalysIR.com/ or email info@....... for further details
int khz=38; //NB Change this default value as neccessary to the correct carrier frequency
irsend.sendSharp(0x1050, 13); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: SHARP, Key:
irsend.sendSharp(0x1090, 13); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: SHARP, Key:
irsend.sendSharp(0x1010, 13); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: SHARP, Key:
irsend.sendSharp(0x10E0, 13); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: SHARP, Key:
irsend.sendSharp(0x1060, 13); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: SHARP, Key:
irsend.sendSharp(0x10A0, 13); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: SHARP, Key:
irsend.sendSharp(0x1020, 13); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: SHARP, Key:
irsend.sendSharp(0x10C0, 13); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: SHARP, Key:
irsend.sendSharp(0x1040, 13); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: SHARP, Key:
irsend.sendSharp(0x1080, 13); //AnalysIR Batch Export (IRremote) // AnalysIR IR Protocol: SHARP, Key:
Unknown signals can be captured as RAW, and known protocols can be converted to RAW and exported.
Result:
/*
Automatically Generated by AnalysIR - Batch Export Utility
Registered to: leif@email.redacted
Session History
Type : Key : Value : Bits : Carrier Frequency (kHz)
0 : RAW : : : : 37
1 : RAW : : : : 38
2 : RAW : : : : 35
3 : RAW : : : : 36
4 : RAW : : : : 50
5 : RAW : : : : 36
6 : RAW : : : : 41
7 : RAW : : : : 37
8 : RAW : : : : 41
9 : RAW : : : : 40
Note: Be sure to use the correct Carrier frequency, for each individual signal, as(or if) indicated above
*/
// NB: Not all protocols are supported by IRremote or IRLib. You may need to edit the code below manually
// Automatically Generated by AnalysIR for leif@email.redacted, visit https://www.AnalysIR.com/ or email info@....... for further details
int khz=38; //NB Change this default value as neccessary to the correct carrier frequency
unsigned int Signal_0_0[] = {312,1804,288,756,288,760,288,756,288,760,288,756,288,1804,288,756,288,1800,288,760,288,756,288,756,288,760,288,1804,288,756,292,46948,264,1824,268,780,240,804,240,804,240,808,240,1876,244,776,240,1792,328,772,244,1700,416,1728,360,1848,244,1764,328,776,240,1852,264,42824,268,1752,340,776,240,804,240,804,244,804,240,804,244,1852,264,776,240,1880,240,776,240,804,244,804,240,804,244,1876,240,776,244}; //AnalysIR Batch Export (IRremote) - RAW
irsend.sendRaw(Signal_0_0, sizeof(Signal_0_0)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
// AnalysIR IR Protocol: RAW, Key:
unsigned int Signal_1_1[] = {248,1872,280,764,280,768,248,796,252,792,252,1840,276,768,256,788,248,1844,252,792,224,824,248,796,248,800,220,1868,252,792,248,46992,248,1872,252,792,220,824,224,820,224,824,224,824,220,1840,252,1864,224,824,248,1812,276,1840,252,1812,248,1872,276,768,248,1840,276,42788,320,1796,292,728,316,728,320,752,292,756,292,1796,292,716,332,752,292,1772,316,756,292,752,292,728,316,728,320,1772,316,728,316}; //AnalysIR Batch Export (IRremote) - RAW
irsend.sendRaw(Signal_1_1, sizeof(Signal_1_1)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
// AnalysIR IR Protocol: RAW, Key:
unsigned int Signal_2_2[] = {312,1804,288,760,284,760,284,760,288,760,288,756,288,760,284,760,284,1808,284,760,284,760,284,760,288,760,284,1808,284,760,284,48000,312,1804,284,760,288,756,288,760,284,764,284,1804,284,1804,288,1804,284,760,284,1804,284,1804,288,1804,284,1808,284,760,284,1804,288,41732,312,1808,280,764,284,760,284,764,284,760,288,760,284,760,284,760,284,1808,284,760,284,760,288,760,284,760,288,1804,284,760,284}; //AnalysIR Batch Export (IRremote) - RAW
irsend.sendRaw(Signal_2_2, sizeof(Signal_2_2)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
// AnalysIR IR Protocol: RAW, Key:
unsigned int Signal_3_3[] = {268,1848,272,776,272,772,272,772,244,804,240,1852,268,1820,268,1820,272,772,244,804,240,804,244,804,240,804,244,1848,240,804,240,45960,304,1808,284,764,252,792,280,764,284,764,288,756,292,756,288,756,288,1800,292,1800,288,1800,292,1796,292,1800,288,760,288,1800,288,43820,308,1808,284,760,284,764,284,760,284,764,284,1804,284,1804,284,1808,284,760,284,764,284,760,284,760,284,764,284,1808,280,764,284}; //AnalysIR Batch Export (IRremote) - RAW
irsend.sendRaw(Signal_3_3, sizeof(Signal_3_3)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
// AnalysIR IR Protocol: RAW, Key:
unsigned int Signal_4_4[] = {276,1812,300,748,268,776,272,776,268,776,272,776,268,1708,416,1736,348,748,268,776,272,772,272,776,272,772,272,1772,348,744,272,46996,268,1852,240,776,240,804,240,804,244,804,240,1880,240,776,240,804,240,1876,244,1632,456,1836,256,1668,420,1824,268,776,240,1748,368,42824,268,1848,244,772,244,804,240,804,240,808,240,804,240,1880,240,1848,240,776,244,804,240,804,240,804,244,804,240,1876,244,776,240}; //AnalysIR Batch Export (IRremote) - RAW
irsend.sendRaw(Signal_4_4, sizeof(Signal_4_4)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
// AnalysIR IR Protocol: RAW, Key:
unsigned int Signal_5_5[] = {312,1804,288,760,284,760,284,760,288,760,284,1808,284,760,284,1804,288,756,288,760,288,756,288,760,284,760,288,1804,284,760,288,46952,312,1804,284,764,284,760,284,760,284,764,284,760,288,1804,284,760,284,1804,284,1804,288,1804,284,1804,284,1808,284,760,288,1804,284,42780,312,1804,288,756,288,760,288,756,288,760,284,1804,288,756,288,1804,284,760,288,760,284,760,284,760,288,760,284,1804,288,760,284}; //AnalysIR Batch Export (IRremote) - RAW
irsend.sendRaw(Signal_5_5, sizeof(Signal_5_5)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
// AnalysIR IR Protocol: RAW, Key:
unsigned int Signal_6_6[] = {268,1824,268,776,240,804,244,804,240,804,244,804,240,804,244,1816,300,776,240,804,240,808,240,804,240,808,240,1820,272,800,244,48068,268,1780,312,776,240,804,240,804,244,804,240,1832,288,1748,316,800,240,1880,240,1776,312,1820,268,1788,304,1824,268,776,240,1848,268,41780,268,1768,320,780,240,804,240,804,240,808,240,804,240,808,240,1832,284,776,244,804,240,804,240,804,240,808,240,1880,240,776,240}; //AnalysIR Batch Export (IRremote) - RAW
irsend.sendRaw(Signal_6_6, sizeof(Signal_6_6)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
// AnalysIR IR Protocol: RAW, Key:
unsigned int Signal_7_7[] = {320,1800,288,728,320,724,320,728,316,732,316,1772,316,1776,316,728,316,728,320,724,320,724,320,756,292,728,316,1800,292,724,320,46948,320,1800,288,728,316,732,312,728,320,728,316,708,340,728,316,1772,320,1800,288,1800,292,1772,316,1772,316,1804,288,728,316,1800,292,42772,316,1800,292,728,276,768,276,768,304,744,276,1844,288,1800,288,728,276,768,280,768,304,740,308,736,304,744,308,1812,292,724,308}; //AnalysIR Batch Export (IRremote) - RAW
irsend.sendRaw(Signal_7_7, sizeof(Signal_7_7)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
// AnalysIR IR Protocol: RAW, Key:
unsigned int Signal_8_8[] = {268,1716,372,780,240,804,240,804,244,804,240,804,240,1776,344,776,240,804,244,804,240,804,240,804,244,804,240,1780,340,776,240,48072,268,1848,240,776,240,804,244,804,240,808,240,1820,296,776,240,1796,320,1824,268,1776,312,1824,268,1756,332,1852,240,776,244,1804,312,41780,264,1824,264,780,240,804,244,804,240,804,244,804,240,1876,240,776,244,804,240,804,240,804,244,804,240,804,244,1848,268,776,244}; //AnalysIR Batch Export (IRremote) - RAW
irsend.sendRaw(Signal_8_8, sizeof(Signal_8_8)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
// AnalysIR IR Protocol: RAW, Key:
unsigned int Signal_9_9[] = {268,1820,272,776,240,804,240,808,240,804,240,1760,360,776,240,804,240,808,240,804,240,804,240,808,240,804,240,1816,304,776,240,48072,240,1752,364,780,240,804,240,804,244,804,240,804,244,1752,360,1852,240,1636,456,1844,244,1820,268,1848,244,1728,364,772,244,1848,268,41780,264,1824,268,776,244,804,240,804,240,808,240,1848,244,800,244,804,240,804,240,804,244,804,240,804,244,804,240,1804,316,776,240}; //AnalysIR Batch Export (IRremote) - RAW
irsend.sendRaw(Signal_9_9, sizeof(Signal_9_9)/sizeof(int), khz); //AnalysIR Batch Export (IRremote) - RAW
// AnalysIR IR Protocol: RAW, Key:
Iām not sure why it exports as unsigned int meaning 32 bits per value. I search-and-replaced with uint16_t because thatās what the āIRremoteESP8266ā library expects.