- KeyAction a;
-
- list->data = "C-Right";
- a.action = Action_NextDesktop;
- keyaction_set_bool(&a, 0, TRUE);
- keyaction_set_none(&a, 1);
- bind(list, &a);
-
- list->data = "C-Left";
- a.action = Action_PreviousDesktop;
- keyaction_set_bool(&a, 0, TRUE);
- keyaction_set_none(&a, 1);
- bind(list, &a);
-
- list->data = "C-1";
- a.action = Action_Desktop;
- keyaction_set_uint(&a, 0, 0);
- keyaction_set_none(&a, 1);
- bind(list, &a);
-
- list->data = "C-2";
- a.action = Action_Desktop;
- keyaction_set_uint(&a, 0, 1);
- keyaction_set_none(&a, 1);
- bind(list, &a);
-
- list->data = "C-3";
- a.action = Action_Desktop;
- keyaction_set_uint(&a, 0, 2);
- keyaction_set_none(&a, 1);
- bind(list, &a);
-
- list->data = "C-4";
- a.action = Action_Desktop;
- keyaction_set_uint(&a, 0, 3);
- keyaction_set_none(&a, 1);
- bind(list, &a);
-
- list->data = "C-space";
- a.action = Action_Execute;
- keyaction_set_string(&a, 0, "xterm");
- keyaction_set_none(&a, 1);
- bind(list, &a);
+ Action *a;
+
+ /* When creating an Action struct, all of the data elements in the
+ appropriate struct need to be set, except the Client*, which will be set
+ at call-time when then action function is used.
+ */
+
+ list->data = "A-Right";
+ a = action_new(action_next_desktop);
+ a->data.nextprevdesktop.wrap = TRUE;
+ kbind(list, a);
+
+ list->data = "A-Left";
+ a = action_new(action_previous_desktop);
+ a->data.nextprevdesktop.wrap = TRUE;
+ kbind(list, a);
+
+ list->data = "A-1";
+ a = action_new(action_desktop);
+ a->data.desktop.desk = 0;
+ kbind(list, a);
+
+ list->data = "A-2";
+ a = action_new(action_desktop);
+ a->data.desktop.desk = 1;
+ kbind(list, a);
+
+ list->data = "A-3";
+ a = action_new(action_desktop);
+ a->data.desktop.desk = 2;
+ kbind(list, a);
+
+ list->data = "A-4";
+ a = action_new(action_desktop);
+ a->data.desktop.desk = 3;
+ kbind(list, a);
+
+ list->data = "A-space";
+ a = action_new(action_execute);
+ a->data.execute.path = g_strdup("xterm");
+ kbind(list, a);
+
+ list->data = "C-A-Escape";
+ a = action_new(action_execute);
+ a->data.execute.path = g_strdup("xlock -nolock -mode puzzle");
+ kbind(list, a);