Still not quite happy with this as for some reason it changes workspaces rather than only cycling through windows in the current workspace (which is what =C-x o= does), but it's better than nothing.