replicant-frameworks_native/libs/utils
Jeff Brown 6a817e22e4 Add keycodes and meta-key modifiers to support external keyboards.
Added new key maps for external keyboards.  These maps are intended to
be shared across devices by inheriting the "keyboards.mk" product
makefile as part of the device's product definition.

One of the trickier changes here was to unwind some code in
MetaKeyKeyListener that assumed that only the low 8 bits of the meta key
state were actually used.  The new code abandons bitshifts in favor
of simple conditionals that are probably easier to read anyways.
The special meta key state constants used by MetaKeyKeyListener
are now (@hide) defined in KeyEvent now so as to make it clearer that they
share the same code space even if those codes are not valid for KeyEvents.

The EventHub now takes care of detecting the appropriate key layout
map and key character map when the device is added and sets system
properties accordingly.  This avoids having duplicate code in
KeyCharacterMap to probe for the appropriate key character map
although the current probing mechanism has been preserved for legacy
reasons just in case.

Added support for tracking caps lock, num lock and scroll lock and
turning their corresponding LEDs on and off as needed.

The key character map format will need to be updated to correctly support
PC style external keyboard semantics related to modifier keys.
That will come in a later change so caps lock doesn't actually do
anything right now except turn the shiny LEDs on and off...

Added a list of symbolic key names to KeyEvent and improved the toString()
output for debug diagnosis.  Having this list in a central place in the
framework also allows us to remove it from Monkey so there is one less
thing to maintain when we add new keycodes.

Bug: 2912307
Change-Id: If8c25e8d50a7c29bbf5d663c94284f5f86de5da4
2010-10-15 16:00:07 -07:00
..
tests OBB: use PBKDF2 for key generation. 2010-10-13 18:25:33 -07:00
Android.mk Replace epoll() with poll() and rename PollLoop to Looper. 2010-09-14 01:59:45 -07:00
Asset.cpp Support streaming of compressed assets > 1 megabyte 2010-07-28 15:33:28 -07:00
AssetDir.cpp
AssetManager.cpp More native work. 2010-08-11 00:29:59 -07:00
BackupData.cpp Turn off most of the backup-related debug logging 2009-09-30 17:07:37 -07:00
BackupHelpers.cpp Better (and less) logging from backup. 2009-06-26 17:19:11 -04:00
BufferedTextOutput.cpp
CallStack.cpp
Debug.cpp
FileMap.cpp
Flattenable.cpp remove a dependency of GraphicBuffer (libui) on Parcel (libbinder). 2010-02-21 23:27:25 -08:00
Looper.cpp Switch Looper back to using poll() instead of epoll(). 2010-10-07 13:26:39 -07:00
misc.cpp
MODULE_LICENSE_APACHE2
NOTICE
ObbFile.cpp OBB: use PBKDF2 for key generation. 2010-10-13 18:25:33 -07:00
Pool.cpp Native input dispatch rewrite work in progress. 2010-06-13 17:42:16 -07:00
README
RefBase.cpp
ResourceTypes.cpp am 8d5250c6: am 2e246549: Merge "Add better debug output for ResourceType errors" into gingerbread 2010-09-02 15:53:26 -07:00
SharedBuffer.cpp
Static.cpp
StopWatch.cpp Native input dispatch rewrite work in progress. 2010-06-13 17:42:16 -07:00
StreamingZipInflater.cpp Attempt to fix the SDK build 2010-07-29 13:42:45 -07:00
String8.cpp Add keycodes and meta-key modifiers to support external keyboards. 2010-10-15 16:00:07 -07:00
String16.cpp Optional use of UTF-8 strings in resource bundles 2009-12-07 15:14:15 -08:00
StringArray.cpp
SystemClock.cpp
TextOutput.cpp
Threads.cpp Always set the scheduling group when starting a new thread. 2010-09-09 22:12:25 -07:00
Timers.cpp
VectorImpl.cpp Even more native input dispatch work in progress. 2010-06-17 13:27:16 -07:00
ZipFileCRO.cpp ZipUtilsRO rewrite based on Dalvik Zip rewrite 2010-05-12 05:07:48 -07:00
ZipFileRO.cpp MinGW/Cygwin requires open() in O_BINARY mode. 2010-10-13 21:55:15 -07:00
ZipUtils.cpp fix FILE* version of ZipUtils::inflateToBuffer 2009-07-16 11:27:13 -07:00

Android Utility Function Library

If you need a feature that is native to Linux but not present on other
platforms, construct a platform-dependent implementation that shares
the Linux interface.  That way the actual device runs as "light" as
possible.

If that isn't feasible, create a system-independent interface and hide
the details.

The ultimate goal is *not* to create a super-duper platform abstraction
layer.  The goal is to provide an optimized solution for Linux with
reasonable implementations for other platforms.