Mobile native Wearable native

Grabbing Hardware Key Events

The applications do not normally grab hardware key events, because each key event is delivered to the focused window by default. Some applications, however, have more advanced functionalities and behavior. For example, a memo application can use the volume key to resize the text. However, in most cases, if the volume keys are pressed, a volume control popup opens. To receive special hardware key events in the application, use the eext_win_keygrab_set() and eext_win_keygrab_unset() functions.

To grab hardware key events:

  1. To use the functions and data types of the EFL Extension API (in mobile and wearable applications), include the <efl_extension.h> header in your application:
    #include <efl_extension.h>
    
  2. Create the objects using the window. For more information, see UI Containers.
    static void
    create_base_gui(appdata_s *ad)
    {
       Evas_Object *win = NULL;
    
       // Create the window
       win = elm_win_util_standard_add(NULL, "extension sample");
       evas_object_smart_callback_add(win, "delete,request", _win_del, NULL);
    
       // Show the window
       evas_object_show(win);
    }
    
  3. Register the key event callbacks for the window. For more information, see Ecore Events.
    Eina_Bool ctrl_pressed = EINA_FALSE;
    
    static Eina_Bool
    _key_down_cb(void *data __UNUSED__, int type __UNUSED__, void *ev)
    {
       // The callback is used with the ECORE_EVENT_KEY_DOWN signal: the
       // parameter "void *ev" is therefore of the actual Ecore_Event_Key type
       // The following renders its fields accessible
       Ecore_Event_Key *event = ev;
    
       // Test whether the key that is pressed is Ctrl
       if (!strcmp("Control_L", event->key))
       {
          // If it is, store that piece of information
          ctrl_pressed = EINA_TRUE;
       }
    
       // Let the event continue to other callbacks which have not been called yet
       return ECORE_CALLBACK_PASS_ON;
    }
    
    ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_down_cb, NULL);
    
  4. Grab the key events using the eext_win_keygrab_set() function. The parameters are the window object created in step 2 above, and the key string.
    eext_win_keygrab_set(win, "XF86AudioRaiseVolume")
    
  5. When the application no longer needs to grab the key events, use the eext_win_keygrab_unset() function to ungrab them:
    eext_win_keygrab_unset(win, "XF86AudioRaiseVolume")
    

The following table lists the hardware keys from which you can grab events in different profiles.

Table: Supported hardware keys
Key Description Mobile Wearable TV
"XF86AudioRaiseVolume" Key to raise the volume Yes Yes Yes
"XF86AudioLowerVolume" Key to lower the volume Yes Yes Yes
"XF86PowerOff" Power key to switch the device on and off Yes Yes Yes
"XF86Menu" Application-specific menu key Yes Yes Yes
"XF86Home" Key to go to the home screen Yes Yes Yes
"XF86Back" Key to go back to the previous status or page Yes Yes Yes
"XF86Camera" Half shutter key to do something before taking a picture on the camera Yes - -
"XF86Camera_Full" Key to take a picture on the camera Yes Yes Yes
"XF86Search" Key to go to the search application Yes Yes Yes
"XF86AudioPlay" Key to play media Yes Yes Yes
"XF86AudioPause" Key to pause the media being played Yes Yes Yes
"XF86AudioStop" Key to stop the media being played Yes Yes Yes
"XF86AudioNext" Key to go to the next media item Yes Yes Yes
"XF86AudioPrev" Key to go to the previous media item Yes Yes Yes
"XF86AudioRewind" Key to rewind the playing position of the media Yes Yes Yes
"XF86AudioForward" Key to forward the playing position of the media Yes Yes Yes
"XF86AudioMedia" Key to go to the media player Yes Yes Yes
"XF86AudioPlayPause" Key to toggle between play and pause Yes Yes Yes
"XF86AudioMute" Key to mute the media Yes Yes Yes
"XF86AudioRecord" Key to start recording media Yes Yes Yes
"Cancel" Key to cancel the action triggered by the previous keys Yes Yes Yes
"XF86SoftKBD" Key to show and hide the soft keyboard Yes Yes Yes
"XF86QuickPanel" Key to toggle the quick panel Yes - Yes
"XF86TaskPane" Key to toggle the task switcher Yes Yes Yes
"XF86HomePage" Key to go to the homepage of the user-defined Web browser Yes - Yes
"XF86WWW" Key to launch the user-defined Web browser Yes - Yes
"XF86Mail" Key to go to the user-defined email application Yes - Yes
"XF86ScreenSaver" Key to activate the screen lock (such as a pattern lock or a PIN lock) Yes Yes Yes
"XF86MonBrightnessDown" Key to lower the screen brightness Yes Yes Yes
"XF86MonBrightnessUp" Key to raise the screen brightness Yes Yes Yes
"XF86Voice" Key to activate a voice-related application Yes Yes Yes
"Hangul" Key to toggle the current language Yes - Yes
"XF86Apps" Key to call the application holder application Yes Yes Yes
"XF86Call" Key to launch the call application Yes Yes Yes
"XF86Game" Key to go to the game application Yes - Yes
"XF86VoiceWakeUp_LPSD" Key to wake up from voice input (LPSD) Yes Yes Yes
"XF86VoiceWakeUp" Key to wake up from voice input Yes Yes Yes
"XF86TV" Key to display the TV screen directly - - Yes
"XF86Display" Key to toggle the video source - - Yes
"XF86RCConfig" Key to set the remote control's specific configuration - - Yes
"XF86RCMode" Key to show and hide the virtual remote control on the screen - - Yes
"1" Numeric key 1 on the remote control - - Yes
"2" Numeric key 2 on the remote control - - Yes
"3" Numeric key 3 on the remote control - - Yes
"4" Numeric key 4 on the remote control - - Yes
"5" Numeric key 5 on the remote control - - Yes
"6" Numeric key 6 on the remote control - - Yes
"7" Numeric key 7 on the remote control - - Yes
"8" Numeric key 8 on the remote control - - Yes
"9" Numeric key 9 on the remote control - - Yes
"0" Numeric key 0 on the remote control - - Yes
"-" Minus key on the remote control - - Yes
"XF86LowerChannel" Key to lower the channel number - - Yes
"XF86RaiseChannel" Key to raise the channel number - - Yes
"XF86ChannelList" Key to display the channel list - - Yes
"XF86PreviousChannel" Key to display the previous channel - - Yes
"XF86SysMenu" Key to launch the system menu - - Yes
"XF86SimpleMenu" Key to launch the simple menu - - Yes
"XF86History" Key to launch the history functionality - - Yes
"XF86Favorites" Key to launch the favorite channels functionality - - Yes
"Up" Arrow key UP on the remote control - - Yes
"Down" Arrow key DOWN on the remote control - - Yes
"Left" Arrow key LEFT on the remote control - - Yes
"Right" Arrow key RIGHT on the remote control - - Yes
"Return" OK key on the remote control to confirm or select an item - - Yes
"XF86Close" Exit key on the remote control to terminate the current menu or application - - Yes
"XF86Info" Key to display the basic and auxiliary information on the screen - - Yes
"XF86Red" Key to execute the functionality registered to the RED key - - Yes
"XF86Green" Key to execute the functionality registered to the GREEN key - - Yes
"XF86Yellow" Key to execute the functionality registered to the YELLOW key - - Yes
"XF86Blue" Key to execute the functionality registered to the BLUE key - - Yes
"XF86ProgInfo" Key to display the program information - - Yes
"XF86PictureMode" Key to change the screen mode - - Yes
"XF86PictureSize" Key to change the screen size and aspect ratio - - Yes
"XF86PIP" Key to set the PIP (Picture-In-Picture) mode to display one screen on the other - - Yes
"XF86Guide" Key to display the user guide - - Yes
"XF86AudioMode" Key to set or change the audio mode - - Yes
"XF86Subtitle" Key to display or hide the subtitles - - Yes
"XF863D" Key to set or change the 3D mode - - Yes
Go to top