You never create BInputDevice objects yourself; instead, you ask the system to return one or more instances to you through the find_input_device() or get_input_devices() functions. Alternatively, you can work without an object by invoking the static versions of Start(), Stop(), and Control(). Note, however, that the static functions control all devices of a given type, whereas a BInputDevice instance can talk to a specific device.
BInputDevice objects don't live in the Input Server - they're used in "normal" applications as a means to control an Input Server device add-on.
The BInputDevice object is provided, primarily, to let an application talk to a custom input device.
You never subclass BInputDevice.