獲取鍵盤和鼠標(biāo)輸入

C4D API中有兩種方法獲取鍵盤和鼠標(biāo)輸入, GetInputStatus, GetInputEvent。 兩者都是全局的(C++ c4d_gui, python c4d.gui),在GeDialog和GeUserArea類中,這些方法COFFEE中木有。

GetInputState拉取輸入設(shè)備的當(dāng)前狀態(tài)(查看當(dāng)前鼠標(biāo)鍵是否按下,或者某個(gè)鍵當(dāng)前被按下)

GetInputEvent 獲取時(shí)間隊(duì)列中的下一個(gè)事件。

在兩種情況下,結(jié)果都是基于常量存在BaseContainer中,這些常量存在c++和python api中的event頁面

例子

Python: 某個(gè)腳本執(zhí)行時(shí)檢測某個(gè)按鍵是否按下

import c4d
 
def main():
    # Check any one key
    bc =c4d.BaseContainer()
    if c4d.gui.GetInputState(c4d.BFM_INPUT_KEYBOARD, c4d.KEY_F10,bc):
        if bc[c4d.BFM_INPUT_VALUE] ==1:
            print "F10 PRESSED"
        else:
            print "F10 NOT PRESSED"

Python: 腳本執(zhí)行時(shí)檢測哪個(gè)修改器被按下

import c4d
 
def main():
    # Check all keys
    bc =c4d.BaseContainer()
    if c4d.gui.GetInputState(c4d.BFM_INPUT_KEYBOARD,c4d.BFM_INPUT_CHANNEL,bc):
        print "Qualifier Bitwise:",bc[c4d.BFM_INPUT_QUALIFIER]
        if bc[c4d.BFM_INPUT_QUALIFIER] & c4d.QSHIFT:
            print "SHIFT PRESSED"
        if bc[c4d.BFM_INPUT_QUALIFIER] & c4d.QCTRL:
            print "CONTROL PRESSED"
        if bc[c4d.BFM_INPUT_QUALIFIER] & c4d.QALT:
            print "ALT PRESSED"

注意此例中,BFM_INPUT_QUALIFIER 是一個(gè)bit掩碼。掩碼允許一個(gè)int中體現(xiàn)多個(gè)二進(jìn)制狀態(tài),掩碼中,每個(gè)二進(jìn)制槽可以是開或者關(guān),第一個(gè)槽中的值需要誠意1(2的0次方),第二個(gè)乘以2
2(2的1次方)以此類推。

檢測某個(gè)槽是否為真,使用bit的AND操作符,python和c++中都是&操作符。針對(duì)int檢測那個(gè)槽,這里使用QSHIFT, QCTRL, QALT表示。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,727評(píng)論 9 468
  • Python常用庫大全,看看有沒有你需要的。 環(huán)境管理 管理 Python 版本和環(huán)境的工具 p – 非常簡單的交...
    XDgbh閱讀 15,992評(píng)論 4 147
  • 突然,感覺這段時(shí)間腦子一片空白,時(shí)間過得很慢,腦子很是遲鈍,前段時(shí)間的對(duì)未來很有期待,變成了現(xiàn)在對(duì)未來的迷茫,剛剛...
    lampard_xu閱讀 1,288評(píng)論 0 2
  • 前幾年,郭濤和梅婷演了一部電視劇《父母愛情》,我看了好多集。那時(shí)候,我也會(huì)看著老爸老媽,想想他們的愛情,總覺得沒有...
    艾小嘉閱讀 548評(píng)論 1 1
  • Today,I make my own decisions that I quote the party of h...
    Scott1ee閱讀 148評(píng)論 0 0

友情鏈接更多精彩內(nèi)容