Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local ctrl = { "ctrl" }
- local cmd = { "cmd" }
- emacsKeyMappers = {
- {ctrl, "f", {}, "right"},
- {ctrl, "b", {}, "left"},
- {ctrl, "e", cmd, "right"},
- {ctrl, "a", cmd, "left"},
- {ctrl, "p", {}, "up"},
- {ctrl, "n", {}, "down"},
- {ctrl, "v", {}, "pagedown"},
- {cmd , "v", {}, "pageup"}
- }
- apps = {
- "Microsoft Excel",
- "Microsoft PowerPoint"
- }
- function bindKeyMappers(keyMappers)
- for i, mapper in ipairs(keyMappers) do
- local mods = mapper[1]
- local key = mapper[2]
- local mappedMods = mapper[3]
- local mappedKey = mapper[4]
- hs.hotkey.bind(mods, key, function()
- hs.eventtap.keyStroke(mappedMods, mappedKey)
- end)
- end
- end
- function deleteAllHotkeys()
- for k, v in pairs(hs.hotkey.getHotkeys()) do
- v:delete()
- end
- end
- function contains(table, element)
- for i, v in pairs( table ) do
- if v == element then
- return true
- end
- end
- end
- function applicationWatcher(appName, eventType, appObject)
- if hs.application.watcher.activated == eventType then
- deleteAllHotkeys()
- if contains( apps, appName ) then
- bindKeyMappers(emacsKeyMappers)
- end
- end
- hs.console.printStyledtext(appName)
- hs.console.printStyledtext(eventType)
- end
- appWatcher = hs.application.watcher.new(applicationWatcher)
- appWatcher:start()
Add Comment
Please, Sign In to add comment