我不确定标题是否正确,让我在这里解释我的问题...
我有一个具有5个宏键的键盘(您必须在键盘软件中为它们分配一个击键才能识别)。
所以我想做的就是拥有这些键,让我们说第一个“ M1”,这样,如果我按下它,我可以启动一些自动热键脚本。正如我之前提到的,问题来了,为了使密钥可识别,我必须为其分配一个密钥。事实是我不想分配任何F1 F2 ...键,因为我不希望在按F1 F2 ...键时触发自动热键。所以我认为的解决方案是将M1设置为Ctrl F1。这将解决问题,但不允许自动热键区分Ctrl M1和M1之间的差异。这是因为M1等于Ctrl F1,并且Ctrl M1也等于Ctrl F1。
那么我如何将宏键分配给不会限制我使用宏键的修饰键,以便我可以得到尽可能多的宏组合?
我尝试的方法是将M1设置为F13(不在键盘上,因此不会以任何方式限制我),但是键盘的软件不接受F13和更高版本...
我尽力解释,抱歉,这没有什么意义。
非常感谢您的帮助。
(我的键盘是Creative k08)
答案 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中捕获这些键序列。