From 8146b40e73bb999001787fbf414c96acf5dce2a8 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Sun, 1 Dec 2013 18:25:42 +0000 Subject: Fuze+: add a configurable deadzone area for touchpad buttons To stop erroneous button presses, allow users to add a deadzone between the button via the Settings > General > System menu > Touch Dead Zone. The configuration was chosen this way: the touchpad has the same DPI in both direction so the setting applies the same on both the X and Y axis. The setting ranges from 0 to 100 and is internally multiplied by 2 giving a maximum deadzone of 2*100 = 200 around each button, which account for 400 total (once around each button), effectively reducing each virtual button from 1000x600 to 600x200 when using the maximum value. Change-Id: I8683c63d2950200eb32d1dda0a00bbd92d83d5be Reviewed-on: http://gerrit.rockbox.org/677 Reviewed-by: Benjamin Brown Tested: Benjamin Brown Reviewed-by: Amaury Pouly --- apps/features.txt | 4 ++++ apps/lang/english-us.lang | 17 +++++++++++++++++ apps/lang/english.lang | 17 +++++++++++++++++ apps/menus/settings_menu.c | 7 +++++++ apps/settings.c | 4 ++++ apps/settings.h | 4 ++++ apps/settings_list.c | 8 ++++++++ 7 files changed, 61 insertions(+) (limited to 'apps') diff --git a/apps/features.txt b/apps/features.txt index 63f0234..d9ca1a3 100644 --- a/apps/features.txt +++ b/apps/features.txt @@ -199,6 +199,10 @@ lineout_poweroff touchscreen #endif +#if defined(HAVE_TOUCHPAD_DEADZONE) +touchpad_deadzone +#endif + #if defined(HAVE_IMX233_CODEC) || defined(HAVE_WM8750) || defined(HAVE_WM8978) depth_3d #endif diff --git a/apps/lang/english-us.lang b/apps/lang/english-us.lang index a6549da..4a316ce 100644 --- a/apps/lang/english-us.lang +++ b/apps/lang/english-us.lang @@ -10606,6 +10606,23 @@ + id: LANG_DEADZONE + desc: touchpad deadzone setting + user: core + + *: none + sansafuzeplus: "Touchpad Dead Zone" + + + *: none + sansafuzeplus: "Touchpad Dead Zone" + + + *: none + sansafuzeplus: "Touchpad Dead Zone" + + + id: LANG_HIGH desc: in settings_menu user: core diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 9914b16..1135705 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -10693,6 +10693,23 @@ + id: LANG_DEADZONE + desc: touchpad deadzone setting + user: core + + *: none + sansafuzeplus: "Touchpad Dead Zone" + + + *: none + sansafuzeplus: "Touchpad Dead Zone" + + + *: none + sansafuzeplus: "Touchpad Dead Zone" + + + id: LANG_HIGH desc: in settings_menu user: core diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c index 0d2a7fe..130f5be 100644 --- a/apps/menus/settings_menu.c +++ b/apps/menus/settings_menu.c @@ -317,6 +317,10 @@ MENUITEM_SETTING(buttonlight_brightness, &global_settings.buttonlight_brightness MENUITEM_SETTING(touchpad_sensitivity, &global_settings.touchpad_sensitivity, NULL); #endif +#ifdef HAVE_TOUCHPAD_DEADZONE +MENUITEM_SETTING(touchpad_deadzone, &global_settings.touchpad_deadzone, NULL); +#endif + #ifdef HAVE_QUICKSCREEN MENUITEM_SETTING(shortcuts_replaces_quickscreen, &global_settings.shortcuts_replaces_qs, NULL); #endif @@ -363,6 +367,9 @@ MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), #ifdef HAVE_TOUCHPAD_SENSITIVITY_SETTING &touchpad_sensitivity, #endif +#ifdef HAVE_TOUCHPAD_DEADZONE + &touchpad_deadzone, +#endif #ifdef USB_ENABLE_HID &usb_hid, &usb_keypad_mode, diff --git a/apps/settings.c b/apps/settings.c index 819924a..515e7cb 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -1061,6 +1061,10 @@ void settings_apply(bool read_disk) touchpad_set_sensitivity(global_settings.touchpad_sensitivity); #endif +#ifdef HAVE_TOUCHPAD_DEADZONE + touchpad_set_deadzone(global_settings.touchpad_deadzone); +#endif + #ifdef HAVE_USB_CHARGING_ENABLE usb_charging_enable(global_settings.usb_charging); #endif diff --git a/apps/settings.h b/apps/settings.h index 60658f6..3ec5ee6 100644 --- a/apps/settings.h +++ b/apps/settings.h @@ -460,6 +460,10 @@ struct user_settings int touchpad_sensitivity; #endif +#ifdef HAVE_TOUCHPAD_DEADZONE + int touchpad_deadzone; +#endif + int pause_rewind; /* time in s to rewind when pausing */ #ifdef HAVE_HEADPHONE_DETECTION int unplug_mode; /* pause on headphone unplug */ diff --git a/apps/settings_list.c b/apps/settings_list.c index 53acb78..cddc062 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -2024,6 +2024,14 @@ const struct settings_list settings[] = { ID2P(LANG_NORMAL), ID2P(LANG_HIGH)), #endif /* boolean or analogig values */ #endif /* HAVE_TOUCHPAD_SENSITIVITY_SETTING */ + +#ifdef HAVE_TOUCHPAD_DEADZONE + INT_SETTING(F_NO_WRAP, touchpad_deadzone, LANG_DEADZONE, + DEFAULT_TOUCHPAD_DEADZONE_SETTING, "touchpad deadzone", UNIT_INT, + MIN_TOUCHPAD_DEADSPACE_SETTING, MAX_TOUCHPAD_DEADSPACE_SETTING, 1, + NULL, NULL, touchpad_set_deadzone), +#endif + #ifdef HAVE_QUICKSCREEN CUSTOM_SETTING(0, qs_items[QUICKSCREEN_TOP], LANG_TOP_QS_ITEM, NULL, "qs top", -- cgit v1.1