Also, if you use focus follows mouse, you will want to read the section
on updating the mouse pointer below. For detailed instructions on
editing your key bindings, see XMonad.Doc.Extending.

Cycling nearby or nth window into current frame

Cycle windows into focus from below or above the focused pane by pressing
a key while one or more modifier keys is held down. The window order isn't
changed until a modifier is released, leaving the previously focused window
just below the new one, (or above if the window just above is chosen.) For
best results use the same modifier + key combination as the one used to invoke
the "bring from below" action. Also, once cycling, pressing a number key n
will focus the nth window, with 0 being the one originally focused.

Cycle through a finite list of window stacks with repeated presses
of a key while a modifier key is held down. For best results use the same
mod key + key combination as the one used to invoke the "bring from below"
action. You could use cycleStacks' with a different stack permutations
function to, for example, cycle from one below to one above to two below,
etc. instead of in order. You are responsible for having it generate a
finite list, though, or xmonad may hang seeking its length.

Cycling half the stack to get rid of a boring window

Shifts the focused window as far as possible from the current focus,
i.e. halfway around the stack. Windows above the focus up to the "opposite"
position remain in place, while those above the insertion shift toward
the current focus. This is useful for people who use lots of windows in Full,
TwoPane, etc., to get rid of boring windows while cycling and swapping
near the focus.

Rotate windows through the focused frame, excluding the "next" window.
With, e.g. TwoPane, this allows cycling windows through either the
master or slave pane, without changing the other frame. When the master
is focused, the window below is skipped, when a non-master window is
focused, the master is skipped.

Updating the mouse pointer

With FocusFollowsMouse == True, the focus is updated after binding
actions, possibly focusing a window you didn't intend to focus. Most
people using TwoPane probably already have a logHook causing the mouse
to follow focus. (See XMonad.Actions.UpdatePointer, or XMonad.Actions.Warp)

If you want this built into the key binding instead, use the appropriate
action from one of those modules to also have your bindings move the pointer
to the point of your choice on the current window: