Customizing the Internet Keyboard 350 multimedia player key

Submitted by Frederic Marand on Sun, 2006-12-24 01:50

After drowning my faithful old keyboard with my morning coffee, I had to replace it and, after taking some time to find a corded keyboard without a zillion useless keys, without shiny platic, with cursor keys in their standard location, and a reasonable touch feeling, I bought an OEM version of the Logitech Internet Keyboard 350 USB and am indeed quite satisfied with the keyboard look and touch.

No driver

Now, minimal though that keyboard is, it still has these small multimedia keys on top, and under XP they're handled by default. Most choices were just fine, but the media player defaulting to RealPlayer didn't fit my wishes: I'd rather run VLC in these cases to show FreeTV. But the keyboard isn't supplied with a driver, and installing Logitech's setpoint™ actually removes functionality to these keys when compared with the XP default driver. So exit SetPoint and back to the default driver.

Finding key codes

Now, how to redirect that key ? For once, google proved of little help: the keycodes werent documented, so a bit of Delphi enabled me to obtain the key codes, which are as follows:

  • (key) : (hex virtual key code)
  • Multimedia Player : B5
  • Email : B4
  • Home page : AC
  • Calculator : B7
  • Play/Pause : BB
  • Lower volume : AE
  • Higher volume : AF
  • Mute : AD

However, this seemed to go nowhere : I would not run a keyboard hooking program just for that key. So what ? It seemed logical to have the keys be based on file types.

Media types

After a bit of tweaking, it appears that for some reason, this key is linked to the CDA (CD track) type. Which gives a procedure to customize the key:

  1. open Explorer
  2. go to tools / options / file types
  3. scroll down to CDA
  4. modifiy the default selection using the, replacing the current default by VLC

Now, this is all very nice, but watching FreeTV requires VLC to be run with at least the URL of the playlist: http://mafreebox.freebox.fr/freeboxtv/playlist.m3u. This can be achieved in the same place by using the advanced choice. It may be hidden by the previous modification and appear only if you click Restore first.

This can also be set in the registry, by modifying the HKLM\SOFTWARE\Classes key which currently defines the CDA handler, but it is simpler to do it through the Files types box.

Passing parameters

Problem is: the parameters are not passed to VLC, so the playlist isn't started and VLC stays quiet. Solution : run a BAT file instead. Just two lines will do ; just be sure to use the proper path to VLC.

@echo off
start "TV Glotzer" /D"C:\Program Files\VideoLAN\VLC" vlc.exe --intf wx http://mafreebox.freebox.fr/freeboxtv/playlist.m3u"

Why this syntax ? Why not use a plain:

@echo off
C:\Program Files\VideoLAN\VLC\vlc.exe --intf wx http://mafreebox.freebox.fr/freeboxtv/playlist.m3u

This is because the START batch command allows us to run the program in the background and exit the batch file immediately, closing the DOS window in which the BAT file runs, instead of leaving it opened while watching TV.

Overwrites

All fine ? Well almost... this works just as described, for a moment.

Then after some time, RealPlayer starts running again when hitting the player key: apparently one of the processes in the RP suite considers the setting may have been erased unwillingly and restores RP as the default CDA handler. You'll need to remove the CD from the list of media handled by real from within the Real UI (Tools / Preferences / Content) for Real to admit you don't want it to handle this media type. After that your key customization holds for a bit longer.

However, over time, Real overwrites it anyway, reverting your changes to place their ad-laden UI instead of your own choice. Depressing to have so little control on one's own machine.

TV Glotzer ?

Google should help you on that one :-)

Boring legal stuff

SetPoint is a trademark of Logitech. Sometimes registered, sometimes not. Windows XP is a trademark of Microsoft Corporation. RealPlayer is a trademark of RealNetworks, Inc. Delphi is a registered trademark of Borland Corporation (yes, even in early 2007, Codegear lists it thus).

Max Hamel (not verified)

Wed, 2007-01-03 00:01

Happy New Year! My name is Max Hamel and I am the global product manager for the Internet 350 keyboard working for Logitech you describe above.

Searching on Google Blog, I noticed your comments. I certainly hope you enjoy the keyboard, key feeling and design.

Commenting on your question to why the Media key defaults to Real Player, the keyboard virtual Media key code, which is default from Microsoft, points to the default media player on the PC. If Real Player is the default program, then it will direct accordingly. If you go into Windows Media Player for example, you could change to make that program the default application, and then after the change the keyboard will direct the WMP. Hope this is of help, enjoy. Max

Hi Max,

It's nice to see a product manager taking time to chat with individual users as you are doing. Hope this is a good portent for 2007 !

In this case, the problem is really not with the keyboard, which is just fine itself, but with the fact that Real fights to be restored as the default player. AIUI, MS WMP fights back and can succeed at reinstating itself, but VLC does not (dare I say I prefer this behaviour ?), and I need VLC because (a) accessing FreeTV requires a codec not supported by Real 9 (b) after perusing the EULA for Real 10, I have no intention of accepting it and hence am locked out of that newer version.

I understand why Logitech needs to emit default keycodes for Windows compatibility labeling, but what Logitech could obviously do would be to allow optional user-level mapping of these keys, as you already do for other keyboards, but for all I could see, this specific model is not compatible with SetPoint or any other Logitech driver I could find: it is just ignored by the software. Maybe you could just create a tip on the Logitech knowledge base explaining how to assign user-chosen behaviours to those keys, even if it's just a pair of registry entries to tweak ? I'd sure like to see this, as you can imagine ! But maybe it is a policy choice to keep this model thus limited ?

Of course, using Linux, I could just run xev to check the key events and assign them with xmodmap, but this machine is currently running MS Windows/XP most of the time.

I think i've found the solution you've been looking for. I'm using microsoft multimedia keyboard. I have not installed the drivers but some of the keys just seem to work. After a search in the registry i've found these entries :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\15]
"RegisteredApp"="Mail"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\16]
"Association"=".cda"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\17]
"ShellExecute"="::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\18]
"ShellExecute"="calc.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\7]
"Association"="http"
So if you know the key codes you can either run an application according to the association (as in "Association"=".cda") or rather your very own preferred application (as in "ShellExecute"="calc.exe"). Happy computing!

Thanks Ahmet: this additional information proved to be the key to this mapping. In the case of Free TV and VLC, the simplest method appears to be remapping AppKey 16, and run the command instead of relying on the file type "Association" hooked by Real. In my case, this gives the modified line like this:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\16]
"ShellExecute"="C:\Program Files\VideoLAN\VLC\vlc.exe" --intf wx http://mafreebox.freebox.fr/freeboxtv/playlist.m3u
That's it ! Just pressing the note key on the keyboard now starts the Freebox TV.

Thanks for the information. However, in that case I specifically wanted a corded keyboard, as well as a corded mouse, to avoid battery problems.

I had to remove the direct link to a competitor's site from your comment, though. Here is a link of our own to the french version of this product instead. P/N is 967743-0101.

This being said, one of my companies being a PC assembler, there is an answer I've been trying to obtain without result from Logitech, and maybe you can help ? For our production system, we always need packaging reference lists, matching invidual OEM references like mice or keyboards to bundle products (desktops) or packs, in some machine-usable format. What we need would be some regularly updated list going like:

  • Sample packaging reference:
    • 956388-0600 : SBF90 - Black mouse, PS/2, OEM, 10-pk box
      • 852210-A000 : SBF90 - Black mouse, PS/2, OEM, individual
  • Sample BOM-type reference:
    • 967513-0101 : MX3100 - Cordless Desktop, retail, box
      • 852376-0100 : MX cordless mouse
      • 867514-0101 : Cordless keyboard

And with Logitech not supplying them, we always have to create them by hand when receiving the first batch from any model. Is this something Logitech OEM could supply to help its partners like us ?

In my case, pressing the email key starts Microsoft Office Outlook but my default email program is Mozilla Thunderbird! I followed the example above and was not sure what should be the modified value of AppKey\15. So, I changed the "Mail" to the actual Thunderbird.exe address but it still starts Outlook! Can anybody help me?

Did you think of renaming the default variable ? By default, the variable in AppKey\15 is called RegisteredApp and holds the string value Mail, which causes Windows to run the default mail program, in your case apparently Outlook.

To have it run TBird instead, you must remove this RegisteredApp variable, and create a new one called ShellExecute to hold TBird's path.

Michael (not verified)

Fri, 2007-11-23 19:56

I bought the Internet 350 keyboard as well I'm using Winamp as standard media player, and the mute\start program buttons work Except the pause\play button Can this be fixed?

Maybe it can, but I'd hazard it will have to be done differently: starting programs is done by the OS, whereas Pause/Play are commands of the application, not of the operating system. There's an interesting discussion about this at: hydrogen audio

Will you let me know if you can work it out using the mechanism they describe ?

I just recently got this keyboard, and was having the same problem with winamp. I was searching around for an answer, but it's right in winamp's preferences, under Global hotkeys. If you check the top box, it enables the Play/Pause button, the second box allows you to set custom key combos for more commands if you like.

I just got this keyboard and found this very helpful blog post. Got my 'Music' key to go to iTunes but saw that people were wondering how to customize the email key. I saw a few of the suggestions, but figured I'd look for an easier way. I found that definitely the easiest way is just to go into IE's Internet Options and then the Programs tab and tell it to use Thunderbird for email.

Of course, that only works if you want to use Thunderbird, 'cause it only gives designated email programs as options... no websites. Personally I'd rather just use gmail, so I guess I'll have to use the more complicated option to start Firefox with a gmail switch. Or maybe just check my gmail with Thunderbird. So many options.

Anyways, just thought I'd throw that out there. Thanks for having an awesome blog, Riff!

It works for me, even as I got a Thinkpad Laptop with the Internet 350 Keyboard attached to the Docking station. This leads to the sweet situation that the Increase / Decrease Volume Keys at the Internet 350 now work for Winamp and the Laptop integrated Buttons for master volume. Feel yourself hugged. Thank you.

Greg D (not verified)

Mon, 2008-05-12 19:29

Half my hotkeys didn't work. I installed Microsoft Intellitype software, chose internet keyboard, and now I can use all and reprogram as well. Yes, I installed Microsoft driver for the Logitech keyboard.

IANAL, but if I were you, I'd check the license on the Intellitype software: it might well be the case that the product is only licensed for use with MS hardware.

Sergio (not verified)

Wed, 2008-06-04 09:21

Hey!

>After a bit of tweaking, it appears that for some reason, this key is linked to the CDA (CD track) type.

The same on Vista: Control Panel > Programs > Default Programs > Set Associations

Now I can run foobar2000 from this button :)

Tnx!

Anonymous (not verified)

Sat, 2008-07-19 11:52

I recently bought the Logitech 350 USB keyboard. I was choosing between 250 and 350 versions and decided to go with 350 because of the extended keys. However, there is one key that I am missing. This is a sleep key, and I came to this blog looking for a way to reprogram one of the existing keys into sleep.

I am partially successful with the reprogramming. There are eight extended keys in the keyboard, but by using the ...\explorer\AppKey registry tweak only four of them work for me. The four keys are:

16 APPCOMMAND_LAUNCH_MEDIA_SELECT "Association"=".cda"
15 APPCOMMAND_LAUNCH_MAIL "Association"="mailto"
7  APPCOMMAND_BROWSER_HOME "Association"="http"
18 APPCOMMAND_LAUNCH_APP2 "ShellExecute"="calc.exe"

The other four keys are not working

14 APPCOMMAND_MEDIA_PLAY_PAUSE
9  APPCOMMAND_VOLUME_DOWN
10 APPCOMMAND_VOLUME_UP
8  APPCOMMAND_VOLUME_MUTE

I was expecting that the following will convert the mute key into a sleep key, but unfortunately the mute is one of those not working.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\AppKey\8]
"ShellExecute"="rundll32.exe powrprof.dll,SetSuspendState"

I tried a different path, reassigning keys with "Scancode Map” in [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] This is not working either because the USB keyboard does not generate PS/2 scancodes for the extended keys. Any further ideas?

Walter S. (not verified)

Wed, 2010-10-27 17:48

I don't speak english,
Hola después de buscarle una solución al problema, ahora ya puedo configurar las teclas multimedia de este teclado.
Creo un .vbs, ejecutando por ejemplo el next track o prev track. Ejemplo Next track:

Set objshell = createobject("wscript.shell")
objshell.sendkeys "^(%({PGUP}))"

y en el regedit en AppKey, a la tecla que quiera darle esta propiedad le asigno un valor alfanumerico de nombre "ShellExecute" y como valor le doy la ruta al archivo .vbs
con eso ya puedo personalizar cualquier accion a las teclas multimedia
Saludos