Как вызвать функцию убить и восстановить из Hammerspoon или Karabiner - PullRequest
0 голосов
/ 11 февраля 2019

OSX По умолчанию функция kill (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()

Я гуглилнекоторые сценарии с использованием молотковой ложки для эмуляции emacs, но они просто используют нажатия клавиш для этой функции.

Есть ли способ вызвать kill и yank напрямую из сценария Hammerspoon?

Редактировать 2019/02/ 21

Если Karabiner или другие приложения могут выполнить то же поведение, я собираюсь использовать его.

1 Ответ

0 голосов
/ 23 февраля 2019

Я не мог понять, как сделать это с 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 */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...