I have the same need for this request, so I put together this AutoLISP alternative for keyboard shortcuts to quickly toggle through Visibility States.
VS - Gets the list of Visibility States of a Dynamic Block out of the Block Editor
V - Cycles through the Visibility States in the Block Editor
VV - Cycles through the Visibility States in reverse order in the Block Editor
You may change the V or VV shortcuts as you wish, but I like it because V is near the spacebar which can be used as the enter key. So you can press V and ride your thumb on the spacebar to quickly toggle through Visibility States.
;-------------------------------------------------------------------------------
; c:VS - Get list of Visibility States of a Dynamic Block
;-------------------------------------------------------------------------------
(defun c:VS (/ State$ Properties^ Vla-Object^)
(if (setq Vla-Object^ (car (entsel "\nSelect Dynamic Block with Visibility States: ")))
(if (= (vla-get-isdynamicblock (setq Vla-Object^ (vlax-ename->vla-object Vla-Object^))) :vlax-true)
(progn
(setq *Visibilities@ nil)
(setq Properties^ (vlax-invoke Vla-Object^ 'getdynamicblockproperties))
(foreach State$ (vlax-get (car Properties^) 'allowedvalues)
(setq *Visibilities@ (append *Visibilities@ (list State$)))
(princ (strcat "\n" State$))
);foreach
(setq *Visible$ (nth 0 *Visibilities@))
(princ "\nDynamic Block selected for the list of Visibility States.")
(princ "\nIn Block Editor use shortcuts V and VV to cycle through Visibility States.")
(textscr)
);progn
(progn
(setq *Visibilities@ nil)
(princ "\nNone selected.")
);progn
);if
);if
(princ)
);defun c:VS
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; c:V - Cycle through Visibility States in Block Editor
;-------------------------------------------------------------------------------
(defun c:V (/ Cnt# Num# State$)
(if (and *Visibilities@ *Visible$)
(if (> (length *Visibilities@) 1)
(progn
(setq Cnt# 0)
(foreach State$ *Visibilities@
(if (= *Visible$ State$)
(setq Num# Cnt#)
);if
(setq Cnt# (1+ Cnt#))
);foreach
(if (= *Visible$ (last *Visibilities@))
(setq *Visible$ (nth 0 *Visibilities@))
(setq *Visible$ (nth (1+ Num#) *Visibilities@))
);if
(command "_-BVSTATE" "S" *Visible$)
);progn
);if
(princ "\nRun VS first, out of the Block Editor.")
);if
(princ)
);defun c:V
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; c:VV - Cycle through Visibility States in reverse order in Block Editor
;-------------------------------------------------------------------------------
(defun c:VV (/ Cnt# Num# State$)
(if (and *Visibilities@ *Visible$)
(if (> (length *Visibilities@) 1)
(progn
(setq Cnt# 0)
(foreach State$ *Visibilities@
(if (= *Visible$ State$)
(setq Num# Cnt#)
);if
(setq Cnt# (1+ Cnt#))
);foreach
(if (= *Visible$ (nth 0 *Visibilities@))
(setq *Visible$ (last *Visibilities@))
(setq *Visible$ (nth (1- Num#) *Visibilities@))
);if
(command "_-BVSTATE" "S" *Visible$)
);progn
);if
(princ "\nRun VS first, out of the Block Editor.")
);if
(princ)
);defun c:VV
;-------------------------------------------------------------------------------