代码之家  ›  专栏  ›  技术社区  ›  ironsand

如何从hammerspoon调用kill和yank函数

  •  0
  • ironsand  · 技术社区  · 5 年前

    OSX默认终止( ctrl + k 和YANK( ctrl + y )函数在使用泰语或韩语输入模式时不起作用。 其他用于光标移动的键绑定也被禁用。

    所以我试图通过使用 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()
    

    我在google上搜索了一些用于emacs仿真的hammerspoon脚本,但它们只是使用了函数的关键笔划。

    有没有办法直接从一个锤子勺脚本中调用kill and yank?

    编辑2019/02/21

    如果 Karabiner 或者其他应用程序可以完成相同的行为,我将使用它。

    0 回复  |  直到 5 年前
        1
  •  0
  •   ironsand    5 年前

    我不知道怎么做 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 */
    }
    
    推荐文章