Here is the code
When I press Pause in the HP remote (default profile), it gives an error message related to the default section, but in the xbox1 remote (xbox 1 remote 10th char is equal to 24 decimal, as HPRem Pause 6th byte is the same). This is really strange, I'm trying to make it work comenting the xbox1 section.
Same script in XP/Vista and latest AutoHotkey
Gonna start checking with ErrorLevel
Code:
;Must be in auto-execute section if I want to use the constants
#Include %A_ScriptDir%\AHKHID.ahk
;Create GUI to receive messages
Gui, +LastFound
hGui := WinExist()
;Intercept WM_INPUT messages
WM_INPUT := 0xFF
OnMessage(WM_INPUT, "InputMsg")
;Register Remote Control with RIDEV_INPUTSINK (so that data is received even in the background)
r := HID_Register(65468, 137, hGui, RIDEV_INPUTSINK)
;Prefix loop
Loop
{
Sleep 1000
If WinActive("ahk_class Winamp v1.x") Or WinActive("ahk_class Winamp EQ") Or WinActive("ahk_class Winamp PE") Or WinActive("ahk_class Winamp Gen")
sPrefix := "Winamp"
Else If WinActive("ahk_class MediaPlayerClassicW")
sPrefix := "MPC"
Else If WinActive("ahk_class eHome Render Window")
sPrefix := "VMC"
Else If WinActive("ahk_class MozillaUIWindowClass")
sPrefix := "Youtube"
Else If WinActive("ahk_class ShockwaveFlashFullScreen")
sPrefix := "YoutubeFS"
Else
{
sPrefix := "Default"
}
}
Return
InputMsg(wParam, lParam)
{
Local devh, iKey, sLabel, bCallEvent
Critical
;Get handle of device
devh := HID_GetInputInfo(lParam, II_DEVHANDLE)
;Check for error
If (devh <> -1) ;Check that it is my HP remote
And (HID_GetDevInfo(devh, DI_DEVTYPE, True) = RIM_TYPEHID)
And (HID_GetDevInfo(devh, DI_HID_VENDORID, True) = 1118)
And (HID_GetDevInfo(devh, DI_HID_PRODUCTID, True) = 109)
And (HID_GetDevInfo(devh, DI_HID_VERSIONNUMBER, True) = 272)
{
;Get data
iKey := HID_GetInputData(lParam, uData)
;Check for error
If (NumGet(uData, 6, "UChar") = 132) or (NumGet(uData, 6, "UChar") = 4)
{ ;IT'S THE REMOTE
If (iKey <> -1)
{
;Get keycode (located at the 6th byte)
iKey := NumGet(uData, 5, "UChar")
;Set prefix
sDevicePrefix := "HPRem"
;We're gonna have to call
bCallEvent := True
}
}
/*
else If (NumGet(uData, 9, "UChar") = 24)
{ ;IT'S THE XBOX1 controller
If (iKey <> -1)
{
;Get keycode (located at the 6th byte)
iKey := NumGet(uData, 5, "UChar")
;Set prefix
sDevicePrefix := "XBOX1"
;We're gonna have to call
bCallEvent := True
}
}
*/
/*
;Check if we need to call
If bCallEvent
{
;Call the appropriate sub if it exists
*/
sLabel := sDevicePrefix "_" sPrefix "_" iKey
If IsLabel(sLabel)
Gosub, %sLabel%
/*
else ;If IsLabel(!sLabel)
{
sPrefix := "Default"
sLabel := sDevicePrefix "_" sPrefix "_" iKey
;If IsLabel(sLabel)
Gosub, %sLabel%
}
}
*/
}
}
;######################################################################################################################
;####### HPRem_Default Section ######################################################################################
;######################################################################################################################
HPRem_Default_12: ;Power
;
return
HPRem_Default_50: ;Vizualization
SendInput ^{esc}
return
HPRem_Default_78: ;Print
;
return
HPRem_Default_80: ;Radio
;; SendInput
return
HPRem_Default_71: ;Music
;; SendInput
return
HPRem_Default_73: ;Pictures
;; SendInput
return
HPRem_Default_74: ;Videos
;; SendInput
return
HPRem_Default_36: ;DVD menu
;; SendInput
return
HPRem_Default_72: ;Recorder TV
;; SendInput
return
HPRem_Default_38: ;Guide
;; SendInput
return
HPRem_Default_37: ;Live TV
;; SendInput
return
HPRem_Default_39: ;Aspect
;; SendInput
return
HPRem_Default_51: ;slideShow
;; SendInput
return
HPRem_Default_15: ;More info
;; SendInput
return
HPRem_Default_30: ;Up
;; SendInput
return
HPRem_Default_32: ;Left
; SendInput
return
HPRem_Default_34: ;Ok
; SendInput
return
HPRem_Default_33: ;Right
; SendInput
return
HPRem_Default_31: ;Down
; SendInput
return
HPRem_Default_35: ;Back
; SendInput
return
HPRem_Default_16: ;Volume +
; SendInput
return
HPRem_Default_13: ;Green Button
; SendInput
return
HPRem_Default_18: ;Channel +
; SendInput
return
HPRem_Default_17: ;Volume -
; SendInput
return
HPRem_Default_14: ;Mute
; SendInput
return
HPRem_Default_19: ;Channel -
; SendInput
return
HPRem_Default_23: ;Record
;Run, E:\Remote CMDs\MicMute.exe
return
HPRem_Default_52: ;Eject
;Run, E:\Remote CMDs\LineInMute.exe
return
HPRem_Default_21: ;Rewind
; SendInput
return
HPRem_Default_22: ;Play
; SendInput
return
HPRem_Default_24: ;Pause
; SendInput
return
HPRem_Default_20: ;Forward
; SendInput
return
HPRem_Default_27: ;Skip <<-
; SendInput
return
HPRem_Default_25: ;Stop
; SendInput
return
HPRem_Default_26: ;Skip ->>
; SendInput
return
HPRem_Default_1: ;1 Symbols
SetKeyDelay, 0, 50
ControlSend, VideoRenderer1, {space}, ahk_class MediaPlayerClassicW
return
HPRem_Default_2: ;2 abc
; SendInput
return
HPRem_Default_3: ;3 def
; SendInput
return
HPRem_Default_4: ;4 ghi
; SendInput
return
HPRem_Default_5: ;5 jkl
; SendInput
return
HPRem_Default_6: ;6 mno
; SendInput
return
HPRem_Default_7: ;7 pqrs
; SendInput
return
HPRem_Default_8: ;8 tuv
; SendInput
return
HPRem_Default_9: ;9 wxyz
; SendInput
return
HPRem_Default_29: ;*
; SendInput
return
HPRem_Default_0: ;0 space
; SendInput
return
HPRem_Default_28: ;#
; SendInput
return
HPRem_Default_10: ;Clear
; SendInput
return
HPRem_Default_11: ;Enter
; SendInput
return
;######################################################################################################################
;####### HPRem_vmc Section ##########################################################################################
;######################################################################################################################
HPRem_VMC_1: ;1 Symbols
Sendinput 1
return
HPRem_VMC_2: ;2 abc
SendInput 2
return
HPRem_VMC_3: ;3 def
SendInput 3
return
HPRem_VMC_4: ;4 ghi
SendInput 4
return
HPRem_VMC_5: ;5 jkl
SendInput 5
return
HPRem_VMC_6: ;6 mno
SendInput 6
return
HPRem_VMC_7: ;7 pqrs
SendInput 7
return
HPRem_VMC_8: ;8 tuv
SendInput 8
return
HPRem_VMC_9: ;9 wxyz
SendInput 9
return
HPRem_VMC_29: ;*
SendInput *
return
HPRem_VMC_0: ;0 space
SendInput 0
return
;######################################################################################################################
;####### HPRem_MPC Section ##########################################################################################
;######################################################################################################################
HPRem_MPC_1: ;1 Symbols
; SetKeyDelay, 0, 50
; ControlSend, VideoRenderer1, ^{Left}, ahk_class MediaPlayerClassicW
return
HPRem_MPC_2: ;2 abc
SetKeyDelay, 0, 50
ControlSend, VideoRenderer1, {space}, ahk_class MediaPlayerClassicW
return
HPRem_MPC_3: ;3 def
ControlSend, VideoRenderer1, ^{right}, ahk_class MediaPlayerClassicW
return
HPRem_MPC_4: ;4 ghi
ControlSend, VideoRenderer1, ^{enter}, ahk_class MediaPlayerClassicW
return
HPRem_MPC_5: ;5 jkl
SendInput 5
return
HPRem_MPC_6: ;6 mno
SendInput 6
return
HPRem_MPC_7: ;7 pqrs
SendInput 7
return
HPRem_MPC_8: ;8 tuv
SendInput 8
return
HPRem_MPC_9: ;9 wxyz
SendInput 9
return
HPRem_MPC_29: ;*
SendInput *
return
HPRem_MPC_0: ;0 space
SendInput 0
return
;######################################################################################################################
;####### HPRem_Winamp Section #######################################################################################
;######################################################################################################################
HPRem_Winamp_1: ;1 Symbols
Sendinput 1
return
HPRem_Winamp_2: ;2 abc
SendInput 2
return
HPRem_Winamp_3: ;3 def
SendInput 3
return
HPRem_Winamp_4: ;4 ghi
SendInput 4
return
HPRem_Winamp_5: ;5 jkl
SendInput 5
return
HPRem_Winamp_6: ;6 mno
SendInput 6
return
HPRem_Winamp_7: ;7 pqrs
SendInput 7
return
HPRem_Winamp_8: ;8 tuv
SendInput 8
return
HPRem_Winamp_9: ;9 wxyz
SendInput 9
return
HPRem_Winamp_29: ;*
SendInput *
return
HPRem_Winamp_0: ;0 space
SendInput 0
return
;######################################################################################################################
;####### HPRem_Youtube Section ######################################################################################
;######################################################################################################################
HPRem_Youtube_1:
Send, {browser_back}
return
HPRem_Youtube_2:
MouseMove, 0, -10, 0, R
return
HPRem_Youtube_3:
MouseClick, left, 786, 624
MouseMove, -100, -200, 0, R
return
HPRem_Youtube_4:
MouseMove, -10, 0, 0, R ; Move cursor to the left
return
HPRem_Youtube_5:
SendEvent {Blind}{LButton down}
KeyWait, Enter ; Prevents keyboard auto-repeat from repeating the mouse click.
SendEvent {Blind}{LButton up}
return
HPRem_Youtube_6:
MouseMove, 10, 0, 0, R
return
HPRem_Youtube_7: ; 6
SendInput {space}
return
HPRem_Youtube_8: ;8 tuv
MouseMove, 0, 10, 0, R ; Move cursor downward
return
HPRem_Youtube_9: ;9 wxyz
SendEvent {Blind}{RButton down}
KeyWait, Enter ; Prevents keyboard auto-repeat from repeating the mouse click.
SendEvent {Blind}{RButton up}
return
HPRem_Youtube_29: ;*
sendinput {down}
return
HPRem_Youtube_0: ;0 space
sendinput {F5}
return
;######################################################################################################################
;####### HPRem_YoutubeFS Section ####################################################################################
;######################################################################################################################
HPRem_YoutubeFS_1:
Send, {browser_back}
return
HPRem_YoutubeFS_2:
MouseMove, 0, -10, 0, R
return
HPRem_YoutubeFS_3:
MouseClick, left, 786, 624
MouseMove, -100, -200, 0, R
return
HPRem_YoutubeFS_4:
MouseMove, -10, 0, 0, R ; Move cursor to the left
return
HPRem_YoutubeFS_5:
SendEvent {Blind}{LButton down}
KeyWait, Enter ; Prevents keyboard auto-repeat from repeating the mouse click.
SendEvent {Blind}{LButton up}
return
HPRem_YoutubeFS_6:
MouseMove, 10, 0, 0, R
return
HPRem_YoutubeFS_7: ; 6
SendInput {space}
return
HPRem_YoutubeFS_8: ;8 tuv
MouseMove, 0, 10, 0, R ; Move cursor downward
return
HPRem_YoutubeFS_9: ;9 wxyz
SendEvent {Blind}{RButton down}
KeyWait, Enter ; Prevents keyboard auto-repeat from repeating the mouse click.
SendEvent {Blind}{RButton up}
return
HPRem_YoutubeFS_29: ;*
sendinput {down}
return
HPRem_YoutubeFS_0: ;0 space
sendinput {up}
return
;######################################################################################################################
;####### HPRem_Default Section ######################################################################################
;######################################################################################################################
XBOX1_Default_42: ;Display
Send, e
return
XBOX1_Default_29: ;Reverse
; SendInput
return
XBOX1_Default_21: ;Play
; SendInput
return
XBOX1_Default_28: ;Forward
; SendInput
return
XBOX1_Default_34: ;Skip -
; SendInput
return
XBOX1_Default_31: ;Stop
; SendInput
return
XBOX1_Default_25: ;Pause
; SendInput
return
XBOX1_Default_32: ;Skip +
; SendInput
return
XBOX1_Default_26: ;Title
; SendInput
return
XBOX1_Default_89: ;Up
; SendInput
return
XBOX1_Default_60: ;Info
; SendInput
return
XBOX1_Default_86: ;Left
; SendInput
return
XBOX1_Default_244: ;Select
; SendInput
return
XBOX1_Default_87: ;Right
; SendInput
return
XBOX1_Default_8: ;Menu
; SendInput
return
XBOX1_Default_88: ;Down
; SendInput
return
XBOX1_Default_39: ;Back
; SendInput
return
XBOX1_Default_49: ;1
; SendInput
return
XBOX1_Default_50: ;2
; SendInput
return
XBOX1_Default_51: ;3
; SendInput
return
XBOX1_Default_52: ;4
; SendInput
return
XBOX1_Default_53: ;5
; SendInput
return
XBOX1_Default_54: ;6
; SendInput
return
XBOX1_Default_55: ;7
; SendInput
return
XBOX1_Default_56: ;8
; SendInput
return
/*
XBOX1_Default_57: ;9
; SendInput
return
*/
XBOX1_Default_48: ;0
SetKeyDelay, 0, 50
ControlSend, VideoRenderer1, {space}, ahk_class MediaPlayerClassicW
;ControlSend, , {bs}, ahk_class eHome Render Window
;send {vk176}
return
not even your original remote script works, so I'm guessing is the way 7 handles AHK, HID works, but in a script totally unrelated to AHKHID, I have so many trouble with ControlSend.
Update: Already tried with ErrorLevel, and noticed the code is not even reaching its destination (trying with MPC), so, the problem for windows 7 relays in the search of the remote code, don't really know where but it has something to do with the byte we're searching for in the remote.