module Brick.Keybindings.Normalize ( normalizeKey ) where import Data.Char (toLower) import qualified Graphics.Vty as Vty -- | A keybinding involving modifiers should have its key character -- normalized to lowercase since it's impossible to get uppercase keys -- from the terminal when modifiers are present. normalizeKey :: [Vty.Modifier] -> Vty.Key -> Vty.Key normalizeKey :: [Modifier] -> Key -> Key normalizeKey (Modifier _:[Modifier] _) (Vty.KChar Char c) = Char -> Key Vty.KChar (Char -> Key) -> Char -> Key forall a b. (a -> b) -> a -> b $ Char -> Char toLower Char c normalizeKey [Modifier] _ Key k = Key k