使用 hammerspoon 将撇号重新映射到其他键
remap apostrophe to other keys using hammerspoon
问题是由库的错误引起的,已修复。
我正在使用 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
不包括撇号(但包括双引号和反引号)。
是否可以重新映射撇号?
这里的重点是键盘布局(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的bug,所以我刚刚提交了PR。
问题是由库的错误引起的,已修复。
我正在使用 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
不包括撇号(但包括双引号和反引号)。
是否可以重新映射撇号?
这里的重点是键盘布局(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的bug,所以我刚刚提交了PR。