Focus never leaves the field. The keys move an active path that the popup renders from, so the columns change without anything inside them taking focus.
- Up and Down move within the current column, wrapping at both ends and skipping disabled options rather than stopping on them.
- Right enters the next column, landing on its first option that is not disabled. Left goes back a column, and from the first column it closes the popup. Under dir="rtl" the two swap, because the columns do.
- Backspace is a second Left: it steps back one column whenever there is no search text to delete.
- Enter selects the active path, with the same rule as the mouse: a leaf always, a branch only with changeOnSelect or multiple. On a branch with changeOnSelect it also closes the popup, where a click leaves it open.
- Escape closes.
- While a search is running, Left and Right do nothing. The columns have become one flat list of paths, so Up, Down and Enter are what is left.
expandTrigger="hover" only changes the mouse. The keyboard works the same either way.