# contributed by angelo castello
#
# note: this config file has been deduced starting from the
#       raw codes provided to run mode2 utility.
#
# brand: futarque

begin remote
  name  futarque
  bits  8
  flags SPACE_ENC|CONST_LENGTH
  eps   30
  aeps  100

  header       8048  3898
  one           555  1436
  zero          555   439
  gap		113123
  ptrail        555
  pre_data_bits   8
  pre_data     0x54
  pre		570  3890

      begin codes
          MUTE                     0x70
          EXIT                     0xA8
          POWER                    0xF0
          CHANNEL_UP               0x50
          CHANNEL_DOWN             0xD0
          VOLUME_UP                0x30
          VOLUME_DOWN              0xB0
          OK                       0x98
          FAVORITES                0x04
          TEXT                     0x68
          EPG                      0xC8
          BACK                     0x48
          MENU                     0x88
          1                        0x00
          2                        0x80
          3                        0x40
          4                        0xC0
          5                        0x20
          6                        0xA0
          7                        0x60
          8                        0xE0
          9                        0x10
          0                        0x90
          PAUSE                    0x84
          INFO                     0x38
          RED                      0xE8
          GREEN                    0x08
          YELLOW                   0x28
          BLUE                     0x78
          UP                       0xD8
          DOWN                     0xB8
          REWIND                   0x44
          FASTFORWARD              0x24
          PLAYPAUSE                0xC4
          STOP                     0x64
          RECORD                   0xA4
          AUDIO                    0xE4
          TAPE                     0x14
          DVD                      0x94
          CAPITAL_A                0xF8
          CAPITAL_B                0x54
      end codes

end remote

# brand: STM PVR-1

begin remote
  name	stm_pvr_1
  bits	16
  flags SPACE_ENC|CONST_LENGTH
  eps	30
  aeps	150

  header	9000  4500
  one		 572  1700
  zero		 572   572
  ptrail	 572
  repeat	9000  2200
  pre_data_bits	  16
  pre_data	0xFE
  gap		100000

      begin codes
          POWER			0x00ff
          FAVORITES		0x7887
          MUTE			0x28d7
          0			0x708F
          1			0xc03f
          2			0x40bf
          3			0x807f
          4			0xe01f
          5			0x609f
          6			0xa05f
          7			0xd02f
          8			0x50af
          9			0x906f
          INFO			0x38c7
          SUBTITLE		0xe817
          MENU			0x9867
          EXIT			0x20df
          EPG			0xa857
          BACK			0x48b7
          CURSOR_UP		0x58a7
          CURSOR_DOWN		0xd827
          CURSOR_LEFT		0x8877
          CURSOR_RIGHT		0xb04f
          OK			0x10ef
          VOLUME_UP		0x22dd
          VOLUME_DOWN		0x8a75
          CHANNEL_UP		0x12ed
          CHANNEL_DOWN		0x4ab5
          TEXT			0xf00f
          RADIO			0x926d
          ZOOM			0x6897
          AUDIO			0x08f7
          RED			0x42bd
          GREEN			0xa25d
          YELLOW		0x827d
          BLUE			0x02fd
          CUSTOM0		0x52ad
          CUSTOM1		0x30cf
          PLAY			0x629d
          PAUSE			0xb24d
          PREVIOUS		0xc837
          NEXT			0xf807
          REWIND		0x32cd
          FASTFORWARD		0x0af5
          AUX			0x7a85
          CUSTOM3		0xb847
          PIP			0x3ac5
          SWAP			0xba45
      end codes

end remote

# brand: STM DTV-2

begin remote

  name		stm_dtv_2
  flags	SHIFT_ENC|CONST_LENGTH
  bits		13
  aeps	150

  one		850 850
  zero		850 850
  plead		850
  gap		67800
  toggle_bit	2

  begin codes
	POWER			0x100C
	FAVORITES		0x1015
	AUX			0x1038
	1			0x1001
	2			0x1002
	3			0x1003
	4			0x1004
	5			0x1005
	6			0x1006
	7			0x1007
	8			0x1008
	9			0x1009
	PERIOD			0x1024
	0			0x103E
	BACK			0x1023
	MENU			0x1016
	INFO			0x100F
	EPG			0x101E
	EXIT			0x1018
	CURSOR_UP		0x1017
	CURSOR_DOWN		0x101D
	CURSOR_LEFT		0x1019
	CURSOR_RIGHT		0x101B
	OK			0x101A
	VOLUME_UP		0x1010
	VOLUME_DOWN		0x1011
	CHANNEL_UP		0x1020
	CHANNEL_DOWN		0x1021
	TEXT			0x102E
	SUBTITLE		0x103C
	FREEZE			0x1014
	ZOOM			0x102B
	RED			0x1028
	GREEN			0x102A
	YELLOW			0x102F
	BLUE			0x1030
	CUSTOM10		0x1022
	INTERNET		0x1027
	CUSTOM11		0x102C
	AUDIO			0x1025
	RECORD			0x102D
	PLAYPAUSE		0x1029
	STOP			0x1026
	CUSTOM1			0x101C
	MUTE			0x100d
	CUSTOM12		0x101F
	PIP			0x100B
	SWAP			0x100E
  end codes

end remote

# brand:  Comcast
# model no. of remote control: XR2
# 32 bits for the pre-date (should be value 0x170F443E)
# width between pre_bits and data: 12900 microseconds
#
# 24 bits for the data (key code)
# To get key REPEAT, XOR 0x088 with KEY value
# There are 8 post bits (both should be zero)
#
# Gap between keys: 8100 microseconds
begin remote

  name Xfinity-XR2
  bits 24
  flags XMP
  eps            20
  aeps          300

  one             0   137
  zero          250   710
  ptrail        250
  pre_data_bits   32
  pre_data       0x170F443E
  post_data_bits  8
  post_data      0x0
  pre           250 12921
  gap          81698
  toggle_bit_mask 0x0

      begin codes
          1                      0x1E0001
          1_repeat               0x168001
          2                      0x1D0002
          2_repeat               0x158002
          3                      0x1C0003
          3_repeat               0x148003
          4                      0x1B0004
          4_repeat               0x138004
          5                      0x1A0005
          5_repeat               0x128005
          6                      0x190006
          6_repeat               0x118006
          7                      0x180007
          7_repeat               0x108007
          8                      0x170008
          8_repeat               0x1F8008
          9                      0x160009
          9_repeat               0x1E8009
          0                      0x1F0000
          0_repeat               0x178000
          OK                     0x180025
          OK_repeat              0x108025
          POWER                  0x10000F
          POWER_repeat           0x18800F
          UP                     0x1C0021
          UP_repeat              0x148021
          DOWN                   0x1B0022
          DOWN_repeat            0x138022
          LEFT                   0x1A0023
          LEFT_repeat            0x128023
          RIGHT                  0x190024
          RIGHT_repeat           0x118024
          REWIND                 0x190033
          REWIND_repeat          0x118033
          PLAY                   0x1C0030
          PLAY_repeat            0x148030
          FASTFORWARD            0x180034
          FASTFORWARD_repeat     0x108034
          RECORD                 0x170035
          RECORD_repeat          0x1F8035
          REPLAY                 0x170053
          REPLAY_repeat          0x1F8053
          A                      0x190060
          A_repeat               0x118060
          B                      0x180061
          B_repeat               0x108061
          C                      0x170062
          C_repeat               0x1F8062
          D                      0x160063
          D_repeat               0x1E8063
          PAGE_UP                0x150028
          PAGE_UP_repeat         0x1D8028
          PAGE_DOWN              0x140029
          PAGE_DOWN_repeat       0x1C8029
          GUIDE                  0x160027
          GUIDE_repeat           0x1E8027
          MENU                   0x1D0020
          MENU_repeat            0x158020
          EXIT                   0x13002A
          EXIT_repeat            0x1B802A
          INFO                   0x170026
          INFO_repeat            0x1F8026
          LAST                   0x190051
          LAST_repeat            0x118051
          VOLUME_UP              0x15000A
          VOLUME_UP_repeat       0x1D800A
          CHANNEL_UP             0x12000D
          CHANNEL_UP_repeat      0x1A800D
          VOLUME_DOWN            0x14000B
          VOLUME_DOWN_repeat     0x1C800B
          CHANNEL_DOWN           0x11000E
          CHANNEL_DOWN_repeat    0x19800E
          MUTE                   0x13000C
          MUTE_repeat            0x1B800D
      end codes

end remote
