游戏键盘虚拟按键映射到功能键

3
如何虚拟激活“MadCatz Strike 7”键盘的特殊功能键?发送其键代码应使MadCatz7软件像注册物理按键一样运行。
这些功能键是否有键码(或是否有更好的方法)?我正在编写一个AutoIt脚本,应该让MadCatz软件通过激活相应的特殊功能键来完成剩下的工作。
2个回答

2

试着使用这段代码找出密钥。通常情况下,你的特殊功能键会有一个备用的热键,如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

出于好奇,我测试了你的脚本。它无法检测到我的键盘组合(例如ctrl+smth),只能检测单个按键。因此,如果你对隐藏的备选组合是正确的(这是有争议的,但我不是专家),脚本只能检测到一些简单的情况。 - nnovich-OK
是的,但它将会检测到特殊功能键。如果你想找出你的 G10 或其他按键的替代组合是什么,那么我猜这是有充分文档记录或很容易在谷歌上搜索到的。 - Xenobiologist
看起来MadCatz键盘没有发送已知的KeyCode。因此,当我按下“特殊功能键”时,脚本不会显示按钮被点击。 有没有办法获取键盘通过USB端口发送的原始数据,以手动将其发送到MadCatz软件? - Sardar Agabejli

1

如果不直接告诉MadCatz软件按下了特殊键,就没有办法做到这一点,以便软件启动编程模板。

我使用了AutoIt脚本来解决这个问题,等代码完成后会发布。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接