macos - 如何从 Hammerspoon 或 Karabiner 调用 kill 和 yank 函数

标签 macos hammerspoon karabiner

OSX 默认 kill(ctrl + k) 和 yank(ctrl + y) 功能在使用泰语或韩语输入模式时不起作用。 光标移动的其他键绑定(bind)也被禁用。

所以我尝试使用 Hammerspoon 来模拟该功能。 但是我找不到如何从 hammerspoon 调用 killyank 函数。

我只能通过这段代码实现光标移动。

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。然后所有文本键绑定(bind)都按我预期的方式工作。

{
    "^ฟ" = "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 */
}

关于macos - 如何从 Hammerspoon 或 Karabiner 调用 kill 和 yank 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54621056/

相关文章:

cocoa - 在 Cocoa 应用程序的 QT Movie 之间创建白色淡入和淡出

lua - 在 hammerspoon 中粘贴 hs.chooser 中的文本

automation - 如何通过hammerspoon检查用户是否通过wifi或LAN连接

windows - 无法在 Mac OS X 主机上的 Windows 10 VirtualBox VM 中运行基于 docker 的 Windows 容器

objective-c - Retina "@2x"图形在标准清晰度显示器上错误使用(使用 Snow Leopard/Xcode 4.2 )

php - Composer 如何检查php版本?

hammerspoon - 绑定(bind)到多个按钮点击

Karabiner 元素删除一行

karabiner - 如何禁用某些键的 shift(或任何修饰符)而不禁用其他键?

macos-sierra - 锤子重新映射控制键 : sends esc when pressed alone, 与其他键一起按下时发送控制