packages feed

dear-imgui-raw-1.0.0: src/DearImGui/Raw/Enums/ImGuiKey.hsc

{-# LANGUAGE CApiFFI #-}
{-# LANGUAGE PatternSynonyms #-}

-- This file was generated by dear-bindings-ffi. Do not edit by hand.

module DearImGui.Raw.Enums.ImGuiKey
  ( ImGuiKey
  , pattern A
  , pattern Apostrophe
  , pattern AppBack
  , pattern AppForward
  , pattern B
  , pattern Backslash
  , pattern Backspace
  , pattern C
  , pattern CapsLock
  , pattern Comma
  , pattern D
  , pattern Delete
  , pattern DownArrow
  , pattern E
  , pattern End
  , pattern Enter
  , pattern Equal
  , pattern Escape
  , pattern F
  , pattern F1
  , pattern F10
  , pattern F11
  , pattern F12
  , pattern F13
  , pattern F14
  , pattern F15
  , pattern F16
  , pattern F17
  , pattern F18
  , pattern F19
  , pattern F2
  , pattern F20
  , pattern F21
  , pattern F22
  , pattern F23
  , pattern F24
  , pattern F3
  , pattern F4
  , pattern F5
  , pattern F6
  , pattern F7
  , pattern F8
  , pattern F9
  , pattern G
  , pattern GamepadBack
  , pattern GamepadDpadDown
  , pattern GamepadDpadLeft
  , pattern GamepadDpadRight
  , pattern GamepadDpadUp
  , pattern GamepadFaceDown
  , pattern GamepadFaceLeft
  , pattern GamepadFaceRight
  , pattern GamepadFaceUp
  , pattern GamepadL1
  , pattern GamepadL2
  , pattern GamepadL3
  , pattern GamepadLStickDown
  , pattern GamepadLStickLeft
  , pattern GamepadLStickRight
  , pattern GamepadLStickUp
  , pattern GamepadR1
  , pattern GamepadR2
  , pattern GamepadR3
  , pattern GamepadRStickDown
  , pattern GamepadRStickLeft
  , pattern GamepadRStickRight
  , pattern GamepadRStickUp
  , pattern GamepadStart
  , pattern GraveAccent
  , pattern H
  , pattern Home
  , pattern I
  , pattern ImGuiKey_0
  , pattern ImGuiKey_1
  , pattern ImGuiKey_2
  , pattern ImGuiKey_3
  , pattern ImGuiKey_4
  , pattern ImGuiKey_5
  , pattern ImGuiKey_6
  , pattern ImGuiKey_7
  , pattern ImGuiKey_8
  , pattern ImGuiKey_9
  , pattern ImGuiMod_Alt
  , pattern ImGuiMod_Ctrl
  , pattern ImGuiMod_Mask_
  , pattern ImGuiMod_None
  , pattern ImGuiMod_Shift
  , pattern ImGuiMod_Super
  , pattern Insert
  , pattern J
  , pattern K
  , pattern Keypad0
  , pattern Keypad1
  , pattern Keypad2
  , pattern Keypad3
  , pattern Keypad4
  , pattern Keypad5
  , pattern Keypad6
  , pattern Keypad7
  , pattern Keypad8
  , pattern Keypad9
  , pattern KeypadAdd
  , pattern KeypadDecimal
  , pattern KeypadDivide
  , pattern KeypadEnter
  , pattern KeypadEqual
  , pattern KeypadMultiply
  , pattern KeypadSubtract
  , pattern L
  , pattern LeftAlt
  , pattern LeftArrow
  , pattern LeftBracket
  , pattern LeftCtrl
  , pattern LeftShift
  , pattern LeftSuper
  , pattern M
  , pattern Menu
  , pattern Minus
  , pattern MouseLeft
  , pattern MouseMiddle
  , pattern MouseRight
  , pattern MouseWheelX
  , pattern MouseWheelY
  , pattern MouseX1
  , pattern MouseX2
  , pattern N
  , pattern NamedKey_BEGIN
  , pattern NamedKey_COUNT
  , pattern NamedKey_END
  , pattern None
  , pattern NumLock
  , pattern O
  , pattern Oem102
  , pattern P
  , pattern PageDown
  , pattern PageUp
  , pattern Pause
  , pattern Period
  , pattern PrintScreen
  , pattern Q
  , pattern R
  , pattern ReservedForModAlt
  , pattern ReservedForModCtrl
  , pattern ReservedForModShift
  , pattern ReservedForModSuper
  , pattern RightAlt
  , pattern RightArrow
  , pattern RightBracket
  , pattern RightCtrl
  , pattern RightShift
  , pattern RightSuper
  , pattern S
  , pattern ScrollLock
  , pattern Semicolon
  , pattern Slash
  , pattern Space
  , pattern T
  , pattern Tab
  , pattern U
  , pattern UpArrow
  , pattern V
  , pattern W
  , pattern X
  , pattern Y
  , pattern Z
  ) where

import Foreign.C.Types

#include "dcimgui_nodefaultargfunctions.h"

-- enums

-- | A key identifier (ImGuiKey_XXX or ImGuiMod_XXX value): can represent Keyboard, Mouse and Gamepad values.
-- All our named keys are >= 512. Keys value 0 to 511 are left unused and were legacy native/opaque key values (< 1.87).
-- Support for legacy keys was completely removed in 1.91.5.
-- Read details about the 1.87+ transition : https://github.com/ocornut/imgui/issues/4921
-- Note that "Keys" related to physical keys and are not the same concept as input "Characters", the latter are submitted via io.AddInputCharacter().
-- The keyboard key enum values are named after the keys on a standard US keyboard, and on other keyboard types the keys reported may not match the keycaps.
-- Forward declared enum type ImGuiKey
type ImGuiKey = CInt

-- | Keyboard
pattern None :: ImGuiKey
pattern None = #{const ImGuiKey_None}

-- | First valid key value (other than 0)
pattern NamedKey_BEGIN :: ImGuiKey
pattern NamedKey_BEGIN = #{const ImGuiKey_NamedKey_BEGIN}

-- | == ImGuiKey_NamedKey_BEGIN
pattern Tab :: ImGuiKey
pattern Tab = #{const ImGuiKey_Tab}

pattern LeftArrow :: ImGuiKey
pattern LeftArrow = #{const ImGuiKey_LeftArrow}

pattern RightArrow :: ImGuiKey
pattern RightArrow = #{const ImGuiKey_RightArrow}

pattern UpArrow :: ImGuiKey
pattern UpArrow = #{const ImGuiKey_UpArrow}

pattern DownArrow :: ImGuiKey
pattern DownArrow = #{const ImGuiKey_DownArrow}

pattern PageUp :: ImGuiKey
pattern PageUp = #{const ImGuiKey_PageUp}

pattern PageDown :: ImGuiKey
pattern PageDown = #{const ImGuiKey_PageDown}

pattern Home :: ImGuiKey
pattern Home = #{const ImGuiKey_Home}

pattern End :: ImGuiKey
pattern End = #{const ImGuiKey_End}

pattern Insert :: ImGuiKey
pattern Insert = #{const ImGuiKey_Insert}

pattern Delete :: ImGuiKey
pattern Delete = #{const ImGuiKey_Delete}

pattern Backspace :: ImGuiKey
pattern Backspace = #{const ImGuiKey_Backspace}

pattern Space :: ImGuiKey
pattern Space = #{const ImGuiKey_Space}

pattern Enter :: ImGuiKey
pattern Enter = #{const ImGuiKey_Enter}

pattern Escape :: ImGuiKey
pattern Escape = #{const ImGuiKey_Escape}

pattern LeftCtrl :: ImGuiKey
pattern LeftCtrl = #{const ImGuiKey_LeftCtrl}

pattern LeftShift :: ImGuiKey
pattern LeftShift = #{const ImGuiKey_LeftShift}

pattern LeftAlt :: ImGuiKey
pattern LeftAlt = #{const ImGuiKey_LeftAlt}

-- | Also see ImGuiMod_Ctrl, ImGuiMod_Shift, ImGuiMod_Alt, ImGuiMod_Super below!
pattern LeftSuper :: ImGuiKey
pattern LeftSuper = #{const ImGuiKey_LeftSuper}

pattern RightCtrl :: ImGuiKey
pattern RightCtrl = #{const ImGuiKey_RightCtrl}

pattern RightShift :: ImGuiKey
pattern RightShift = #{const ImGuiKey_RightShift}

pattern RightAlt :: ImGuiKey
pattern RightAlt = #{const ImGuiKey_RightAlt}

pattern RightSuper :: ImGuiKey
pattern RightSuper = #{const ImGuiKey_RightSuper}

pattern Menu :: ImGuiKey
pattern Menu = #{const ImGuiKey_Menu}

pattern ImGuiKey_0 :: ImGuiKey
pattern ImGuiKey_0 = #{const ImGuiKey_0}

pattern ImGuiKey_1 :: ImGuiKey
pattern ImGuiKey_1 = #{const ImGuiKey_1}

pattern ImGuiKey_2 :: ImGuiKey
pattern ImGuiKey_2 = #{const ImGuiKey_2}

pattern ImGuiKey_3 :: ImGuiKey
pattern ImGuiKey_3 = #{const ImGuiKey_3}

pattern ImGuiKey_4 :: ImGuiKey
pattern ImGuiKey_4 = #{const ImGuiKey_4}

pattern ImGuiKey_5 :: ImGuiKey
pattern ImGuiKey_5 = #{const ImGuiKey_5}

pattern ImGuiKey_6 :: ImGuiKey
pattern ImGuiKey_6 = #{const ImGuiKey_6}

pattern ImGuiKey_7 :: ImGuiKey
pattern ImGuiKey_7 = #{const ImGuiKey_7}

pattern ImGuiKey_8 :: ImGuiKey
pattern ImGuiKey_8 = #{const ImGuiKey_8}

pattern ImGuiKey_9 :: ImGuiKey
pattern ImGuiKey_9 = #{const ImGuiKey_9}

pattern A :: ImGuiKey
pattern A = #{const ImGuiKey_A}

pattern B :: ImGuiKey
pattern B = #{const ImGuiKey_B}

pattern C :: ImGuiKey
pattern C = #{const ImGuiKey_C}

pattern D :: ImGuiKey
pattern D = #{const ImGuiKey_D}

pattern E :: ImGuiKey
pattern E = #{const ImGuiKey_E}

pattern F :: ImGuiKey
pattern F = #{const ImGuiKey_F}

pattern G :: ImGuiKey
pattern G = #{const ImGuiKey_G}

pattern H :: ImGuiKey
pattern H = #{const ImGuiKey_H}

pattern I :: ImGuiKey
pattern I = #{const ImGuiKey_I}

pattern J :: ImGuiKey
pattern J = #{const ImGuiKey_J}

pattern K :: ImGuiKey
pattern K = #{const ImGuiKey_K}

pattern L :: ImGuiKey
pattern L = #{const ImGuiKey_L}

pattern M :: ImGuiKey
pattern M = #{const ImGuiKey_M}

pattern N :: ImGuiKey
pattern N = #{const ImGuiKey_N}

pattern O :: ImGuiKey
pattern O = #{const ImGuiKey_O}

pattern P :: ImGuiKey
pattern P = #{const ImGuiKey_P}

pattern Q :: ImGuiKey
pattern Q = #{const ImGuiKey_Q}

pattern R :: ImGuiKey
pattern R = #{const ImGuiKey_R}

pattern S :: ImGuiKey
pattern S = #{const ImGuiKey_S}

pattern T :: ImGuiKey
pattern T = #{const ImGuiKey_T}

pattern U :: ImGuiKey
pattern U = #{const ImGuiKey_U}

pattern V :: ImGuiKey
pattern V = #{const ImGuiKey_V}

pattern W :: ImGuiKey
pattern W = #{const ImGuiKey_W}

pattern X :: ImGuiKey
pattern X = #{const ImGuiKey_X}

pattern Y :: ImGuiKey
pattern Y = #{const ImGuiKey_Y}

pattern Z :: ImGuiKey
pattern Z = #{const ImGuiKey_Z}

pattern F1 :: ImGuiKey
pattern F1 = #{const ImGuiKey_F1}

pattern F2 :: ImGuiKey
pattern F2 = #{const ImGuiKey_F2}

pattern F3 :: ImGuiKey
pattern F3 = #{const ImGuiKey_F3}

pattern F4 :: ImGuiKey
pattern F4 = #{const ImGuiKey_F4}

pattern F5 :: ImGuiKey
pattern F5 = #{const ImGuiKey_F5}

pattern F6 :: ImGuiKey
pattern F6 = #{const ImGuiKey_F6}

pattern F7 :: ImGuiKey
pattern F7 = #{const ImGuiKey_F7}

pattern F8 :: ImGuiKey
pattern F8 = #{const ImGuiKey_F8}

pattern F9 :: ImGuiKey
pattern F9 = #{const ImGuiKey_F9}

pattern F10 :: ImGuiKey
pattern F10 = #{const ImGuiKey_F10}

pattern F11 :: ImGuiKey
pattern F11 = #{const ImGuiKey_F11}

pattern F12 :: ImGuiKey
pattern F12 = #{const ImGuiKey_F12}

pattern F13 :: ImGuiKey
pattern F13 = #{const ImGuiKey_F13}

pattern F14 :: ImGuiKey
pattern F14 = #{const ImGuiKey_F14}

pattern F15 :: ImGuiKey
pattern F15 = #{const ImGuiKey_F15}

pattern F16 :: ImGuiKey
pattern F16 = #{const ImGuiKey_F16}

pattern F17 :: ImGuiKey
pattern F17 = #{const ImGuiKey_F17}

pattern F18 :: ImGuiKey
pattern F18 = #{const ImGuiKey_F18}

pattern F19 :: ImGuiKey
pattern F19 = #{const ImGuiKey_F19}

pattern F20 :: ImGuiKey
pattern F20 = #{const ImGuiKey_F20}

pattern F21 :: ImGuiKey
pattern F21 = #{const ImGuiKey_F21}

pattern F22 :: ImGuiKey
pattern F22 = #{const ImGuiKey_F22}

pattern F23 :: ImGuiKey
pattern F23 = #{const ImGuiKey_F23}

pattern F24 :: ImGuiKey
pattern F24 = #{const ImGuiKey_F24}

-- | '
pattern Apostrophe :: ImGuiKey
pattern Apostrophe = #{const ImGuiKey_Apostrophe}

-- | ,
pattern Comma :: ImGuiKey
pattern Comma = #{const ImGuiKey_Comma}

-- | -
pattern Minus :: ImGuiKey
pattern Minus = #{const ImGuiKey_Minus}

-- | .
pattern Period :: ImGuiKey
pattern Period = #{const ImGuiKey_Period}

-- | /
pattern Slash :: ImGuiKey
pattern Slash = #{const ImGuiKey_Slash}

-- | ;
pattern Semicolon :: ImGuiKey
pattern Semicolon = #{const ImGuiKey_Semicolon}

-- | =
pattern Equal :: ImGuiKey
pattern Equal = #{const ImGuiKey_Equal}

-- | [
pattern LeftBracket :: ImGuiKey
pattern LeftBracket = #{const ImGuiKey_LeftBracket}

-- | \ (this text inhibit multiline comment caused by backslash)
pattern Backslash :: ImGuiKey
pattern Backslash = #{const ImGuiKey_Backslash}

-- | ]
pattern RightBracket :: ImGuiKey
pattern RightBracket = #{const ImGuiKey_RightBracket}

-- | `
pattern GraveAccent :: ImGuiKey
pattern GraveAccent = #{const ImGuiKey_GraveAccent}

pattern CapsLock :: ImGuiKey
pattern CapsLock = #{const ImGuiKey_CapsLock}

pattern ScrollLock :: ImGuiKey
pattern ScrollLock = #{const ImGuiKey_ScrollLock}

pattern NumLock :: ImGuiKey
pattern NumLock = #{const ImGuiKey_NumLock}

pattern PrintScreen :: ImGuiKey
pattern PrintScreen = #{const ImGuiKey_PrintScreen}

pattern Pause :: ImGuiKey
pattern Pause = #{const ImGuiKey_Pause}

pattern Keypad0 :: ImGuiKey
pattern Keypad0 = #{const ImGuiKey_Keypad0}

pattern Keypad1 :: ImGuiKey
pattern Keypad1 = #{const ImGuiKey_Keypad1}

pattern Keypad2 :: ImGuiKey
pattern Keypad2 = #{const ImGuiKey_Keypad2}

pattern Keypad3 :: ImGuiKey
pattern Keypad3 = #{const ImGuiKey_Keypad3}

pattern Keypad4 :: ImGuiKey
pattern Keypad4 = #{const ImGuiKey_Keypad4}

pattern Keypad5 :: ImGuiKey
pattern Keypad5 = #{const ImGuiKey_Keypad5}

pattern Keypad6 :: ImGuiKey
pattern Keypad6 = #{const ImGuiKey_Keypad6}

pattern Keypad7 :: ImGuiKey
pattern Keypad7 = #{const ImGuiKey_Keypad7}

pattern Keypad8 :: ImGuiKey
pattern Keypad8 = #{const ImGuiKey_Keypad8}

pattern Keypad9 :: ImGuiKey
pattern Keypad9 = #{const ImGuiKey_Keypad9}

pattern KeypadDecimal :: ImGuiKey
pattern KeypadDecimal = #{const ImGuiKey_KeypadDecimal}

pattern KeypadDivide :: ImGuiKey
pattern KeypadDivide = #{const ImGuiKey_KeypadDivide}

pattern KeypadMultiply :: ImGuiKey
pattern KeypadMultiply = #{const ImGuiKey_KeypadMultiply}

pattern KeypadSubtract :: ImGuiKey
pattern KeypadSubtract = #{const ImGuiKey_KeypadSubtract}

pattern KeypadAdd :: ImGuiKey
pattern KeypadAdd = #{const ImGuiKey_KeypadAdd}

pattern KeypadEnter :: ImGuiKey
pattern KeypadEnter = #{const ImGuiKey_KeypadEnter}

pattern KeypadEqual :: ImGuiKey
pattern KeypadEqual = #{const ImGuiKey_KeypadEqual}

-- | Available on some keyboard/mouses. Often referred as "Browser Back"
pattern AppBack :: ImGuiKey
pattern AppBack = #{const ImGuiKey_AppBack}

pattern AppForward :: ImGuiKey
pattern AppForward = #{const ImGuiKey_AppForward}

-- | Non-US backslash.
pattern Oem102 :: ImGuiKey
pattern Oem102 = #{const ImGuiKey_Oem102}

-- | Gamepad
-- (analog values are 0.0f to 1.0f)
-- (download controller mapping PNG/PSD at http://dearimgui.com/controls_sheets)
--                              // XBOX        | SWITCH  | PLAYSTA. | -> ACTION
-- Menu        | +       | Options  |
pattern GamepadStart :: ImGuiKey
pattern GamepadStart = #{const ImGuiKey_GamepadStart}

-- | View        | -       | Share    |
pattern GamepadBack :: ImGuiKey
pattern GamepadBack = #{const ImGuiKey_GamepadBack}

-- | X           | Y       | Square   | Toggle Menu. Hold for Windowing mode (Focus/Move/Resize windows)
pattern GamepadFaceLeft :: ImGuiKey
pattern GamepadFaceLeft = #{const ImGuiKey_GamepadFaceLeft}

-- | B           | A       | Circle   | Cancel / Close / Exit
pattern GamepadFaceRight :: ImGuiKey
pattern GamepadFaceRight = #{const ImGuiKey_GamepadFaceRight}

-- | Y           | X       | Triangle | Open Context Menu
pattern GamepadFaceUp :: ImGuiKey
pattern GamepadFaceUp = #{const ImGuiKey_GamepadFaceUp}

-- | A           | B       | Cross    | Activate / Open / Toggle. Hold for 0.60f to Activate in Text Input mode (e.g. wired to an on-screen keyboard).
pattern GamepadFaceDown :: ImGuiKey
pattern GamepadFaceDown = #{const ImGuiKey_GamepadFaceDown}

-- | D-pad Left  | "       | "        | Move / Tweak / Resize Window (in Windowing mode)
pattern GamepadDpadLeft :: ImGuiKey
pattern GamepadDpadLeft = #{const ImGuiKey_GamepadDpadLeft}

-- | D-pad Right | "       | "        | Move / Tweak / Resize Window (in Windowing mode)
pattern GamepadDpadRight :: ImGuiKey
pattern GamepadDpadRight = #{const ImGuiKey_GamepadDpadRight}

-- | D-pad Up    | "       | "        | Move / Tweak / Resize Window (in Windowing mode)
pattern GamepadDpadUp :: ImGuiKey
pattern GamepadDpadUp = #{const ImGuiKey_GamepadDpadUp}

-- | D-pad Down  | "       | "        | Move / Tweak / Resize Window (in Windowing mode)
pattern GamepadDpadDown :: ImGuiKey
pattern GamepadDpadDown = #{const ImGuiKey_GamepadDpadDown}

-- | L Bumper    | L       | L1       | Tweak Slower / Focus Previous (in Windowing mode)
pattern GamepadL1 :: ImGuiKey
pattern GamepadL1 = #{const ImGuiKey_GamepadL1}

-- | R Bumper    | R       | R1       | Tweak Faster / Focus Next (in Windowing mode)
pattern GamepadR1 :: ImGuiKey
pattern GamepadR1 = #{const ImGuiKey_GamepadR1}

-- | L Trigger   | ZL      | L2       | [Analog]
pattern GamepadL2 :: ImGuiKey
pattern GamepadL2 = #{const ImGuiKey_GamepadL2}

-- | R Trigger   | ZR      | R2       | [Analog]
pattern GamepadR2 :: ImGuiKey
pattern GamepadR2 = #{const ImGuiKey_GamepadR2}

-- | L Stick     | L3      | L3       |
pattern GamepadL3 :: ImGuiKey
pattern GamepadL3 = #{const ImGuiKey_GamepadL3}

-- | R Stick     | R3      | R3       |
pattern GamepadR3 :: ImGuiKey
pattern GamepadR3 = #{const ImGuiKey_GamepadR3}

-- |             |         |          | [Analog] Move Window (in Windowing mode)
pattern GamepadLStickLeft :: ImGuiKey
pattern GamepadLStickLeft = #{const ImGuiKey_GamepadLStickLeft}

-- |             |         |          | [Analog] Move Window (in Windowing mode)
pattern GamepadLStickRight :: ImGuiKey
pattern GamepadLStickRight = #{const ImGuiKey_GamepadLStickRight}

-- |             |         |          | [Analog] Move Window (in Windowing mode)
pattern GamepadLStickUp :: ImGuiKey
pattern GamepadLStickUp = #{const ImGuiKey_GamepadLStickUp}

-- |             |         |          | [Analog] Move Window (in Windowing mode)
pattern GamepadLStickDown :: ImGuiKey
pattern GamepadLStickDown = #{const ImGuiKey_GamepadLStickDown}

-- |             |         |          | [Analog]
pattern GamepadRStickLeft :: ImGuiKey
pattern GamepadRStickLeft = #{const ImGuiKey_GamepadRStickLeft}

-- |             |         |          | [Analog]
pattern GamepadRStickRight :: ImGuiKey
pattern GamepadRStickRight = #{const ImGuiKey_GamepadRStickRight}

-- |             |         |          | [Analog]
pattern GamepadRStickUp :: ImGuiKey
pattern GamepadRStickUp = #{const ImGuiKey_GamepadRStickUp}

-- |             |         |          | [Analog]
pattern GamepadRStickDown :: ImGuiKey
pattern GamepadRStickDown = #{const ImGuiKey_GamepadRStickDown}

-- | Aliases: Mouse Buttons (auto-submitted from AddMouseButtonEvent() calls)
-- - This is mirroring the data also written to io.MouseDown[], io.MouseWheel, in a format allowing them to be accessed via standard key API.
pattern MouseLeft :: ImGuiKey
pattern MouseLeft = #{const ImGuiKey_MouseLeft}

pattern MouseRight :: ImGuiKey
pattern MouseRight = #{const ImGuiKey_MouseRight}

pattern MouseMiddle :: ImGuiKey
pattern MouseMiddle = #{const ImGuiKey_MouseMiddle}

pattern MouseX1 :: ImGuiKey
pattern MouseX1 = #{const ImGuiKey_MouseX1}

pattern MouseX2 :: ImGuiKey
pattern MouseX2 = #{const ImGuiKey_MouseX2}

pattern MouseWheelX :: ImGuiKey
pattern MouseWheelX = #{const ImGuiKey_MouseWheelX}

pattern MouseWheelY :: ImGuiKey
pattern MouseWheelY = #{const ImGuiKey_MouseWheelY}

-- | [Internal] Reserved for mod storage
pattern ReservedForModCtrl :: ImGuiKey
pattern ReservedForModCtrl = #{const ImGuiKey_ReservedForModCtrl}

pattern ReservedForModShift :: ImGuiKey
pattern ReservedForModShift = #{const ImGuiKey_ReservedForModShift}

pattern ReservedForModAlt :: ImGuiKey
pattern ReservedForModAlt = #{const ImGuiKey_ReservedForModAlt}

pattern ReservedForModSuper :: ImGuiKey
pattern ReservedForModSuper = #{const ImGuiKey_ReservedForModSuper}

-- | [Internal] If you need to iterate all keys (for e.g. an input mapper) you may use ImGuiKey_NamedKey_BEGIN..ImGuiKey_NamedKey_END.
pattern NamedKey_END :: ImGuiKey
pattern NamedKey_END = #{const ImGuiKey_NamedKey_END}

pattern NamedKey_COUNT :: ImGuiKey
pattern NamedKey_COUNT = #{const ImGuiKey_NamedKey_COUNT}

-- | Keyboard Modifiers (explicitly submitted by backend via AddKeyEvent() calls)
-- - Any functions taking a ImGuiKeyChord parameter can binary-or those with regular keys, e.g. Shortcut(ImGuiMod_Ctrl | ImGuiKey_S).
-- - Those are written back into io.KeyCtrl, io.KeyShift, io.KeyAlt, io.KeySuper for convenience,
--   but may be accessed via standard key API such as IsKeyPressed(), IsKeyReleased(), querying duration etc.
-- - Code polling every key (e.g. an interface to detect a key press for input mapping) might want to ignore those
--   and prefer using the real keys (e.g. ImGuiKey_LeftCtrl, ImGuiKey_RightCtrl instead of ImGuiMod_Ctrl).
-- - In theory the value of keyboard modifiers should be roughly equivalent to a logical or of the equivalent left/right keys.
--   In practice: it's complicated; mods are often provided from different sources. Keyboard layout, IME, sticky keys and
--   backends tend to interfere and break that equivalence. The safer decision is to relay that ambiguity down to the end-user...
-- - On macOS, we swap Cmd(Super) and Ctrl keys at the time of the io.AddKeyEvent() call.
pattern ImGuiMod_None :: ImGuiKey
pattern ImGuiMod_None = #{const ImGuiMod_None}

-- | Ctrl (non-macOS), Cmd (macOS)
pattern ImGuiMod_Ctrl :: ImGuiKey
pattern ImGuiMod_Ctrl = #{const ImGuiMod_Ctrl}

-- | Shift
pattern ImGuiMod_Shift :: ImGuiKey
pattern ImGuiMod_Shift = #{const ImGuiMod_Shift}

-- | Option/Menu
pattern ImGuiMod_Alt :: ImGuiKey
pattern ImGuiMod_Alt = #{const ImGuiMod_Alt}

-- | Windows/Super (non-macOS), Ctrl (macOS)
pattern ImGuiMod_Super :: ImGuiKey
pattern ImGuiMod_Super = #{const ImGuiMod_Super}

-- | 4-bits
pattern ImGuiMod_Mask_ :: ImGuiKey
pattern ImGuiMod_Mask_ = #{const ImGuiMod_Mask_}