* Copyright 2011-2023 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* John Scipione, jscipione@gmail.com
* Jorge Acereda, jacereda@gmail.com
*/
#ifndef MODIFIER_KEYS_WINDOW_H
#define MODIFIER_KEYS_WINDOW_H
#include <Window.h>
class BButton;
class BMenuField;
class BPopUpMenu;
class StatusMenuField;
class ModifierKeysWindow : public BWindow {
public:
ModifierKeysWindow();
virtual ~ModifierKeysWindow();
virtual void MessageReceived(BMessage* message);
private:
void _CreateMenuField(BPopUpMenu** _menu, BMenuField** _field,
uint32 key, const char* label);
void _MarkMenuItems();
bool _MarkMenuItem(const char*, BPopUpMenu*, uint32 l, uint32 r);
const char* _KeyToString(int32 key);
int32 _KeyToKeyCode(int32 key, bool right = false);
int32 _LastKey();
void _ValidateDuplicateKeys();
void _ValidateDuplicateKey(StatusMenuField*, uint32);
uint32 _DuplicateKeys();
void _UpdateStatus();
BPopUpMenu* fCapsMenu;
BPopUpMenu* fShiftMenu;
BPopUpMenu* fControlMenu;
BPopUpMenu* fOptionMenu;
BPopUpMenu* fCommandMenu;
StatusMenuField* fCapsField;
StatusMenuField* fShiftField;
StatusMenuField* fControlField;
StatusMenuField* fOptionField;
StatusMenuField* fCommandField;
BButton* fRevertButton;
BButton* fCancelButton;
BButton* fOkButton;
key_map* fCurrentMap;
key_map* fSavedMap;
char* fCurrentBuffer;
char* fSavedBuffer;
};
#endif