2017-08-03 109 views
3

如何虛擬激活「MadCatz Strike 7」鍵盤的特殊功能鍵?發送其關鍵代碼應該使MadCatz7軟件像註冊物理按鍵一樣行事。虛擬按鍵到遊戲鍵盤的功能鍵

是否有這些功能鍵的關鍵代碼(或有更好的方法)?我正在研究一個AutoIt腳本,它應該讓MadCatz軟件通過激活相應的特殊功能鍵來完成剩下的工作。

回答

1

有沒有辦法做到這一點不直接告訴MadCatz軟件的特殊鍵被按下,這樣軟件將啓動編程模板。

我使用AutoIt腳本解決了問題,並在完成後發佈代碼。

2

試着弄清楚這個代碼的關鍵。通常你的specail功能鍵有一個替代的熱鍵,如ctrl + alt + F10或其他。

Opt('GUICloseOnESC', 0) 

Global $tState = DllStructCreate('byte[256]') 

GUICreate('MyGUI', 200, 200) 
$Label = GUICtrlCreateLabel('', 20, 72, 160, 52, 0x01) 
GUICtrlSetFont(-1, 32, 800, 0, 'Tahoma') 
GUISetState() 

$Prev = -1 

While 1 
    Sleep(10) 
    If GUIGetMsg() = -3 Then 
     ExitLoop 
    EndIf 
    $Key = 0 
    $Ret = DllCall('user32.dll', 'int', 'GetKeyboardState', 'ptr', DllStructGetPtr($tState)) 
    For $i = 0x08 To 0xFF 
     Switch $i 
      Case 0x0A, 0x0B, 0x0E To 0x0F, 0x16, 0x1A, 0x1C To 0x1F, 0x3A To 0x40, 0x5E, 0x88 To 0x8F, 0x97 To 0x9F, 0xB8 To 0xB9, 0xC1 To 0xDA, 0xE0, 0xE8 
       ContinueLoop 
      Case Else 
       If BitAND(DllStructGetData($tState, 1, $i + 1), 0xF0) Then 
        $Key = $i 
        ExitLoop 
       EndIf 
     EndSwitch 
    Next 
    If $Key <> $Prev Then 
     GUICtrlSetData($Label, '0x' & Hex($Key, 2)) 
     $Prev = $Key 
    EndIf 
WEnd 
+0

出於好奇,測試了你的腳本。它無法檢測到按鍵的組合(如ctrl + smth),只有一個按鍵。所以如果你對隱藏的替代組合(這是有爭議的,但我不是專家)是正確的,腳本將允許僅檢測微不足道的情況。 –

+0

是的,但它會檢測特殊功能鍵。如果你想找出你的G10或其他關鍵組合的替代組合,那麼我認爲這是很好的文檔或易於谷歌。 – Xenobiologist

+0

它看起來像MadCatz鍵盤不發送已知的KeyCode。因此,當我按下「特殊功能鍵」時,腳本不顯示按鈕被單擊 有沒有辦法獲得KeyBoard在USB端口上發送的原始數據以便將其手動發送到MadCatz軟件? –