各個實施方式涉及計算機系統(tǒng),并且更具體地,涉及用于使用虛擬輸入設(shè)備來創(chuàng)建針對軟件應(yīng)用兼容的控制信號的系統(tǒng)、方法以及機器可讀介質(zhì),所述虛擬輸入設(shè)備利用來自與軟件應(yīng)用不兼容的遠程輸入設(shè)備的控制信號來創(chuàng)建針對軟件應(yīng)用兼容的控制信號。
背景技術(shù):
許多現(xiàn)代視頻游戲可能只能使用遵循特定輸入?yún)f(xié)議的游戲控制器外設(shè)來玩,所述特定輸入?yún)f(xié)議與控制游戲進行的計算機應(yīng)用兼容。例如,一些視頻游戲主題可能只能使用遵循人機接口設(shè)備(HID)輸入?yún)f(xié)議的游戲控制器來玩,以及一些主題可能只能使用遵循XInput協(xié)議(Xbox 360控制器遵循的協(xié)議)的控制器來玩。這樣導(dǎo)致了對于希望使用單一游戲控制器來玩一系列主題的操作者,在控制現(xiàn)代視頻游戲時的大范圍的不兼容性。
例如,如果操作者想要在主機系統(tǒng)上玩特定主題,則他們需要首先知道該主題遵循的輸入?yún)f(xié)議、找到遵循該協(xié)議的視頻游戲控制器、并之后將視頻游戲控制器與主機系統(tǒng)連接。如果一段時間以后,他們想要玩遵循不同輸入?yún)f(xié)議的不同主題,則他們必須再一次知道該主題遵循的輸入?yún)f(xié)議、找到遵循該協(xié)議的視頻游戲控制器、并之后將視頻游戲控制器與主機系統(tǒng)連接。
還有一種情況是,操作者購買的新主題不能使用操作者目前擁有的視頻游戲控制器來玩,需要他們購買另外的游戲控制器來支持新主題。
以前為解決這個問題的嘗試要求操作者去修改視頻游戲主題的可執(zhí)行目錄(包含視頻游戲主題的可執(zhí)行程序的文件夾)內(nèi)的配置文件。
修改視頻游戲配置文件會要求具備對輸入?yún)f(xié)議的詳細知識,并且要求關(guān)于 操作者部分的一些技術(shù)能力不僅僅在于發(fā)現(xiàn),還在于之后以正確的方式修改正確的文件。操作者造成的錯誤能夠?qū)е掠螒蛑黝}變得不可玩,例如,在瀏覽游戲主題的可執(zhí)行目錄時,操作者意外刪除或者修改了錯誤的文件。
可見,解決以上問題的系統(tǒng)和方法是必要的。
技術(shù)實現(xiàn)要素:
本公開的某些實施例通常涉及使用虛擬輸入設(shè)備來創(chuàng)建針對軟件應(yīng)用兼容的控制信號的系統(tǒng)(例如,網(wǎng)絡(luò),設(shè)備,或設(shè)備組件)、方法以及機器可讀介質(zhì),所述虛擬輸入設(shè)備利用來自與軟件應(yīng)用不兼容的遠程輸入設(shè)備的控制信號來創(chuàng)建針對軟件應(yīng)用兼容的控制信號。所述系統(tǒng)、方法以及機器可讀介質(zhì)可以從遠程輸入設(shè)備接收符合第一控制信號協(xié)議的第一控制信號;利用所述第一控制信號來創(chuàng)建符合由軟件應(yīng)用使用的第二控制信號協(xié)議的第二控制信號;以及向所述軟件應(yīng)用傳送第二控制信號。
本發(fā)明的一個或多個實施例的細節(jié)在以下附圖以及說明書中進行闡述。本發(fā)明的其他特征、對象以及優(yōu)點將從說明書和附圖、以及權(quán)利要求書中體現(xiàn)。
附圖說明
圖1描述主機系統(tǒng),其中,一個軟件模塊不支持驅(qū)動器提供的控制信號協(xié)議。
圖2描述主機系統(tǒng),其中,驅(qū)動器接收第一控制信號協(xié)議的輸入信號、向軟件模塊傳送該信號、以及創(chuàng)建虛擬輸入設(shè)備,所述虛擬輸入設(shè)備用于基于所述輸入信號輸出第二控制信號協(xié)議的不同信號。
圖3描述主機系統(tǒng),其中,軟件模塊與多種控制信號協(xié)議類型兼容,并且可以接收優(yōu)選類型的控制信號。
圖4描述主機系統(tǒng),其中,控制信號已禁用虛擬輸入設(shè)備的創(chuàng)建。
圖5描述主機系統(tǒng),其中,只有通過虛擬輸入設(shè)備創(chuàng)建的控制信號提供給 軟件模塊。
圖6描述主機系統(tǒng),其中,驅(qū)動器可以接收符合多種控制信號協(xié)議類型中的一者的控制信號,以及,將其轉(zhuǎn)換為符合不同協(xié)議類型的控制信號。
圖7描述主機系統(tǒng),其中,驅(qū)動器可以接收來自于兩個或更多個軟件模塊中的任意軟件模塊的控制信號,以及,在向輸入設(shè)備傳送所述控制信號之前執(zhí)行傳遞或轉(zhuǎn)換。
圖8描述驅(qū)動器的實施例,該驅(qū)動器創(chuàng)建虛擬輸入設(shè)備來接收來自于輸入設(shè)備的輸入,以及,向軟件模塊傳送輸出。
圖9示出了利用虛擬輸入設(shè)備的系統(tǒng)拓撲的高級視圖。
圖10示出了創(chuàng)建虛擬輸入設(shè)備的過程。
圖11示出了將遵循協(xié)議1的控制信號從輸入設(shè)備傳送到需要遵循協(xié)議2的控制信號的軟件模塊的過程。
圖12示出了將遵循協(xié)議2的控制信號從軟件模塊傳送到需要遵循協(xié)議1的控制信號的輸入設(shè)備的過程。
圖13示出了將信號從輸入設(shè)備傳送到軟件模塊的過程。
圖14示出了將控制信號從軟件模塊傳送到輸入設(shè)備的過程。
附圖中相同的參考標記和名稱表示相似的元件。
具體實施方式
可以在主機系統(tǒng)上創(chuàng)建驅(qū)動器,所述驅(qū)動器可以從與主機系統(tǒng)連接的輸入設(shè)備接收遵循第一控制信號協(xié)議類型的第一控制信號。所述驅(qū)動器可以將所述第一控制信號直接或經(jīng)過一個或多個中間驅(qū)動器傳送到軟件模塊。同時,所述驅(qū)動器可以創(chuàng)建虛擬輸入設(shè)備,所述虛擬輸入設(shè)備對于所述軟件模塊表現(xiàn)為產(chǎn)生遵循第二控制信號協(xié)議類型的控制信號的設(shè)備。所述驅(qū)動器可以在將第一控制信號協(xié)議類型的第一控制信號傳送到軟件模塊之前,將那些信號轉(zhuǎn)換為第二控制信號協(xié)議類型的控制信號。
同樣地,驅(qū)動器可以從軟件模塊接收遵循第一或第二控制信號協(xié)議類型的控制信號。如果所述控制信號為第一控制信號協(xié)議類型,所述驅(qū)動器可以將其直接或經(jīng)過一個或多個中間驅(qū)動器傳送到輸入設(shè)備。如果所述控制信號為第二控制信號協(xié)議類型,所述驅(qū)動器可以在將其傳送到輸入設(shè)備之前,將其轉(zhuǎn)換為遵循第一協(xié)議類型的控制信號。
因此,例如,所述驅(qū)動器可以從任意人機接口設(shè)備(HID)外設(shè)接收輸入,以及,對HID外設(shè)的輸入數(shù)據(jù)進行轉(zhuǎn)換以與任意其他協(xié)議的輸出數(shù)據(jù)匹配。這可能是經(jīng)由多種連接方法(包括但不限于USB、經(jīng)典藍牙、低功耗藍牙、Wi-Fi、以及移動高清鏈接(MHL)通信協(xié)議)連接到在多個主機(包括但不限于PC、智能電話、平板電腦、游戲控制臺)上運行的多種操作系統(tǒng)(包括但不限于Windows、Mac OSX、Linux、Steam OS、Android、iOS、Fire Fox)的外圍設(shè)備。
現(xiàn)在轉(zhuǎn)向不同的實施例,描述如下。
示例系統(tǒng)
圖1描述了主機系統(tǒng),其中,軟件模塊中的一者(軟件模塊B)不支持驅(qū)動器(驅(qū)動器X)提供的控制信號協(xié)議。
在該描述中,操作者連接輸入設(shè)備(例如,游戲控制器),所述輸入設(shè)備生成和/或接收遵循一協(xié)議(例如,HID)的控制信號,所述協(xié)議不被操作者希望使用的軟件應(yīng)用(軟件模塊B)支持。
例如,軟件模塊B可以是只可使用遵循XInput協(xié)議的游戲控制器來玩的視頻游戲,但是操作者已連接了遵循另一協(xié)議(例如,HID協(xié)議)的控制器。這樣,操作者將不能使用已連接的游戲控制器來控制軟件模塊B。
操作者就此可以選擇遵循所述HID協(xié)議的不同視頻游戲來玩,或者,拔下他們的游戲控制器以及插入遵循XInput控制協(xié)議的游戲控制器。
圖2描述了主機系統(tǒng),其中,驅(qū)動器(驅(qū)動器Y)創(chuàng)建虛擬輸入設(shè)備,以將遵循協(xié)議1的控制信號轉(zhuǎn)換為遵循協(xié)議2的控制信號,同時,所述驅(qū)動器傳 遞所述遵循協(xié)議1的控制信號,以使軟件模塊能夠接入兩種類型的控制信號協(xié)議。
例如,如果協(xié)議1為HID,協(xié)議2為XInput,軟件模塊A是只能通過所述HID協(xié)議控制的視頻游戲,以及,軟件模塊B是只能通過XInput協(xié)議控制的視頻游戲,使用所述驅(qū)動器使得兩個游戲中的任何一者能夠使用相同的輸入控制器來玩。當然,除視頻游戲之外的其他類型的軟件模塊也應(yīng)當被考慮,以使只使用一個設(shè)備就可以完成所述兩個軟件模塊的間歇(intermittent)控制。
在圖2的實施例下,驅(qū)動器Z是中間驅(qū)動器,所述中間驅(qū)動器可以在主機系統(tǒng)上被啟用或不被啟用,以執(zhí)行另外的轉(zhuǎn)換或充當對遵循協(xié)議2的控制信號的傳導(dǎo)。例如,驅(qū)動器Z可以是用于在所述虛擬輸入設(shè)備與所述軟件模塊之間提供接口的功能驅(qū)動器。
圖3描述了主機系統(tǒng),其中,軟件模塊與多種控制信號協(xié)議類型兼容,以及,優(yōu)選類型的控制信號可以被選擇(例如,被用戶輸入選擇,或基于預(yù)定的設(shè)置自動選擇)。
例如,軟件模塊A可以基于操作者已知的特定控制信號協(xié)議的某些屬性,來向操作者給出關(guān)于操作者想要使用哪種類型的輸入?yún)f(xié)議的選擇。
例如,玩能夠使用HID或XInput控制的視頻游戲的操作者可以選擇使用HID來控制視頻游戲,因為它會比XInput協(xié)議暴露出更多的動態(tài)范圍。
圖4描述了主機系統(tǒng),其中,控制信號禁用虛擬輸入設(shè)備的創(chuàng)建,或者,禁用先前已啟用的虛擬輸入設(shè)備。
在這種情況下,操作者已指示驅(qū)動器Y該操作者不需要驅(qū)動器Y來創(chuàng)建或使用虛擬輸入設(shè)備。
在軟件模塊A能被遵循協(xié)議1或協(xié)議2的控制信號控制,且操作者想要使用協(xié)議1,但軟件模塊A不允許操作者選擇優(yōu)選的控制信號協(xié)議的情況下,操作者可以選擇禁用所述虛擬輸入設(shè)備。
在這種情況下,事實上,禁用所述虛擬輸入設(shè)備將會迫使軟件模塊A使用 遵循協(xié)議1的控制信號。在一實施例中,事實上,啟用所述虛擬輸入設(shè)備將會迫使軟件模塊A使用遵循協(xié)議2的控制信號,盡管遵循協(xié)議1的控制信號可用。
圖5描述了主機系統(tǒng),其中,只有虛擬輸入設(shè)備創(chuàng)建的控制信號而不是初始控制信號提供給所述軟件模塊。
在該描述中,驅(qū)動器Y已創(chuàng)建虛擬輸入設(shè)備,并且只輸出遵循協(xié)議2的控制信號,而不輸出遵循協(xié)議1的控制信號。
在軟件模塊B能被遵循協(xié)議1或協(xié)議2的控制信號控制,并且操作者想要使用協(xié)議2,但軟件模塊B不允許操作者選擇優(yōu)選的控制信號協(xié)議的情況下,操作者可以選擇禁用遵循協(xié)議1的控制信號的傳導(dǎo)。
在這種情況下,事實上,禁用遵循協(xié)議1的控制信號的傳導(dǎo)將會迫使軟件模塊B使用遵循協(xié)議2的控制信號。在一實施例中,事實上,啟用遵循協(xié)議1的控制信號的傳導(dǎo)將會迫使軟件模塊A使用遵循協(xié)議1的控制信號,盡管遵循協(xié)議2的控制信號可用。
圖6描述了主機系統(tǒng),其中,驅(qū)動器可以接收遵循多種控制信號協(xié)議類型中的一者的控制信號,以及,將所述控制信號轉(zhuǎn)換為多種不同的控制信號協(xié)議類型中的一者。
例如,驅(qū)動器Y可以接入列表/目錄/數(shù)據(jù)庫,所述列表/目錄/數(shù)據(jù)庫包含可被創(chuàng)建的多個虛擬輸入設(shè)備,并且還包含輸出的控制信號協(xié)議類型。此外,這種虛擬輸入設(shè)備以及控制信號協(xié)議類型的集合(collection)可以通過不同方法進行更新以及修改,所述方法包括但不限于軟件/固件更新、操作者輸入、經(jīng)過操作者許可的啟用、和/或通過互聯(lián)網(wǎng)連接進行的更新。考慮到在和當另外的輸入?yún)f(xié)議出現(xiàn)時,這些另外的輸入?yún)f(xié)議被支持,因此,提供針對單一游戲外設(shè)的輸入無關(guān)的解決方案。
圖7描述了主機系統(tǒng),其中,驅(qū)動器可以從軟件模塊接收第一或第二控制信號協(xié)議類型的控制信號。如果控制信號遵循第一控制信號協(xié)議類型,所述驅(qū)動器可以充當傳導(dǎo),并將所述控制信號直接或經(jīng)過一個或多個中間驅(qū)動器傳送 到輸入設(shè)備。如果控制信號遵循第二控制信號協(xié)議類型,所述驅(qū)動器可以在將其直接或經(jīng)過一個或多個中間驅(qū)動器傳送到輸入設(shè)備之前,將所述控制信號轉(zhuǎn)換為所述第一控制信號協(xié)議類型。
例如,視頻游戲控制器可以生成由正在進行的視頻游戲的狀態(tài)變化引發(fā)的觸覺反饋。如果輸入設(shè)備不支持遵循XInput協(xié)議的控制信號,則視頻游戲中產(chǎn)生并從視頻游戲輸出的所述控制信號(如遵循所述XInput協(xié)議的控制信號)可以在驅(qū)動器Y中被轉(zhuǎn)換為由正在使用的輸入設(shè)備支持的控制信號。
圖8描述了驅(qū)動器的實施例,其中,該驅(qū)動器創(chuàng)建虛擬輸入設(shè)備。該驅(qū)動器可以接收來自輸入設(shè)備的控制信號、對所述控制信號進行轉(zhuǎn)換、并將轉(zhuǎn)換后的控制信號傳送到軟件模塊(例如,應(yīng)用層/用戶模式)。
在所述驅(qū)動器中,存在第一物理總線驅(qū)動器(PDO 1),所述第一物理總線驅(qū)動器(PDO 1)接收來自輸入設(shè)備的第一協(xié)議類型的控制信號。另外,在所述驅(qū)動器中,存在第一功能驅(qū)動器,所述第一功能驅(qū)動器接收來自物理總線驅(qū)動器的第一協(xié)議類型的第一控制信號,并可以對所述第一控制信號進行轉(zhuǎn)換和/或同時將他們傳送到軟件模塊。
此外,在所述驅(qū)動器中,存在第二總線驅(qū)動器(PDO 2),所述第二總線驅(qū)動器(PDO 2)實施虛擬枚舉總線,所述第一功能驅(qū)動器可以將一個或多個虛擬/枚舉設(shè)備添加到所述虛擬枚舉總線中,以及將一個或多個虛擬/枚舉設(shè)備從所述虛擬枚舉總線中移除。
圖8還示出了主機系統(tǒng)已與虛擬輸入設(shè)備相關(guān)聯(lián)的第二功能驅(qū)動器,在該示例中,所述虛擬輸入設(shè)備由第一功能驅(qū)動器創(chuàng)建并添加到所述虛擬枚舉總線(PDO 2)。該第二功能驅(qū)動器還可以在將從所述驅(qū)動器輸出的控制信號傳送到軟件模塊之前,對所述控制信號進行轉(zhuǎn)換。
圖9描述了利用虛擬輸入設(shè)備的系統(tǒng)拓撲的高級視圖。
如圖所示,輸入設(shè)備(例如遵循HID協(xié)議的游戲控制器)可以與在多個主機(包括但不限于PC、智能電話、平板電腦、游戲控制臺)上運行的多種主機 系統(tǒng)(包括但不限于Windows、Mac OSX、Linux、Steam OS、Android、iOS、Fire Fox)連接,以及通過多種方法與主機系統(tǒng)通信,所述方法包括但不限于USB、經(jīng)典藍牙、低功耗藍牙、Wi-Fi、以及移動高清鏈接(MHL)通信協(xié)議。
初始的HID輸入數(shù)據(jù)提供給應(yīng)用層,以使任意遵循HID協(xié)議的軟件模塊可以接收來自輸入設(shè)備的控制信號,和/或發(fā)送控制信號到輸入設(shè)備。
同時,為了執(zhí)行HID協(xié)議信號到遵循非HID協(xié)議的控制信號的轉(zhuǎn)換,創(chuàng)建虛擬輸入設(shè)備,所述非HID協(xié)議包括但不限于XInput、GIP、以及其他協(xié)議。
驅(qū)動層可以創(chuàng)建并配置與虛擬輸入設(shè)備相關(guān)聯(lián)的驅(qū)動器,并因此允許應(yīng)用層接入由虛擬設(shè)備創(chuàng)建的非HID控制信號。
示例過程
現(xiàn)在參見圖10,圖10示出了在傳送遵循第一控制信號協(xié)議類型的控制信號的同時創(chuàng)建虛擬輸入設(shè)備的過程。
如圖所示,操作者首先將輸入設(shè)備與主機系統(tǒng)連接。所述連接可以通過USB、經(jīng)典藍牙、低功耗藍牙、Wi-Fi、移動高清鏈接通信協(xié)議、或任何適合在輸入設(shè)備與主機系統(tǒng)之間傳輸控制信號的方法實現(xiàn)。例如,一種可能是,通過一個或多個中間有線或無線設(shè)備將輸入設(shè)備連接到主機系統(tǒng)。
一旦得知已經(jīng)與輸入設(shè)備建立了連接,主機系統(tǒng)向輸入設(shè)備查詢標識參數(shù)。這些參數(shù)可以是數(shù)值或字符的唯一組合,其標識所述輸入設(shè)備的制造商、設(shè)備的型號、和/或多個其他識別信息。
接下來,主機系統(tǒng)確定是否已為具有所述參數(shù)的設(shè)備安裝了驅(qū)動器。如果未安裝相關(guān)聯(lián)的驅(qū)動器,所述主機系統(tǒng)能夠發(fā)起安裝過程,所述安裝過程可以完全自動,或需要操作者確認的一個步驟或多個步驟(輸入或檢索操作者的憑據(jù),輸入或檢索許可證明,關(guān)于安裝哪一驅(qū)動器的決定,和/或識別主機系統(tǒng)上相關(guān)聯(lián)的驅(qū)動器的位置、本地網(wǎng)絡(luò)、存儲媒介、互聯(lián)網(wǎng)、或者輸入設(shè)備自己)。
在已有/新安裝的驅(qū)動器已被初始之后,配置所述驅(qū)動器。配置階段可以包 括主機系統(tǒng)與輸入設(shè)備之間的通信,同時加載存儲的狀態(tài)和/或配置參數(shù)。所述驅(qū)動器接下來被“啟動”-例如,被激活,此時,所述驅(qū)動器對于主機系統(tǒng)表現(xiàn)為遵循第一協(xié)議類型(例如,HID)的控制信號的接口,并且提供給軟件模塊以從輸入設(shè)備接收控制信號和/或向輸入設(shè)備發(fā)送控制信號。
在一個實施例中,虛擬輸入設(shè)備的創(chuàng)建一直被啟用,而在其他實施例中,所述驅(qū)動器可以接收命令信號或參考之前存儲的狀態(tài)來確定虛擬輸入設(shè)備的創(chuàng)建是否已被啟用。
如果虛擬輸入設(shè)備的創(chuàng)建被啟用,所述驅(qū)動器創(chuàng)建虛擬動態(tài)枚舉總線-例如,類似物理動態(tài)枚舉總線(如,USB、PCI)的功能、但使得驅(qū)動器能夠?qū)⑻摂M/枚舉子設(shè)備連接到虛擬總線、以及將虛擬/枚舉子設(shè)備從虛擬總線上斷開的軟件實施。
接下來,所述驅(qū)動器創(chuàng)建虛擬輸入設(shè)備,并配置其標識參數(shù)以與產(chǎn)生遵循第二控制協(xié)議的控制信號的設(shè)備相對應(yīng)。
例如,虛擬輸入設(shè)備可以被配置有制造商和設(shè)備參數(shù),以使其模擬能發(fā)送和/或接收遵循XInput協(xié)議的控制信號的設(shè)備。
接下來,所述驅(qū)動器添加虛擬輸入設(shè)備(“插入”)到虛擬動態(tài)枚舉總線。一旦獲悉到所述設(shè)備已經(jīng)出現(xiàn),主機系統(tǒng)查詢設(shè)備以得到標識符,就如所述虛擬設(shè)備與物理動態(tài)枚舉總線建立了物理連接一樣。這些標識符可以是數(shù)值或字符的唯一組合,其標識所述輸入設(shè)備的制造商、設(shè)備的型號、和/或多個其他識別信息。
接下來,主機系統(tǒng)確定是否已為具有所述識別信息的設(shè)備安裝了驅(qū)動器。如果未安裝相關(guān)聯(lián)的驅(qū)動器,主機系統(tǒng)可以發(fā)起安裝過程,所述安裝過程可以完全自動,或需要操作者確認的一個步驟或多個步驟(輸入或檢索操作者的憑據(jù),輸入或檢索許可證明,關(guān)于安裝哪一驅(qū)動器的決定,和/或識別主機系統(tǒng)上相關(guān)聯(lián)的驅(qū)動器的位置、本地網(wǎng)絡(luò)、存儲媒介、互聯(lián)網(wǎng)、或者設(shè)備自己)。
在已有/新安裝的驅(qū)動器已被初始之后,配置所述驅(qū)動器。所述驅(qū)動器接下 來被“啟動”-例如,被激活,此時,所述驅(qū)動器對于主機系統(tǒng)表現(xiàn)為遵循第二協(xié)議類型(例如,XInput)的控制信號的接口,并且提供給軟件模塊以從虛擬輸入設(shè)備接收控制信號和/或向虛擬輸入設(shè)備發(fā)送控制信號。
現(xiàn)在參見圖11,圖11示出了將遵循第一協(xié)議(協(xié)議1)的控制信號從輸入設(shè)備傳送到需要遵循第二協(xié)議(協(xié)議2)的控制信號的軟件模塊的過程。
如圖所示,已經(jīng)創(chuàng)建了虛擬輸入設(shè)備并已將所述虛擬輸入設(shè)備添加到虛擬枚舉總線的驅(qū)動器現(xiàn)在可以接收來自輸入設(shè)備的遵循協(xié)議1(例如,HID)的第一控制信號、將它們轉(zhuǎn)換為遵循協(xié)議2(例如,XInput)的第二控制信號、并之后向需要遵循協(xié)議2的控制信號的軟件模塊傳送第二控制信號。
現(xiàn)在參見圖12,圖12示出了將控制信號從軟件模塊傳送到輸入設(shè)備的過程。
如圖所示,已經(jīng)創(chuàng)建了虛擬輸入設(shè)備并已經(jīng)將所述虛擬輸入設(shè)備添加到虛擬枚舉總線的驅(qū)動器現(xiàn)在可以接收來自軟件模塊的遵循協(xié)議2(例如,XInput)的第一控制信號、將第一控制信號轉(zhuǎn)換為遵循協(xié)議1(例如,HID)的第二控制信號、并之后向需要遵循協(xié)議1的控制信號的輸入設(shè)備傳送第二控制信號。
現(xiàn)在參見圖13,圖13示出了將信號從輸入設(shè)備傳送到軟件模塊的過程。
如圖所示,在該實施例中,驅(qū)動器從輸入設(shè)備(例如游戲控制器)接收遵循協(xié)議1的第一控制信號。
接下來,所述驅(qū)動器參考之前存儲的或編譯到驅(qū)動器中的一個或多個配置狀態(tài)來確定所述驅(qū)動器是否具有將第一控制信號轉(zhuǎn)換為遵循第二控制信號協(xié)議類型的第二控制信號的能力。如果所述驅(qū)動器不能/不被啟用來執(zhí)行轉(zhuǎn)換,其可以用信號向操作者發(fā)送失敗或警告狀態(tài)消息。
如果所述驅(qū)動器能夠?qū)⒌谝豢刂菩盘栟D(zhuǎn)換為第二控制信號,其可以接入存儲在易失性或非易失性存儲器、本地網(wǎng)絡(luò)、互聯(lián)網(wǎng)、或者多種存儲裝置中的數(shù)據(jù)庫、配置文件、狀態(tài),以確定如何執(zhí)行第一控制信號到第二控制信號的轉(zhuǎn)換。
此外,所述驅(qū)動器可以查找以及利用關(guān)于控制信號的轉(zhuǎn)換的不同的偏好,和/或所述驅(qū)動器可以查找以及利用與協(xié)議2有關(guān)的偏好。
所述偏好可以在易失性或非易失性存儲器中、在本地網(wǎng)絡(luò)、互聯(lián)網(wǎng)、或多種存儲裝置上存儲為配置文件、存儲為狀態(tài)。例如,游戲主題的單獨的、共享的或默認偏好可以被在線存儲,以及,稍后可以由一個操作者或一組操作者在玩所述游戲主題時接入。
這些偏好可以包含用于執(zhí)行遵循協(xié)議1的控制信號到遵循協(xié)議2的控制信號的轉(zhuǎn)換的表格、狀態(tài)機、或者其他指令。
此外,所述偏好可以包含由操作者對默認的協(xié)議轉(zhuǎn)換做出的修改。
例如,操作者可能更偏好功能通常被輸入設(shè)備上的特定按鈕觸發(fā),而不是被輸入設(shè)備上的不同按鈕觸發(fā)。
或者,在選擇要加載哪個或哪些虛擬輸入設(shè)備時,所述驅(qū)動器可能使用當前加載的偏好中的存儲值、基于所述操作者最近常使用的類型來創(chuàng)建虛擬輸入設(shè)備。
在執(zhí)行與給定協(xié)議轉(zhuǎn)換有關(guān)的偏好一樣多的查找之后,所述驅(qū)動器接下來執(zhí)行第一控制信號到第二控制信號的轉(zhuǎn)換,以及,將他們直接或經(jīng)過一個或多個中間驅(qū)動器提供給軟件模塊。
現(xiàn)在參見圖14,圖14示出了將信號從軟件模塊傳送到輸入設(shè)備的過程。
如圖所示,所示驅(qū)動器從軟件模塊(例如視頻游戲)接收遵循協(xié)議2的第一控制信號。
接下來,所述驅(qū)動器參考之前存儲的或編譯到驅(qū)動器中的一個或多個配置狀態(tài)來確定所述驅(qū)動器是否具有將第一控制信號轉(zhuǎn)換為遵循第二控制信號協(xié)議(協(xié)議1)的第二控制信號的能力。如果所述驅(qū)動器不能/不被啟用來執(zhí)行轉(zhuǎn)換,其可以用信號向操作者發(fā)送失敗或警告狀態(tài)消息。
如果所述驅(qū)動器能夠?qū)⑺龅谝豢刂菩盘栟D(zhuǎn)換為第二控制信號,其可以接入存儲在易失性或非易失性存儲器、本地網(wǎng)絡(luò)、互聯(lián)網(wǎng)、或多種存儲裝置中的數(shù)據(jù)庫、配置文件、狀態(tài),以確定如何執(zhí)行第一控制信號到第二控制信號的轉(zhuǎn)換。此外,所述驅(qū)動器可以查找以及利用關(guān)于轉(zhuǎn)換的不同的偏好,和/或所述驅(qū) 動器可以查找與協(xié)議1有關(guān)的偏好。
這些偏好可以包含用于執(zhí)行遵循協(xié)議2的控制信號到遵循協(xié)議1的控制信號的轉(zhuǎn)換的表格、狀態(tài)機、或者其他指令。
此外,所述偏好可以包含由操作者對默認的協(xié)議轉(zhuǎn)換做出的修改。例如,操作者可能更偏好通常觸發(fā)游戲控制器產(chǎn)生“隆隆聲(rumble)”觸覺反饋效果的控制信號被禁用,以不允許觸覺反饋?;蛘撸趨f(xié)議2提供的觸覺反饋的類型與協(xié)議1支持的觸覺反饋的類型之間可能存在兼容性差異。在這種情況下,操作者會想要選擇性地控制哪種觸覺反饋消息被中繼到輸入設(shè)備。
在執(zhí)行與給定協(xié)議轉(zhuǎn)換有關(guān)的偏好一樣多的查找之后,所述驅(qū)動器接下來執(zhí)行第一控制信號到第二控制信號的轉(zhuǎn)換,以及,將第二控制信號直接或經(jīng)過一個或多個中間驅(qū)動器傳送至所述輸入設(shè)備。
與系統(tǒng)和方法有關(guān)的其他方面
在此公開的功能以及操作可以具體體現(xiàn)為整體或部分地由機器(例如,計算組件、或本領(lǐng)域公知的其他合適的裝置)在一個或多個位置實施的一個或多個方法,其增強這些機器和包括這些機器的計算設(shè)備的功能。具體體現(xiàn)為適于被運行以實施所述方法的程序指令的非暫時性機器可讀介質(zhì)也應(yīng)當被考慮。程序指令被一個或更多計算組件運行,促使所述計算組件執(zhí)行所述方法。
需要注意的是,在此描述的方法步驟可以與順序無關(guān),并因此可以以與描述的順序不同的順序執(zhí)行。還需要注意的是,本領(lǐng)域的技術(shù)人員將能夠理解的是,在此描述的不同的方法步驟可以被合并,以形成任意數(shù)量的方法。還應(yīng)當注意的是,此處描述的任意兩個或更多個步驟可以同時執(zhí)行。此處公開的任何方法步驟或特征可以出于各種原因,被明確地限于權(quán)利要求書,所述原因例如實現(xiàn)降低的制造成本、較低的功耗、以及增加的處理效率。
舉例來說,并不限制,方法以及計算組件或其他裝置可以:從遠程輸入設(shè)備接收符合第一控制信號協(xié)議的第一控制信號;使用所述第一控制信號來創(chuàng)建 符合由軟件應(yīng)用使用的第二控制信號協(xié)議的第二控制信號;以及向所述軟件應(yīng)用傳送所述第二控制信號。
方法以及計算組件或其他裝置還可以或替換地可以:向與第一控制信號協(xié)議兼容的另外的軟件應(yīng)用傳送所述第一控制信號。
方法以及計算組件或其他裝置還可以或替換地可以:創(chuàng)建能被所述軟件應(yīng)用識別為輸入設(shè)備的虛擬輸入設(shè)備,所述輸入設(shè)備產(chǎn)生符合所述第二控制信號協(xié)議的控制信號。
方法以及計算組件或其他裝置還可以或替換地可以:從所述輸入設(shè)備接收符合所述第一控制信號協(xié)議的另外的控制信號;并接收禁用所述虛擬輸入設(shè)備、以使所述虛擬輸入設(shè)備不再被軟件應(yīng)用識別為用于產(chǎn)生符合所述第二控制信號協(xié)議的控制信號的輸入設(shè)備的操作者輸入。
方法以及計算組件或其他裝置還可以或替換地可以:從其他控制信號協(xié)議中選擇所述第二控制信號協(xié)議,其中,響應(yīng)于從其他控制信號協(xié)議中選擇第二控制信號協(xié)議,所述第一控制信號被用來創(chuàng)建所述第二控制信號。
方法以及計算組件或其他裝置還可以或替換地可以:由于對于控制所述軟件應(yīng)用而言所述第二控制信號優(yōu)于所述第一控制信號,在所述傳輸步驟之前,選擇所述第二控制信號而不是所述第一控制信號來傳輸?shù)杰浖?yīng)用。
方法以及計算組件或其他裝置還可以或替換地可以:由于對于控制軟件應(yīng)用而言所述第一控制信號優(yōu)于所述第二控制信號,選擇所述第一控制信號而不是所述第二控制信號來傳送到另外的軟件應(yīng)用,以及傳送所述第一控制信號到所述另外的軟件應(yīng)用。
按照某些方面,所述第二控制信號被直接或經(jīng)過一個或多個中間驅(qū)動器傳送到所述軟件應(yīng)用。
按照某些方面,所述軟件應(yīng)用與從所述遠程輸入設(shè)備接收的所述第一控制信號的第一控制信號協(xié)議不兼容。
按照某些方面,所述遠程輸入設(shè)備不能傳送任何符合所述第二控制信號協(xié) 議的控制信號。
按照某些方面,所述另外的軟件應(yīng)用與所述第二控制信號協(xié)議不兼容。
按照某些方面,所述第一控制信號協(xié)議符合所述HID協(xié)議,以及,所述第二控制信號協(xié)議符合XInput協(xié)議。
按照某些方面,所述虛擬輸入設(shè)備由處理器在檢測到所述遠程輸入設(shè)備時自動創(chuàng)建。
按照某些方面,所述虛擬輸入設(shè)備創(chuàng)建所述第二控制信號,以及,所述第二控制信號被從所述虛擬輸入設(shè)備傳送到所述軟件應(yīng)用。
按照某些方面,由于所述軟件應(yīng)用使用所述第二控制信號協(xié)議,所述第二控制信號協(xié)議相對于其他控制信號協(xié)議被選擇出來。
按照某些方面,由于所述軟件不使用其他控制信號協(xié)議,所述第二控制信號協(xié)議相對于所述其他控制信號協(xié)議被選擇出來。
按照某些方面,所述第一控制信號使用從USB、經(jīng)典藍牙、低功耗藍牙、Wi-Fi、以及移動高清鏈接通信協(xié)議中選擇出的通信協(xié)議來接收。
按照某些方面,所述軟件應(yīng)用是計算機游戲,以及,其中,所述遠程輸入設(shè)備是游戲控制器。
在此描述的示例性方法可以由本領(lǐng)域的技術(shù)人員公知的或未來開發(fā)的合適的硬件、或者由處理器運行的固件或軟件、或硬件、軟件和固件的任意組合來實施、執(zhí)行、或控制。軟件在特定系統(tǒng)中是可以下載的或不可以下載的。一旦加載到機器上,所述軟件改變所述機器的操作。
在其上執(zhí)行在此描述方法的系統(tǒng)可以包括實施這些方法的一個或多個裝置。例如,所述裝置可以包括處理器或其他硬件,在運行指令(例如,具體體現(xiàn)為軟件或固件)時,所述處理器或其他硬件執(zhí)行在此公開的任意方法步驟。處理器可以包括計算機或計算設(shè)備、控制器、集成電路、“芯片”,片上系統(tǒng)、服務(wù)器、其他可編程邏輯設(shè)備、其他電路、或上述組件的任何組合,或者所述處理器可以被包括在上述組件中。
“存儲器”可以被機器(例如,處理器)訪問,以使所述機器能夠從所述存儲器讀信息/向所述存儲器寫信息。存儲器可以與所述機器集成或分離。存儲器可以包括具有包含在其中的機器可讀程序代碼(例如,指令)的非暫時性機器可讀介質(zhì),所述機器可讀程序代碼適于被運行以實施在此公開的任意或所有方法和方法步驟。存儲器可以包括任何可用的存儲介質(zhì),包括可移除、不可移除、易失性、以及非易失性介質(zhì)—例如,集成電路介質(zhì)、磁存儲介質(zhì)、光存儲介質(zhì)、或任何其他計算機數(shù)據(jù)存儲介質(zhì)。如在此使用的,機器可讀介質(zhì)包括各種各樣的機器可讀介質(zhì),除非該介質(zhì)被視為是非法定的(例如,瞬時傳播信號)的程度。
在此公開的所有信息可以由數(shù)據(jù)表示,以及,該數(shù)據(jù)可以使用任意協(xié)議、通過任意通信路徑來傳送,可以存儲在數(shù)據(jù)源上,并由處理器處理。數(shù)據(jù)的傳輸可以使用多種電線、電纜、無線電信號和紅外光束、以及甚至各種連接件、抽頭以及甚至沒有被顯示或顯式描述的協(xié)議來實施。系統(tǒng)之間可以使用任意通信技術(shù)來交換信息。數(shù)據(jù)、指令、命令、信息、信號、比特、碼元、以及芯片等可以由電壓、電流、電磁波、磁場或磁粒子、或光場或光粒子來表示。
系統(tǒng)圖中以矩形示出的特征可以指硬件、固件或軟件。需要注意的是,連接兩個特征之間的線可以表示這些特征之間的數(shù)據(jù)傳遞。所述傳遞可以在這些特征之間直接進行,或通過中間特征進行。在沒有線連接兩個特征的情況下,除非另作說明,這些特征之間的數(shù)據(jù)傳遞應(yīng)當被考慮。
詞語“包括”、“包括”、“含有”、“包含”等應(yīng)以包容的意義(即,不限于)來理解,而不是以排他的意義(即,僅包括)來理解。使用單數(shù)或復(fù)數(shù)的詞語也分別包括復(fù)數(shù)或單數(shù)。在具體實施方式中使用的詞語“或者”以及詞語“和”涵蓋了所列項中的任意項和所列項中的所有項。詞語“一些”、“任意”以及“至少一者”指一個或多個。在此,術(shù)語“可以”用于表明舉例,而不是要求—例如,在每個實施例中,可以執(zhí)行操作或者可以具有特點的某物不需要執(zhí)行該操作或具有該特點,但是該物在至少一個實施例中執(zhí)行該操作或具有該特點。