From e9d96e87acbd79b22837ac4b225ceb0bd0e1942e Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 18 May 2011 12:20:19 +1000 Subject: Add a property to toggle function key mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On some keyboards, the multimedia function keys are overlaid with the F keys. This property enables clients to switch the primary mode of these F keys between function keys and multimedia keys. Some keyboards provide an Fn key to toggle between the modes. This is hardware-specific and may or may not work on any given keyboard device. The current imlementation is only hooked up to apple keyboards. The kernel provides a tweak to enable/disable. /sys/module/hid_apple/parameters/fnmode 0 .. keyboard sends Fx keys, Fn disabled 1 .. keyboard sends multimedia keys, Fn toggles to function keys 2 .. keyboard sends function keys, Fn toggles to multimedia keys If fnmode is on 0, we force it to 2. Signed-off-by: Peter Hutterer Reviewed-by: Michel Dänzer --- src/evdev.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/evdev.h') diff --git a/src/evdev.h b/src/evdev.h index 1741e59..ff50d0a 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -85,6 +85,13 @@ /* Number of longs needed to hold the given number of bits */ #define NLONGS(x) (((x) + LONG_BITS - 1) / LONG_BITS) +/* Function key mode */ +enum fkeymode { + FKEYMODE_UNKNOWN = 0, + FKEYMODE_FKEYS, /* function keys send function keys */ + FKEYMODE_MMKEYS, /* function keys send multimedia keys */ +}; + /* axis specific data for wheel emulation */ typedef struct { int up_button; @@ -197,6 +204,8 @@ typedef struct { /* Event queue used to defer keyboard/button events until EV_SYN time. */ int num_queue; EventQueueRec queue[EVDEV_MAXQUEUE]; + + enum fkeymode fkeymode; } EvdevRec, *EvdevPtr; /* Event posting functions */ @@ -243,4 +252,5 @@ void EvdevMBEmuInitProperty(DeviceIntPtr); void Evdev3BEmuInitProperty(DeviceIntPtr); void EvdevWheelEmuInitProperty(DeviceIntPtr); void EvdevDragLockInitProperty(DeviceIntPtr); +void EvdevAppleInitProperty(DeviceIntPtr); #endif -- cgit v1.2.3