aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Labath <pavelo@centrum.sk>2011-07-29 16:10:29 (GMT)
committerPavel Labath <pavelo@centrum.sk>2011-07-29 16:10:29 (GMT)
commit39ffee57bb5e53174d9ef1f709f89da286d0a6c8 (patch)
tree65b19afc4f74ddc45a34fc2ff88ccd0908132764
parentb192f2dd79fa5e0a760fe6d53f429cb390b3877f (diff)
downloadfluxbox_pavel-39ffee57bb5e53174d9ef1f709f89da286d0a6c8.zip
fluxbox_pavel-39ffee57bb5e53174d9ef1f709f89da286d0a6c8.tar.bz2
Simplify syntax of keys.lua
keybindings are now added like this some_keymode['Ctrl F1'] = 'RootMenu' This should be more intuitive and it allows things like this foo['Ctrl F1'] = bar['Mod1 F2']
-rw-r--r--data/keys.lua172
-rw-r--r--src/Keys.cc122
2 files changed, 170 insertions, 124 deletions
diff --git a/data/keys.lua b/data/keys.lua
index aa21145..2c526be 100644
--- a/data/keys.lua
+++ b/data/keys.lua
@@ -1,137 +1,137 @@
1-- click on the desktop to get menus 1-- click on the desktop to get menus
2default_keymode:addBinding('OnDesktop Mouse1', 'HideMenus') 2default_keymode['OnDesktop Mouse1'] = 'HideMenus'
3default_keymode:addBinding('OnDesktop Mouse2', 'WorkspaceMenu') 3default_keymode['OnDesktop Mouse2'] = 'WorkspaceMenu'
4default_keymode:addBinding('OnDesktop Mouse3', 'RootMenu') 4default_keymode['OnDesktop Mouse3'] = 'RootMenu'
5 5
6-- scroll on the desktop to change workspaces 6-- scroll on the desktop to change workspaces
7default_keymode:addBinding('OnDesktop Mouse4', 'PrevWorkspace') 7default_keymode['OnDesktop Mouse4'] = 'PrevWorkspace'
8default_keymode:addBinding('OnDesktop Mouse5', 'NextWorkspace') 8default_keymode['OnDesktop Mouse5'] = 'NextWorkspace'
9 9
10-- scroll on the toolbar to change current window 10-- scroll on the toolbar to change current window
11default_keymode:addBinding('OnToolbar Mouse4', 'PrevWindow {static groups} (iconhidden=no)') 11default_keymode['OnToolbar Mouse4'] = 'PrevWindow {static groups} (iconhidden=no)'
12default_keymode:addBinding('OnToolbar Mouse5', 'NextWindow {static groups} (iconhidden=no)') 12default_keymode['OnToolbar Mouse5'] = 'NextWindow {static groups} (iconhidden=no)'
13 13
14-- alt + left/right click to move/resize a window 14-- alt + left/right click to move/resize a window
15default_keymode:addBinding('OnWindow Mod1 Mouse1', 'MacroCmd {Raise} {Focus} {StartMoving}') 15default_keymode['OnWindow Mod1 Mouse1'] = 'MacroCmd {Raise} {Focus} {StartMoving}'
16default_keymode:addBinding('OnWindowBorder Move1', 'StartMoving') 16default_keymode['OnWindowBorder Move1'] = 'StartMoving'
17 17
18default_keymode:addBinding('OnWindow Mod1 Mouse3', 'MacroCmd {Raise} {Focus} {StartResizing NearestCorner}') 18default_keymode['OnWindow Mod1 Mouse3'] = 'MacroCmd {Raise} {Focus} {StartResizing NearestCorner}'
19default_keymode:addBinding('OnLeftGrip Move1', 'StartResizing bottomleft') 19default_keymode['OnLeftGrip Move1'] = 'StartResizing bottomleft'
20default_keymode:addBinding('OnRightGrip Move1', 'StartResizing bottomright') 20default_keymode['OnRightGrip Move1'] = 'StartResizing bottomright'
21 21
22-- alt + middle click to lower the window 22-- alt + middle click to lower the window
23default_keymode:addBinding('OnWindow Mod1 Mouse2', 'Lower') 23default_keymode['OnWindow Mod1 Mouse2'] = 'Lower'
24 24
25-- control-click a window's titlebar and drag to attach windows 25-- control-click a window's titlebar and drag to attach windows
26default_keymode:addBinding('OnTitlebar Control Mouse1', 'StartTabbing') 26default_keymode['OnTitlebar Control Mouse1'] = 'StartTabbing'
27 27
28-- double click on the titlebar to shade 28-- double click on the titlebar to shade
29default_keymode:addBinding('OnTitlebar Double Mouse1', 'Shade') 29default_keymode['OnTitlebar Double Mouse1'] = 'Shade'
30 30
31-- left click on the titlebar to move the window 31-- left click on the titlebar to move the window
32default_keymode:addBinding('OnTitlebar Mouse1', 'MacroCmd {Raise} {Focus} {ActivateTab}') 32default_keymode['OnTitlebar Mouse1'] = 'MacroCmd {Raise} {Focus} {ActivateTab}'
33default_keymode:addBinding('OnTitlebar Move1 ', 'StartMoving') 33default_keymode['OnTitlebar Move1 '] = 'StartMoving'
34 34
35-- middle click on the titlebar to lower 35-- middle click on the titlebar to lower
36default_keymode:addBinding('OnTitlebar Mouse2', 'Lower') 36default_keymode['OnTitlebar Mouse2'] = 'Lower'
37 37
38-- right click on the titlebar for a menu of options 38-- right click on the titlebar for a menu of options
39default_keymode:addBinding('OnTitlebar Mouse3', 'WindowMenu') 39default_keymode['OnTitlebar Mouse3'] = 'WindowMenu'
40 40
41-- alt-tab 41-- alt-tab
42default_keymode:addBinding('Mod1 Tab', 'NextWindow {groups} (workspace=[current])') 42default_keymode['Mod1 Tab'] = 'NextWindow {groups} (workspace=[current])'
43default_keymode:addBinding('Mod1 Shift Tab', 'PrevWindow {groups} (workspace=[current])') 43default_keymode['Mod1 Shift Tab'] = 'PrevWindow {groups} (workspace=[current])'
44 44
45-- cycle through tabs in the current window 45-- cycle through tabs in the current window
46default_keymode:addBinding('Mod4 Tab', 'NextTab') 46default_keymode['Mod4 Tab'] = 'NextTab'
47default_keymode:addBinding('Mod4 Shift Tab', 'PrevTab') 47default_keymode['Mod4 Shift Tab'] = 'PrevTab'
48 48
49-- go to a specific tab in the current window 49-- go to a specific tab in the current window
50default_keymode:addBinding('Mod4 1', 'Tab 1') 50default_keymode['Mod4 1'] = 'Tab 1'
51default_keymode:addBinding('Mod4 2', 'Tab 2') 51default_keymode['Mod4 2'] = 'Tab 2'
52default_keymode:addBinding('Mod4 3', 'Tab 3') 52default_keymode['Mod4 3'] = 'Tab 3'
53default_keymode:addBinding('Mod4 4', 'Tab 4') 53default_keymode['Mod4 4'] = 'Tab 4'
54default_keymode:addBinding('Mod4 5', 'Tab 5') 54default_keymode['Mod4 5'] = 'Tab 5'
55default_keymode:addBinding('Mod4 6', 'Tab 6') 55default_keymode['Mod4 6'] = 'Tab 6'
56default_keymode:addBinding('Mod4 7', 'Tab 7') 56default_keymode['Mod4 7'] = 'Tab 7'
57default_keymode:addBinding('Mod4 8', 'Tab 8') 57default_keymode['Mod4 8'] = 'Tab 8'
58default_keymode:addBinding('Mod4 9', 'Tab 9') 58default_keymode['Mod4 9'] = 'Tab 9'
59 59
60-- open a terminal 60-- open a terminal
61default_keymode:addBinding('Mod1 F1', 'Exec xterm') 61default_keymode['Mod1 F1'] = 'Exec xterm'
62 62
63-- open a dialog to run programs 63-- open a dialog to run programs
64default_keymode:addBinding('Mod1 F2', 'Exec fbrun') 64default_keymode['Mod1 F2'] = 'Exec fbrun'
65 65
66-- volume settings, using common keycodes 66-- volume settings, using common keycodes
67-- if these don't work, use xev to find out your real keycodes 67-- if these don't work, use xev to find out your real keycodes
68default_keymode:addBinding('176', 'Exec amixer sset Master,0 1+') 68default_keymode['176'] = 'Exec amixer sset Master,0 1+'
69default_keymode:addBinding('174', 'Exec amixer sset Master,0 1-') 69default_keymode['174'] = 'Exec amixer sset Master,0 1-'
70default_keymode:addBinding('160', 'Exec amixer sset Master,0 toggle') 70default_keymode['160'] = 'Exec amixer sset Master,0 toggle'
71 71
72-- current window commands 72-- current window commands
73default_keymode:addBinding('Mod1 F4', 'Close') 73default_keymode['Mod1 F4'] = 'Close'
74default_keymode:addBinding('Mod1 F5', 'Kill') 74default_keymode['Mod1 F5'] = 'Kill'
75default_keymode:addBinding('Mod1 F9', 'Minimize') 75default_keymode['Mod1 F9'] = 'Minimize'
76default_keymode:addBinding('Mod1 F10', 'Maximize') 76default_keymode['Mod1 F10'] = 'Maximize'
77default_keymode:addBinding('Mod1 F11', 'Fullscreen') 77default_keymode['Mod1 F11'] = 'Fullscreen'
78 78
79-- open the window menu 79-- open the window menu
80default_keymode:addBinding('Mod1 space', 'WindowMenu') 80default_keymode['Mod1 space'] = 'WindowMenu'
81 81
82-- exit fluxbox 82-- exit fluxbox
83default_keymode:addBinding('Control Mod1 Delete', 'Exit') 83default_keymode['Control Mod1 Delete'] = 'Exit'
84 84
85-- change to previous/next workspace 85-- change to previous/next workspace
86default_keymode:addBinding('Control Mod1 Left', 'PrevWorkspace') 86default_keymode['Control Mod1 Left'] = 'PrevWorkspace'
87default_keymode:addBinding('Control Mod1 Right', 'NextWorkspace') 87default_keymode['Control Mod1 Right'] = 'NextWorkspace'
88 88
89-- send the current window to previous/next workspace 89-- send the current window to previous/next workspace
90default_keymode:addBinding('Mod4 Left', 'SendToPrevWorkspace') 90default_keymode['Mod4 Left'] = 'SendToPrevWorkspace'
91default_keymode:addBinding('Mod4 Right', 'SendToNextWorkspace') 91default_keymode['Mod4 Right'] = 'SendToNextWorkspace'
92 92
93-- send the current window and follow it to previous/next workspace 93-- send the current window and follow it to previous/next workspace
94default_keymode:addBinding('Control Mod4 Left', 'TakeToPrevWorkspace') 94default_keymode['Control Mod4 Left'] = 'TakeToPrevWorkspace'
95default_keymode:addBinding('Control Mod4 Right', 'TakeToNextWorkspace') 95default_keymode['Control Mod4 Right'] = 'TakeToNextWorkspace'
96 96
97-- change to a specific workspace 97-- change to a specific workspace
98default_keymode:addBinding('Control F1', 'Workspace 1') 98default_keymode['Control F1'] = 'Workspace 1'
99default_keymode:addBinding('Control F2', 'Workspace 2') 99default_keymode['Control F2'] = 'Workspace 2'
100default_keymode:addBinding('Control F3', 'Workspace 3') 100default_keymode['Control F3'] = 'Workspace 3'
101default_keymode:addBinding('Control F4', 'Workspace 4') 101default_keymode['Control F4'] = 'Workspace 4'
102default_keymode:addBinding('Control F5', 'Workspace 5') 102default_keymode['Control F5'] = 'Workspace 5'
103default_keymode:addBinding('Control F6', 'Workspace 6') 103default_keymode['Control F6'] = 'Workspace 6'
104default_keymode:addBinding('Control F7', 'Workspace 7') 104default_keymode['Control F7'] = 'Workspace 7'
105default_keymode:addBinding('Control F8', 'Workspace 8') 105default_keymode['Control F8'] = 'Workspace 8'
106default_keymode:addBinding('Control F9', 'Workspace 9') 106default_keymode['Control F9'] = 'Workspace 9'
107default_keymode:addBinding('Control F10', 'Workspace 10') 107default_keymode['Control F10'] = 'Workspace 10'
108default_keymode:addBinding('Control F11', 'Workspace 11') 108default_keymode['Control F11'] = 'Workspace 11'
109default_keymode:addBinding('Control F12', 'Workspace 12') 109default_keymode['Control F12'] = 'Workspace 12'
110 110
111-- send the current window to a specific workspace 111-- send the current window to a specific workspace
112default_keymode:addBinding('Mod4 F1', 'SendToWorkspace 1') 112default_keymode['Mod4 F1'] = 'SendToWorkspace 1'
113default_keymode:addBinding('Mod4 F2', 'SendToWorkspace 2') 113default_keymode['Mod4 F2'] = 'SendToWorkspace 2'
114default_keymode:addBinding('Mod4 F3', 'SendToWorkspace 3') 114default_keymode['Mod4 F3'] = 'SendToWorkspace 3'
115default_keymode:addBinding('Mod4 F4', 'SendToWorkspace 4') 115default_keymode['Mod4 F4'] = 'SendToWorkspace 4'
116default_keymode:addBinding('Mod4 F5', 'SendToWorkspace 5') 116default_keymode['Mod4 F5'] = 'SendToWorkspace 5'
117default_keymode:addBinding('Mod4 F6', 'SendToWorkspace 6') 117default_keymode['Mod4 F6'] = 'SendToWorkspace 6'
118default_keymode:addBinding('Mod4 F7', 'SendToWorkspace 7') 118default_keymode['Mod4 F7'] = 'SendToWorkspace 7'
119default_keymode:addBinding('Mod4 F8', 'SendToWorkspace 8') 119default_keymode['Mod4 F8'] = 'SendToWorkspace 8'
120default_keymode:addBinding('Mod4 F9', 'SendToWorkspace 9') 120default_keymode['Mod4 F9'] = 'SendToWorkspace 9'
121default_keymode:addBinding('Mod4 F10', 'SendToWorkspace 10') 121default_keymode['Mod4 F10'] = 'SendToWorkspace 10'
122default_keymode:addBinding('Mod4 F11', 'SendToWorkspace 11') 122default_keymode['Mod4 F11'] = 'SendToWorkspace 11'
123default_keymode:addBinding('Mod4 F12', 'SendToWorkspace 12') 123default_keymode['Mod4 F12'] = 'SendToWorkspace 12'
124 124
125-- send the current window and change to a specific workspace 125-- send the current window and change to a specific workspace
126default_keymode:addBinding('Control Mod4 F1', 'TakeToWorkspace 1') 126default_keymode['Control Mod4 F1'] = 'TakeToWorkspace 1'
127default_keymode:addBinding('Control Mod4 F2', 'TakeToWorkspace 2') 127default_keymode['Control Mod4 F2'] = 'TakeToWorkspace 2'
128default_keymode:addBinding('Control Mod4 F3', 'TakeToWorkspace 3') 128default_keymode['Control Mod4 F3'] = 'TakeToWorkspace 3'
129default_keymode:addBinding('Control Mod4 F4', 'TakeToWorkspace 4') 129default_keymode['Control Mod4 F4'] = 'TakeToWorkspace 4'
130default_keymode:addBinding('Control Mod4 F5', 'TakeToWorkspace 5') 130default_keymode['Control Mod4 F5'] = 'TakeToWorkspace 5'
131default_keymode:addBinding('Control Mod4 F6', 'TakeToWorkspace 6') 131default_keymode['Control Mod4 F6'] = 'TakeToWorkspace 6'
132default_keymode:addBinding('Control Mod4 F7', 'TakeToWorkspace 7') 132default_keymode['Control Mod4 F7'] = 'TakeToWorkspace 7'
133default_keymode:addBinding('Control Mod4 F8', 'TakeToWorkspace 8') 133default_keymode['Control Mod4 F8'] = 'TakeToWorkspace 8'
134default_keymode:addBinding('Control Mod4 F9', 'TakeToWorkspace 9') 134default_keymode['Control Mod4 F9'] = 'TakeToWorkspace 9'
135default_keymode:addBinding('Control Mod4 F10', 'TakeToWorkspace 10') 135default_keymode['Control Mod4 F10'] = 'TakeToWorkspace 10'
136default_keymode:addBinding('Control Mod4 F11', 'TakeToWorkspace 11') 136default_keymode['Control Mod4 F11'] = 'TakeToWorkspace 11'
137default_keymode:addBinding('Control Mod4 F12', 'TakeToWorkspace 12') 137default_keymode['Control Mod4 F12'] = 'TakeToWorkspace 12'
diff --git a/src/Keys.cc b/src/Keys.cc
index 68ad6fa..5b88434 100644
--- a/src/Keys.cc
+++ b/src/Keys.cc
@@ -147,6 +147,8 @@ public:
147 static void initKeys(FbTk::Lua &l); 147 static void initKeys(FbTk::Lua &l);
148 static int addBinding(lua::state *l); 148 static int addBinding(lua::state *l);
149 static int newKeyMode(lua::state *l); 149 static int newKeyMode(lua::state *l);
150 static int index(lua::state *l);
151 static int newindex(lua::state *l);
150 152
151 bool equalExact(const RefKey &x) { 153 bool equalExact(const RefKey &x) {
152 return type == x->type && key == x->key && context == x->context 154 return type == x->type && key == x->key && context == x->context
@@ -192,7 +194,7 @@ public:
192 static FbTk::Lua::RegisterInitFunction registerInitKeys; 194 static FbTk::Lua::RegisterInitFunction registerInitKeys;
193}; 195};
194 196
195int Keys::t_key::addBinding(lua::state *l) 197int Keys::t_key::newindex(lua::state *l)
196{ 198{
197 l->checkstack(2); 199 l->checkstack(2);
198 200
@@ -201,33 +203,43 @@ int Keys::t_key::addBinding(lua::state *l)
201 203
202 RefKey k = *l->checkudata<RefKey>(1, keymode_metatable); 204 RefKey k = *l->checkudata<RefKey>(1, keymode_metatable);
203 205
204 if(! l->isstring(2)) {
205 throw KeyError(_FB_CONSOLETEXT(Keys, Bad2ndArg, "2nd argument is not a string.",
206 "2nd argument is not a string."));
207 }
208 vector<string> val; 206 vector<string> val;
209 FbTk::StringUtil::stringtok(val, l->tostring(-2).c_str()); 207 FbTk::StringUtil::stringtok(val, l->checkstring(2).c_str());
210 208
211 if(! (l->isstring(3) || l->isfunction(3)) ) { 209 RefKey k2;
212 throw KeyError(_FB_CONSOLETEXT(Keys, Bad3rdArg, "3rd argument is not a command.", 210 try {
213 "3rd argument is not a command.")); 211 k2 = *l->checkudata<RefKey>(3, keymode_metatable);
214 } 212 }
215 FbTk::RefCount<FbTk::Command<void> > cmd; 213 catch(lua::check_error &) {
216 if(l->isstring(3)) 214 k2.reset(new t_key);
217 cmd.reset(FbTk::CommandParser<void>::instance().parse(l->tostring(-1))); 215
218 else { 216 if(l->isstring(3))
219 l->pushvalue(3); 217 k2->m_command.reset(FbTk::CommandParser<void>::instance().parse(l->tostring(-1)));
220 cmd.reset(new FbCommands::LuaCmd(*l)); 218 else if(l->isfunction(3)) {
219 l->pushvalue(3);
220 k2->m_command.reset(new FbCommands::LuaCmd(*l));
221 } else if(l->isnil(3))
222 k2.reset();
223 else {
224 throw KeyError(_FB_CONSOLETEXT(Keys, Bad3rdArg, "3rd argument is not a command.",
225 "3rd argument is not a command."));
226 }
221 } 227 }
222 228
223 FindPair p = k->findBinding(val, true); 229 FindPair p = k->findBinding(val, true);
224 230 if(k2) {
225 k = *p.first; 231 RefKey t = *p.first;
226 k->m_command = cmd; 232 k2->type = t->type;
227 k->keylist.clear(); 233 k2->mod = t->mod;
234 k2->key = t->key;
235 k2->context = t->context;
236 k2->isdouble = t->isdouble;
237 *p.first = k2;
238 } else
239 p.second.keylist.erase(p.first);
228 } 240 }
229 catch(std::runtime_error &e) { 241 catch(std::runtime_error &e) {
230 cerr << "addBinding: " << e.what() << endl; 242 cerr << "keymode newindex: " << e.what() << endl;
231 } 243 }
232 244
233 return 0; 245 return 0;
@@ -242,6 +254,42 @@ int Keys::t_key::newKeyMode(lua::state *l) {
242 } return 1; 254 } return 1;
243} 255}
244 256
257int Keys::t_key::index(lua::state *l) {
258 l->checkstack(2);
259
260 try {
261 l->checkargno(2);
262
263 RefKey k = *l->checkudata<RefKey>(1, keymode_metatable);
264
265 string str = l->checkstring(2);
266
267 if(str == "activate")
268 l->pushfunction(&setKeyModeWrapper);
269 else {
270 vector<string> val;
271 FbTk::StringUtil::stringtok(val, str.c_str());
272
273 FindPair p = k->findBinding(val, false);
274 if(p.first == p.second.keylist.end())
275 l->pushnil();
276 else {
277 l->createuserdata<RefKey>(*p.first); {
278 l->rawgetfield(lua::REGISTRYINDEX, keymode_metatable);
279 l->setmetatable(-2);
280 }
281 }
282
283 }
284 }
285 catch(std::runtime_error &e) {
286 cerr << "keymode index: " << e.what() << endl;
287 l->pushnil();
288 }
289
290 return 1;
291}
292
245void Keys::t_key::initKeys(FbTk::Lua &l) { 293void Keys::t_key::initKeys(FbTk::Lua &l) {
246 l.checkstack(3); 294 l.checkstack(3);
247 lua::stack_sentry s(l); 295 lua::stack_sentry s(l);
@@ -250,13 +298,11 @@ void Keys::t_key::initKeys(FbTk::Lua &l) {
250 l.pushdestructor<RefKey>(); 298 l.pushdestructor<RefKey>();
251 l.rawsetfield(-2, "__gc"); 299 l.rawsetfield(-2, "__gc");
252 300
253 l.newtable(); { 301 l.pushfunction(&index);
254 l.pushfunction(&addBinding); 302 l.rawsetfield(-2, "__index");
255 l.rawsetfield(-2, "addBinding");
256 303
257 l.pushfunction(&setKeyModeWrapper); 304 l.pushfunction(&newindex);
258 l.rawsetfield(-2, "activate"); 305 l.rawsetfield(-2, "__newindex");
259 } l.rawsetfield(-2, "__index");
260 } l.pop(); 306 } l.pop();
261 307
262 newKeyMode(&l); 308 newKeyMode(&l);
@@ -541,18 +587,18 @@ void Keys::loadDefaults(FbTk::Lua &l) {
541 fbdbg<<"Loading default key bindings"<<endl; 587 fbdbg<<"Loading default key bindings"<<endl;
542 588
543 l.loadstring( 589 l.loadstring(
544 "default_keymode:addBinding('OnDesktop Mouse1', 'HideMenus')\n" 590 "default_keymode['OnDesktop Mouse1'] = 'HideMenus'\n"
545 "default_keymode:addBinding('OnDesktop Mouse2', 'WorkspaceMenu')\n" 591 "default_keymode['OnDesktop Mouse2'] = 'WorkspaceMenu'\n"
546 "default_keymode:addBinding('OnDesktop Mouse3', 'RootMenu')\n" 592 "default_keymode['OnDesktop Mouse3'] = 'RootMenu'\n"
547 "default_keymode:addBinding('OnTitlebar Mouse3', 'WindowMenu')\n" 593 "default_keymode['OnTitlebar Mouse3'] = 'WindowMenu'\n"
548 "default_keymode:addBinding('Mod1 OnWindow Mouse1', 'MacroCmd {Focus} {Raise} {StartMoving}')\n" 594 "default_keymode['Mod1 OnWindow Mouse1'] = 'MacroCmd {Focus} {Raise} {StartMoving}'\n"
549 "default_keymode:addBinding('OnTitlebar Mouse1', 'MacroCmd {Focus} {Raise} {ActivateTab}')\n" 595 "default_keymode['OnTitlebar Mouse1'] = 'MacroCmd {Focus} {Raise} {ActivateTab}'\n"
550 "default_keymode:addBinding('OnTitlebar Move1', 'StartMoving')\n" 596 "default_keymode['OnTitlebar Move1'] = 'StartMoving'\n"
551 "default_keymode:addBinding('OnLeftGrip Move1', 'StartResizing bottomleft')\n" 597 "default_keymode['OnLeftGrip Move1'] = 'StartResizing bottomleft'\n"
552 "default_keymode:addBinding('OnRightGrip Move1', 'StartResizing bottomright')\n" 598 "default_keymode['OnRightGrip Move1'] = 'StartResizing bottomright'\n"
553 "default_keymode:addBinding('OnWindowBorder Move1', 'StartMoving')\n" 599 "default_keymode['OnWindowBorder Move1'] = 'StartMoving'\n"
554 "default_keymode:addBinding('Mod1 Tab', 'NextWindow (workspace=[current])')\n" 600 "default_keymode['Mod1 Tab'] = 'NextWindow (workspace=[current])'\n"
555 "default_keymode:addBinding('Mod1 Shift Tab', 'PrevWindow (workspace=[current])')\n" 601 "default_keymode['Mod1 Shift Tab'] = 'PrevWindow (workspace=[current])'\n"
556 ); 602 );
557 l.call(0, 0); 603 l.call(0, 0);
558} 604}