macos - 如何从 Hammerspoon 或 Karabiner 调用 kill 和 yank 函数
问题描述
OSX 默认的 kill( ctrl + k
) 和 yank( ctrl + y
) 函数在使用泰语或韩语输入模式时不起作用。光标移动的其他键绑定也被禁用。
所以我试图通过使用来模拟该功能Hammerspoon
。但我不知道如何从hammerspoon调用kill
and函数。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
,但是通过以下对该网站的解释,我进行了编辑~/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 */
}
推荐阅读
- reactjs - 从 JSX 花括号返回函数
- reactjs - 安装 react-router-hash-link 后,Navbar collapseOnSelect 已停止工作
- angular - NgIf 数据正在加载,但一开始没有显示数据
- php - Yii2 - yii2 作为 wordpress 中的子文件夹和带有站点索引的自定义表单,导致 400error
- python - 使用 Django 为多个反向外键选择相关和预取相关?
- docker - Docker stats 显示的内存使用量少于 top 命令的输出
- python - 参数:{ scale_pos_weight } 可能不会被使用
- git - Oh My Zsh - git 插件别名 ggp (git push origin $(current_branch)) 与 ggpush (git push origin "$(git_current_branch)")
- javascript - 调用 API 时请求格式错误,状态码为 400
- github - 使用 Github 集成设置 SonarQube 8.7 Developer