workflow-osx-0.0.0: sources/Workflow/OSX/Example.hs
{-# OPTIONS_GHC -fno-warn-missing-signatures -fno-warn-unused-binds -fno-warn-unused-matches #-}
-- | some example workflows you can derive from the primitives in 'Workflow'. (see the source)
module Workflow.OSX.Example where
import Workflow.OSX.DSL
import Workflow.OSX.Execute
import Workflow.OSX.Types
import Control.Monad (replicateM_)
main = do
attemptWorkflow testDerived
-- attemptWorkflow testChrome
attemptWorkflow a = do
putStrLn ""
putStrLn $ showWorkflow a
runWorkflow a
testDerived = do
_ <- copy
delay 100
paste
testDSL :: Workflow ClipboardText
testDSL = do
-- delay 30
sendKeyChord [CommandModifier, ShiftModifier] BKey
delay 1000
sendKeyChord [CommandModifier] DownArrowKey
app <- currentApplication
s <- getClipboard
google s
setClipboard app
getClipboard
markWord = do
sendKeyChord [OptionModifier] LeftArrowKey
sendKeyChord [OptionModifier, ShiftModifier] RightArrowKey
backWord = do
sendKeyChord [OptionModifier] LeftArrowKey
forWord = do
sendKeyChord [OptionModifier] RightArrowKey
-- keyboard shortcuts don't need lag between each Keypress (hence
-- 'replicateM_', without 'interleave $ delay 25000'). only
-- interworkflow needs lag (e.g. a mini-buffer pop-up).
-- tested in Chrome.
testChrome :: Workflow ()
testChrome = do
delay 5000
replicateM_ 10 forWord
delay 1000
replicateM_ 10 backWord
delay 1000
markWord