[autotest] servod: Enhance key press logic.

Depends on:
https://gerrit.chromium.org/gerrit/10959

BUG=chrome-os-partner:6654
TEST=platform_LongPressPower, platform_CloseOpenLid

Change-Id: I6adc78323ad667ba72b95dd448a24ba9f73b4a6c
Reviewed-on: https://gerrit.chromium.org/gerrit/10966
Reviewed-by: Todd Broch <tbroch@chromium.org>
Tested-by: Todd Broch <tbroch@chromium.org>
Commit-Ready: Todd Broch <tbroch@chromium.org>
diff --git a/server/cros/servo.py b/server/cros/servo.py
index dc9860e..845316a 100644
--- a/server/cros/servo.py
+++ b/server/cros/servo.py
@@ -137,29 +137,41 @@
         time.sleep(Servo.SLEEP_DELAY)
 
 
+    def _press_and_release_keys(self, m1, m2, press_secs=None):
+        """Simulate button presses."""
+        if press_secs is None:
+            press_secs = Servo.SERVO_SEND_SIGNAL_DELAY
+
+        self.set_nocheck('kbd_en', 'on')
+        self.set_nocheck('kbd_m1', m1)
+        self.set_nocheck('kbd_m2', m2)
+        time.sleep(press_secs)
+        self.set_nocheck('kbd_en', 'off')
+
+
     def ctrl_d(self):
         """Simulate Ctrl-d simultaneous button presses."""
-        self.set_nocheck('kbd_en', 'on')
-        self.set_nocheck('kbd_m1', 'r2_c2')
-        self.set_nocheck('kbd_m2', 'r1_c1')
-        time.sleep(Servo.SERVO_SEND_SIGNAL_DELAY)
-        self.set_nocheck('kbd_en', 'off')
+        self._press_and_release_keys('d', 'ctrl')
+
+
+    def d_key(self):
+        """Simulate Enter key button press."""
+        self._press_and_release_keys('d', 'none')
+
+
+    def ctrl_key(self):
+        """Simulate Enter key button press."""
+        self._press_and_release_keys('none', 'ctrl')
 
 
     def enter_key(self):
         """Simulate Enter key button press."""
-        self.set_nocheck('kbd_en', 'on')
-        self.set_nocheck('kbd_m1', 'r3_c2')
-        time.sleep(Servo.SERVO_SEND_SIGNAL_DELAY)
-        self.set_nocheck('kbd_en', 'off')
+        self._press_and_release_keys('enter', 'none')
 
 
     def refresh_key(self):
         """Simulate Refresh key (F3) button press."""
-        self.set_nocheck('kbd_en', 'on')
-        self.set_nocheck('kbd_m2', 'r2_c1')
-        time.sleep(Servo.SERVO_SEND_SIGNAL_DELAY)
-        self.set_nocheck('kbd_en', 'off')
+        self._press_and_release_keys('none', 'refresh')
 
 
     def imaginary_key(self):
@@ -167,10 +179,7 @@
 
         Maps to a key that doesn't physically exist.
         """
-        self.set_nocheck('kbd_en', 'on')
-        self.set_nocheck('kbd_m2', 'r3_c1')
-        time.sleep(Servo.SERVO_SEND_SIGNAL_DELAY)
-        self.set_nocheck('kbd_en', 'off')
+        self._press_and_release_keys('none', 'unused')
 
 
     def enable_recovery_mode(self):