20170319 編集
lineMoveUpDownBinding 変数の中で hs.hotkey.bind
していたのを hs.hotkey.new
に変更。
bindだとhotkeyが即有効になるため、Evernote以外で動作する可能性がありました。
Macのエディターには行の入れ替えがショートカットがついていたりします。
(Cmt + Ctrl + ↑/↓)
CotEditor、Atomにはあり、よく使っています。
(確かtextemateやsublimeも確かありましたよね)
Evernoteのcheckボタン付きリストをなんとかこんな感じでできないかやってみました。
やってみた
きっとこの使い方は間違っていますが、とりあえず動くので使ってみようと思います。(より良い方法があれば是非知りたいです。)
delayの時間が短すぎると、ちゃんと動かなかったりするので一部多めに設定しています。
local function keyStroke(key, mods) mods = mods or {} return function() hs.eventtap.keyStroke(mods, key, 1000) end end local function disableAll(keySet) for k, v in pairs(keySet) do v:disable() end end local function enableAll(keySet) for k, v in pairs(keySet) do v:enable() end end local delay = 10000 local lateDelay = 100000 local function moveLineDown() return function() hs.eventtap.keyStroke({'cmd'}, 'right', delay) hs.eventtap.keyStroke({}, 'right', delay) hs.eventtap.keyStroke({}, 'delete', delay) hs.eventtap.keyStroke({'shift', 'cmd'}, 'left', lateDelay) hs.eventtap.keyStroke({'cmd',}, 'X', lateDelay) hs.eventtap.keyStroke({}, 'down', delay) hs.eventtap.keyStroke({'cmd'}, 'V', delay) hs.eventtap.keyStroke({}, 'return', delay) hs.eventtap.keyStroke({}, 'delete', delay) hs.eventtap.keyStroke({}, 'left', delay) end end local function moveLineUp() return function() hs.eventtap.keyStroke({'cmd'}, 'left', delay) hs.eventtap.keyStroke({}, 'delete', delay) hs.eventtap.keyStroke({'shift', 'cmd'}, 'left', lateDelay) hs.eventtap.keyStroke({'cmd',}, 'X', lateDelay) hs.eventtap.keyStroke({}, 'down', delay) hs.eventtap.keyStroke({'cmd'}, 'V', delay) hs.eventtap.keyStroke({}, 'return', delay) hs.eventtap.keyStroke({}, 'delete', delay) hs.eventtap.keyStroke({}, 'up', delay) hs.eventtap.keyStroke({}, 'left', delay) end end local lineMoveUpDownBinding = { hs.hotkey.new({'cmd', 'ctrl'}, 'down', moveLineDown()), hs.hotkey.new({'cmd', 'ctrl'}, 'up', moveLineUp()) } hs.window.filter.new('Evernote') :subscribe(hs.window.filter.windowFocused, function() enableAll(lineMoveUpDownBinding) end) :subscribe(hs.window.filter.windowUnfocused, function() disableAll(lineMoveUpDownBinding) end)
こんな感じ
動きがかなり気持ち悪いです。。