鍵盤焦點順序(Tab 序列 / WCAG 稽核 / 設定焦點)
工具組原本不對*鍵盤*導覽做任何推理——只有滑鼠座標與元素值。focus_order 補上鍵盤這一層:
is_interactive_role()——某角色是否通常會接受鍵盤焦點,tab_order()——可聚焦元素依Tab鍵造訪的順序(即其閱讀順序:由上到下、由左到右),audit_focus_order()——針對扁平元素清單的 WCAG 2.4.x 焦點順序報告(序列加上被標記的 問題,例如某可聚焦元素沒有可見面積——焦點會落在看不見的地方),focus_control()——將鍵盤焦點設到某控制項上(UIASetFocus)。
前三者為針對 AccessibilityElement 清單的純函式:tab_order 重用
element_parse.reading_order 做列分群,``is_interactive_role`` 重用
ax_tree_walk.humanize_role,故無重複邏輯。focus_control 是對可注入的
accessibility.backends.get_backend() 接縫的薄分派;真正的 SetFocus 位於 Windows 後端。
不匯入 PySide6。
無頭 API
from je_auto_control import (list_accessibility_elements, tab_order,
audit_focus_order, focus_control)
elements = list_accessibility_elements(app_name="myapp.exe")
for el in tab_order(elements): # Tab 造訪順序
print(el.name, el.role)
report = audit_focus_order(elements)
# {"order": [...], "issues": [...], "focusable_count": N, "issue_count": M}
focus_control(name="Username", role="edit") # 把游標放進該欄位
可聚焦性以角色判定(互動角色:Button、Edit、CheckBox、ComboBox、RadioButton、Hyperlink、
ListItem、MenuItem、Slider、Tab/TabItem、TreeItem……)。focus_control 與其他原生控制
動作一樣以 name / role / app_name / automation_id 定位,回傳 bool。
執行器指令
AC_tab_order / AC_audit_focus_order``(``app_name / max_results)列出並稽核存活的
應用程式;``AC_focus_control`` 設定焦點。三者皆以對應的 ac_* MCP 工具(兩個讀取為唯讀、
ac_focus_control 為破壞性)及 Script Builder 指令(位於 Native UI 分類下)形式提供。