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        F1,                      
  104        F2,                      
  105        F3,                      
  106        F4,                      
  107        F5,                      
  108        F6,                      
  109        F7,                      
  110        F8,                      
  111        F9,                      
  112        F10,                    
  113        F11,                    
  114        F12,                    
  115        F13,                    
  116        F14,                    
  117        F15,                    
  118        F16,                    
  119        F17,                    
  120        F18,                    
  121        F19,                    
  122        PAUSE,                  
  123        CAPSLOCK,                
  124        SCROLLLOCK,              
  125        NUMLOCKCLEAR,            
  126        PRINTSCREEN,            
  127
  128        /* numpad */
  129        NUMPAD_0,                
  130        NUMPAD_1,                
  131        NUMPAD_2,                
  132        NUMPAD_3,                
  133        NUMPAD_4,                
  134        NUMPAD_5,                
  135        NUMPAD_6,                
  136        NUMPAD_7,                
  137        NUMPAD_8,                
  138        NUMPAD_9,                
  139        NUMPAD_ADD,              
  140        NUMPAD_SUBTRACT,        
  141        NUMPAD_MULTIPLY,        
  142        NUMPAD_DIVIDE,          
  143        NUMPAD_COMMA,            
  144        NUMPAD_PERIOD,          
  145        NUMPAD_EQUAL,            
  146        NUMPAD_RETURN,          
  147
  148        /* media keys */
  149        VOLUMEUP,                
  150        VOLUMEDOWN,              
  151        MUTE,                    
  152        POWER,                  
  153
  154        /* other */
  155        LANG1,                  
  156        LANG2,                  
  157        INTERNATIONAL1,          
  158        INTERNATIONAL3,          
  159
  160#if AUI_PLATFORM_APPLE
  161        CMD = LSYSTEM,          
  162#endif
  163
  164        /* key count */
  165        KEYCOUNT,                
  166
  167        /* meta keys */
  168        CMD_CTRL =              
  169#if AUI_PLATFORM_APPLE
  170      CMD,
  171#else
  172      LCONTROL,
  173#endif
  174    };
  175    API_AUI_VIEWS Key fromNative(int w);
  176
  177    API_AUI_VIEWS int toNative(Key w);
  178
  179    API_AUI_VIEWS AString getName(Key k);
  180
  181    API_AUI_VIEWS bool isKeyDown(Key k);
  182
  183    API_AUI_VIEWS void overrideStateForTesting(Key k, bool value);
  184
  185
  186    namespace native {
  187        API_AUI_VIEWS bool isKeyDown(Key k);
  188    }
  189};
  190
  191AUI_ENUM_VALUES(AInput::Key,
  192                AInput::Key::UNKNOWN,
  193                AInput::Key::LBUTTON,
  194                AInput::Key::CBUTTON,
  195                AInput::Key::RBUTTON,
  196                AInput::Key::ANDROID_BACK_BUTTON,
  197                AInput::Key::A,
  198                AInput::Key::B,
  199                AInput::Key::C,
  200                AInput::Key::D,
  201                AInput::Key::E,
  202                AInput::Key::F,
  203                AInput::Key::G,
  204                AInput::Key::H,
  205                AInput::Key::I,
  206                AInput::Key::J,
  207                AInput::Key::K,
  208                AInput::Key::L,
  209                AInput::Key::M,
  210                AInput::Key::N,
  211                AInput::Key::O,
  212                AInput::Key::P,
  213                AInput::Key::Q,
  214                AInput::Key::R,
  215                AInput::Key::S,
  216                AInput::Key::T,
  217                AInput::Key::U,
  218                AInput::Key::V,
  219                AInput::Key::W,
  220                AInput::Key::X,
  221                AInput::Key::Y,
  222                AInput::Key::Z,
  223                AInput::Key::NUM0,
  224                AInput::Key::NUM1,
  225                AInput::Key::NUM2,
  226                AInput::Key::NUM3,
  227                AInput::Key::NUM4,
  228                AInput::Key::NUM5,
  229                AInput::Key::NUM6,
  230                AInput::Key::NUM7,
  231                AInput::Key::NUM8,
  232                AInput::Key::NUM9,
  233                AInput::Key::ESCAPE,
  234                AInput::Key::LCONTROL,
  235                AInput::Key::LSHIFT,
  236                AInput::Key::LALT,
  237                AInput::Key::LSYSTEM,
  238                AInput::Key::RCONTROL,
  239                AInput::Key::RSHIFT,
  240                AInput::Key::RALT,
  241                AInput::Key::RSYSTEM,
  242                AInput::Key::MENU,
  243                AInput::Key::LBRACKET,
  244                AInput::Key::RBRACKET,
  245                AInput::Key::SEMICOLON,
  246                AInput::Key::COMMA,
  247                AInput::Key::PERIOD,
  248                AInput::Key::QUOTE,
  249                AInput::Key::SLASH,
  250                AInput::Key::BACKSLASH,
  251                AInput::Key::TILDE,
  252                AInput::Key::EQUAL,
  253                AInput::Key::DASH,
  254                AInput::Key::SPACE,
  255                AInput::Key::RETURN,
  256                AInput::Key::BACKSPACE,
  257                AInput::Key::TAB,
  258                AInput::Key::PAGEUP,
  259                AInput::Key::PAGEDOWN,
  260                AInput::Key::END,
  261                AInput::Key::HOME,
  262                AInput::Key::INSERT,
  263                AInput::Key::DEL,
  264                AInput::Key::ADD,
  265                AInput::Key::SUBTRACT,
  266                AInput::Key::MULTIPLY,
  267                AInput::Key::DIVIDE,
  268                AInput::Key::LEFT,
  269                AInput::Key::RIGHT,
  270                AInput::Key::UP,
  271                AInput::Key::DOWN,
  272                AInput::Key::NUMPAD_0,
  273                AInput::Key::NUMPAD_1,
  274                AInput::Key::NUMPAD_2,
  275                AInput::Key::NUMPAD_3,
  276                AInput::Key::NUMPAD_4,
  277                AInput::Key::NUMPAD_5,
  278                AInput::Key::NUMPAD_6,
  279                AInput::Key::NUMPAD_7,
  280                AInput::Key::NUMPAD_8,
  281                AInput::Key::NUMPAD_9,
  282                AInput::Key::F1,
  283                AInput::Key::F2,
  284                AInput::Key::F3,
  285                AInput::Key::F4,
  286                AInput::Key::F5,
  287                AInput::Key::F6,
  288                AInput::Key::F7,
  289                AInput::Key::F8,
  290                AInput::Key::F9,
  291                AInput::Key::F10,
  292                AInput::Key::F11,
  293                AInput::Key::F12,
  294                AInput::Key::F13,
  295                AInput::Key::F14,
  296                AInput::Key::F15,
  297                AInput::Key::PAUSE,
  298                AInput::Key::KEYCOUNT)
#define AUI_ENUM_VALUES(enum_t,...)
Defines all enum values for AEnumerate.
Definition AEnumerate.h:208