1f5ac2da0SJohn Scipione /* 2d51ee1e8SJorge Acereda * Copyright 2011-2023 Haiku, Inc. All rights reserved. 3f5ac2da0SJohn Scipione * Distributed under the terms of the MIT License. 4f5ac2da0SJohn Scipione * 5f5ac2da0SJohn Scipione * Authors: 6f5ac2da0SJohn Scipione * John Scipione, jscipione@gmail.com 7d51ee1e8SJorge Acereda * Jorge Acereda, jacereda@gmail.com 8f5ac2da0SJohn Scipione */ 9f5ac2da0SJohn Scipione #ifndef MODIFIER_KEYS_WINDOW_H 10f5ac2da0SJohn Scipione #define MODIFIER_KEYS_WINDOW_H 11f5ac2da0SJohn Scipione 12f5ac2da0SJohn Scipione 13f5ac2da0SJohn Scipione #include <Window.h> 14f5ac2da0SJohn Scipione 15f5ac2da0SJohn Scipione 16*4fc18643SJohn Scipione class BButton; 172388b04aSJohn Scipione class BMenuField; 182388b04aSJohn Scipione class BPopUpMenu; 19*4fc18643SJohn Scipione class StatusMenuField; 202388b04aSJohn Scipione 213cee15aaSJohn Scipione 22f5ac2da0SJohn Scipione class ModifierKeysWindow : public BWindow { 23f5ac2da0SJohn Scipione public: 24f5ac2da0SJohn Scipione ModifierKeysWindow(); 25f5ac2da0SJohn Scipione virtual ~ModifierKeysWindow(); 26f5ac2da0SJohn Scipione 27f5ac2da0SJohn Scipione virtual void MessageReceived(BMessage* message); 28f5ac2da0SJohn Scipione 29460168d5SJohn Scipione private: 300b3890feSJohn Scipione void _CreateMenuField(BPopUpMenu** _menu, BMenuField** _field, 310b3890feSJohn Scipione uint32 key, const char* label); 32f5ac2da0SJohn Scipione void _MarkMenuItems(); 33*4fc18643SJohn Scipione bool _MarkMenuItem(const char*, BPopUpMenu*, uint32 l, uint32 r); 34bce949f5SJohn Scipione const char* _KeyToString(int32 key); 35*4fc18643SJohn Scipione int32 _KeyToKeyCode(int32 key, bool right = false); 363cee15aaSJohn Scipione int32 _LastKey(); 373cee15aaSJohn Scipione void _ValidateDuplicateKeys(); 38*4fc18643SJohn Scipione void _ValidateDuplicateKey(StatusMenuField*, uint32); 393cee15aaSJohn Scipione uint32 _DuplicateKeys(); 400b3890feSJohn Scipione void _UpdateStatus(); 41f5ac2da0SJohn Scipione 42d51ee1e8SJorge Acereda BPopUpMenu* fCapsMenu; 433cee15aaSJohn Scipione BPopUpMenu* fShiftMenu; 44f5ac2da0SJohn Scipione BPopUpMenu* fControlMenu; 45f5ac2da0SJohn Scipione BPopUpMenu* fOptionMenu; 46f5ac2da0SJohn Scipione BPopUpMenu* fCommandMenu; 47f5ac2da0SJohn Scipione 48*4fc18643SJohn Scipione StatusMenuField* fCapsField; 49*4fc18643SJohn Scipione StatusMenuField* fShiftField; 50*4fc18643SJohn Scipione StatusMenuField* fControlField; 51*4fc18643SJohn Scipione StatusMenuField* fOptionField; 52*4fc18643SJohn Scipione StatusMenuField* fCommandField; 531a6b60e6SJohn Scipione 54f5ac2da0SJohn Scipione BButton* fRevertButton; 55f5ac2da0SJohn Scipione BButton* fCancelButton; 56f5ac2da0SJohn Scipione BButton* fOkButton; 57f5ac2da0SJohn Scipione 58f5ac2da0SJohn Scipione key_map* fCurrentMap; 59f5ac2da0SJohn Scipione key_map* fSavedMap; 60f5ac2da0SJohn Scipione 61f5ac2da0SJohn Scipione char* fCurrentBuffer; 62f5ac2da0SJohn Scipione char* fSavedBuffer; 63f5ac2da0SJohn Scipione }; 64f5ac2da0SJohn Scipione 65bce949f5SJohn Scipione 66f5ac2da0SJohn Scipione #endif // MODIFIER_KEYS_WINDOW_H 67