问题是由库的bug造成的,而且已经修复了。
我正在使用Hammerspoon而我正在尝试将Ctrl + '
重新映射为反引号(`),但我不能。
设置文件init.lua如下所示:
local function keyCode(key, modifiers)
modifiers = modifiers or {}
return function()
hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), true):post()
hs.timer.usleep(100)
hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), false):post()
end
end
local function remapKey(modifiers, key, keyCode)
hs.hotkey.bind(modifiers, key, keyCode, nil, keyCode)
end
remapKey({'ctrl'}, 'h', keyCode('delete')) // works
remapKey({'ctrl'}, "'", keyCode("`")) // does not work
错误信息是:
Invalid key: ' - this may mean that the key requested does not exist in your keymap (particularly if you switch keyboard layouts frequently)
似乎问题是hs.keycodes.map
不包含撇号(但它包括双引号和反引号)。
是否可以重新映射撇号?
答案 0 :(得分:0)
这里的重点是键盘布局(Hammerspoon认为你的键盘在其中)。
你的键盘上确实有一个撇号(`)键吗?
我的意思是,如果您需要键入类似 shift + @ 的内容来输入撇号,那么您必须告诉newKeyEvent
。
remapKey({'ctrl'}, "'", keyCode("@", {"shift"}))
或者,如果您不想打扰如何使用键盘输入字符串,可以在keyCode()函数中使用hs.eventtap.keyStroke():
local function keyCode(key, modifiers)
modifiers = modifiers or {}
return function()
hs.eventtap.keyStroke(modifiers, key)
end
end
对于具有双引号而不是单引号的hs.keycodes.map
,结果证明它是Hammerspoon的错误,所以我刚刚提交了PR。