diff options
| author | Akshay Nair <phenax5@gmail.com> | 2024-12-20 19:51:08 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2024-12-20 19:54:25 +0530 |
| commit | 496c7d048df6a9a3650c0a0b996888decb4ea9d1 (patch) | |
| tree | bdd74d3678dff626249a14f9682e8d3b798d4d05 /src/Chelleport.hs | |
| parent | f96b1395518b2941b2746398094c06d3d40d18f1 (diff) | |
| download | chelleport-496c7d048df6a9a3650c0a0b996888decb4ea9d1.tar.gz chelleport-496c7d048df6a9a3650c0a0b996888decb4ea9d1.zip | |
Add shift+click to chain clicks in sequence
Diffstat (limited to 'src/Chelleport.hs')
| -rw-r--r-- | src/Chelleport.hs | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/Chelleport.hs b/src/Chelleport.hs index 98d1aa6..6c06af4 100644 --- a/src/Chelleport.hs +++ b/src/Chelleport.hs @@ -2,9 +2,9 @@ module Chelleport where -import Chelleport.AppShell (MonadAppShell (hideWindow, shutdownApp), setupAppShell) +import Chelleport.AppShell (MonadAppShell (hideWindow, showWindow, shutdownApp), setupAppShell) import Chelleport.Context (initializeContext) -import Chelleport.Control (MonadControl (getMousePointerPosition, moveMousePointer, pressMouseButton), directionalIncrement, eventToKeycode, isKeyPress, isKeyPressWith, isKeyReleaseWith) +import Chelleport.Control (MonadControl (getMousePointerPosition, moveMousePointer, pressMouseButton), directionalIncrement, eventToKeycode, isKeyPressWith, isKeyPressed, isKeyReleaseWith, withShift) import Chelleport.Draw (MonadDraw, cellSize) import Chelleport.KeySequence (findMatchPosition, generateGrid, isValidKey, nextChars, toKeyChar) import Chelleport.Types @@ -12,7 +12,6 @@ import Chelleport.Utils (intToCInt) import qualified Chelleport.View import Control.Monad.IO.Class (MonadIO) import Control.Monad.Reader (ReaderT (runReaderT)) -import Data.List ((\\)) import Data.Maybe (fromMaybe, isJust) import qualified SDL @@ -46,18 +45,20 @@ initialState = do where rows = 9 columns = 16 - hintKeys = ['A' .. 'Z'] \\ "Q" + hintKeys = ['A' .. 'Z'] eventHandler :: SDL.Event -> Maybe AppAction eventHandler event = case SDL.eventPayload event of SDL.QuitEvent -> Just ShutdownApp SDL.KeyboardEvent ev - | isKeyPressWith ev SDL.KeycodeQ -> Just ShutdownApp | isKeyPressWith ev SDL.KeycodeEscape -> Just ShutdownApp - | isKeyPressWith ev SDL.KeycodeSpace -> Just TriggerLeftClick + | isKeyPressWith ev SDL.KeycodeSpace -> + if withShift ev + then Just ChainLeftClick + else Just TriggerLeftClick | isKeyPressWith ev SDL.KeycodeTab -> Just ResetKeys - | isKeyPress ev && isValidKey (eventToKeycode ev) -> + | isKeyPressed ev && isValidKey (eventToKeycode ev) -> Just $ HandleKeyInput $ eventToKeycode ev | isKeyPressWith ev SDL.KeycodeLShift || isKeyPressWith ev SDL.KeycodeRShift -> Just $ UpdateShiftState True @@ -120,6 +121,13 @@ update state TriggerLeftClick = do pressMouseButton LeftClick pure (state, Just ShutdownApp) +-- Chain clicks +update state ChainLeftClick = do + hideWindow + pressMouseButton LeftClick + showWindow + pure (state, Just ResetKeys) + -- Cleanup everything and exit update state ShutdownApp = do shutdownApp |
