專利名稱:對(duì)應(yīng)用對(duì)象的多點(diǎn)觸摸操縱的制作方法
背景技術(shù):
平板PC或筆輸入計(jì)算機(jī)是裝備有觸摸屏或圖形輸入板/屏幕混合技術(shù)的筆記本或平板形狀的移動(dòng)計(jì)算機(jī),該技術(shù)允許用戶用指示筆、數(shù)字筆、或手指尖來代替鍵盤或鼠標(biāo)來操作計(jì)算機(jī)。平板PC提供了更加自然的輸入形式,因?yàn)橛绕涫菍?duì)于那些新使用計(jì)算機(jī)的人而言,草繪和手寫是比鍵盤和鼠標(biāo)熟悉得多的輸入形式。平板PC還可以更容易訪問,因?yàn)槟切┰谏眢w上無法打字的人能夠使用平板PC的附加特征來與電子世界交互。
多點(diǎn)觸摸是指允許計(jì)算機(jī)用戶使用多個(gè)手指或輸入設(shè)備(例如指示筆)控制圖形應(yīng)用的交互技術(shù)的集合。多點(diǎn)觸摸實(shí)施方式常常包括識(shí)別多個(gè)同時(shí)觸點(diǎn)的觸摸硬件(例如屏幕、桌、壁等等)和軟件。多點(diǎn)觸摸與一次僅識(shí)別一個(gè)觸點(diǎn)的傳統(tǒng)的觸摸屏(例如計(jì)算機(jī)觸摸板、ATM、購物自助服務(wù)終端)不同。多點(diǎn)觸摸硬件可以感測(cè)使用熱、手指壓力、高捕獲率相機(jī)、紅外光、光學(xué)捕獲、調(diào)諧電磁感應(yīng)、超聲接收機(jī)、換能器麥克風(fēng)、激光測(cè)距儀、陰影捕獲、以及其他機(jī)制的接觸。存在多點(diǎn)觸摸界面的許多應(yīng)用,并且應(yīng)用設(shè)計(jì)者和用戶正在提出更多的應(yīng)用。一些使用是個(gè)別化的(例如微軟Surface、蘋果iPhone、HTC Diamond) 0作為新的輸入方法,多點(diǎn)觸摸提供新的用戶體驗(yàn)范例的潛力。
應(yīng)用在沒有應(yīng)用軟件從多點(diǎn)觸摸硬件接收信息的接口的情況下不能使用多點(diǎn)觸摸硬件。遺憾的是,每個(gè)多點(diǎn)觸摸硬件設(shè)備都包括其自己的專有接口,并且應(yīng)用創(chuàng)作者必須具有硬件設(shè)備的特定知識(shí)來編寫與該設(shè)備一起工作的軟件。例如,多點(diǎn)觸摸硬件提供商可以提供內(nèi)核模式驅(qū)動(dòng)器和用戶模式應(yīng)用接口,通過該用戶模式應(yīng)用接口,用戶模式軟件應(yīng)用可以與多點(diǎn)觸摸硬件交互以接收觸摸信息。應(yīng)用創(chuàng)作者編寫與用戶模式應(yīng)用接口通信的軟件,但是應(yīng)用創(chuàng)作者的軟件僅僅與該多點(diǎn)觸摸硬件一起工作。具有不同的多點(diǎn)觸摸硬件設(shè)備的計(jì)算機(jī)用戶不能使用該應(yīng)用創(chuàng)作者的軟件,除非該應(yīng)用創(chuàng)作者制作該軟件的與該計(jì)算機(jī)用戶的設(shè)備一起正確運(yùn)行的不同版本。這導(dǎo)致了應(yīng)用創(chuàng)作者的非常有限的潛在市場, 減少了編寫支持多點(diǎn)觸摸交互的應(yīng)用的動(dòng)機(jī),并且將最大數(shù)目的應(yīng)用可用于的最流行設(shè)備的成本保持得高。
另一問題是,應(yīng)用難以基于從多點(diǎn)觸摸硬件所接收的觸摸輸入來確定用戶的意圖。觸摸輸入可以作為硬件在任何給定時(shí)刻感測(cè)到觸摸輸入之處的坐標(biāo)的列表被接收。每個(gè)應(yīng)用都必須包括用于解釋坐標(biāo)以及確定用戶意圖的軟件。例如,如果應(yīng)用接收關(guān)于兩個(gè)不同觸摸的信息,即第一位置處的第一觸摸、然后稍后是新位置處的第二觸摸,則由應(yīng)用來確定用戶是否針對(duì)第一觸摸使用了一個(gè)手指并且針對(duì)第二觸摸使用了另一手指,或者用戶是否將同一手指從一個(gè)位置滑動(dòng)到另一位置以產(chǎn)生第一觸摸和第二觸摸。根據(jù)應(yīng)用的目的,對(duì)用戶輸入的這兩種不同的解釋可能具有大不相同的含義。
發(fā)明內(nèi)容
在此所述的操縱系統(tǒng)為應(yīng)用提供通用的平臺(tái)和應(yīng)用編程接口(API)以與各種多點(diǎn)觸摸硬件設(shè)備通信,并且使得易于將多點(diǎn)觸摸輸入解釋成一個(gè)或多個(gè)操縱。操縱與進(jìn)行個(gè)別化的觸摸輸入相比更直接地映射到用戶意圖,并且添加對(duì)使用多點(diǎn)觸摸接觸對(duì)對(duì)象進(jìn)行基本變換的支持。應(yīng)用可以使用操縱來支持旋轉(zhuǎn)、調(diào)整大小、以及同時(shí)平移多個(gè)對(duì)象。操縱系統(tǒng)輸出包含旋轉(zhuǎn)、比例和平移信息的二維OD)仿射變換。因此,使用該操縱系統(tǒng),應(yīng)用創(chuàng)作者可以更加專注于建立具有觸摸能力的應(yīng)用并且讓操縱系統(tǒng)來處理底層變換和與多點(diǎn)觸摸硬件的通信。
提供本發(fā)明內(nèi)容以便以簡化形式介紹將在以下的具體實(shí)施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限定所要求保護(hù)的主題的范圍。
圖1是示出了一個(gè)實(shí)施例中的操縱系統(tǒng)的組件的框圖。
圖2是示出了一個(gè)實(shí)施例中的操縱的典型操作環(huán)境和組件之間的數(shù)據(jù)流的數(shù)據(jù)流圖。
圖3是示出了一個(gè)實(shí)施例中的通過觸摸輸入被操縱的應(yīng)用對(duì)象的顯示圖。
圖4是示出了一個(gè)實(shí)施例中的多點(diǎn)觸摸應(yīng)用使用該操縱系統(tǒng)進(jìn)行的輸入循環(huán)處理的流程圖。
圖5是示出了一個(gè)實(shí)施例中的操縱系統(tǒng)在該系統(tǒng)接收觸摸輸入時(shí)的處理的流程圖。
具體實(shí)施例方式該操縱系統(tǒng)為應(yīng)用提供公共平臺(tái)和API以與各種多點(diǎn)觸摸硬件設(shè)備通信,并且使得易于將多點(diǎn)觸摸輸入解釋成一種或多種操縱。操縱與進(jìn)行個(gè)別化的觸摸輸入相比更直接地映射到用戶意圖,并且添加對(duì)使用多個(gè)觸摸接觸對(duì)對(duì)象進(jìn)行基本變換的支持。例如,從操縱系統(tǒng)接收操縱的應(yīng)用創(chuàng)作者可以在不對(duì)輸入執(zhí)行附加解釋的情況下將用戶把手指從一個(gè)位置滑動(dòng)到另一位置與用戶放下兩個(gè)不同手指區(qū)分開。操縱提供對(duì)多個(gè)同時(shí)交互的支持。應(yīng)用可以使用操縱來支持旋轉(zhuǎn)、調(diào)整大小、以及同時(shí)平移多個(gè)對(duì)象(例如照片)。與典型的基于窗口的用戶界面不同,不存在每次將用戶束縛于單個(gè)輸入的焦點(diǎn)或激活的概念。 另外,應(yīng)用可以檢索操縱信息。操縱系統(tǒng)輸出2D仿射變換,該2D仿射變換包含旋轉(zhuǎn)、比例 (例如縮放)以及平移(例如水平移動(dòng))信息。
接觸是對(duì)多點(diǎn)觸摸硬件的個(gè)別化的觸摸。例如,當(dāng)用戶將其手指放置在多點(diǎn)觸摸硬件上,將其手指在周圍移動(dòng)并且提起其手指時(shí),該事件序列是單個(gè)接觸。該系統(tǒng)用接觸標(biāo)識(shí)符來標(biāo)識(shí)每個(gè)接觸。接觸在其存在的時(shí)間內(nèi)保留相同的標(biāo)識(shí)符。當(dāng)用戶在周圍移動(dòng)各種接觸時(shí),系統(tǒng)將該運(yùn)動(dòng)解釋成一個(gè)或多個(gè)操縱。例如,如果用戶將兩個(gè)接觸移動(dòng)得彼此更近或分開更遠(yuǎn),則該系統(tǒng)可以確定該用戶正在對(duì)對(duì)象進(jìn)行縮放比例(例如對(duì)其進(jìn)行放大或縮小)。作為另一例子,如果用戶以圓周運(yùn)動(dòng)移動(dòng)多個(gè)接觸,則該系統(tǒng)可以將該移動(dòng)解釋成對(duì)象的旋轉(zhuǎn)。每個(gè)應(yīng)用都可以定義相關(guān)度不同的對(duì)象,因此由應(yīng)用將系統(tǒng)的實(shí)例(稱為操縱處理器)附加到用戶可以在該應(yīng)用內(nèi)使用觸摸輸入進(jìn)行操縱的每個(gè)對(duì)象。例如,照片瀏覽應(yīng)用可以將操縱處理器附加到所顯示的每個(gè)照片,使得用戶可以在周圍移動(dòng)照片,對(duì)照片進(jìn)行比例縮放,旋轉(zhuǎn)照片等等。因此,應(yīng)用創(chuàng)作者可以更加專注于建立具有觸摸能力的應(yīng)用并且讓操縱系統(tǒng)來處理底層變換和與多點(diǎn)觸摸硬件的通信。
圖1是示出一個(gè)實(shí)施例中的操縱系統(tǒng)的組件的框圖。操縱系統(tǒng)100包括硬件接口 110、一個(gè)或多個(gè)操縱處理器120、接觸管理器130、輸入變換組件140、以及應(yīng)用接口 150。這些組件中的每一個(gè)都在此處進(jìn)一步詳細(xì)討論。
硬件接口 110與硬件通信以接收觸摸接觸和移動(dòng)。硬件接口 110可以包括若干子組件,這些子組件一起工作以提供觸摸輸入信息。例如,操作系統(tǒng)可以為多點(diǎn)觸摸硬件制造商提供公共驅(qū)動(dòng)器模型以為他們的特定硬件提供觸摸信息。操作系統(tǒng)可以將通過該模型所接收的觸摸信息翻譯成窗口消息(例如在此所述的WM_T0UCH)并且將這些消息傳遞給應(yīng)用。因此,硬件接口 110可以涉及硬件、硬件驅(qū)動(dòng)器以及操作系統(tǒng)層的協(xié)調(diào)。其結(jié)果是到操縱系統(tǒng)的一系列消息,這些消息標(biāo)識(shí)出特定的接觸(例如手指的觸摸)以及該接觸隨時(shí)間的坐標(biāo)。例如,操作系統(tǒng)可以在新的接觸被向下放置到多點(diǎn)觸摸硬件上時(shí)提供消息,每當(dāng)接觸移動(dòng)時(shí)提供消息,以及在用戶提起接觸離開多點(diǎn)觸摸硬件時(shí)提供消息。
一個(gè)或多個(gè)操縱處理器120使用輸入變換組件140來解釋與某一應(yīng)用對(duì)象相關(guān)聯(lián)的每個(gè)接觸的移動(dòng)。操縱處理器120可以確定用戶正在使用多個(gè)接觸來執(zhí)行單個(gè)動(dòng)作。 例如,用戶可以用一只手的所有五個(gè)手指觸摸照片并且扭轉(zhuǎn)其手以指示對(duì)照片進(jìn)行旋轉(zhuǎn)的意圖。操縱處理器120接收五個(gè)分開的接觸(每個(gè)手指一個(gè))以及每個(gè)接觸的坐標(biāo)在用戶旋轉(zhuǎn)其手時(shí)的變化。操縱處理器120確定每個(gè)接觸正在抓取同一對(duì)象并且執(zhí)行同一旋轉(zhuǎn)。 該系統(tǒng)將向應(yīng)用通知用戶旋轉(zhuǎn)了該對(duì)象,但是應(yīng)用可以忽略用戶是使用兩個(gè)、五個(gè)還是任意特定數(shù)目的手指或其他接觸來執(zhí)行該旋轉(zhuǎn)。這大大簡化了應(yīng)用的創(chuàng)作,因?yàn)閼?yīng)用創(chuàng)作者可以處理與應(yīng)用相關(guān)的那些類型的操縱,并且讓操縱系統(tǒng)來解釋從多點(diǎn)觸摸硬件所接收的每個(gè)低級(jí)觸摸輸入的含義。
每個(gè)操縱處理器120都管理與該操縱處理器相關(guān)聯(lián)的接觸的列表,并且在操縱處理器120接收新的低級(jí)觸摸信息時(shí)存儲(chǔ)關(guān)于這些接觸的速度矢量和平移信息。接觸管理器 130是系統(tǒng)100的處理操縱處理器120的接觸管理的一部分。由應(yīng)用向操縱系統(tǒng)通知應(yīng)當(dāng)將哪些接觸與每個(gè)操縱處理器相關(guān)聯(lián)。應(yīng)用可以在該應(yīng)用接收低級(jí)觸摸信息時(shí)例如通過使用與所接收的低級(jí)觸摸信息相關(guān)聯(lián)的坐標(biāo)對(duì)應(yīng)用對(duì)象進(jìn)行命中測(cè)試來作出該確定。例如, 如果用戶在照片編輯應(yīng)用中將3個(gè)手指放在同一照片上,則應(yīng)用確定與每個(gè)手指相關(guān)聯(lián)的接觸是觸摸同一對(duì)象,并且將這3個(gè)接觸中的每個(gè)與同一操縱處理器相關(guān)聯(lián)。接觸管理器 130代表操縱處理器120管理相關(guān)聯(lián)的接觸的列表,并且跟蹤接觸的移動(dòng)以解釋由用戶所打算的對(duì)相關(guān)聯(lián)的對(duì)象的操縱。
操縱處理器120使用輸入變換組件140以單獨(dú)和一齊兩種方式作出關(guān)于所接收的各個(gè)接觸的移動(dòng)的含義的確定。例如,如果用戶用兩個(gè)手指操縱照片,這創(chuàng)建兩個(gè)相應(yīng)的輸入接觸,則操縱處理器120使用輸入變換組件140來確定這兩個(gè)接觸之間的相對(duì)移動(dòng)的含義。如果這兩個(gè)接觸移動(dòng)得分開,則輸入變換組件140可以確定用戶正在對(duì)對(duì)象進(jìn)行比例縮放以改變對(duì)象的大小。如果2個(gè)接觸旋轉(zhuǎn),則輸入變換組件140可以確定用戶正在旋轉(zhuǎn)對(duì)象。如果這兩個(gè)接觸都在某一方向上滑動(dòng),則輸入變換組件140可以確定用戶正在將對(duì)象水平移動(dòng)到新的位置處。盡管每種類型的移動(dòng)在此都是分開描述的,但是用戶可以同時(shí)作出所有三種類型的移動(dòng),并且輸入變換處理器可以將總體變換報(bào)告給應(yīng)用。例如,用戶可以在一個(gè)移動(dòng)中對(duì)對(duì)象進(jìn)行旋轉(zhuǎn)、比例縮放和水平移動(dòng)的全部項(xiàng)目。
應(yīng)用接口 150與應(yīng)用通信以接收信息并且將操縱變換提供給該應(yīng)用。應(yīng)用接口150從應(yīng)用接收初始化信息。初始化信息可以規(guī)定應(yīng)用對(duì)象針對(duì)某一對(duì)象和相關(guān)聯(lián)的操縱處理器支持哪些類型的變換。例如,一些應(yīng)用對(duì)象可以支持比例縮放但不支持旋轉(zhuǎn)。初始化信息還可以規(guī)定對(duì)象的支點(diǎn)。操縱系統(tǒng)通過應(yīng)用接口向應(yīng)用提供操縱變換。例如,當(dāng)操縱系統(tǒng)接收被系統(tǒng)解釋成所識(shí)別的變換(例如旋轉(zhuǎn))的低級(jí)觸摸輸入時(shí),該系統(tǒng)激發(fā)一事件以向應(yīng)用通知該操縱。應(yīng)用處理操縱變換以基于該變換來修改對(duì)象。例如,如果用戶旋轉(zhuǎn)了對(duì)象,則應(yīng)用可以存儲(chǔ)對(duì)象的新取向以在應(yīng)用下次顯示該對(duì)象時(shí)使用。
上面實(shí)現(xiàn)該系統(tǒng)的計(jì)算設(shè)備可包括中央處理單元、存儲(chǔ)器、輸入設(shè)備(例如,鍵盤和定點(diǎn)設(shè)備)、輸出設(shè)備(例如,顯示設(shè)備)和存儲(chǔ)設(shè)備(例如,盤驅(qū)動(dòng)器)。存儲(chǔ)器和存儲(chǔ)設(shè)備是可以用實(shí)現(xiàn)該系統(tǒng)的計(jì)算機(jī)可執(zhí)行指令來編碼的計(jì)算機(jī)可讀介質(zhì),這表示包含該指令的計(jì)算機(jī)可讀介質(zhì)。此外,數(shù)據(jù)結(jié)構(gòu)和消息結(jié)構(gòu)可被存儲(chǔ)或經(jīng)由諸如通信鏈路上的信號(hào)等數(shù)據(jù)傳送介質(zhì)發(fā)送??梢允褂酶鞣N通信鏈路,諸如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)、點(diǎn)對(duì)點(diǎn)撥號(hào)連接、蜂窩電話網(wǎng)絡(luò)等。
該系統(tǒng)的各實(shí)施例可以在各種操作環(huán)境中實(shí)現(xiàn),這些操作環(huán)境包括個(gè)人計(jì)算機(jī)、 服務(wù)器計(jì)算機(jī)、手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費(fèi)電子設(shè)備、數(shù)碼相機(jī)、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括任何上述系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等。計(jì)算機(jī)系統(tǒng)可以是蜂窩電話、個(gè)人數(shù)字助理、智能電話、個(gè)人計(jì)算機(jī)、可編程消費(fèi)電子設(shè)備、數(shù)碼相機(jī)等。
該系統(tǒng)可以在由一個(gè)或多個(gè)計(jì)算機(jī)或其他設(shè)備執(zhí)行的諸如程序模塊等計(jì)算機(jī)可執(zhí)行指令的一般上下文下予以描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。通常,程序模塊的功能可以在各個(gè)實(shí)施例中按需進(jìn)行組合或分布。
圖2是示出了一個(gè)實(shí)施例中的操縱系統(tǒng)的典型操作環(huán)境和組件之間的數(shù)據(jù)流的數(shù)據(jù)流圖。多點(diǎn)觸摸硬件設(shè)備通過硬件接口產(chǎn)生輸入210。例如,該硬件可以通過由硬件制造商所提供的軟件驅(qū)動(dòng)器將輸入210發(fā)送給操作系統(tǒng)。硬件接口向應(yīng)用230提供輸入事件220。例如,應(yīng)用可以向操作系統(tǒng)通知應(yīng)用230支持多點(diǎn)觸摸用戶輸入,并注冊(cè)以接收與多點(diǎn)觸摸用戶輸入相關(guān)的消息。應(yīng)用230接收低級(jí)觸摸輸入信息作為輸入變化M0,并且將該輸入變化240轉(zhuǎn)發(fā)給在此所述的操縱系統(tǒng)250。例如,輸入變化240可以使用一組坐標(biāo)來描述與硬件的一個(gè)或多個(gè)觸摸接觸的每個(gè)移動(dòng),所述一組坐標(biāo)指示每個(gè)接觸的當(dāng)前位置和其他移動(dòng)特性。操縱系統(tǒng)250解釋輸入變化240并且向應(yīng)用230通知一個(gè)或多個(gè)操縱事件 260,所述操縱事件260指示用戶正在對(duì)所顯示的對(duì)象執(zhí)行的較高級(jí)的操縱。例如,如果接觸的移動(dòng)指示用戶打算旋轉(zhuǎn)對(duì)象,則操縱事件260指示旋轉(zhuǎn)程度。
盡管該圖示出了應(yīng)用首先接收觸摸輸入并且將觸摸輸入傳遞給操縱系統(tǒng),但是在一些實(shí)施例中,操縱系統(tǒng)直接從硬件接口接收觸摸輸入,解釋觸摸輸入,并且向應(yīng)用提供所解釋的操縱事件。這表示一種替代架構(gòu),其提供相似的所產(chǎn)生的功能,但是給應(yīng)用賦予對(duì)輸入處理的更少控制。例如,該應(yīng)用可能不能定義該系統(tǒng)將各個(gè)操縱處理器附加到的各個(gè)應(yīng)用對(duì)象。在此所述的RTS插件是該系統(tǒng)的該替代架構(gòu)的一個(gè)例子。
圖3是示出了一個(gè)實(shí)施例中的通過觸摸輸入操縱的應(yīng)用對(duì)象的顯示圖。應(yīng)用可以同時(shí)顯示和接收針對(duì)許多這樣的對(duì)象的觸摸輸入。例如,這些對(duì)象可以代表存儲(chǔ)在用戶的計(jì)算機(jī)上的一個(gè)或多個(gè)照片。對(duì)象310具有由應(yīng)用基于該應(yīng)用的具體定義域所定義的邊界320。例如,照片瀏覽應(yīng)用可以具有代表用戶照片的對(duì)象,并且該應(yīng)用可以將每個(gè)所顯示的照片的邊緣定義成對(duì)象邊界320。用戶用位置330和340處的兩個(gè)初始接觸來觸摸該對(duì)象。 例如,用戶可以將其拇指放置在位置330處并且將其食指放置在位置340處。然后,用戶旋轉(zhuǎn)其手指并且將手指移動(dòng)分開,使得接觸終止于位置350和360。線370和380示出了由用戶的移動(dòng)所執(zhí)行的近似旋轉(zhuǎn)。線390示出了由用戶的移動(dòng)所執(zhí)行的近似伸展。操縱系統(tǒng)不是提供觸摸接觸330-360的各個(gè)坐標(biāo),而是可以向應(yīng)用指示由用戶所執(zhí)行的諸如旋轉(zhuǎn)程度和與伸展相關(guān)的比例縮放因子之類的變換。
圖4是示出了一個(gè)實(shí)施例中的多點(diǎn)觸摸應(yīng)用使用該操縱系統(tǒng)進(jìn)行的輸入循環(huán)處理的流程圖。在框410,應(yīng)用接收低級(jí)觸摸輸入。例如,操作系統(tǒng)或者操縱系統(tǒng)的實(shí)例從多點(diǎn)觸摸硬件接收觸摸接觸信息,并且將該觸摸接觸信息轉(zhuǎn)發(fā)給該應(yīng)用。在框420,該應(yīng)用標(biāo)識(shí)出該輸入所應(yīng)用于的對(duì)象。例如,該應(yīng)用可以通過將所接收的輸入的坐標(biāo)與由該應(yīng)用所顯示的每個(gè)應(yīng)用對(duì)象的坐標(biāo)相比較來對(duì)所接收的輸入的坐標(biāo)進(jìn)行命中測(cè)試。如果觸摸輸入處于所顯示的應(yīng)用對(duì)象的邊界內(nèi),則該應(yīng)用確定該觸摸輸入應(yīng)用于該對(duì)象。在框430,該應(yīng)用向操縱API發(fā)送所接收的觸摸輸入和關(guān)于所標(biāo)識(shí)出的應(yīng)用對(duì)象的信息以用于調(diào)用該操縱系統(tǒng)(參見圖幻。例如,該應(yīng)用可以為每個(gè)應(yīng)用對(duì)象創(chuàng)建數(shù)字標(biāo)識(shí)符并且在每當(dāng)觸摸輸入對(duì)應(yīng)于該對(duì)象時(shí)將該數(shù)字標(biāo)識(shí)符傳遞給操縱系統(tǒng)。
在框440,該應(yīng)用從操縱系統(tǒng)接收操縱事件,該操縱事件描述對(duì)所標(biāo)識(shí)出的應(yīng)用對(duì)象的一個(gè)或多個(gè)操縱。例如,該應(yīng)用可以接收描述應(yīng)用對(duì)象的2D仿射變換的事件。為了簡化說明,框440被串行地在框430之后示出。在實(shí)際中,該應(yīng)用可以在操縱系統(tǒng)向應(yīng)用通知操縱事件以前接收許多觸摸輸入事件。不一定存在觸摸輸入事件到操縱事件的一對(duì)一映射。由于操縱事件代表低級(jí)觸摸輸入的較高級(jí)解釋,因此多個(gè)觸摸輸入可以組成單個(gè)操縱事件。在框450,應(yīng)用處理所接收的操縱事件。例如,如果所接收的操縱事件是旋轉(zhuǎn),則應(yīng)用可以在屏幕上旋轉(zhuǎn)該應(yīng)用對(duì)象并且存儲(chǔ)應(yīng)用對(duì)象新位置以供在該應(yīng)用再次顯示該應(yīng)用對(duì)象時(shí)使用。操縱系統(tǒng)使應(yīng)用不必執(zhí)行特定于某一多點(diǎn)觸摸硬件設(shè)備的步驟或者甚至不必知道哪個(gè)硬件正在提供多點(diǎn)觸摸輸入。另外,操縱系統(tǒng)使應(yīng)用不必處理個(gè)別化的接觸運(yùn)動(dòng),并且允許應(yīng)用專注于處理應(yīng)用對(duì)象層的變換。
在框460,應(yīng)用等待下一觸摸輸入。例如,應(yīng)用可以調(diào)用諸如微軟Windows上的 GetMessage之類的操縱系統(tǒng)提供的消息API,該消息API等待將被遞送給應(yīng)用的消息隊(duì)列的下一消息。在判定框470,如果應(yīng)用接收到下一觸摸輸入,則該應(yīng)用循環(huán)到框410以處理該輸入,否則該應(yīng)用循環(huán)到框460以繼續(xù)等待另外的輸入。當(dāng)應(yīng)用關(guān)閉時(shí),該應(yīng)用退出輸入循環(huán)(未示出)。
圖5是示出了一個(gè)實(shí)施例中的操縱系統(tǒng)在該系統(tǒng)接收觸摸輸入時(shí)的處理的流程圖。在框505,該系統(tǒng)一起接收觸摸輸入和標(biāo)識(shí)出與該觸摸輸入相關(guān)聯(lián)的應(yīng)用對(duì)象的信息。 例如,觸摸輸入可以包括一個(gè)或多個(gè)觸摸接觸的坐標(biāo)或其他位置信息,并且應(yīng)用對(duì)象信息可以包括如下標(biāo)識(shí)符該標(biāo)識(shí)符被該應(yīng)用分配給多點(diǎn)觸摸硬件上該觸摸輸入所位于的某一顯示的對(duì)象。在框510,該系統(tǒng)標(biāo)識(shí)出與該應(yīng)用對(duì)象相關(guān)聯(lián)的操縱處理器。在判定框520, 如果該系統(tǒng)之前還未將操縱處理器與應(yīng)用對(duì)象相關(guān)聯(lián),則該系統(tǒng)在框530繼續(xù)進(jìn)行,否則該系統(tǒng)在框540繼續(xù)進(jìn)行。在框530,該系統(tǒng)創(chuàng)建操縱處理器并且將其與該應(yīng)用對(duì)象相關(guān)聯(lián),然后在框540繼續(xù)進(jìn)行。
8 在判定框M0,如果所接收的觸摸輸入指示該應(yīng)用接收到新的觸摸(例如觸摸放下事件),則該系統(tǒng)在框550繼續(xù)進(jìn)行,否則該系統(tǒng)在框560繼續(xù)進(jìn)行。例如,用戶可以做出手指與屏幕上對(duì)象的初始接觸,或者將另一手指放下在(即接觸)之前所觸摸的對(duì)象上。 在框550,該系統(tǒng)將新的接觸添加到與操縱處理器相關(guān)聯(lián)的接觸的列表,并且然后在框560 繼續(xù)進(jìn)行。在判定框560,如果所接收的觸摸輸入指示該應(yīng)用接收到表示觸摸接觸已經(jīng)被除去(例如觸摸抬起事件)的通知,則該系統(tǒng)在框570繼續(xù)進(jìn)行,否則該系統(tǒng)在框580繼續(xù)進(jìn)行。例如,用戶可以從之前所觸摸的對(duì)象提起一個(gè)或多個(gè)手指。在框570,該系統(tǒng)從與操縱處理器相關(guān)聯(lián)的接觸的列表中除去該接觸,并且然后在框580繼續(xù)進(jìn)行。在框580,該系統(tǒng)處理觸摸輸入以確定由該觸摸輸入所表示的任何操縱。例如,觸摸移動(dòng)可以指示旋轉(zhuǎn)或平移操縱,而觸摸接觸去除可以指示操縱的完成。在框590,該系統(tǒng)激發(fā)操縱事件以將描述該操縱的變換信息發(fā)送給該應(yīng)用。例如,該系統(tǒng)可以向該應(yīng)用提供該對(duì)象的角旋轉(zhuǎn)的程度。 在框590之后,這些步驟結(jié)束。
在一些實(shí)施例中,操縱系統(tǒng)是基于消息的操作系統(tǒng)的一部分,并且該系統(tǒng)接收與該操作系統(tǒng)從硬件接收的觸摸輸入相關(guān)的消息。例如,使用類似于用于鼠標(biāo)消息的 WM_M0USEM0VE的范例,未來版本的微軟Windows可以提供包含從多點(diǎn)觸摸硬件接收的低級(jí)觸摸移動(dòng)信息的WMjOUCH消息。操縱系統(tǒng)還可以提供粒度更細(xì)的消息,比如WM_ TOUCHDOWN(當(dāng)用多點(diǎn)觸摸硬件作出新接觸時(shí))、WM_T0UCHM0VE(當(dāng)現(xiàn)有接觸移動(dòng)時(shí))、以及 WM_T0UCHUP (當(dāng)接觸被提離多點(diǎn)觸摸硬件時(shí))。接收與WM_T0UCH相關(guān)的消息的應(yīng)用可以調(diào)用操縱系統(tǒng)并且將該消息傳遞給操縱系統(tǒng)以用于解釋和處理。然后,該應(yīng)用接收較高級(jí)事件,該較高級(jí)事件代表操縱系統(tǒng)基于所接收的低級(jí)觸摸移動(dòng)信息對(duì)用戶所打算的操縱作出的解釋。
在一些實(shí)施例中,操縱系統(tǒng)從諸如實(shí)時(shí)指示筆之類的專用硬件接收低級(jí)觸摸移動(dòng)信息。例如,微軟平板PC軟件開發(fā)包(SDK)提供應(yīng)用創(chuàng)作者可用掛鉤(hook)進(jìn)行擴(kuò)展的實(shí)時(shí)指示筆(RTQ組件。RTS掛鉤從RTS硬件接收輸入,并且可以對(duì)所接收的輸入執(zhí)行處理。 操縱系統(tǒng)可以提供如下的掛鉤該掛鉤可以被應(yīng)用插入到RTS組件中以自動(dòng)處理RTS以及其他輸入以便如在此所述那樣操縱應(yīng)用對(duì)象。RTS掛鉤向操縱系統(tǒng)提供接收輸入的不同方式,但是操縱系統(tǒng)如之前所描述的那樣解釋輸入并向應(yīng)用激發(fā)描述該輸入所蘊(yùn)含的操縱的事件。用戶可以使用指示筆和觸摸輸入的組合。例如,用戶可以用指示筆繪制對(duì)象并且然后使用其手指旋轉(zhuǎn)該對(duì)象。
在一些實(shí)施例中,操縱系統(tǒng)的操縱處理器從使用該系統(tǒng)的應(yīng)用接收初始化信息。 例如,應(yīng)用可以用關(guān)于應(yīng)用對(duì)象的中心位置的信息來初始化操縱處理器。這可以允許操縱處理器更好地從所接收的低級(jí)觸摸輸入中解釋用戶的意圖。例如,如果用戶繞應(yīng)用對(duì)象的中心以弧形旋轉(zhuǎn)單個(gè)觸摸接觸,則該處理器可以將該運(yùn)動(dòng)作為旋轉(zhuǎn)操縱。在沒有初始化信息的情況下,該處理器可以將同一移動(dòng)解釋成以觸摸接觸所移動(dòng)的圓弧簡單地水平移動(dòng)該應(yīng)用對(duì)象。因此,通過向操縱處理器提供附加的應(yīng)用上下文信息,應(yīng)用可以允許操縱系統(tǒng)更好地解釋用戶操縱。
在一些實(shí)施例中,操縱系統(tǒng)允許應(yīng)用在用戶操縱某一對(duì)象的全部時(shí)間內(nèi)重新使用相同的操縱處理器。例如,應(yīng)用可以請(qǐng)求系統(tǒng)在應(yīng)用啟動(dòng)時(shí)為每個(gè)應(yīng)用對(duì)象創(chuàng)建操縱處理器并且在應(yīng)用關(guān)閉以前一直使用該操縱處理器。應(yīng)用也可以延遲每個(gè)操縱處理器的創(chuàng)建,直到用戶使用觸摸與某一對(duì)象交互(例如當(dāng)該應(yīng)用檢測(cè)到對(duì)一對(duì)象的首次接觸時(shí))。在操縱處理器的壽命期間,接觸可隨著用戶提離和觸摸多點(diǎn)觸摸硬件并且執(zhí)行各種操縱而出現(xiàn)和消失。操縱處理器如在此所述的那樣跟蹤當(dāng)前接觸的列表和由接觸移動(dòng)所表示的操縱。
在一些實(shí)施例中,操縱系統(tǒng)延遲向應(yīng)用激發(fā)事件,直到該系統(tǒng)已經(jīng)接收到與某一操縱處理器相關(guān)聯(lián)的每個(gè)接觸的經(jīng)更新的位置,或者直到已經(jīng)經(jīng)過一定時(shí)間。如果該系統(tǒng)過快地作出反應(yīng),比如在每個(gè)所接收的接觸更新以后激發(fā)事件,則可能出現(xiàn)諸如似動(dòng)非動(dòng) (stuttering)之類的問題。例如,如果用戶用兩個(gè)手指觸摸應(yīng)用對(duì)象并且將兩個(gè)手指同時(shí)沿著多點(diǎn)觸摸硬件往下拉,則可能的是系統(tǒng)將稍稍在一個(gè)接觸的更新之前接收另一個(gè)接觸。如果該系統(tǒng)在該系統(tǒng)一接收更新時(shí)就基于接觸更新而激發(fā)事件,則該系統(tǒng)將報(bào)告該對(duì)象正在快速地來回旋轉(zhuǎn)。反之,如果該系統(tǒng)在接收針對(duì)第二接觸的新位置以前一直等待,或者等待一定的時(shí)間段(例如100毫秒)來接收針對(duì)第二接觸的更新,則該系統(tǒng)可以正確區(qū)分用戶以相同方向移動(dòng)兩個(gè)接觸并且更新在時(shí)間上稍微隔開地被接收的情況和用戶實(shí)際上通過僅移動(dòng)所述接觸之一來旋轉(zhuǎn)對(duì)象的情況。因此,該系統(tǒng)可以執(zhí)行該附加的處理來提供令人滿意的用戶體驗(yàn)。
在一些實(shí)施例中,操縱系統(tǒng)是應(yīng)用可調(diào)用的公共控制的一部分,以提供公共用戶接口。微軟Windows提供用于顯示列表、樹、按鈕等等的公共控制。同樣,操縱系統(tǒng)可以提供基于多點(diǎn)觸摸的控制以用于以在此所述的方式操縱應(yīng)用對(duì)象。例如,該系統(tǒng)可以提供允許用戶顯示一個(gè)或多個(gè)對(duì)象并操縱這些對(duì)象的散布控制。散布控制處理的是對(duì)低級(jí)觸摸輸入的處理以及將該輸入與某一應(yīng)用對(duì)象相關(guān)聯(lián),并且該應(yīng)用從該控制接收事件以處理對(duì)應(yīng)用對(duì)象的操縱。例如,如果該控制指示用戶調(diào)整了對(duì)象的大小,則該應(yīng)用可以存儲(chǔ)對(duì)象的新大小。
在一些實(shí)施例中,操縱系統(tǒng)提供單個(gè)觸摸接觸的增強(qiáng)型解釋。例如如前面所述的那樣,當(dāng)該應(yīng)用用對(duì)象的中心或其他參考點(diǎn)(例如角)的位置來初始化操縱處理器時(shí),該系統(tǒng)可以將單個(gè)接觸繞應(yīng)用對(duì)象的中心的旋轉(zhuǎn)解釋成旋轉(zhuǎn)而不是平移。類似地,該系統(tǒng)可以根據(jù)預(yù)先定義的含義來解釋其他單個(gè)觸摸移動(dòng)。例如,該系統(tǒng)可以將用戶對(duì)單個(gè)接觸進(jìn)行繞對(duì)象的中心的圓周旋轉(zhuǎn)處理成用于對(duì)對(duì)象進(jìn)行比例縮放的操縱,而不是由用戶的移動(dòng)字面上所蘊(yùn)含的旋轉(zhuǎn)。
在一些實(shí)施例中,操縱系統(tǒng)以三維形式執(zhí)行在此所述的處理。盡管在此描述了二維多點(diǎn)觸摸硬件,但是本領(lǐng)域的普通技術(shù)人員能夠認(rèn)識(shí)到,該系統(tǒng)的在此所述的處理可以在硬件可用于以三維形式提供坐標(biāo)移動(dòng)的情況下同樣良好地應(yīng)用于三維(3D)操縱。例如, 檢測(cè)壓力或使用相機(jī)來檢測(cè)用戶手指的3D移動(dòng)的硬件可以以三維形式向操縱系統(tǒng)提供移動(dòng)的坐標(biāo),并且該操縱系統(tǒng)然后可以產(chǎn)生以多個(gè)3D方向描述對(duì)對(duì)象的操縱(例如旋轉(zhuǎn)、比例縮放、以及平移)的3D變換。
下面的表定義了由操縱系統(tǒng)提供給應(yīng)用以用于處理多點(diǎn)觸摸用戶輸入的一個(gè) API。
權(quán)利要求
1.一種計(jì)算機(jī)實(shí)現(xiàn)的用于將多點(diǎn)觸摸輸入變換成一個(gè)或多個(gè)操縱事件的方法,該方法包括從多點(diǎn)觸摸硬件接收410低級(jí)觸摸輸入;標(biāo)識(shí)出420所接收的低級(jí)觸摸輸入應(yīng)用于的應(yīng)用對(duì)象;向操縱API發(fā)送430所接收的低級(jí)觸摸輸入和關(guān)于所標(biāo)識(shí)出的應(yīng)用對(duì)象的信息,以用于將所接收的低級(jí)觸摸輸入解釋成一個(gè)或多個(gè)操縱事件,其中該操縱API能夠被多個(gè)應(yīng)用調(diào)用并且提供應(yīng)用無關(guān)的平臺(tái)以用于處理多點(diǎn)觸摸輸入;從該操縱系統(tǒng)接收440描述對(duì)所標(biāo)識(shí)出的應(yīng)用對(duì)象的一個(gè)或多個(gè)操縱的操縱事件;以及通過修改所標(biāo)識(shí)出的應(yīng)用對(duì)象來處理450所接收的操縱事件,使得該應(yīng)用在不執(zhí)行特定于特定多點(diǎn)觸摸硬件的步驟并且不解釋個(gè)別化的低級(jí)觸摸輸入的情況下接收一個(gè)或多個(gè)操縱事件。
2.如權(quán)利要求1所述的方法,其特征在于,接收低級(jí)觸摸輸入包括從操作系統(tǒng)接收硬件觸摸事件。
3.如權(quán)利要求1所述的方法,其特征在于,標(biāo)識(shí)出應(yīng)用對(duì)象包括通過將所接收的低級(jí)觸摸輸入的坐標(biāo)與由該應(yīng)用所顯示的對(duì)象的坐標(biāo)相比較以確定該觸摸輸入是否處于某一應(yīng)用對(duì)象的邊界內(nèi),來對(duì)所接收的低級(jí)觸摸輸入的坐標(biāo)進(jìn)行命中測(cè)試。
4.如權(quán)利要求1所述的方法,其特征在于,該應(yīng)用為所顯示的每個(gè)應(yīng)用對(duì)象創(chuàng)建數(shù)字標(biāo)識(shí)符,并且在每當(dāng)所接收的低級(jí)觸摸輸入對(duì)應(yīng)于一對(duì)象時(shí)將該對(duì)象的數(shù)字標(biāo)識(shí)符傳遞給該操縱API。
5.如權(quán)利要求4所述的方法,其特征在于,接收操縱事件包括接收與所標(biāo)識(shí)出的應(yīng)用對(duì)象相關(guān)聯(lián)的數(shù)字標(biāo)識(shí)符。
6.如權(quán)利要求1所述的方法,其特征在于,接收操縱事件包括接收描述所標(biāo)識(shí)出的應(yīng)用對(duì)象的2D仿射變換的信息。
7.如權(quán)利要求1所述的方法,其特征在于,所接收的操縱事件與發(fā)送給該操縱API的多個(gè)低級(jí)觸摸輸入相關(guān)。
8.如權(quán)利要求1所述的方法,其特征在于,所接收的操縱事件是旋轉(zhuǎn),并且其中處理所接收的操縱事件包括在顯示器上旋轉(zhuǎn)該應(yīng)用對(duì)象。
9.如權(quán)利要求1所述的方法,其特征在于,該應(yīng)用在輸入循環(huán)中執(zhí)行該方法,以在該應(yīng)用運(yùn)行時(shí)處理所接收的多點(diǎn)觸摸輸入。
10.一種用于處理來自多點(diǎn)觸摸硬件的觸摸輸入的計(jì)算機(jī)系統(tǒng),該系統(tǒng)包括硬件接口 110,該硬件接口 110被配置為與該多點(diǎn)觸摸硬件通信以接收觸摸接觸信息和所述觸摸接觸的移動(dòng);一個(gè)或多個(gè)操縱處理器120,所述操縱處理器120被配置為管理對(duì)與某一應(yīng)用對(duì)象相關(guān)聯(lián)的每個(gè)接觸的移動(dòng)的解釋;接觸管理器130,該接觸管理器130被配置為存儲(chǔ)關(guān)于與每個(gè)操縱處理器相關(guān)聯(lián)的一個(gè)或多個(gè)接觸的信息;輸入變換組件140,該輸入變換組件140被配置為解釋所接收的各個(gè)接觸的移動(dòng)的含義以產(chǎn)生對(duì)應(yīng)用對(duì)象的操縱;以及應(yīng)用接口 150,該應(yīng)用接口 150被配置為與該應(yīng)用通信以接收接觸移動(dòng)信息并且將操縱變換提供給該應(yīng)用。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于,該硬件接口協(xié)調(diào)多點(diǎn)觸摸硬件、硬件驅(qū)動(dòng)器、以及操作系統(tǒng)多點(diǎn)觸摸層以提供觸摸輸入信息。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,該操作系統(tǒng)多點(diǎn)觸摸層向多點(diǎn)觸摸硬件制造商提供公共驅(qū)動(dòng)器模型,以對(duì)他們的特定硬件提供觸摸信息。
13.如權(quán)利要求11所述的系統(tǒng),其特征在于,該操作系統(tǒng)多點(diǎn)觸摸層將從該多點(diǎn)觸摸硬件接收的觸摸信息翻譯成窗口消息并且將這些消息提供給一個(gè)或多個(gè)應(yīng)用。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,該操作系統(tǒng)多點(diǎn)觸摸層在新接觸被向下放置在該多點(diǎn)觸摸硬件上時(shí)、在接觸移動(dòng)時(shí)、以及在該接觸被提離該多點(diǎn)觸摸硬件時(shí)提供消息。
15.如權(quán)利要求10所述的系統(tǒng),其特征在于,操縱處理器被進(jìn)一步配置為確定用戶正在使用多個(gè)接觸來執(zhí)行單個(gè)操縱。
16.如權(quán)利要求10所述的系統(tǒng),其特征在于,該應(yīng)用接口被進(jìn)一步配置為從該應(yīng)用接收初始化信息,該初始化信息規(guī)定支點(diǎn)和由該應(yīng)用的對(duì)象所支持的操縱。
17.一種用指令編碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述指令用于控制計(jì)算機(jī)系統(tǒng)通過一種方法將多點(diǎn)觸摸輸入解釋成一個(gè)或多個(gè)應(yīng)用對(duì)象操縱,該方法包括從應(yīng)用接收505觸摸輸入和標(biāo)識(shí)出與該觸摸輸入相關(guān)聯(lián)的應(yīng)用對(duì)象的信息;標(biāo)識(shí)出510與所標(biāo)識(shí)出的應(yīng)用對(duì)象相關(guān)聯(lián)的操縱處理器,其中操縱處理器將該多點(diǎn)觸摸硬件的多個(gè)接觸的移動(dòng)解釋成對(duì)所標(biāo)識(shí)出的應(yīng)用對(duì)象的一個(gè)或多個(gè)操縱;處理580所接收的觸摸輸入以解釋由該觸摸輸入所表示的操縱,其中操縱至少包括下列項(xiàng)目中的一個(gè)或多個(gè)對(duì)所標(biāo)識(shí)出的應(yīng)用對(duì)象的旋轉(zhuǎn)、平移和比例縮放;以及激發(fā)590將描述所解釋的操縱的變換信息發(fā)送給該應(yīng)用的操縱事件。
18.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括當(dāng)所接收的觸摸輸入指示該應(yīng)用接收了新接觸時(shí),將該新接觸添加到與所標(biāo)識(shí)出的操縱處理器相關(guān)聯(lián)的接觸的列表。
19.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括當(dāng)所接收的觸摸輸入指示該應(yīng)用接收了表示觸摸接觸被除去的通知時(shí),從與所標(biāo)識(shí)出的操縱處理器相關(guān)聯(lián)的接觸的列表中除去該接觸。
20.如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,該計(jì)算機(jī)系統(tǒng)提供API,通過該API該應(yīng)用提供觸摸輸入和接收與所標(biāo)識(shí)出的應(yīng)用對(duì)象相關(guān)的變換信息。
全文摘要
在此所述的操縱系統(tǒng)為應(yīng)用提供公共平臺(tái)和應(yīng)用編程接口(API)以與各種多點(diǎn)觸摸硬件設(shè)備通信,并且使得易于將多點(diǎn)觸摸輸入解釋成一個(gè)或多個(gè)操縱。操縱與進(jìn)行個(gè)別化的觸摸輸入相比更直接地映射到用戶意圖,并且添加對(duì)使用多點(diǎn)觸摸接觸對(duì)對(duì)象進(jìn)行基本變換的支持。應(yīng)用可以使用操縱來支持旋轉(zhuǎn)、調(diào)整大小、以及同時(shí)平移多個(gè)對(duì)象。操縱系統(tǒng)輸出包含旋轉(zhuǎn)、比例縮放和平移信息的二維(2D)仿射變換。因此,使用該操縱系統(tǒng),應(yīng)用創(chuàng)作者可以將更加專注于建立具有觸摸能力的應(yīng)用并且讓操縱系統(tǒng)來處理底層變換和與多點(diǎn)觸摸硬件的通信。
文檔編號(hào)G06F9/06GK102197359SQ200980143597
公開日2011年9月21日 申請(qǐng)日期2009年10月16日 優(yōu)先權(quán)日2008年10月26日
發(fā)明者R·L·湯森, T·肖, B·D·斯格特, T·A·托爾塞特, E·M·蓋德, S·S·普拉丹, J·A·蒂德 申請(qǐng)人:微軟公司