x !! 8) (V2 tab (initY + 8 * delta))
   text (short $ lctx !! 9) (V2 tab (initY + 9 * delta))
--
-- ########################################################
--
eventIsESCPress ::SDL.Event -> Bool
eventIsESCPress evt = pressKey $ SDL.eventPayload evt
--
-- 判斷是否滿足某某(離開)條件
pressKey :: SDL.EventPayload -> Bool
pressKey (SDL.KeyboardEvent kEvtData) =
   -- 檢查 KeyboardEvent 是否為 Pressed
   let kPressed = SDL.keyboardEventKeyMotion kEvtData == SDL.Pressed
   -- 判斷 KeyboardEvent 到底詳細來說是由哪個按鍵觸發的
   in case (SDL.keysymKeycode $ SDL.keyboardEventKeysym kEvtData) of
         -- SDL.KeycodeW -> True && kPressed
         -- SDL.KeycodeS -> True && kPressed
         -- SDL.KeycodeA -> True && kPressed
         -- SDL.KeycodeD -> True && kPressed
         -- 按下 ESC 會回傳 True
         SDL.KeycodeEscape -> True && kPressed
         -- 按下其他按鍵或是其他事件會回傳 false
         _ -> False
pressKey _ = False
--
-- ###############################
showConcole :: SDL.Texture -> IO ()
showConcole tx = withCanvas tx $ do
   textFont $ Font "Hiragino Maru Gothic ProN" 20 False False
   fill $ gray 0
   let lctx = take 10 ctx
       delta = 30
       initY = 150
       tab   = 25
       short = \x -> "> " ++ (take (28 `min` length x) x)
   text (short $ lctx !! 0) (V2 tab (initY + 0 * delta))
   text (short $ lctx !! 1) (V2 tab (initY + 1 * delta))
   text (short $ lctx !! 2) (V2 tab (initY + 2 * delta))
   text (short $ lctx !! 3) (V2 tab (initY + 3 * delta))
   text (short $ lctx !! 4) (V2 tab (initY + 4 * delta))
   text (short $ lctx !! 5) (V2 tab (initY + 5 * delta))
   text (short $ lctx !! 6) (V2 tab (initY + 6 * delta))
   text (short $ lctx !! 7) (V2 tab (initY + 7 * delta))
   text (short $ lctx !! 8) (V2 tab (initY + 8 * delta))
   text (short $ lctx !! 9) (V2 tab (initY + 9 * delta))
--
-- ########################################################
--
showConcole tx = withCanvas tx $ do
   textFont $ Font "Hiragino Maru Gothic ProN" 20 False False
   fill $ gray 0
   let lctx = take 10 ctx
       delta = 30
       initY = 150
       tab   = 25
       short = \x -> "> " ++ (take (28 `min` length x) x)
   text (short $ lctx !! 0) (V2 tab (initY + 0 * delta))
   text (short $ lctx !! 1) (V2 tab (initY + 1 * delta))
   text (short $ lctx !! 2) (V2 tab (initY + 2 * delta))
   text (short $ lctx !! 3) (V2 tab (initY + 3 * delta))
   text (short $ lctx !! 4) (V2 tab (initY + 4 * delta))
   text (short $ lctx !! 5) (V2 tab (initY + 5 * delta))
   text (short $ lctx !! 6) (V2 tab (initY + 6 * delta))
   text (short $ lctx !! 7) (V2 tab (initY + 7 * delta))
   text (short $ lctx !! 8) (V2 tab (initY + 8 * delta))
   text (short $ lctx !! 9) (V2 tab (initY + 9 * delta))
--
-- ########################################################
--