Skip to content

Commit 11ae8e6

Browse files
chinmayajhathakur-patel
authored andcommitted
bugfix: support uppercase keycode input by passing metastate to Appium driver
1 parent 5e46d6d commit 11ae8e6

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

optics_framework/engines/drivers/appium.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -910,9 +910,13 @@ def _flush_keyboard_buffer(self, driver: WebDriver, buffer: List[str]) -> None:
910910

911911
def _press_keycode_or_type_char(self, driver: WebDriver, ch: str, keycode: int) -> None:
912912
"""Press keycode for char, or fall back to mobile:type on failure."""
913-
internal_logger.debug(f"Pressing keycode for char '{ch}': {keycode}")
913+
metastate = 1 if ch.isupper() else None
914+
internal_logger.debug(f"Pressing keycode for char '{ch}': {keycode} (metastate={metastate})")
914915
try:
915-
driver.press_keycode(int(keycode))
916+
if metastate is not None:
917+
driver.press_keycode(int(keycode), metastate=metastate)
918+
else:
919+
driver.press_keycode(int(keycode))
916920
except Exception:
917921
internal_logger.debug(f"press_keycode failed for '{ch}', falling back to script typing")
918922
driver.execute_script(
@@ -979,7 +983,8 @@ def get_char_as_keycode(self, char: str) -> Optional[int]:
979983
"\n": 66, # Enter key
980984
}
981985

982-
return mapping.get(char.lower()) # handle lowercase input
986+
# Handle lowercase input so uppercase letters map to correct keycodes
987+
return mapping.get(char.lower())
983988

984989
def get_text_element(self, element: Any) -> str:
985990
text = element.get_attribute("text") or element.get_attribute("value")

0 commit comments

Comments
 (0)