如何从 Hammerspoon 或 Karabiner 调用 kill 和 yank 函数
How to call kill and yank function from Hammerspoon or Karabiner
OSX 默认 kill(ctrl + k
) 和 yank(ctrl + y
) 函数在使用泰语或韩语输入模式时不起作用。
光标移动的其他键绑定也被禁用。
所以我正在尝试使用 Hammerspoon
来模拟该功能。
但是我找不到如何从 hammerspoon 调用 kill
和 yank
函数。
我只能通过这段代码实现光标移动。
local EmacsKeyMap = hs.hotkey.modal.new()
local function sendKey(mods, key)
return function()
hs.eventtap.keyStroke(mods, key, 10000)
end
end
local function bindToEmacsKeyMap(mods, key, func)
EmacsKeyMap:bind(mods, key, func, nil, func)
end
bindToEmacsKeyMap({'ctrl'}, 0, sendKey({'command'}, 'left')) -- C-a
bindToEmacsKeyMap({'ctrl'}, 14, sendKey({'command'}, 'right')) -- C-e
bindToEmacsKeyMap({'ctrl'}, 11, sendKey({}, 'left')) -- C-b
bindToEmacsKeyMap({'ctrl'}, 3, sendKey({}, 'right')) -- C-f
bindToEmacsKeyMap({'ctrl'}, 45, sendKey({}, 'down')) -- C-n
bindToEmacsKeyMap({'ctrl'}, 35, sendKey({}, 'up')) -- C-p
bindToEmacsKeyMap({'ctrl'}, 4, sendKey({}, 'delete')) -- C-h
EmacsKeyMap:enter()
我用谷歌搜索了一些用于 emacs 仿真的 hammerspoon 脚本,但它们只是使用击键来实现该功能。
有没有办法直接从 Hammerspoon 脚本中调用 kill 和 yank?
编辑 2019/02/21
如果Karabiner
或其他应用程序可以完成相同的行为,我将使用它。
我不知道如何用 Hammerspoon
制作它,但根据 this website 的解释,我编辑了 ~/Library/KeyBindings/DefaultKeyBinding.dict
。然后所有文本键绑定都按预期工作。
{
"^ฟ" = "moveToBeginningOfParagraph:"; /* ctrl-a */
"^ฤ" = "moveToBeginningOfParagraphAndModifySelection:"; /* ctrl-A */
"^ิ" = "moveBackward:"; /* ctrl-b */
"^ฺ" = "moveBackwardAndModifySelection:"; /* ctrl-B */
"^ก" = "deleteForward:"; /* ctrl-d */
"^ำ" = "moveToEndOfParagraph:"; /* ctrl-e */
"^ฎ" = "moveToEndOfParagraphAndModifySelection:"; /* ctrl-E */
"^ด" = "moveForward:"; /* ctrl-f */
"^โ" = "moveForwardAndModifySelection:"; /* ctrl-F */
"^้" = "deleteBackward:"; /* ctrl-h */
"^า" = "deleteToEndOfParagraph:"; /* ctrl-k */
"^ส" = "centerSelectionInVisibleArea:"; /* ctrl-l */
"^ื" = "moveDown:"; /* ctrl-n */
"^์" = "moveDownAndModifySelection:"; /* ctrl-N */
"^น" = (
"insertNewlineIgnoringFieldEditor:",
"moveBackward:",
); /* ctrl-o */
"^ย" = "moveUp:"; /* ctrl-p */
"^ญ" = "moveUpAndModifySelection:"; /* ctrl-P */
"^ะ" = "transpose:"; /* ctrl-t */
"^ฮ" = "pageDownAndModifySelection:"; /* ctrl-V */
"^อ" = "pageDown:"; /* ctrl-v */
"^ั" = "yank:"; /* ctrl-y */
}
OSX 默认 kill(ctrl + k
) 和 yank(ctrl + y
) 函数在使用泰语或韩语输入模式时不起作用。
光标移动的其他键绑定也被禁用。
所以我正在尝试使用 Hammerspoon
来模拟该功能。
但是我找不到如何从 hammerspoon 调用 kill
和 yank
函数。
我只能通过这段代码实现光标移动。
local EmacsKeyMap = hs.hotkey.modal.new()
local function sendKey(mods, key)
return function()
hs.eventtap.keyStroke(mods, key, 10000)
end
end
local function bindToEmacsKeyMap(mods, key, func)
EmacsKeyMap:bind(mods, key, func, nil, func)
end
bindToEmacsKeyMap({'ctrl'}, 0, sendKey({'command'}, 'left')) -- C-a
bindToEmacsKeyMap({'ctrl'}, 14, sendKey({'command'}, 'right')) -- C-e
bindToEmacsKeyMap({'ctrl'}, 11, sendKey({}, 'left')) -- C-b
bindToEmacsKeyMap({'ctrl'}, 3, sendKey({}, 'right')) -- C-f
bindToEmacsKeyMap({'ctrl'}, 45, sendKey({}, 'down')) -- C-n
bindToEmacsKeyMap({'ctrl'}, 35, sendKey({}, 'up')) -- C-p
bindToEmacsKeyMap({'ctrl'}, 4, sendKey({}, 'delete')) -- C-h
EmacsKeyMap:enter()
我用谷歌搜索了一些用于 emacs 仿真的 hammerspoon 脚本,但它们只是使用击键来实现该功能。
有没有办法直接从 Hammerspoon 脚本中调用 kill 和 yank?
编辑 2019/02/21
如果Karabiner
或其他应用程序可以完成相同的行为,我将使用它。
我不知道如何用 Hammerspoon
制作它,但根据 this website 的解释,我编辑了 ~/Library/KeyBindings/DefaultKeyBinding.dict
。然后所有文本键绑定都按预期工作。
{
"^ฟ" = "moveToBeginningOfParagraph:"; /* ctrl-a */
"^ฤ" = "moveToBeginningOfParagraphAndModifySelection:"; /* ctrl-A */
"^ิ" = "moveBackward:"; /* ctrl-b */
"^ฺ" = "moveBackwardAndModifySelection:"; /* ctrl-B */
"^ก" = "deleteForward:"; /* ctrl-d */
"^ำ" = "moveToEndOfParagraph:"; /* ctrl-e */
"^ฎ" = "moveToEndOfParagraphAndModifySelection:"; /* ctrl-E */
"^ด" = "moveForward:"; /* ctrl-f */
"^โ" = "moveForwardAndModifySelection:"; /* ctrl-F */
"^้" = "deleteBackward:"; /* ctrl-h */
"^า" = "deleteToEndOfParagraph:"; /* ctrl-k */
"^ส" = "centerSelectionInVisibleArea:"; /* ctrl-l */
"^ื" = "moveDown:"; /* ctrl-n */
"^์" = "moveDownAndModifySelection:"; /* ctrl-N */
"^น" = (
"insertNewlineIgnoringFieldEditor:",
"moveBackward:",
); /* ctrl-o */
"^ย" = "moveUp:"; /* ctrl-p */
"^ญ" = "moveUpAndModifySelection:"; /* ctrl-P */
"^ะ" = "transpose:"; /* ctrl-t */
"^ฮ" = "pageDownAndModifySelection:"; /* ctrl-V */
"^อ" = "pageDown:"; /* ctrl-v */
"^ั" = "yank:"; /* ctrl-y */
}