There is another benefit to exposing the `init` here. To reset the `KeyboardContext` in the test suite to test it with different starting values.  Most of the units I've written in SMS and Clock also ensure that every test is run against a "clean" version of the object being tested.  No ability for one test to leak to another.