The default if nothing is passed to get_key is 0, but Curses::UI passes -1 (full blocking) by default.
By the way, I just noticed -mouse_support is 1 by default, so you'll either have to pass -mouse_support => 0 to the constructor, or do $cui->{-read_timeout} = 0 (which might break mouse support).