/**
* @file powerkey.h
* Headers for the power key logic for the Mode Control Entity
*
* Copyright © 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
* Copyright (C) 2014-2019 Jolla Ltd.
*
* @author David Weinehall
* @author Simo Piiroinen
*
* mce is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License
* version 2.1 as published by the Free Software Foundation.
*
* mce is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with mce. If not, see .
*/
#ifndef POWERKEY_H_
# define POWERKEY_H_
# include
/* ========================================================================= *
* Settings
* ========================================================================= */
/** Prefix for powerkey setting keys */
# define MCE_SETTING_POWERKEY_PATH "/system/osso/dsm/powerkey"
/** Power key action enable modes */
typedef enum
{
/** Power key actions disabled */
PWRKEY_ENABLE_NEVER = 0,
/** Power key actions always enabled */
PWRKEY_ENABLE_ALWAYS = 1,
/** Power key actions enabled if PS is not covered */
PWRKEY_ENABLE_NO_PROXIMITY = 2,
/** Power key actions enabled if PS is not covered or display is on */
PWRKEY_ENABLE_NO_PROXIMITY2 = 3,
} pwrkey_enable_mode_t;
/** When mce should react to power key presses */
# define MCE_SETTING_POWERKEY_MODE MCE_SETTING_POWERKEY_PATH "/mode"
# define MCE_DEFAULT_POWERKEY_MODE 1 // = PWRKEY_ENABLE_ALWAYS
typedef enum
{
/** Pressing power key turns display off */
PWRKEY_BLANK_TO_OFF = 0,
/** Pressing power key puts display to lpm state */
PWRKEY_BLANK_TO_LPM = 1,
} pwrkey_blanking_mode_t;
/** How power key "blank" action should behave */
# define MCE_SETTING_POWERKEY_BLANKING_MODE MCE_SETTING_POWERKEY_PATH "/blanking_mode"
# define MCE_DEFAULT_POWERKEY_BLANKING_MODE 0 // = PWRKEY_BLANK_TO_OFF
/** How many consequent power key presses trigger proximity override
*
* Rapidly pressing powerkey multiple times can be used to override
* proximity sensor covered state. Can be useful in situations where
* faulty / dirty / otherwise misbehaving proximity sensor does not
* allow turning display on.
*/
# define MCE_SETTING_POWERKEY_PS_OVERRIDE_COUNT MCE_SETTING_POWERKEY_PATH "/ps_override_count"
# define MCE_DEFAULT_POWERKEY_PS_OVERRIDE_COUNT 3
/** Maximum delay between powerkey presses for ps override [ms]*/
# define MCE_SETTING_POWERKEY_PS_OVERRIDE_TIMEOUT MCE_SETTING_POWERKEY_PATH "/ps_override_timeout"
# define MCE_DEFAULT_POWERKEY_PS_OVERRIDE_TIMEOUT 333
/** Threshold for long power key press [ms] */
# define MCE_SETTING_POWERKEY_LONG_PRESS_DELAY MCE_SETTING_POWERKEY_PATH "/long_press_delay"
# define MCE_DEFAULT_POWERKEY_LONG_PRESS_DELAY 1500
/** Maximum wait time in between double power key presses [ms] */
# define MCE_SETTING_POWERKEY_DOUBLE_PRESS_DELAY MCE_SETTING_POWERKEY_PATH "/double_press_delay"
# define MCE_DEFAULT_POWERKEY_DOUBLE_PRESS_DELAY 400
/** Actions to take on single power key press from display on */
# define MCE_SETTING_POWERKEY_ACTIONS_SINGLE_ON MCE_SETTING_POWERKEY_PATH "/actions_single_on"
# define MCE_DEFAULT_POWERKEY_ACTIONS_SINGLE_ON "blank,tklock"
/** Actions to take on double power key press from display on */
# define MCE_SETTING_POWERKEY_ACTIONS_DOUBLE_ON MCE_SETTING_POWERKEY_PATH "/actions_double_on"
# define MCE_DEFAULT_POWERKEY_ACTIONS_DOUBLE_ON "blank,tklock,devlock,vibrate"
/** Actions to take on long power key press from display on */
# define MCE_SETTING_POWERKEY_ACTIONS_LONG_ON MCE_SETTING_POWERKEY_PATH "/actions_long_on"
# define MCE_DEFAULT_POWERKEY_ACTIONS_LONG_ON "shutdown"
/** Actions to take on single power key press from display off */
# define MCE_SETTING_POWERKEY_ACTIONS_SINGLE_OFF MCE_SETTING_POWERKEY_PATH "/actions_single_off"
# define MCE_DEFAULT_POWERKEY_ACTIONS_SINGLE_OFF "unblank"
/** Actions to take on double power key press from display off */
# define MCE_SETTING_POWERKEY_ACTIONS_DOUBLE_OFF MCE_SETTING_POWERKEY_PATH "/actions_double_off"
# define MCE_DEFAULT_POWERKEY_ACTIONS_DOUBLE_OFF "unblank,tkunlock"
/** Actions to take on long power key press from display off
*
* Note: If kernel side reports immediately power key press + release
* when device is suspended, detecting long presses might not
* work when display is off -> leave unset by default. */
# define MCE_SETTING_POWERKEY_ACTIONS_LONG_OFF MCE_SETTING_POWERKEY_PATH "/actions_long_off"
# define MCE_DEFAULT_POWERKEY_ACTIONS_LONG_OFF ""
/** Actions to take on touchscreen gesture N */
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE0 MCE_SETTING_POWERKEY_PATH "/actions_gesture0"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE0 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE1 MCE_SETTING_POWERKEY_PATH "/actions_gesture1"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE1 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE2 MCE_SETTING_POWERKEY_PATH "/actions_gesture2"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE2 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE3 MCE_SETTING_POWERKEY_PATH "/actions_gesture3"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE3 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE4 MCE_SETTING_POWERKEY_PATH "/actions_gesture4"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE4 "unblank" // GESTURE_DOUBLETAP
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE5 MCE_SETTING_POWERKEY_PATH "/actions_gesture5"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE5 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE6 MCE_SETTING_POWERKEY_PATH "/actions_gesture6"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE6 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE7 MCE_SETTING_POWERKEY_PATH "/actions_gesture7"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE7 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE8 MCE_SETTING_POWERKEY_PATH "/actions_gesture8"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE8 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE9 MCE_SETTING_POWERKEY_PATH "/actions_gesture9"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE9 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE10 MCE_SETTING_POWERKEY_PATH "/actions_gesture10"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE10 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE11 MCE_SETTING_POWERKEY_PATH "/actions_gesture11"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE11 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE12 MCE_SETTING_POWERKEY_PATH "/actions_gesture12"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE12 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE13 MCE_SETTING_POWERKEY_PATH "/actions_gesture13"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE13 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE14 MCE_SETTING_POWERKEY_PATH "/actions_gesture14"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE14 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE15 MCE_SETTING_POWERKEY_PATH "/actions_gesture15"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE15 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE16 MCE_SETTING_POWERKEY_PATH "/actions_gesture16"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE16 "unblank,tkunlock" // GESTURE_FPWAKEUP
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE17 MCE_SETTING_POWERKEY_PATH "/actions_gesture17"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE17 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE18 MCE_SETTING_POWERKEY_PATH "/actions_gesture18"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE18 "unblank"
# define MCE_SETTING_POWERKEY_ACTIONS_GESTURE19 MCE_SETTING_POWERKEY_PATH "/actions_gesture19"
# define MCE_DEFAULT_POWERKEY_ACTIONS_GESTURE19 "unblank"
/** Number of configurable touchscreen gestures */
# define POWERKEY_ACTIONS_GESTURE_COUNT 20
/** What to send when dbus action N is taken*/
# define MCE_SETTING_POWERKEY_DBUS_ACTION1 MCE_SETTING_POWERKEY_PATH "/dbus_action1"
# define MCE_DEFAULT_POWERKEY_DBUS_ACTION1 "event1"
# define MCE_SETTING_POWERKEY_DBUS_ACTION2 MCE_SETTING_POWERKEY_PATH "/dbus_action2"
# define MCE_DEFAULT_POWERKEY_DBUS_ACTION2 "event2"
# define MCE_SETTING_POWERKEY_DBUS_ACTION3 MCE_SETTING_POWERKEY_PATH "/dbus_action3"
# define MCE_DEFAULT_POWERKEY_DBUS_ACTION3 "event3"
# define MCE_SETTING_POWERKEY_DBUS_ACTION4 MCE_SETTING_POWERKEY_PATH "/dbus_action4"
# define MCE_DEFAULT_POWERKEY_DBUS_ACTION4 "event4"
# define MCE_SETTING_POWERKEY_DBUS_ACTION5 MCE_SETTING_POWERKEY_PATH "/dbus_action5"
# define MCE_DEFAULT_POWERKEY_DBUS_ACTION5 "event5"
# define MCE_SETTING_POWERKEY_DBUS_ACTION6 MCE_SETTING_POWERKEY_PATH "/dbus_action6"
# define MCE_DEFAULT_POWERKEY_DBUS_ACTION6 "event6"
# define MCE_SETTING_POWERKEY_DBUS_ACTION7 MCE_SETTING_POWERKEY_PATH "/dbus_action7"
# define MCE_DEFAULT_POWERKEY_DBUS_ACTION7 "event7"
# define MCE_SETTING_POWERKEY_DBUS_ACTION8 MCE_SETTING_POWERKEY_PATH "/dbus_action8"
# define MCE_DEFAULT_POWERKEY_DBUS_ACTION8 "event8"
# define MCE_SETTING_POWERKEY_DBUS_ACTION9 MCE_SETTING_POWERKEY_PATH "/dbus_action9"
# define MCE_DEFAULT_POWERKEY_DBUS_ACTION9 "event9"
# define MCE_SETTING_POWERKEY_DBUS_ACTION10 MCE_SETTING_POWERKEY_PATH "/dbus_action10"
# define MCE_DEFAULT_POWERKEY_DBUS_ACTION10 "event10"
/** Number of configurable dbus actions */
# define POWEKEY_DBUS_ACTION_COUNT 10
/* ========================================================================= *
* FUNCTIONS
* ========================================================================= */
gboolean mce_powerkey_init(void);
void mce_powerkey_exit(void);
#endif /* POWERKEY_H_ */