HammerspoonもしくはKarabinerでOSX組み込みのkillやyankを呼び出す方法
英語版スタックオーバーフローでも質問させてもらったのですが、回答がつかなかったのでこちらでも質問いたします。
https://stackoverflow.com/questions/54621056/how-to-call-kill-and-yank-function-from-hammerspoon
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ライクのキーバインドを実現するコードを確認してみたんですがC-a
など既存のキー入力を割り当ててるだけでした。
Hammerspoon
から特定のキー入力ではなくkill
やyank
機能を直接呼び出す方法はありますか?
Hammerspoon
のスクリプトについての質問になりましたが、同様の機能が実装できるのであればKarabiner
やその他のアプリケーションを用いてても大丈夫です。