AUI Framework  master
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
AInput.h
    1/*
    2 * AUI Framework - Declarative UI toolkit for modern C++20
    3 * Copyright (C) 2020-2025 Alex2772 and Contributors
    4 *
    5 * SPDX-License-Identifier: MPL-2.0
    6 *
    7 * This Source Code Form is subject to the terms of the Mozilla Public
    8 * License, v. 2.0. If a copy of the MPL was not distributed with this
    9 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
   10 */
   11
   12#pragma once
   13
   14#include "AUI/Common/AString.h"
   15#include "AUI/Reflect/AEnumerate.h"
   16
   17namespace AInput {
   18    enum Key {
   19        /* Based on SFML */
   20        UNKNOWN = -1,
   21        LBUTTON = 0,      
   22        CBUTTON = 1,      
   23        RBUTTON = 2,      
   24        /* check APointerIndex for index values */
   25
   26        ANDROID_BACK_BUTTON = 3,
   27
   28        A = 'A',      
   29        B,            
   30        C,            
   31        D,            
   32        E,            
   33        F,            
   34        G,            
   35        H,            
   36        I,            
   37        J,            
   38        K,            
   39        L,            
   40        M,            
   41        N,            
   42        O,            
   43        P,            
   44        Q,            
   45        R,            
   46        S,            
   47        T,            
   48        U,            
   49        V,            
   50        W,            
   51        X,            
   52        Y,            
   53        Z,            
   54        NUM0,        
   55        NUM1,        
   56        NUM2,        
   57        NUM3,        
   58        NUM4,        
   59        NUM5,        
   60        NUM6,        
   61        NUM7,        
   62        NUM8,        
   63        NUM9,        
   64        ESCAPE,      
   65        LCONTROL,    
   66        LSHIFT,      
   67        LALT,        
   68        LSYSTEM,      
   69        RCONTROL,    
   70        RSHIFT,      
   71        RALT,        
   72        RSYSTEM,      
   73        MENU,        
   74        LBRACKET,    
   75        RBRACKET,    
   76        SEMICOLON,    
   77        COMMA,        
   78        PERIOD,      
   79        QUOTE,        
   80        SLASH,        
   81        BACKSLASH,    
   82        TILDE,        
   83        EQUAL,        
   84        DASH,        
   85        SPACE,        
   86        RETURN,      
   87        BACKSPACE,    
   88        TAB,          
   89        PAGEUP,      
   90        PAGEDOWN,    
   91        END,          
   92        HOME,        
   93        INSERT,      
   94        DEL,          
   95        ADD,          
   96        SUBTRACT,    
   97        MULTIPLY,    
   98        DIVIDE,      
   99        LEFT,        
  100        RIGHT,        
  101        UP,          
  102        DOWN,        
  103        NUMPAD0,      
  104        NUMPAD1,      
  105        NUMPAD2,      
  106        NUMPAD3,      
  107        NUMPAD4,      
  108        NUMPAD5,      
  109        NUMPAD6,      
  110        NUMPAD7,      
  111        NUMPAD8,      
  112        NUMPAD9,      
  113        F1,          
  114        F2,          
  115        F3,          
  116        F4,          
  117        F5,          
  118        F6,          
  119        F7,          
  120        F8,          
  121        F9,          
  122        F10,          
  123        F11,          
  124        F12,          
  125        F13,          
  126        F14,          
  127        F15,          
  128        PAUSE,        
  129        KEYCOUNT      
  130    };
  131    API_AUI_VIEWS Key fromNative(int w);
  132
  133    API_AUI_VIEWS int toNative(Key w);
  134
  135    API_AUI_VIEWS AString getName(Key k);
  136
  137    API_AUI_VIEWS bool isKeyDown(Key k);
  138
  139    API_AUI_VIEWS void overrideStateForTesting(Key k, bool value);
  140
  141
  142    namespace native {
  143        API_AUI_VIEWS bool isKeyDown(Key k);
  144    }
  145};
  146
  147AUI_ENUM_VALUES(AInput::Key,
  148                AInput::Key::UNKNOWN,
  149                AInput::Key::LBUTTON,
  150                AInput::Key::CBUTTON,
  151                AInput::Key::RBUTTON,
  152                AInput::Key::ANDROID_BACK_BUTTON,
  153                AInput::Key::A,
  154                AInput::Key::B,
  155                AInput::Key::C,
  156                AInput::Key::D,
  157                AInput::Key::E,
  158                AInput::Key::F,
  159                AInput::Key::G,
  160                AInput::Key::H,
  161                AInput::Key::I,
  162                AInput::Key::J,
  163                AInput::Key::K,
  164                AInput::Key::L,
  165                AInput::Key::M,
  166                AInput::Key::N,
  167                AInput::Key::O,
  168                AInput::Key::P,
  169                AInput::Key::Q,
  170                AInput::Key::R,
  171                AInput::Key::S,
  172                AInput::Key::T,
  173                AInput::Key::U,
  174                AInput::Key::V,
  175                AInput::Key::W,
  176                AInput::Key::X,
  177                AInput::Key::Y,
  178                AInput::Key::Z,
  179                AInput::Key::NUM0,
  180                AInput::Key::NUM1,
  181                AInput::Key::NUM2,
  182                AInput::Key::NUM3,
  183                AInput::Key::NUM4,
  184                AInput::Key::NUM5,
  185                AInput::Key::NUM6,
  186                AInput::Key::NUM7,
  187                AInput::Key::NUM8,
  188                AInput::Key::NUM9,
  189                AInput::Key::ESCAPE,
  190                AInput::Key::LCONTROL,
  191                AInput::Key::LSHIFT,
  192                AInput::Key::LALT,
  193                AInput::Key::LSYSTEM,
  194                AInput::Key::RCONTROL,
  195                AInput::Key::RSHIFT,
  196                AInput::Key::RALT,
  197                AInput::Key::RSYSTEM,
  198                AInput::Key::MENU,
  199                AInput::Key::LBRACKET,
  200                AInput::Key::RBRACKET,
  201                AInput::Key::SEMICOLON,
  202                AInput::Key::COMMA,
  203                AInput::Key::PERIOD,
  204                AInput::Key::QUOTE,
  205                AInput::Key::SLASH,
  206                AInput::Key::BACKSLASH,
  207                AInput::Key::TILDE,
  208                AInput::Key::EQUAL,
  209                AInput::Key::DASH,
  210                AInput::Key::SPACE,
  211                AInput::Key::RETURN,
  212                AInput::Key::BACKSPACE,
  213                AInput::Key::TAB,
  214                AInput::Key::PAGEUP,
  215                AInput::Key::PAGEDOWN,
  216                AInput::Key::END,
  217                AInput::Key::HOME,
  218                AInput::Key::INSERT,
  219                AInput::Key::DEL,
  220                AInput::Key::ADD,
  221                AInput::Key::SUBTRACT,
  222                AInput::Key::MULTIPLY,
  223                AInput::Key::DIVIDE,
  224                AInput::Key::LEFT,
  225                AInput::Key::RIGHT,
  226                AInput::Key::UP,
  227                AInput::Key::DOWN,
  228                AInput::Key::NUMPAD0,
  229                AInput::Key::NUMPAD1,
  230                AInput::Key::NUMPAD2,
  231                AInput::Key::NUMPAD3,
  232                AInput::Key::NUMPAD4,
  233                AInput::Key::NUMPAD5,
  234                AInput::Key::NUMPAD6,
  235                AInput::Key::NUMPAD7,
  236                AInput::Key::NUMPAD8,
  237                AInput::Key::NUMPAD9,
  238                AInput::Key::F1,
  239                AInput::Key::F2,
  240                AInput::Key::F3,
  241                AInput::Key::F4,
  242                AInput::Key::F5,
  243                AInput::Key::F6,
  244                AInput::Key::F7,
  245                AInput::Key::F8,
  246                AInput::Key::F9,
  247                AInput::Key::F10,
  248                AInput::Key::F11,
  249                AInput::Key::F12,
  250                AInput::Key::F13,
  251                AInput::Key::F14,
  252                AInput::Key::F15,
  253                AInput::Key::PAUSE,
  254                AInput::Key::KEYCOUNT)
#define AUI_ENUM_VALUES(enum_t,...)
Defines all enum values for AEnumerate.
Definition AEnumerate.h:208