BInputServerFilter
is a base class for input filters; these are instances
of BInputServerFilter
that modify, generate, or eat input events. An
input filter add-on is privy to all the events that pass through the
Input Server's event stream. A filter is similar to the Interface Kit's
BMessageFilter
,
but at a much lower level. The
BInputServerFilter
also sees all events, while a
BMessageFilter
only sees the events targeted at its
BLooper
.
BMessageFilter
s
can also generate additional events in
place of, or in addition to, the original input event.
BInputServerFilter
objects are created and deleted by the Input Server
only—you never create or delete these objects in your code.
To create a new input filter, you must:
create a subclass of
BInputServerFilter
implement the
instantiate_input_filter()
C function to create an instance of your
BInputServerFilter
subclass
compile the class and function as an add-on
install the add-on in one of the input filter directories
At boot time (or whenever the Input Server is restarted; see
"Loading" in
The Input Server), the Input Server loads the add-ons it finds in the
input filter directories. For each add-on it finds, the Server invokes
instantiate_input_filter()
to get a pointer to the add-ons's
BInputServerFilter
object. After constructing the object, the Server calls
InitCheck()
to give the add-on a chance to bail out if the constructor failed.
The input server looks for input filters in the
input_server/filters
subdirectories of B_BEOS_ADDONS_DIRECTORY
,
B_COMMON_ADDONS_DIRECTORY
, and
B_USER_ADDONS_DIRECTORY
.
You can install your input devices in the latter two
directories—i.e. those under B_COMMON_ADDONS_DIRECTORY
, and
B_USER_ADDONS_DIRECTORY
.
The B_BEOS_ADDONS_DIRECTORY
is reserved for add-ons that are supplied
with BeOS.