Jump to content
Flirc Forums
aanno

Support for Keyboard Multimedia Keys

Recommended Posts

Hello,

 

as far as I understand the flirc USB dongle translates IR remote control signals to (emulated) keyboard keycodes (non-technical: key strokes).

 

There are many 'real' keyboards with special 'multimedia keys' on it (extra keys for play/pause, forward, backward, etc.). However the current Flirc application does not support mapping to such a keycode (even when mapping with 'full keyboard').

 

I would suggest that the Flirc application should be improved to support 'extended keyboard', so that you can define a mapping from RCs keys to (emulated) multimedia keys.

 

Kind regards,

 

aanno

Share this post


Link to post
Share on other sites

Hi,

 

+1

 

----------

A bit background for everyone interested:

---Everything below is 'As Far As I Know' and assumptions about the Flirc device are guesses---

The Flirc connects itself as a USB HID(Human Interface Device) to the system.

The HID-specification uses several byte long 'reports' to translate hardware events to system events in a standardized way.

There is 1(?) byte for the 'usage page'; this one defines something like a device class, like keyboard, mouse, joystick, LED-device, whatever…

Then there are 2 (or more ?) bytes that represent the actual value that comes from/goes to the device.

The value is dependent on the usage page, so the value 0x04 is something different in different usage pages.

Here is a nice table listing many values for the different usage pages, this comes from the NetBSD souce tree:

http://code.metager.de/source/xref/NetBSD/src/lib/libusbhid/usb_hid_usages

 

 

-What about the Flirc device?-

The usage page for normal keyboard keys(A-Z, numbers, F-keys, etc) is decimal 7.

To output a keyboard key, the Flirc device has to send a HID-report with usage page 7 for every normal keyboard key.

This has to be verified by the dev:

I assume that, to save a byte in the storage, the Flirc device uses a hardcoded usage page 7 to generate all HID reports.

The multimedia keys are in a different usage page, namely decimal 12, 'Consumer'.

To support multimedia keys, the Flirc device has to remove the hardcoded usage page from the report generator in the firmware and load the correct page for every saved key from the memory.

That’s a problem:

Best case: there is enough unused space available to store that additional byte. Unlikely, as free space should be used to store more usable data.

Likely: The number of available slots for key storage will be reduced by ~20-50

Worst Case: Unlikely, but possibe: The microcontroller uses some sort of sectors for memory magagement (like HDDs do). Each sector is long enough to store one 'IR signal'+'key value' pair. It cannot adress across multiple sectors. Then adding an additional byte per saved key to store would halven the storage capacity or may be completely impossible.

 

 

--- Question to the dev:---

Is it possible for the Flirc device to save different usage pages and use them for generating those multimedia keys?

If this is impossible (Worst Case), would it be possible to put out another firmware that is almost identical, but uses usage page 12 instead? Then you could at least turn the Flirc device into a 'multimedia only'-keyboard that only supports those multimedia keys.

Share this post


Link to post
Share on other sites

Hi,

 

This is a long awaited feature. Is it planned to do anything about this ?

 

regards

 

Edit: it is actually working, thanks :-)

Edited by deyv

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...