Windows SDK 8.1 の AccEvents でスタート画面のタイルをキーボード操作で移動したときの UI Automation イベントをとると以下のような感じです。
UIA:FocusEvent Sender: ControlType:UIA_ListItemControlTypeId (0xC357), Name:"天気" UIA:AutomationEvent [Drag_DragStartEventId] Sender: ControlType:UIA_ListItemControlTypeId (0xC357), Name:"天気" UIA:AutomationEvent [Drag_DragCompleteEventId] Sender: ControlType:UIA_ListItemControlTypeId (0xC357), Name:"天気"
現状で NVDA のスタート画面サポートにドラッグ&ドロップ関連の処理があるかどうか調べたいと思います。
以下、参考資料:
Accessible Event Watcher
http://msdn.microsoft.com/en-us/library/windows/desktop/dd317979%28v=vs.85%29.aspx
Windows SDK 8.1
http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx
C:\Program Files (x86)\Windows Kits\8.1\bin\x64\accevent.exe
以下のように書くと、スタート画面のタイルで Alt+Shift を押したときに 500Hz のビープ、矢印キーでタイルの移動が終わって Alt+Shift を離したときに 1000Hz のビープが鳴ることを確認しました。
こういうやり方で UI Automation の処理を追加できそうな感じです。
diff --git a/source/NVDAObjects/UIA/__init__.py b/source/NVDAObjects/UIA/__init__.py index ee71843..ededf34 100644 --- a/source/NVDAObjects/UIA/__init__.py +++ b/source/NVDAObjects/UIA/__init__.py @@ -740,6 +740,14 @@ class ListItem(UIA): parent.event_valueChange() super(ListItem, self).event_stateChange() + def event_UIA_dragStarted(self): + import tones + tones.beep(500, 20) + + def event_UIA_dragCompleted(self): + import tones + tones.beep(1000, 20) + class Dialog(Dialog): role=controlTypes.ROLE_DIALOG diff --git a/source/_UIAHandler.py b/source/_UIAHandler.py index 227e6b0..f045c00 100644 --- a/source/_UIAHandler.py +++ b/source/_UIAHandler.py @@ -115,6 +115,8 @@ UIAEventIdsToNVDAEventNames={ UIA_ToolTipOpenedEventId:"alert", #UIA_AsyncContentLoadedEventId:"documentLoadComplete", #UIA_ToolTipClosedEventId:"hide", + UIA_Drag_DragStartEventId:"UIA_dragStarted", + UIA_Drag_DragCompleteEventId:"UIA_dragCompleted", } class UIAHandler(COMObject):
たまたま本家のチケットでドラッグドロップの話題が出たので、便乗して本件の情報をコメントしました。
Windows 8.1 スタート画面のタイル移動は Alt+Shift+矢印キー(左右でも上下でもよいようです)で可能ですが、 NVDA はこの操作を読み上げません。
Windows ナレーターは下記のように読み上げているようです。
「デスクトップとメールのあいだに天気を置く、にドロップします」