Commit 190349fd authored by achuith@chromium.org's avatar achuith@chromium.org

Support for cros touchpad 3-finger click as middle button.

BUG=chromium-os:18898
TEST=Should find a flag in about:flags to enable 3-finger click.

Review URL: http://codereview.chromium.org/10264019

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@134829 0039d316-1c4b-4281-b951-d872f2087c98
parent 0268442e
......@@ -5597,6 +5597,15 @@ Keep your key file in a safe place. You will need it to create new versions of y
Allows applications to use NaCl Socket API. Use only to test NaCl plugins.
</message>
<if expr="pp_ifdef('chromeos')">
<message name="IDS_FLAGS_ALLOW_TOUCHPAD_THREE_FINGER_CLICK_NAME" desc="Name for the flag to enable touchpad three finger click as middle button.">
Enable touchpad three-finger-click.
</message>
<message name="IDS_FLAGS_ALLOW_TOUCHPAD_THREE_FINGER_CLICK_DESCRIPTION" desc="Description for the flag to enable touchpad three finger click as middle button.">
Enables touchpad three-finger-click as middle button.
</message>
</if>
<!-- Crashes -->
<message name="IDS_CRASHES_TITLE" desc="Title for the chrome://crashes page.">
Crashes
......
......@@ -685,6 +685,15 @@ const Experiment kExperiments[] = {
kOsCrOS,
SINGLE_VALUE_TYPE_AND_VALUE(switches::kDefaultDeviceScaleFactor, "2")
},
#if defined(OS_CHROMEOS)
{
"allow-touchpad-three-finger-click",
IDS_FLAGS_ALLOW_TOUCHPAD_THREE_FINGER_CLICK_NAME,
IDS_FLAGS_ALLOW_TOUCHPAD_THREE_FINGER_CLICK_DESCRIPTION,
kOsCrOS,
SINGLE_VALUE_TYPE(switches::kEnableTouchpadThreeFingerClick)
},
#endif
};
const Experiment* experiments = kExperiments;
......
......@@ -73,6 +73,9 @@ void Preferences::RegisterUserPrefs(PrefService* prefs) {
prefs->RegisterBooleanPref(prefs::kTapToClickEnabled,
enable_tap_to_click_default,
PrefService::SYNCABLE_PREF);
prefs->RegisterBooleanPref(prefs::kEnableTouchpadThreeFingerClick,
false,
PrefService::UNSYNCABLE_PREF);
prefs->RegisterBooleanPref(prefs::kNaturalScroll,
false,
PrefService::SYNCABLE_PREF);
......@@ -259,6 +262,8 @@ void Preferences::RegisterUserPrefs(PrefService* prefs) {
void Preferences::InitUserPrefs(PrefService* prefs) {
tap_to_click_enabled_.Init(prefs::kTapToClickEnabled, prefs, this);
three_finger_click_enabled_.Init(prefs::kEnableTouchpadThreeFingerClick,
prefs, this);
natural_scroll_.Init(prefs::kNaturalScroll, prefs, this);
accessibility_enabled_.Init(prefs::kSpokenFeedbackEnabled, prefs, this);
mouse_sensitivity_.Init(prefs::kMouseSensitivity, prefs, this);
......@@ -372,6 +377,14 @@ void Preferences::NotifyPrefChanged(const std::string* pref_name) {
else
UMA_HISTOGRAM_BOOLEAN("Touchpad.TapToClick.Started", enabled);
}
if (!pref_name || *pref_name == prefs::kEnableTouchpadThreeFingerClick) {
const bool enabled = three_finger_click_enabled_.GetValue();
system::touchpad_settings::SetThreeFingerClick(enabled);
if (pref_name)
UMA_HISTOGRAM_BOOLEAN("Touchpad.ThreeFingerClick.Changed", enabled);
else
UMA_HISTOGRAM_BOOLEAN("Touchpad.ThreeFingerClick.Started", enabled);
}
if (!pref_name || *pref_name == prefs::kNaturalScroll) {
const bool enabled = natural_scroll_.GetValue();
ui::SetNaturalScroll(enabled);
......
......@@ -104,6 +104,7 @@ class Preferences : public content::NotificationObserver {
input_method::InputMethodManager* input_method_manager_;
BooleanPrefMember tap_to_click_enabled_;
BooleanPrefMember three_finger_click_enabled_;
BooleanPrefMember natural_scroll_;
BooleanPrefMember vert_edge_scroll_enabled_;
BooleanPrefMember accessibility_enabled_;
......
......@@ -107,6 +107,13 @@ void SetTapToClick(bool enabled) {
ExecuteScript(3, kTpControl, "taptoclick", enabled ? "on" : "off");
}
void SetThreeFingerClick(bool enabled) {
ExecuteScript(3, kTpControl, "three_finger_click", enabled ? "on" : "off");
// For Alex/ZGB.
ExecuteScript(3, kTpControl, "t5r2_three_finger_click",
enabled ? "on" : "off");
}
} // namespace touchpad_settings
namespace mouse_settings {
......
......@@ -19,6 +19,9 @@ void SetSensitivity(int value);
// Turns tap to click on / off.
void SetTapToClick(bool enabled);
// Switch for three-finger click.
void SetThreeFingerClick(bool enabled);
} // namespace touchpad_settings
namespace mouse_settings {
......
......@@ -61,6 +61,8 @@ const CommandLinePrefStore::BooleanSwitchToPreferenceMapEntry
#endif
#if defined(OS_CHROMEOS)
{ switches::kDisableGData, prefs::kDisableGData, true },
{ switches::kEnableTouchpadThreeFingerClick,
prefs::kEnableTouchpadThreeFingerClick, true },
#endif
};
......
......@@ -1238,6 +1238,10 @@ const char kDisableGData[] = "disable-gdata";
// Enables Libcros.
const char kEnableLibcros[] = "enable-libcros";
// Enables touchpad three-finger-click as middle button.
const char kEnableTouchpadThreeFingerClick[]
= "touchpad-enable-three-finger-click";
// Skips OAuth part of ChromeOS login process.
const char kSkipOAuthLogin[] = "skip-oauth-login";
......
......@@ -339,6 +339,7 @@ extern const char kWinHttpProxyResolver[];
// Keep switches in alphabetical order.
extern const char kDisableGData[];
extern const char kEnableLibcros[];
extern const char kEnableTouchpadThreeFingerClick[];
extern const char kSkipOAuthLogin[];
extern const char kEnableDevicePolicy[];
extern const char kEnableGView[];
......
......@@ -452,6 +452,10 @@ const char kAudioVolumePercent[] = "settings.audio.volume_percent";
// A boolean pref set to true if touchpad tap-to-click is enabled.
const char kTapToClickEnabled[] = "settings.touchpad.enable_tap_to_click";
// A boolean pref set to true if touchpad three-finger-click is enabled.
const char kEnableTouchpadThreeFingerClick[] =
"settings.touchpad.enable_three_finger_click";
// A boolean pref set to true if touchpad natural scrolling is enabled.
const char kNaturalScroll[] = "settings.touchpad.natural_scroll";
......
......@@ -164,6 +164,7 @@ extern const char kAudioMute[];
extern const char kAudioVolumeDb[];
extern const char kAudioVolumePercent[];
extern const char kTapToClickEnabled[];
extern const char kEnableTouchpadThreeFingerClick[];
extern const char kNaturalScroll[];
extern const char kPrimaryMouseButtonRight[];
extern const char kMouseSensitivity[];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment