xref: /MusicPlayer2/scintilla/src/KeyMap.h (revision 8af74909132ed5e696cb05b6689ae4baf14c1c96)
1*8af74909SZhong Yang // Scintilla source code edit control
2*8af74909SZhong Yang /** @file KeyMap.h
3*8af74909SZhong Yang  ** Defines a mapping between keystrokes and commands.
4*8af74909SZhong Yang  **/
5*8af74909SZhong Yang // Copyright 1998-2001 by Neil Hodgson <[email protected]>
6*8af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed.
7*8af74909SZhong Yang 
8*8af74909SZhong Yang #ifndef KEYMAP_H
9*8af74909SZhong Yang #define KEYMAP_H
10*8af74909SZhong Yang 
11*8af74909SZhong Yang namespace Scintilla {
12*8af74909SZhong Yang 
13*8af74909SZhong Yang #define SCI_NORM 0
14*8af74909SZhong Yang #define SCI_SHIFT SCMOD_SHIFT
15*8af74909SZhong Yang #define SCI_CTRL SCMOD_CTRL
16*8af74909SZhong Yang #define SCI_ALT SCMOD_ALT
17*8af74909SZhong Yang #define SCI_META SCMOD_META
18*8af74909SZhong Yang #define SCI_SUPER SCMOD_SUPER
19*8af74909SZhong Yang #define SCI_CSHIFT (SCI_CTRL | SCI_SHIFT)
20*8af74909SZhong Yang #define SCI_ASHIFT (SCI_ALT | SCI_SHIFT)
21*8af74909SZhong Yang 
22*8af74909SZhong Yang /**
23*8af74909SZhong Yang  */
24*8af74909SZhong Yang class KeyModifiers {
25*8af74909SZhong Yang public:
26*8af74909SZhong Yang 	int key;
27*8af74909SZhong Yang 	int modifiers;
KeyModifiers(int key_,int modifiers_)28*8af74909SZhong Yang 	KeyModifiers(int key_, int modifiers_) noexcept : key(key_), modifiers(modifiers_) {
29*8af74909SZhong Yang 	}
30*8af74909SZhong Yang 	bool operator<(const KeyModifiers &other) const noexcept {
31*8af74909SZhong Yang 		if (key == other.key)
32*8af74909SZhong Yang 			return modifiers < other.modifiers;
33*8af74909SZhong Yang 		else
34*8af74909SZhong Yang 			return key < other.key;
35*8af74909SZhong Yang 	}
36*8af74909SZhong Yang };
37*8af74909SZhong Yang 
38*8af74909SZhong Yang /**
39*8af74909SZhong Yang  */
40*8af74909SZhong Yang class KeyToCommand {
41*8af74909SZhong Yang public:
42*8af74909SZhong Yang 	int key;
43*8af74909SZhong Yang 	int modifiers;
44*8af74909SZhong Yang 	unsigned int msg;
45*8af74909SZhong Yang };
46*8af74909SZhong Yang 
47*8af74909SZhong Yang /**
48*8af74909SZhong Yang  */
49*8af74909SZhong Yang class KeyMap {
50*8af74909SZhong Yang 	std::map<KeyModifiers, unsigned int> kmap;
51*8af74909SZhong Yang 	static const KeyToCommand MapDefault[];
52*8af74909SZhong Yang 
53*8af74909SZhong Yang public:
54*8af74909SZhong Yang 	KeyMap();
55*8af74909SZhong Yang 	~KeyMap();
56*8af74909SZhong Yang 	void Clear() noexcept;
57*8af74909SZhong Yang 	void AssignCmdKey(int key, int modifiers, unsigned int msg);
58*8af74909SZhong Yang 	unsigned int Find(int key, int modifiers) const;	// 0 returned on failure
59*8af74909SZhong Yang 	const std::map<KeyModifiers, unsigned int> &GetKeyMap() const noexcept;
60*8af74909SZhong Yang };
61*8af74909SZhong Yang 
62*8af74909SZhong Yang }
63*8af74909SZhong Yang 
64*8af74909SZhong Yang #endif
65