Logitech Setpoint & Plexamp


#1

It seems that Logitech Setpoint (comes with my MX5500 keyboard) eats all the media keys (play/pause, next, prev) and only passes them to apps it knows about. This is controlled with the C:\Program Files\Logitech\SetPointP\players.ini file. There are entries in there for lots of players, but not, of course, our favorite new player, plexamp. This is all documented fairly well in this post.

Unfortunately, I don't know what all the fields in that file mean and haven't been able to get a working entry in there. Anyone have any hints?

Here's the line I tried:
Plexamp=key,Plexamp.exe,xxx,xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Plexamp

Here the other entries in the file:

#List of supported players
#{btn|key|msg|emg|cmd|wac},exeName,wndClass,wndCaption,xxx,play_delayplay,pause,stop,prev,next,remove_flags,ShowOSD,menu_item
#special char --> ^ ctrl;+ shift+ctrl; $ ctrl (no translation); * alt (no translation); \@ ctrl+alt (no tanslation); & (no translation)
[Players]
MusicMatch7=wac,MMJB.EXE,MMJB:MAINWND,xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,MusicMatch
MusicMatch=cmd,MMJB.EXE,xxx,MusicMatch Jukebox 4,xxx,0x101F4,0x18059,0x101F5,0x101F6,0x101F7,0,1,MusicMatch
MDesktop=wac,MDesktop.exe,MediaDesktopClass,Media Desktop,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Media Desktop
PowerDVD=key,PowerDVD.exe,xxx,CyberLink PowerDVD,xxx,0x0d,0x20,S,P,N,0,1,Power DVD
WinDVD=wac,WinDVD.exe,WinDVDClass,Player,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Win DVD
WinDVD4=key,WinDVD.exe,WinDVDClass,InterVideo WinDVD 4,xxx,0x0d,0x20,0x23,0x21,0x22,0,1,Win DVD
WinDVD5=key,WinDVD.exe,WinDVDClass,InterVideo WinDVD 5,xxx,0x0d,0x20,0x23,0x21,0x22,0,1,Win DVD
WinDVD6=key,WinDVD.exe,WinDVDClass,InterVideo WinDVD 6,xxx,0x0d,0x20,0x23,0x21,0x22,0,1,Win DVD
WinDVD7=key,WinDVD.exe,WinDVDClass,InterVideo WinDVD 7,xxx,0x0d,0x20,0x23,0x21,0x22,0,1,Win DVD
iTunes_104=wac,iTunes.exe,ITWindow,xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,iTunes
iTunes=wac,iTunes.exe,ITunes,xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,iTunes
MSMedia9=wac,wmplayer.exe,WMPlayerApp,Windows Media Player,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Windows Media Player 9
MSMedia7=wac,wmplayer.exe,WMP Skin Host,Windows Media Player,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Windows Media Player 7
MediaCenter=wac,ehshell.exe,eHome Render Window,xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Windows Media Center
WinAmp3=key,studio.exe,STUDIO,xxx,xxx,X,C,V,Z,B,0,1,WinAmp 3
WinAmp3d=key,winamp3.exe,STUDIO,xxx,xxx,X,C,V,Z,B,0,1,WinAmp 3d
Plexamp=key,Plexamp.exe,xxx,xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Plexamp
Rhapsody=key,Rhapsody.exe,xxx,Rhapsody,xxx,^P,^P,^S,^B,^F,0,1,Rhapsody
#YahooMusicEngine=key,YahooMusicEngine.exe,YMPFrame,xxx,xxx,^ ,^ ,^S,$0x25,$0x27,0,1,Yahoo! Music Jukebox
YahooMusicEngine=key,YahooMusicEngine.exe,YMPFrame,xxx,xxx,^ ,^ ,^S,$0x25,$0x27,0,1,Yahoo! Music Jukebox
RealOne=wac,realplay.exe,GeminiWindowClass,xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,RealOne Player
WinAmp5=cmd,winamp.exe,Winamp v1.x,xxx,xxx,40045,40046,40047,40044,40048,0,1,WinAmp 5
MediaLife=key,Medialife.exe,MediaLife Frame class,Logitech MediaLife,xxx, , ,S,P,N,0,1,MediaLife
MediaLife4=wac,Medialife.exe,MediaLife Koan GDI Class,xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,MediaLife
PLAYDVD=key,PlayDVD.exe,PlayDVD Frame class,Play DVD,xxx, , ,S,P,N,0,1,PlayDVD
Nero=wac,NeroHome.exe,xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,NeroHome
Nero2=wac,ShowTime.exe,xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,ShowTime
Nero3=wac,Nero.exe,xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Nero
BaoFeng=key,storm.exe,xxx,xxx,xxx, , ,$0x53,&0x21,&0x22,0,1,Bao Feng
Koowoo=key,KwMusic.exe,xxx,xxx,xxx,$0x74,$0x74,$0x75,?0x25,?0x27,0,1,Koowoo
TTing=key,tting.exe,xxx,xxx,xxx,@0x4f,@0x4f,@0x4f,@0x25,@0x27,0,1,TTing
#Pctutu=key,PPStream.exe,xxx,xxx,xxx, , ,^S,^0x21,^0x22,0,1,Pctutu

[Players.Run]
MediaCenter=path,$WINDOWS\eHome
WinAmp3=reg,HKLM,SOFTWARE\Classes\Winamp3.File\DefaultIcon,,2
Rhapsody=reg,HKCR,rhap\DefaultIcon,,5
WinAmp5=reg,HKLM,SOFTWARE\Classes\Winamp.File\DefaultIcon,,2
YahooMusicEngine=reg,HKCR,TypeLib{2C5EBFB1-9174-4FE8-88DB-D1F460A9E83B}\1.0\0\win32,,
Koowoo=reg,HKLM,SOFTWARE\Classes\kwfile_ksf\shell\open\command,,5

[Players.Display]
MediaCenter=Windows Media Center
RealOne=RealOne Player
WinDVD=WinDVD
WinDVD4=WinDVD4
WinDVD5=WinDVD5
WinDVD6=WinDVD6
WinDVD7=WinDVD7
MediaLife=MediaLife
PLAYDVD=PlayDVD

#{btn|key|msg|emg|cmd|wac},start,end,repeat start,,Donot send Play appcommand at end of FastForward operation
[Players.Seek]
MusicMatch7=cmd,22861,xxx,1
MediaLife=wac,xxx,xxx,1,0
MediaLife4=wac,xxx,xxx,0,1
PowerDVD=wac,xxx,,0,1
MediaCenter=wac,xxx,xxx,0,1
PLAYDVD=key,F,,0,1
iTunes_104=wac,xxx,xxx,1,0
iTunes=wac,xxx,xxx,1,0
WinDVD7=key,F,0x0d,xxx,0
WinDVD6=key,F,0x0d,xxx,0
WinDVD5=key,F,0x0d,xxx,0
WinDVD4=key,F,0x0d,xxx,0
WinAmp5=cmd,40060,xxx,1,1
MSMedia9=wac,xxx,xxx,0,0
RealOne=key,^],,2,1

#{btn|key|msg|emg|cmd|wac},start,end,repeat start,Donot send Play appcommand at end of rewind operation
[Players.Rewind]
PowerDVD=wac,xxx,,0,1
MusicMatch7=cmd,22860,xxx,1,0
MediaLife=wac,xxx,xxx,1,1
MediaLife4=wac,xxx,xxx,0,1
MediaCenter=wac,xxx,xxx,0,1
PLAYDVD=key,B,,0,1
iTunes_104=wac,xxx,xxx,1,0
iTunes=wac,xxx,xxx,1,0
WinDVD7=key,R,0x0d,xxx,0
WinDVD6=key,R,0x0d,xxx,0
WinDVD5=key,R,0x0d,xxx,0
WinDVD4=key,R,0x0d,xxx,0
WinAmp5=cmd,40061,xxx,1,1
MSMedia9=wac,xxx,xxx,0,0
RealOne=key,^[,,2,1

#list of Burn UI players (available on Burn button)
[Players.BurnSupported]
MSMedia9=True
MusicMatch7=True
Nero3=True

#list of Record UI players (available on Record button)
[Players.RecordSupported]
MSMedia9=True
MusicMatch7=True
Nero3=True

#list of 10" UI players (available on remote button)
[Players.IsRemote]
MDesktop=Trues
MediaCenter=True
MediaLife=True
WinDVD=True
WinDVD4=True
WinDVD5=True
WinDVD6=True
WinDVD7=True
PowerDVD=True
PLAYDVD=True


#2

Wow, great question, unfortunately I don 't have any advice. Have you tried asking their support what those fields mean? Maybe we could get it supported by default. Feel free to pass them my email elan at plex dot tv if they need contact info.


#3

This is all guesswork since my Logitech Keyboard is at home and I’m at work, ahem. The format seems good to me:

{btn|key|msg|emg|cmd|wac},exeName,wndClass,wndCaption,xxx,play_delayplay,pause,stop,prev,next,remove_flags,ShowOSD,menu_item

{btn|key|msg|emg|cmd|wac} = How to send the command to the program, key looks to be the favourite
exeName = executable filename, Plexamp.exe
wndClass = Window Class, so for an electron app this is likely, Chrome_WidgetWin_1 (Googling or using a window spy like Spy++ or the one that comes with AutoHotKey)
wndCaption = Window Caption/Title, it’s not visible, but it’s Plexamp
xxx = Probably some old option
play_delayplay = Key codes, a bit of Googling reveals that Chrome [1] likes these… &0xB3
pause = &0xB3
stop = &0xB2
prev = &0xB1
next = &0xB0
remove_flags = No idea
ShowOSD = Show the Logitech SetPoint OSD or not
menu_item = What to display in SetPoint

So let’s put that all together:

Plexamp=key,Plexamp.exe,Chrome_WidgetWin_1,Plexamp,xxx,&0xB3,&0xB3,&0xB2,&0xB1,&0xB0,0,1,Plexamp

Another option might be:

Plexamp=wac,Plexamp.exe,Chrome_WidgetWin_1,Plexamp,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Plexamp

I think this latter one might just pass the keys through rather than translate them.

I’ve not tested these yet, and I’m unsure when I’ll get the chance. Please do test them, perhaps leaving out the wndCaption in each of them by replacing it with xxx.

Failing that further Googling reveals a potential way to disable SetPoint’s interception of the multimedia keys: https://getmusicbee.com/forum/index.php?topic=9079.msg137002#msg137002

Good luck!

[1] https://gist.github.com/julianxhokaxhiu/f5ea4bb922e3ab1d7fec


#4

Thanks, @stedaniels, super helpful :smiley:


#5

I can confirm that
‘Plexamp=key,Plexamp.exe,Chrome_WidgetWin_1,Plexamp,xxx,&0xB3,&0xB3,&0xB2,&0xB1,&0xB0,0,1,Plexamp’
works!


#6

This was helpful. Thanks!