使用AutoHotKey做按键映射来扩充我可怜的小键盘

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用AutoHotKey做按键映射来扩充我可怜的小键盘相关的知识,希望对你有一定的参考价值。

参考技术A 双11终于剁手买了一个无线蓝牙双模键盘(虽然我承认很便宜),这几天用下来发现。。这键盘TM没有Insert、Home、PgDn等按键,实在难受,看着键盘右下角基本不用的Alt、Ctrl键,陷入了沉思。。。既然RAlt不怎么用,那为毛不能把它当作FN键使用呢。。。🤣

网上找了一番,这个AutoHotKey着实用着挺爽,而且还可以把脚本编译成exe到处用😋😎😍😘

将RAlt作为FN键.ahk

使用下来,基本上都没什么问题,只有极少数windows系统应用不能识别(部分可以编译成exe以管理员身份运行解决)

如何将 Tab 键重新映射到两个点/句点按键

【中文标题】如何将 Tab 键重新映射到两个点/句点按键【英文标题】:How to remap Tab key to two dots/period key presses 【发布时间】:2021-11-24 05:22:22 【问题描述】:

我想将两个点/句点按键映射到 AutoHotkey 脚本中的 Tab 键。我尝试以类似于remapping semicolon key - on AutoHotkey forums 的方式进行映射,但它不起作用。我尝试了以下操作:


1. `..`::Tab
2. ..::Tab

AutoHotkey 报错

.

我尝试在AutoHotkey Remap docs 上进行搜索,但无法弄清楚。句号键是带有大于号的那个,而不是数字键盘的句号键。看到这个:Dot/period key

添加信息/上下文以响应用户 0x464e 的回复:

基本上,我试图在 devtools 样式子面板中扩展 Emmet 样式缩写,因为 chrome devtools team wont implement it。

我不是一个快速打字员,所以输入完整的属性名称很痛苦。例如,如果我想输入margin-top,(见图),Chrome 自动完成功能会显示 margin、margin-block margin-block-end 等。

现在,对于 margin-top,您至少需要输入 margin-t 以获取自动完成以显示该属性。

许多非常常见的 CSS 属性(如边距、填充等)都是这种情况,因此自动完成效果不是很好。

另一方面,如果我只输入 mt 并将 Autohotkey 扩展为 margin-top,它会快得多,节省大量时间并让我保持清醒。

基本上,我在 .ahk 脚本中设置了一些热字串,它们也可以工作。

但是,如果我按下mt,然后按下 Tab 键,Chrome 的自动完成功能会接管并且热字串会失败(尝试一次以查看问题)。相反,目前我按空格键或 . (句点)触发热字串。它可以工作,但问题是它在扩展文本中留下了一个空格或一个点。 [见此]。

所以,这就是我想要一个双句点键触发器来替换 Tab 的真正原因。

如果热字符串触发器可以使用双句点键,但不离开触发器字符本身,然后发送 Tab 以便跳转到刚刚展开的属性的值输入,那就太好了。

【问题讨论】:

【参考方案1】:

您并不是真的在寻找传统的重映射,这就是您没有从文档中找到它的原因。 重新映射只是简单地将一个键重新映射到另一个键,但您并没有尝试这样做。您正试图让某个动作执行另一个动作。

无论如何,您的要求是可行的,但是有很多不同的方法可以实现它,难度从简单到极其高级和复杂不等。 您需要更清楚地说明问题才能正确回答。 立即出现在我脑海中的最大问题至少是:

这应该适用于任何地方,还是只适用于文本输入字段? 应该如何保留 . 的原始功能,如果有的话。 (最初的 . 按键后会发生什么?) 按键之间是否应该有一些超时? 等等,这只是我能马上想到的,但肯定还有更多。

无论如何,现在我可以用hotstring 给出一个简单的实现:

:*?:..::Tab

所以这是一个带有*? options 的热字符串。 我猜这些可能是很好的选择。 那么这是做什么的,如果你输入..,它会按两次退格键并发送Tab。 这对文本编辑器来说应该没问题,但还有很多不足之处(我上面列出的几点没有被考虑,因为我不知道你在寻找什么。这正是默认的简单热字符串可以提供的)。

【讨论】:

感谢您的回复,我已更新我的问题以提供我的问题的实际上下文/用例。如果您需要其他信息,我也会尝试提供。再次感谢您的帮助。【参考方案2】:

在我看来,您实际上并不想要将 .. 额外映射到 Tab,而是只想更新现有的热字串以立即激活(无需等待 EndChar ) 当热字串后跟..

通常,您可能会使用Ending Characters 选项来创建此功能,但由于您希望多个字符触发此功能,因此我们需要查看其他选项。


我将在示例实现中使用::mt::margin-top 的示例。将我对这些内容所做的任何更改扩展到您截取的脚本中的其余热字串。

以下是我对这个示例所做的更改:

    将您的.. 添加到每个热字串触发器的末尾。例如,::mt::margin-top 变为 ::mt..::margin-top。但是,目前,这仍然需要按下某种结束字符才能触发。让我们在下一步中解决这个问题

    将Asterisk Modifier 添加到热字串中。来自文档:

*(星号):触发热字串不需要结束字符(例如空格、. 或 Enter)。


::mt::margin-top 示例的最终代码:

:*:mt..::margin-top

并将这个 * 插入和 .. 附加扩展到您的每个热字串。

希望这有帮助!如果您需要更多帮助或更改,请 Lmk。

【讨论】:

以上是关于使用AutoHotKey做按键映射来扩充我可怜的小键盘的主要内容,如果未能解决你的问题,请参考以下文章

Autohotkey输入无需端键

求做一个Autohotkey脚本:1.鼠标左键点一下。2.间隔30ms按下数字键3,3.间隔30ms按下数字键1。1~3循环

win10修改键盘映射

Windows 在使用罗马尼亚程序员布局输入罗马尼亚字符后发疯,同时使用 Autohotkey 重新映射 Alt/Ctrl/Win

Leetcode 458.可怜的小猪

AutoHotkey 使用笔记