> Wait, how is that not covered by .bool_set:N and .bool_set_inverse:N? > Doing " turnfooingon .bool_set:N = \l_mymodule_fooing_bool " and " > turnfooingoff .bool_set_inverse:N = \l_mymodule_fooing_bool " allows the > user to use the keys turnfooingon and turnfooingoff as you describe. Well, it > also allows the user to do weirder things like "turnfooingoff=false" to turn > fooing on. > > Bruno You're totally right: it is. I think I let my mind wander a bit when I was writing the example... What's actually at issue is whether constructions along the lines of \mymoduledoclevelsetup{ fooing = activate } \mymoduledoclevelsetup{ fooing = deactivate } should be tacitly encouraged by making \keys_define:nn { mymodule } { fooing .choice: , fooing/ activate .bool_set_true:N = \l_mymodule_fooing_bool , fooing / deactivate .bool_set_false:N = \l_mymodule_fooing_bool } available out of the box, or whether it's better to leave it to package authors to use .code:n or some such alternative if they want to get this behaviour. Best, Jura