【问题标题】:Autohotkey: remap ctrl + {自动热键:重新映射 ctrl + {
【发布时间】:2018-05-03 01:34:24
【问题描述】:

我希望 ctrl + { 作为主键。 这不起作用:

^{::Send {Home}

我猜 { 需要转义?

这也不起作用:(在加载脚本时会产生错误)

^{{}::Send {Home}

这样做的正确方法是什么?

【问题讨论】:

  • 第一个是正确的语法。你如何在键盘上输入{?我的是 Shift+[,所以要执行你的热键,我实际上必须输入 Ctrl+Shift+[。如果你也一样,并且不想按 shift,你可以使用^[
  • 我可以在没有 shift 或 alt 键的情况下输入 {。
  • 尝试here 列出的步骤,并使用生成的{ 的虚拟键代码 (VKnn) 来制作热键。旁注,您使用的是什么键盘布局(猜测是德沃夏克程序员还是拉丁美洲)?
  • 谢谢。这有效:^SC028::Send {Home}。我有一个自定义布局 (github.com/r03/azerty)。也许这就是问题所在。
  • 如果您对您的评论做出回答,那么我会接受。再次感谢!

标签: autohotkey


【解决方案1】:

您可以使用here 列出的步骤找到{ 的扫描码和虚拟键码,然后在热键定义中使用其中一个(SCnnnVKnn)。

尽管这可行,但我很好奇为什么 ^{ 不适用于您的布局,所以我尝试使用它并查看 AHK 的关键历史记录是否显示 {,确实如此。我查看了 AHK 的源代码以了解发生了什么,我认为这归结为用 { 调用的 VkKeyScanEx 的返回值和您的布局,即 0x0634,即 AltGr+4。我没有注意到 AltGr+4AltGr+5AltGr+9 都在您的布局中产生 { 在此之前,所以我再次尝试了 ^{ 热键,果然它使用 AltGr+4触发>。所以它似乎是just a limitation of VkKeyScanEx:即使多个组合映射到某个字符,也只能返回其中一个。在您的 .klc 文件中,左大括号第一次出现的地方将是 VkKeyScanEx 返回的组合。我不知道您是否对 { 使用 AltGr 组合,但如果您从布局中删除它们,^{ 热键应该只适用于 Ctrl+ {.

【讨论】:

  • 谢谢!我的布局上有多个 { 键是正确的。问题是普通的 azerty 和苹果的 azerty 有一些字符的不同位置,我试图与所有布局兼容,我还用 { 之类的东西更改了一些未使用的键以更快地编码。但它适用于扫描码,所以我对这个解决方案很满意。
猜你喜欢
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
相关资源
最近更新 更多