筆跡手勢
Windows Vista 包含一組八個基本 筆跡手勢。 筆跡是與捲動動作和命令相關聯的快速線性畫筆移動。
筆動詳細資料
筆跡功能可讓使用者以新的方式與平板電腦互動,方法是允許透過使用手寫筆快速手勢來執行一般動作。 筆觸並存且不會中斷一般使用者動作,例如左右點選、捲動和筆跡。
筆觸是單向畫筆手勢,需要使用者以快速閃爍動作連絡數位板。 筆動的特性是高速和高度直線。 筆觸是由方向識別。 筆觸可以有八個方向對應到基數和次要指南針方向。
動作或閃爍動作是回應筆動時所執行的動作或快捷方式。 筆動會對應至動作。 下圖顯示對應至其筆跡動作的八個畫筆筆閃爍圖表。
當使用者將手寫筆移至平板電腦數位板上時,硬體會產生畫筆封包,這些封包會路由傳送至平板電腦平臺的畫筆輸入子系統。 一般而言,如果手寫筆做為滑鼠的替代專案,畫筆輸入子系統會接受這些畫筆封包,並將它們傳送至 User32,這是負責處理滑鼠輸入的 Windows 元件。 如果在手寫筆介面上使用手寫筆,則會轉譯筆跡,而不是產生滑鼠封包。
筆跡偵測常式是在手寫筆輸入子系統中實作。 筆跡偵測會從手寫筆開始,並繼續執行到下列其中一項:
收到的封包序列決定不是閃爍或
手寫筆發生。
發生筆跡偵測時,畫筆封包會保留下來,而不會傳送至系統。 這必須完成,因為傳送封包可能會干擾執行的閃爍動作。 例如,在對應至複製動作的閃爍期間傳送封包會關閉選取的專案,這表示動作傳送時不會複製任何內容。
當封包流向畫筆輸入子系統時,閃爍偵測常式會計算所執行動作的長度、速度、時間和曲率的計量。 當每個封包送達時,偵測常式會更新每個計量。 只要任何計量落在構成閃爍的內容之外,閃爍偵測就會結束,並透過傳送封包。
偵測到筆動的位置
筆動手勢是可行的,因為拖曳通常執行速度較慢。 使用者必須先以拖曳的起點為目標、執行拖曳,然後以結束點為目標。 通常這需要太長的時間才能符合筆動資格。 不過,筆跡介面上的筆劃快速筆劃會符合經常發生的筆觸資格;跨越 't' 是常見的範例。 因此,根據預設,筆跡偵測會透過筆跡表面關閉,並開啟全系統。
焦點問題
偵測到閃爍之後,就會開始一連串事件,最終會導致系統執行特定動作以回應所發生的閃爍。 首先,畫筆輸入子系統內的偵測常式會決定應該傳送筆跡的視窗。 這通常是具有焦點的視窗,但有例外狀況。 對於捲動筆動,筆動會傳送至發生筆動的視窗。 請注意,這不一定是具有焦點的視窗。 當閃爍傳送至沒有焦點的視窗時,焦點不會變更為該視窗。
閃爍動作
決定目標視窗之後,該視窗可能會根據預設或程式化事件行為來處理閃爍本身。 應用程式可以根據應用程式和筆觸的方向和位置,回應最適合的動作。 例如,在對應應用程式中,向上和向下閃爍可能會放大或縮小,而不是垂直捲動,如同預設行為所預期。
若要警示應用程式發生閃爍,則會傳送視窗訊息給它。 此視窗訊息包含閃爍的起點和筆觸的方向。 如果應用程式處理此視窗訊息,則手寫筆輸入子系統不會採取進一步的動作。
偵測到筆動之後,畫面上會顯示代表筆動動作的視覺回饋。 此意見反應有兩個用途。 首先,它會為使用者確認筆動成功。 其次,它會提醒使用者執行了哪些動作,協助使用者將筆觸方向與其相關聯的動作連線。
筆動回饋是由兩個部分所組成;代表動作的圖示,以及包含動作名稱的標籤。 標籤會顯示在圖示下方。 偵測到閃爍之後,就會立即顯示意見反應。 雖然應用程式可以藉由處理閃爍視窗訊息來自訂其行為,但應用程式無法停用或修改閃爍回饋。
預期大部分的應用程式都不會感知閃爍,因此不會處理上述視窗訊息。 如果未處理訊息,則手寫筆輸入子系統會採取進一步的動作。 首先,它會查閱與偵測到的筆觸方向相關聯的動作。 接下來,它會採取下表所述的步驟 (,) 導致目標視窗執行此動作。 對於許多筆動動作,這牽涉到傳送應用程式命令,但實作的特定動作則不會。
處理應用程式命令
您的應用程式應該回應任何可能指派給筆劃手勢的應用程式命令。 如果應用程式無法回應 WM_TABLET_FLICK訊息,Windows Vista 會傳送適用的 WM_APPCOMMAND 通知,然後傳送 WM_KEYDOWN 通知。
以下是可指派給筆觸的應用程式命令清單,其中包含可能傳送的備份擊鍵訊息。
命令 | 備份擊鍵 |
---|---|
APPCOMMAND_BROWSER_BACKWARD |
無 |
APPCOMMAND_BROWSER_FORWARD |
無 |
APPCOMMAND_COPY |
Ctrl+C |
APPCOMMAND_PASTE |
Ctrl+V |
APPCOMMAND_UNDO |
Ctrl+Z |
APPCOMMAND_DELETE |
Del |
APPCOMMAND_CUT |
Ctrl+X |
APPCOMMAND_OPEN |
Ctrl+O |
APPCOMMAND_PRINT |
Ctrl+P |
APPCOMMAND_SAVE |
Ctrl+S |
APPCOMMAND_REDO |
Ctrl+Y |
APPCOMMAND_CLOSE |
[複製]、[貼上]、[剪下] 和 [刪除] 等編輯命令可能會針對選取範圍或位於筆劃手勢基底的物件導向。 如果沒有選取專案,您可以使用 [FLICK_POINT 結構 ] 中的資料來判斷物件是否為編輯命令的目標。