2017-08-03 79 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软件? –