docs/develop: Mass directory restructure.

Now vaguely follows the tree structure of "src", with the exception of
directories that described subsystems spanning more than one "kit" or
"server" (e.g. "media", "midi", "bluetooth") -- these have been left as their
own top-level directory within docs/develop.
This commit is contained in:
Augustin Cavalier
2018-01-10 16:12:14 -05:00
parent cdf0ad6a80
commit e81a954787
60 changed files with 0 additions and 0 deletions
@@ -0,0 +1,12 @@
Input_server threads
input_server(10-Normal Priority)
_input_server_event_loop_(103-Custom Priority)
ScreenSaver Looper(10-Normal Priority)
DevicesLooper(10-Normal Priority)
w>Team Monitor(120-Real Time Priority)
PS/2 Mouse(104-Custom Priority)
AT Keyboard(104-Custom Priority)
Legend:
w> This signifies that the thread is spawned from a parent process. (most likely from the input_server)
@@ -0,0 +1,149 @@
<BASE HREF="http://bedriven.be-in.org/articles/input_server/II_035-an%20introduction%20to%20the%20input%20server.html"><table border=1 width=100%><tr><td><table border=1 bgcolor=#ffffff cellpadding=10 cellspacing=0 width=100% color=#ffffff><tr><td><font face=arial,sans-serif color=black size=-1>This is <b><font color=#0039b6>G</font> <font color=#c41200>o</font> <font color=#f3c518>o</font> <font color=#0039b6>g</font> <font color=#30a72f>l</font> <font color=#c41200>e</font></b>'s <a href="http://www.google.com/help/features.html#cached"><font color=blue>cache</font></a> of <A HREF="http://bedriven.be-in.org/articles/input_server/II_035-an%20introduction%20to%20the%20input%20server.html"><font color=blue>http://bedriven.be-in.org/articles/input_server/II_035-an%20introduction%20to%20the%20input%20server.html</font></a>.<br>
<b><font color=#0039b6>G</font> <font color=#c41200>o</font> <font color=#f3c518>o</font> <font color=#0039b6>g</font> <font color=#30a72f>l</font> <font color=#c41200>e</font></b>'s cache is the snapshot that we took of the page as we crawled the web.<br>
The page may have changed since that time. Click here for the <A HREF="http://bedriven.be-in.org/articles/input_server/II_035-an%20introduction%20to%20the%20input%20server.html"><font color=blue>current page</font></a> without highlighting.</font><br><br><center><font size=-2><i>Google is not affiliated with the authors of this page nor responsible for its content.</i></font></center></td></tr>
<tr><td>
<table border=0 cellpadding=0 cellspacing=0><tr><td><font face=arial,sans-serif color=black size=-1>These search terms have been highlighted:&nbsp;</font></td><td bgcolor=#ffff66><B><font face=arial,sans-serif color=black size=-1>hiroshi&nbsp;</font></B></td><td bgcolor=#A0FFFF><B><font face=arial,sans-serif color=black size=-1>lockheimer&nbsp;</font></B></td></tr></table>
<font face=arial,sans-serif color=black size=-1>These terms only appear in links pointing to this page: <B>input_server </B></font>
</td></tr></table></td></tr></table>
<hr>
<HTML>
<HEAD><TITLE>Be Newsletter, Volume II, Issue 35</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF">
<HR><Center><B>Be Newsletter, Volume II, Issue 35; September 2, 1998</B></CENTER><HR>
<FONT SIZE=+1><B><A NAME="Insight"></A>BE ENGINEERING INSIGHTS: <p>An Introduction to the Input Server</B></FONT>
<br><B>By <B style="color:black;background-color:#ffff66">Hiroshi </B><B style="color:black;background-color:#A0FFFF">Lockheimer</B> <A HREF="mailto:[email protected]"><B style="color:black;background-color:#ffff66">hiroshi</B>@be.com</A></B>
<P>One of the many upcoming changes in the BeOS is in the world
of input devices and events. The Input Server, slated to
debut in R4, is a server that deals with all things &quot;input.&quot;
Specifically, it serves three functions: manages input
devices such as keyboards and mice; hosts a stream of events
that those devices generate; and dispatches those events
that make it through the stream.
<P>
<b>Managing Input Devices</b>
<P>The Input Server is a pretty dumb piece of software. (Cue to
Alex: roll your eyes and say, &quot;What do you expect <B style="color:black;background-color:#ffff66">Hiroshi</B>,
you wrote it.&quot;) On its own, the server doesn't know how a
keyboard or a mouse works; it relies on <CODE>BInputServerDevice</CODE>
add-ons to tell it.
<P><CODE>BInputServerDevice</CODE> is a base class from which all input
device add-ons must derive. It provides the basic framework
of virtual hook functions and non-virtual member functions
that the Input Server uses to communicate with an add-on,
and that the add-on can use to talk back to the server. To
give a sneak peak of the API, some of the virtuals include
<CODE>InitCheck()</CODE>, <CODE>Start()</CODE>, <CODE>Stop()</CODE>, and <CODE>Control()</CODE>. The common
sequence of the life of an input device is this:
<ol>
<li> The Input Server loads an add-on and constructs its
<CODE><CODE>BInputServerDevice</CODE></CODE>-derived object.
<P><li> The Input Server calls <CODE>InitCheck()</CODE> on the object. The
object determines whether it is capable of doing its job
-- that is, generating input events.
<P><li> This task may involve the object sniffing around for
hardware it can drive, or looking for a kernel device
driver in <CODE>/dev</CODE>. If the object is happy, it registers with
the Input Server any input device(s) it finds, and
returns <CODE>B_NO_ERROR</CODE>. An error return causes the Input
Server to promptly destruct the object and unload the
add-on.
<P><li> At some point in time, someone will tell the input
devices registered with the Input Server to <CODE>Start()</CODE>. The
system automatically starts keyboards and mice at boot
time. Any other type of device (an &quot;undefined&quot; input
device that the system doesn't have any special knowledge
about) can be started by an application using new API in
the Interface Kit.
<P><li> A registered device, whether it has been started or
not, may be <CODE>Control()</CODE>-ed at any time. Think of Control()
as the <CODE>ioctl()</CODE> equivalent in input device parlance.
Examples of system-defined control messages include
keymap changes and mouse speed changes.
</ol>
<P>
<b>Generating Input Events</b>
<P>Once a <CODE>BInputServerDevice</CODE>-derived object's input device is
up and running, its primary task is to generate input
events. These events are expressed as BMessages. For
example, a keyboard input device will most likely generate
<CODE>B_KEY_DOWN</CODE> and <CODE>B_KEY_UP</CODE> messages. Similarly, a mouse input
device will probably generate <CODE>B_MOUSE_UP</CODE>, <CODE>B_MOUSE_DOWN</CODE>, and
<CODE>B_MOUSE_MOVED</CODE> events.
<P>There is nothing that prevents an input device from putting
arbitrary data in any of the <CODE>BMessages</CODE> it generates. So, for
example, a tablet may generate the aforementioned mouse
events with extra data such as pressure and proximity. Any
information packed into the <CODE>BMessages</CODE> is delivered
unmolested by the input server.
<P>When an event is ready to be shipped off, an input device
enqueues it into the Input Server's event stream. Some
<CODE>BHandler</CODE> (most likely a <CODE>BView</CODE>) down the line eventually
receives the event by way of the usual hook functions such
as <CODE>KeyDown()</CODE>, <CODE>MouseDown()</CODE>, and <CODE>MouseMoved()</CODE>.
<P>
<b>The Input Event Stream</b>
<P>The Input Server's event stream is open for inspection and
alteration by anyone in the system. This is achieved through
another set of add-ons called <CODE>BInputServerFilter</CODE>. Like
<CODE>BInputServerDevice</CODE>, <CODE>BInputServerFilter</CODE> is a base class for input filter add-ons to the Input Server.
<P>An input filter add-on is privy to all the events that pass
through the Input Server's event stream. A filter may
inspect, alter, generate, or completely drop input events.
It's similar in some ways to the Interface Kit's
<CODE>BMessageFilter</CODE>, but much more low-level. A
<CODE>BInputServerFilter</CODE> sees all events that exist in the system;
<CODE>BMessageFilters</CODE> are associated with a specific <CODE>BLooper</CODE> and
thus see only the events targeted to its <CODE>BLooper</CODE>. Also,
filters in the Input Server can generate additional events
in place of, or in addition to, the original input event
that it was invoked with.
<P>
<b>Conclusion</b>
<P>With the introduction of loadable input device objects, the
Input Server enables the BeOS to be used with a wide variety
of input devices (and more than one of them at once too).
And with the advent of input filters, the Input Server opens
the door to a new class of tricks, hacks, and (gulp) pranks
for the creative developer. It's going to be fun.
<P>
</BODY>
</HTML>
@@ -0,0 +1,104 @@
00000000 l df *ABS* 00000000 InputServer.cpp
00000000 l df *ABS* 00000000 InputServerDevice.cpp
00000000 l df *ABS* 00000000 InputServerFilter.cpp
00000000 l df *ABS* 00000000 InputServerMethod.cpp
000245c0 g O .bss 0000000c InputServer type_info node
000164cc g F .text 0000002f BInputServerDevice::StartMonitoringDevice(char const *)
000245ec g O .bss 0000000c BInputServerMethod type_info node
0001fce0 w O .data 00000058 BInputServerDevice virtual table
00016584 g F .text 00000009 BInputServerDevice::Stop(char const *, void *)
00016550 g F .text 00000026 BInputServerDevice::RegisterDevices(input_device_ref **)
00012e64 g F .text 00000207 InputServer::QuitRequested(void)
00024580 g O .bss 00000020 InputServer::fMouseState
00016720 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod2(void)
000151bc g F .text 0000010f InputServer::HandleGetSetMouseAcceleration(BMessage *, BMessage *)
0001620c g F .text 000000df InputServer::EnqueueMethodMessage(BMessage *)
00014f9c g F .text 0000010f InputServer::HandleGetSetMouseType(BMessage *, BMessage *)
00016008 g F .text 0000001d InputServer::EventLoopRunning(void)
00015b1c g F .text 0000003e InputServer::UnlockMethodQueue(void)
0001612c g F .text 000000cf InputServer::StartStopDevices(char const *, input_device_type, bool)
000157f8 g F .text 00000323 InputServer::EventLoop(void *)
00018834 g F .text 00000157 MethodReplicant::SendToInputServer(BMessage *)
0001b000 g O .rodata 00000022 kInputServerSignature
00015690 g F .text 00000165 InputServer::HandleSetMethod(BMessage *)
00016578 g F .text 00000009 BInputServerDevice::Control(char const *, void *, unsigned long, BMessage *)
00024620 g O .bss 00000008 BInputServerFilter type_info node
000166b0 g F .text 0000002f BInputServerFilter::~BInputServerFilter(void)
00014c3c g F .text 0000010f InputServer::HandleGetSetKeyRepeatDelay(BMessage *, BMessage *)
00013ce0 g F .text 000001ea InputServer::MethodizeEvents(BList *, bool)
0001cd35 g O .data 00000001 InputServer::sEventLoopRunning
00015bec g F .text 00000053 InputServer::HandleGetKeyInfo(BMessage *, BMessage *)
00015b5c g F .text 00000048 InputServer::LockMethodQueue(void)
00016834 g F .text 0000002d BInputServerMethod::~BInputServerMethod(void)
00016494 g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice1(void)
0001631c g F .text 00000026 InputServer::ReadyToRun(void)
0001fd40 w O .data 00000040 BInputServerFilter virtual table
00015d8c g F .text 00000077 InputServer::SetNextMethod(bool)
0001306c g F .text 000002f2 InputServer::InitKeyboardMouseStates(void)
00013360 g F .text 000000ff InputServer::InitMethods(void)
00019ddc w F .text 00000045 InputServer::~InputServer(void)
0001662c g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter1(void)
0001649c g F .text 0000002f BInputServerDevice::StopMonitoringDevice(char const *)
0001fb60 w O .data 00000180 InputServer virtual table
00015ba4 g F .text 00000045 InputServer::HandleGetModifiers(BMessage *, BMessage *)
000148e0 g F .text 000001ef InputServer::HandleSetModifierKey(BMessage *, BMessage *)
000165a8 g F .text 00000009 BInputServerDevice::InitCheck(void)
00013794 g F .text 00000549 InputServer::SanitizeEvents(BList *)
00016710 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod4(void)
000166e0 g F .text 00000023 BInputServerFilter::BInputServerFilter(void)
000167ac g F .text 00000027 BInputServerMethod::SetIcon(unsigned char const *)
00014800 g F .text 000000dd InputServer::HandleSetKeyboardLocks(BMessage *, BMessage *)
00019d98 w F .text 00000041 InputServer type_info function
000165b4 g F .text 0000002f BInputServerDevice::~BInputServerDevice(void)
00016528 g F .text 00000026 BInputServerDevice::UnregisterDevices(input_device_ref **)
000165e4 g F .text 0000002d BInputServerDevice::BInputServerDevice(void)
00014e5c g F .text 0000013f InputServer::HandleGetSetMouseMap(BMessage *, BMessage *)
000135e8 g F .text 000001ab InputServer::DoMouseAcceleration(long *, long *)
00015ec4 g F .text 0000004e InputServer::SetMousePos(long *, long *, long, long)
00015c88 g F .text 00000103 InputServer::SetActiveMethod(_BMethodAddOn_ *)
00019ed8 w F .text 00000041 BInputServerMethod type_info function
0001277c g F .text 000006e5 InputServer::MessageReceived(BMessage *)
000162ec g F .text 0000002e InputServer::EnqueueDeviceMessage(BMessage *)
000167d4 g F .text 00000027 BInputServerMethod::SetName(char const *)
00016624 g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter2(void)
00016028 g F .text 0000001d InputServer::SafeMode(void)
00016590 g F .text 00000009 BInputServerDevice::Start(char const *, void *)
00016484 g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice3(void)
00016614 g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter4(void)
00016728 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod1(void)
0001648c g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice2(void)
0001cd34 g O .data 00000001 InputServer::sSafeMode
00016698 g F .text 0000000c BInputServerFilter::Filter(BMessage *, BList *)
000144d0 g F .text 0000032e InputServer::DispatchEvents(BList *)
000140dc g F .text 000003f4 InputServer::CacheEvents(BList *)
000124f0 g F .text 0000028b InputServer::InputServer(void)
0001647c g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice4(void)
00016828 g F .text 00000009 BInputServerMethod::MethodActivated(bool)
00016344 g F .text 00000079 InputServer::ArgvReceived(long, char **)
000150ac g F .text 0000010f InputServer::HandleGetSetMouseSpeed(BMessage *, BMessage *)
00013460 g F .text 00000186 InputServer::GetNextEvents(BList *)
000153dc g F .text 00000155 InputServer::HandleSetMousePosition(BMessage *, BMessage *)
0001661c g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter3(void)
00019e68 w F .text 00000035 BInputServerDevice type_info function
00016864 g F .text 00000097 BInputServerMethod::BInputServerMethod(char const *, unsigned char const *)
000164fc g F .text 00000029 BInputServerDevice::EnqueueMessage(BMessage *)
00015fc8 g F .text 0000003f InputServer::InitFilters(void)
000166a4 g F .text 00000009 BInputServerFilter::InitCheck(void)
000167fc g F .text 00000029 BInputServerMethod::EnqueueMessage(BMessage *)
00013ecc g F .text 0000020d InputServer::FilterEvents(BList *)
000161fc g F .text 00000010 InputServer::MethodReplicant(void) const
00015c40 g F .text 00000046 InputServer::HandleGetKeyboardID(BMessage *, BMessage *)
000152cc g F .text 0000010f InputServer::HandleGetSetClickSpeed(BMessage *, BMessage *)
0001659c g F .text 00000009 BInputServerDevice::SystemShuttingDown(void)
0001fd80 w O .data 00000068 BInputServerMethod virtual table
00024728 g O .bss 00000008 BInputServerDevice type_info node
00016730 g F .text 0000007c BInputServerMethod::SetMenu(BMenu const *, BMessenger)
00016048 g F .text 000000e3 InputServer::ControlDevices(char const *, input_device_type, unsigned long, BMessage *)
00015534 g F .text 0000015b InputServer::HandleFocusUnfocusIMAwareView(BMessage *, BMessage *)
00019ea0 w F .text 00000035 BInputServerFilter type_info function
00016718 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod3(void)
00015f14 g F .text 000000b4 InputServer::SetMousePos(long *, long *, BPoint)
00014d4c g F .text 0000010f InputServer::HandleGetSetKeyRepeatRate(BMessage *, BMessage *)
00014ad0 g F .text 0000016c InputServer::HandleGetSetKeyMap(BMessage *, BMessage *)
00015e04 g F .text 000000bf InputServer::SetMousePos(long *, long *, float, float)
00016634 g F .text 00000061 BInputServerFilter::GetScreenRegion(BRegion *) const