键盘宏按钮重新映射

时间:2018-12-06 14:40:46

标签: autohotkey

我不确定标题是否正确,让我在这里解释我的问题...

我有一个具有5个宏键的键盘(您必须在键盘软件中为它们分配一个击键才能识别)。

所以我想做的就是拥有这些键,让我们说第一个“ M1”,这样,如果我按下它,我可以启动一些自动热键脚本。正如我之前提到的,问题来了,为了使密钥可识别,我必须为其分配一个密钥。事实是我不想分配任何F1 F2 ...键,因为我不希望在按F1 F2 ...键时触发自动热键。所以我认为的解决方案是将M1设置为Ctrl F1。这将解决问题,但不允许自动热键区分Ctrl M1和M1之间的差异。这是因为M1等于Ctrl F1,并且Ctrl M1也等于Ctrl F1。

那么我如何将宏键分配给不会限制我使用宏键的修饰键,以便我可以得到尽可能多的宏组合?

我尝试的方法是将M1设置为F13(不在键盘上,因此不会以任何方式限制我),但是键盘的软件不接受F13和更高版本...

我尽力解释,抱歉,这没有什么意义。

非常感谢您的帮助。

(我的键盘是Creative k08)

3 个答案:

答案 0 :(得分:1)

正如其他人所说,您可以将宏键设置为非常复杂的热键。我不确定如何使用宏键和其他键进行交互,即IE将您的 M1 设置为 Shift + F1 之类的东西,然后按 Ctrl + M1 。您可以尝试这样做,然后让AHK拥有以下地图:

void btree::inorder_print(std::ostream& ostrm = std::cout){
    inorder_print(root, ostrm);
    ostrm << "\n";
}

void btree::inorder_print(node *leaf, std::ostream& ostrm = std::cout){
    if(leaf != NULL){
        inorder_print(leaf->left, ostrm);
        ostrm << leaf->value << ",";
        inorder_print(leaf->right, ostrm);
    }
}

否则,您可能会被限制为仅触发单个热键的宏按钮。在这种情况下,您可以为某些可能要用来修改它的密钥添加一个!+F1:: ; maps to Alt + M1 !^+F1:: ; maps to Alt + Ctrl + M1 !+F2:: ; maps to Alt + Ctrl + M2 !^+F2:: ; maps to Alt + Ctrl + M2 来增加一些技巧。类似于 Ctrl 之类的东西,这样您可以在按 M1 时执行通常的脚本,如果正确配置,它将在KeyWait上超时,但是如果您按 Ctrl 使用它,则可以触发KeyWait,从而执行其他操作。

答案 1 :(得分:1)

我设法使其正常运行!所以这就是我所做的...(这可能仅适用于我的键盘软件)。 因此,对于键盘的每个键,您都可以通过软件分配另一个键,就像https://imgur.com/jwRGsWs 但事实是,即使您在文本字段中看到F13(我能够通过自动热键o::send {F13}发送),该软件也不会将其保存到键盘,因为该键不存在。因此,如果我关闭并打开软件,我设置的F13不会在那儿,它将永远无法用作F13。 因此,然后我看到了同一菜单的“记录”部分,在其中可以记录许多不同的按键,甚至有延迟甚至鼠标单击的情况。因此,我记录了按“ o”的情况(我已经暂时映射为发送F13,并且软件显示了没有名称的被按键,但是我尝试了一下,实际上它确实起作用了!因此,如果我记录F13并分配了它到键盘上的M1键,当我按M1键时,它确实会发送F13,这样我就可以使用所有的修饰符,并且仍然不会牺牲任何键。 很抱歉,由于您之前没有测试此录制功能而浪费了时间。

答案 2 :(得分:0)

我有一个类似的键盘,它的宏键必须被编程才能使用。我为执行AutoHotKey宏而设置它们的解决方案是将它们配置为使用不太可能的键组合,例如 Ctrl Alt Shift F12 然后在AutoHotKey中捕获这些键序列。