Guest User

Untitled

a guest
Jul 20th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. local ctrl = { "ctrl" }
  2. local cmd = { "cmd" }
  3.  
  4. emacsKeyMappers = {
  5. {ctrl, "f", {}, "right"},
  6. {ctrl, "b", {}, "left"},
  7. {ctrl, "e", cmd, "right"},
  8. {ctrl, "a", cmd, "left"},
  9.  
  10. {ctrl, "p", {}, "up"},
  11. {ctrl, "n", {}, "down"},
  12. {ctrl, "v", {}, "pagedown"},
  13. {cmd , "v", {}, "pageup"}
  14. }
  15.  
  16. apps = {
  17. "Microsoft Excel",
  18. "Microsoft PowerPoint"
  19. }
  20.  
  21. function bindKeyMappers(keyMappers)
  22. for i, mapper in ipairs(keyMappers) do
  23. local mods = mapper[1]
  24. local key = mapper[2]
  25. local mappedMods = mapper[3]
  26. local mappedKey = mapper[4]
  27. hs.hotkey.bind(mods, key, function()
  28. hs.eventtap.keyStroke(mappedMods, mappedKey)
  29. end)
  30. end
  31. end
  32.  
  33. function deleteAllHotkeys()
  34. for k, v in pairs(hs.hotkey.getHotkeys()) do
  35. v:delete()
  36. end
  37. end
  38.  
  39. function contains(table, element)
  40. for i, v in pairs( table ) do
  41. if v == element then
  42. return true
  43. end
  44. end
  45. end
  46.  
  47. function applicationWatcher(appName, eventType, appObject)
  48. if hs.application.watcher.activated == eventType then
  49. deleteAllHotkeys()
  50. if contains( apps, appName ) then
  51. bindKeyMappers(emacsKeyMappers)
  52. end
  53. end
  54. hs.console.printStyledtext(appName)
  55. hs.console.printStyledtext(eventType)
  56. end
  57.  
  58. appWatcher = hs.application.watcher.new(applicationWatcher)
  59. appWatcher:start()
Add Comment
Please, Sign In to add comment