diff options
author | fluxgen <fluxgen> | 2003-06-30 14:57:14 (GMT) |
---|---|---|
committer | fluxgen <fluxgen> | 2003-06-30 14:57:14 (GMT) |
commit | 24b7682033412123b3927aa4c1b7a92aef3a1a43 (patch) | |
tree | be6ea0a2be01da12f5b9076ad5df989e2f5b9359 /src/Keys.hh | |
parent | 5c657dabaea8b7d0f7f44c73be37662ff8eff988 (diff) | |
download | fluxbox_pavel-24b7682033412123b3927aa4c1b7a92aef3a1a43.zip fluxbox_pavel-24b7682033412123b3927aa4c1b7a92aef3a1a43.tar.bz2 |
using new CommandParser and Commands instead of enum actions
Diffstat (limited to 'src/Keys.hh')
-rw-r--r-- | src/Keys.hh | 87 |
1 files changed, 16 insertions, 71 deletions
diff --git a/src/Keys.hh b/src/Keys.hh index 99bc48d..a296200 100644 --- a/src/Keys.hh +++ b/src/Keys.hh | |||
@@ -19,7 +19,7 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: Keys.hh,v 1.25 2003/06/15 11:38:35 rathnor Exp $ | 22 | // $Id: Keys.hh,v 1.26 2003/06/30 14:57:14 fluxgen Exp $ |
23 | 23 | ||
24 | #ifndef KEYS_HH | 24 | #ifndef KEYS_HH |
25 | #define KEYS_HH | 25 | #define KEYS_HH |
@@ -29,47 +29,14 @@ | |||
29 | #include <X11/Xlib.h> | 29 | #include <X11/Xlib.h> |
30 | 30 | ||
31 | #include "NotCopyable.hh" | 31 | #include "NotCopyable.hh" |
32 | #include "RefCount.hh" | ||
33 | namespace FbTk { | ||
34 | class Command; | ||
35 | }; | ||
32 | 36 | ||
33 | class Keys:private FbTk::NotCopyable { | 37 | class Keys:private FbTk::NotCopyable { |
34 | public: | 38 | public: |
35 | /** | 39 | |
36 | Key actions | ||
37 | */ | ||
38 | enum KeyAction{ | ||
39 | ICONIFY=0, | ||
40 | RAISE, LOWER, | ||
41 | RAISELAYER, LOWERLAYER, TOPLAYER, BOTTOMLAYER, | ||
42 | ALWAYSONTOP, ALWAYSONBOTTOM, // aliases for TOPLAYER, etc | ||
43 | CLOSE, | ||
44 | ABORTKEYCHAIN, | ||
45 | WORKSPACE, | ||
46 | WORKSPACE1, WORKSPACE2, WORKSPACE3, WORKSPACE4, | ||
47 | WORKSPACE5, WORKSPACE6, WORKSPACE7, WORKSPACE8, | ||
48 | WORKSPACE9, WORKSPACE10, WORKSPACE11, WORKSPACE12, | ||
49 | SENDTOWORKSPACE, // Send window to a workspace | ||
50 | NEXTWORKSPACE, PREVWORKSPACE, | ||
51 | LEFTWORKSPACE, RIGHTWORKSPACE, | ||
52 | KILLWINDOW, NEXTWINDOW, PREVWINDOW, | ||
53 | NEXTGROUP, PREVGROUP, | ||
54 | NEXTTAB, PREVTAB, FIRSTTAB, LASTTAB, MOVETABPREV, MOVETABNEXT, | ||
55 | ATTACHLAST, DETACHCLIENT, | ||
56 | FOCUSUP, FOCUSDOWN, FOCUSLEFT, FOCUSRIGHT, | ||
57 | SHADE, MAXIMIZE, | ||
58 | STICK, // Make Sticky | ||
59 | EXECUTE, // Run command | ||
60 | VERTMAX, // Maximize vertical | ||
61 | HORIZMAX, // Maximize horizontal | ||
62 | NUDGERIGHT, NUDGELEFT,NUDGEUP, NUDGEDOWN, | ||
63 | BIGNUDGERIGHT, BIGNUDGELEFT, BIGNUDGEUP, BIGNUDGEDOWN, | ||
64 | HORIZINC, VERTINC, HORIZDEC, VERTDEC, | ||
65 | TOGGLEDECOR,// toggle visibility of decor (title, frame, handles) | ||
66 | TOGGLETAB, // toggle visibilty of tab | ||
67 | ROOTMENU, // pop up rootmenu | ||
68 | RECONFIGURE, // reload configuration | ||
69 | RESTART, // restart fluxbox | ||
70 | QUIT, // Die, quit, logout, shutdown | ||
71 | LASTKEYGRAB //mark end of keygrabbs | ||
72 | }; | ||
73 | /** | 40 | /** |
74 | Constructor | 41 | Constructor |
75 | @param display display connection | 42 | @param display display connection |
@@ -96,29 +63,14 @@ public: | |||
96 | */ | 63 | */ |
97 | bool load(const char *filename=0); | 64 | bool load(const char *filename=0); |
98 | /** | 65 | /** |
99 | Determine action from XKeyEvent | 66 | do action from XKeyEvent |
100 | @return KeyAction value | ||
101 | */ | 67 | */ |
102 | KeyAction getAction(XKeyEvent *ke); | 68 | void doAction(XKeyEvent &ke); |
103 | /** | 69 | /** |
104 | Reload configuration from filename | 70 | Reload configuration from filename |
105 | @return true on success, else false | 71 | @return true on success, else false |
106 | */ | 72 | */ |
107 | bool reconfigure(const char *filename); | 73 | bool reconfigure(const char *filename); |
108 | /** | ||
109 | Get string value of the KeyAction enum value | ||
110 | @return string of action | ||
111 | */ | ||
112 | const char *getActionStr(KeyAction action); | ||
113 | /** | ||
114 | Get command to execute (key action EXECUTE/RESTART) | ||
115 | @return string to command | ||
116 | */ | ||
117 | const std::string &getExecCommand() { return m_execcmdstring; } | ||
118 | /** | ||
119 | @return number of parameters | ||
120 | */ | ||
121 | int getParam() const { return m_param; } | ||
122 | 74 | ||
123 | private: | 75 | private: |
124 | void deleteTree(); | 76 | void deleteTree(); |
@@ -144,7 +96,8 @@ private: | |||
144 | 96 | ||
145 | class t_key { | 97 | class t_key { |
146 | public: | 98 | public: |
147 | t_key(unsigned int key, unsigned int mod, KeyAction action_ = Keys::LASTKEYGRAB); | 99 | t_key(unsigned int key, unsigned int mod, |
100 | FbTk::RefCount<FbTk::Command> command = FbTk::RefCount<FbTk::Command>(0)); | ||
148 | t_key(t_key *k); | 101 | t_key(t_key *k); |
149 | ~t_key(); | 102 | ~t_key(); |
150 | 103 | ||
@@ -155,25 +108,24 @@ private: | |||
155 | } | 108 | } |
156 | return 0; | 109 | return 0; |
157 | } | 110 | } |
158 | inline t_key *find(XKeyEvent *ke) { | 111 | inline t_key *find(XKeyEvent &ke) { |
159 | for (unsigned int i=0; i<keylist.size(); i++) { | 112 | for (unsigned int i=0; i<keylist.size(); i++) { |
160 | if (keylist[i]->key == ke->keycode && keylist[i]->mod == ke->state) | 113 | if (keylist[i]->key == ke.keycode && keylist[i]->mod == ke.state) |
161 | return keylist[i]; | 114 | return keylist[i]; |
162 | } | 115 | } |
163 | return 0; | 116 | return 0; |
164 | } | 117 | } |
165 | 118 | ||
166 | inline bool operator == (XKeyEvent *ke) { | 119 | inline bool operator == (XKeyEvent &ke) const { |
167 | return (mod == ke->state && key == ke->keycode); | 120 | return (mod == ke.state && key == ke.keycode); |
168 | } | 121 | } |
169 | 122 | ||
170 | KeyAction action; | 123 | FbTk::RefCount<FbTk::Command> m_command; |
171 | unsigned int key; | 124 | unsigned int key; |
172 | unsigned int mod; | 125 | unsigned int mod; |
173 | std::vector<t_key *> keylist; | 126 | std::vector<t_key *> keylist; |
174 | std::string execcommand; | ||
175 | int param; // parameter to comands | ||
176 | }; | 127 | }; |
128 | |||
177 | /** | 129 | /** |
178 | merge two linked list | 130 | merge two linked list |
179 | @return true on success, else false | 131 | @return true on success, else false |
@@ -187,15 +139,8 @@ private: | |||
187 | void showKeyTree(t_key *key, unsigned int w=0); | 139 | void showKeyTree(t_key *key, unsigned int w=0); |
188 | #endif //DEBUG | 140 | #endif //DEBUG |
189 | 141 | ||
190 | struct t_actionstr{ | ||
191 | const char *string; | ||
192 | KeyAction action; | ||
193 | }; | ||
194 | |||
195 | int m_capslock_mod, m_numlock_mod, m_scrolllock_mod; ///< modifiers | 142 | int m_capslock_mod, m_numlock_mod, m_scrolllock_mod; ///< modifiers |
196 | 143 | ||
197 | static t_actionstr m_actionlist[]; | ||
198 | |||
199 | std::vector<t_key *> m_keylist; | 144 | std::vector<t_key *> m_keylist; |
200 | t_key *m_abortkey; ///< abortkey for keygrabbing chain | 145 | t_key *m_abortkey; ///< abortkey for keygrabbing chain |
201 | std::string m_execcmdstring; ///< copy of the execcommandstring | 146 | std::string m_execcmdstring; ///< copy of the execcommandstring |