)]}'
{
  "log": [
    {
      "commit": "5b77f70d8bcd18d8023f2cfad5894e86af068346",
      "tree": "365dffe308baabf6f7c677f6338b4bbcc25d4e8a",
      "parents": [
        "6e09942a7d06adc564e6ca4a0e7328b46b4af28c"
      ],
      "author": {
        "name": "Jim Kaye",
        "email": "jameskaye@google.com",
        "time": "Wed Nov 18 14:49:24 2015 -0800"
      },
      "committer": {
        "name": "Jim Kaye",
        "email": "jameskaye@google.com",
        "time": "Fri Nov 20 09:59:25 2015 -0800"
      },
      "message": "Extend the \u0027qwerty\u0027 key layout\n\nAdd the App Switch (Recents) key.\nAdd media control keys.\n\nThese are needed to support Emulator UI\nbuttons for these functions.\n\nChange-Id: I5d5d25a77625bfd831cf7b31c126fd342efc6c5b\n"
    },
    {
      "commit": "f6d7c679627b1e78d7c7cd6ddf7d1d62336ef5fc",
      "tree": "6f0a7446d0f1fbdd06ea9f1e52936f6d188c4608",
      "parents": [
        "ea84cff8fd9f5efbe42bf0f07b2adfeeb4352fb6"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Oct 22 15:54:02 2015 +0100"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Oct 22 15:54:02 2015 +0100"
      },
      "message": "Add kernel keycode mapping for new cut / copy / paste keys\n\nBug: 25120948\nChange-Id: I33a93fa6c067d15a9739ca33703e0e48e8cf6eff\n"
    },
    {
      "commit": "04fc7b75108ee63985a5a9f6bfc701584f1e013c",
      "tree": "d2f2dd4d455e94289809722e6d275ed71fe83e72",
      "parents": [
        "c51179e9abac07c4127666c139d4dadd8f25af33"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Oct 13 14:10:28 2015 +0100"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Oct 13 14:13:33 2015 +0100"
      },
      "message": "Fix broken KL file.\n\nButtons should be L1 and R1 instead of L and R.\n\nChange-Id: I1e345f7e28ad6b47248656a7f79d5507c62aa007\n"
    },
    {
      "commit": "c51179e9abac07c4127666c139d4dadd8f25af33",
      "tree": "51754e41e79bfad51692117038a66a98d0435114",
      "parents": [
        "68b074be554a789c71548ffeaf4cbf1df122c358"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Jul 30 17:03:10 2015 +0100"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Oct 13 12:34:05 2015 +0000"
      },
      "message": "Update NES controller key layout\n\nTurns out they produce an SNES controller with the same VID/PID as\ntheir NES controller. Just remap both at once.\n\nChange-Id: Iba94fdd69fd846f99ca1b3205de9069989635c73\n"
    },
    {
      "commit": "f975a26bfe5ac83cc10cae766f2bd1fbc3c50b83",
      "tree": "7bb29e90d18d4720d51c6228f497e4deac5b7451",
      "parents": [
        "2a370c4932ef27f1382f35b8d0be285027e4c563",
        "d621ee11fa76d7dd803a802bf000baa591c84fbe"
      ],
      "author": {
        "name": "Puneet Kumar",
        "email": "puneetster@google.com",
        "time": "Thu Oct 08 09:20:01 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 08 09:20:01 2015 +0000"
      },
      "message": "am d621ee11: am edc3585f: am 0a1f0e56: Merge \"Add ESC mapping for Pixel C keyboard\" into mnc-dr-dev\n\n* commit \u0027d621ee11fa76d7dd803a802bf000baa591c84fbe\u0027:\n  Add ESC mapping for Pixel C keyboard\n"
    },
    {
      "commit": "2a370c4932ef27f1382f35b8d0be285027e4c563",
      "tree": "61e75c4d17f9a08625d98d8561ba30433fbe2442",
      "parents": [
        "b2387e650b3ddd0c2045de66307c4362326363f1",
        "0068ea5bf7c9988174b0991eb87bb09f5838c39c"
      ],
      "author": {
        "name": "Puneet Kumar",
        "email": "puneetster@google.com",
        "time": "Thu Oct 08 09:19:55 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 08 09:19:55 2015 +0000"
      },
      "message": "am 0068ea5b: am 8810285f: am 06d1254c: Merge \"Add layout and keymap for Pixel C Bluetooth keyboard\" into mnc-dr-dev\n\n* commit \u00270068ea5bf7c9988174b0991eb87bb09f5838c39c\u0027:\n  Add layout and keymap for Pixel C Bluetooth keyboard\n"
    },
    {
      "commit": "a43a96be9e66ed5d0b8d70080a1c4fdd137a2acc",
      "tree": "be3e86eb4cf2f2c2f727df7bf67e85cfc7b15b40",
      "parents": [
        "4608f10849fbd1e423487d7b82d38a0834bca5b1"
      ],
      "author": {
        "name": "Dmitry Torokhov",
        "email": "dtor@google.com",
        "time": "Tue Sep 22 18:07:20 2015 -0700"
      },
      "committer": {
        "name": "Dmitry Torokhov",
        "email": "dtor@google.com",
        "time": "Tue Sep 29 13:31:18 2015 -0700"
      },
      "message": "Add ESC mapping for Pixel C keyboard\n\nNow that we have \"replace\" key event support in the framework we can map\nESC as AltR+1.\n\nBug: 24504154\n\nChange-Id: Ief8a50098fc5484171011f268ffc22a309cbba62\n"
    },
    {
      "commit": "4608f10849fbd1e423487d7b82d38a0834bca5b1",
      "tree": "eb9cd473417735770b9aba3eb927a75cbdeeaeb4",
      "parents": [
        "e1de9f674575df3b17e475c4f32dd93d33e596e3"
      ],
      "author": {
        "name": "Dmitry Torokhov",
        "email": "dtor@google.com",
        "time": "Tue Sep 22 15:51:22 2015 -0700"
      },
      "committer": {
        "name": "Dmitry Torokhov",
        "email": "dtor@google.com",
        "time": "Tue Sep 29 13:30:59 2015 -0700"
      },
      "message": "Add layout and keymap for Pixel C Bluetooth keyboard\n\nThis adds special layout and character map for Pixel C keyboard (Dragon\nbase) that lacks several keys, such as ESC, bracket keys, tilda and\nbackslash, which are mapped various Alt-R combinations.\n\nCurrently we map:\n\n [Shift]+AltR+2 -\u003e ~ and `\n [Shift]+AltR+O -\u003e { and [\n [Shift]+AltR+P -\u003e } and ]\n [Shift]+AltR+\u003d -\u003e | and \\\n\nESC mapping requires additional changes.\n\nBug: 24504154\n\nChange-Id: I24fc68efe7e2ddebee26a273838443b441491857\n"
    },
    {
      "commit": "9f8ec39d11a59b113bc478baf065ccef7cbe6d78",
      "tree": "9f56c64197111e273f128a384b40b027edc56c2b",
      "parents": [
        "7c3bce9140805788259a27f58693255c7ad5d349",
        "e8d735c70a594abdfbf9ff16ef2ccfc9b87a3635"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed May 06 22:56:04 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 06 22:56:04 2015 +0000"
      },
      "message": "am e8d735c7: Merge \"Remove all_modules\\\u0027s dependency on keymaps validation.\"\n\n* commit \u0027e8d735c70a594abdfbf9ff16ef2ccfc9b87a3635\u0027:\n  Remove all_modules\u0027s dependency on keymaps validation.\n"
    },
    {
      "commit": "366d6d0d1222978a255fbc361987d8647d64462d",
      "tree": "95804800341e0ba924e57ee23c59ded2b290f6dd",
      "parents": [
        "ab3dd9fc629135c518f708591cddb086524558b5"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 05 16:12:41 2015 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue May 05 16:12:41 2015 -0700"
      },
      "message": "Remove all_modules\u0027s dependency on keymaps validation.\n\nWith this we won\u0027t try to run validatekeymaps.exe when you run\n\"USE_MINGW\u003d1 mma\".\nAlso it seems it\u0027s too much to run the validation for every mma/mmma.\nValidation in just platform build (droidcore) should be enough.\n\nChange-Id: I22431009d4c2dd765bbd14b24eb5c8729b53d6c1\n"
    },
    {
      "commit": "e72a657561a475dfe6ba1f11910dd1d2ccf06ccc",
      "tree": "c788dbb30c374d0b9284d6a122dd05b684a7b837",
      "parents": [
        "434fcf15884cc345ba0b2d4ab28350bafa432f24"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Mar 11 17:23:09 2015 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Mar 11 17:23:09 2015 -0700"
      },
      "message": "Mark AVRCP devices as internal.\n\nThis prevents devices from waking up when an AVRCP key is injected.\n\nBug: 19685657\nChange-Id: I97137531da07b61211b792b407c4c9a09b231839\n"
    },
    {
      "commit": "c859b85cb530e608da775bb18744a996483a0311",
      "tree": "3890d97b183b1e1cae29babe1f9e22441abdb7f2",
      "parents": [
        "6afc5cf3d9e1a0c0eb6ecd6eea258f1ccd37bef3",
        "7e1435ec3c499a5743988c5d5bcb9b96cdca99fa"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Dec 01 23:47:37 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 01 23:47:37 2014 +0000"
      },
      "message": "Merge \"Added Razer USA, Ltd serval\""
    },
    {
      "commit": "ad66d7d2c1ba1a549fbdeb97af618364f7d9a664",
      "tree": "4260aa7730e5e0edafcff6dfb7e9766362d9ae3b",
      "parents": [
        "87c5f3621037eda3c4d141e5681d4acbbaa13944"
      ],
      "author": {
        "name": "Mathieu Meisser",
        "email": "mmeisser@logitech.com",
        "time": "Thu Nov 27 00:44:42 2014 +0100"
      },
      "committer": {
        "name": "Olivier Gay",
        "email": "ogay@logitech.com",
        "time": "Thu Nov 27 00:46:01 2014 +0100"
      },
      "message": "Add keylayout for Logitech RedHawk Gamepad\n\nChange-Id: Iad03de3384052b360d6b9d887ca9540de68cd21e\n"
    },
    {
      "commit": "7e1435ec3c499a5743988c5d5bcb9b96cdca99fa",
      "tree": "6ddf6e2a4a984cb1e042dc72688fc0bbb78205f3",
      "parents": [
        "52e2b6f79d44ff289c97653edea0548352c2f55b"
      ],
      "author": {
        "name": "Stuart Wells",
        "email": "stuart.wells@razerzone.com",
        "time": "Mon Nov 17 10:28:47 2014 -0800"
      },
      "committer": {
        "name": "Stuart Wells",
        "email": "stuart.wells@razerzone.com",
        "time": "Mon Nov 17 10:28:47 2014 -0800"
      },
      "message": "Added Razer USA, Ltd serval\n\nChange-Id: I76b7c36068c3d10ab4acb3123550ef115db0d3d2\n"
    },
    {
      "commit": "5ba44281c7e147eacb0c8fbac4ceaa45ed70f659",
      "tree": "f6244fab803474f628ed8889ba8e32b7870e0cda",
      "parents": [
        "23e79fcef98618fc049af55673b43ea9e70ffa9b"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Sep 23 15:56:17 2014 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Sep 23 16:04:35 2014 -0700"
      },
      "message": "Add keylayout for Asus Gamepad\n\nBug: 17627642\nChange-Id: I9dd76bbc3ea0493d5a54479ef4dc94c520e35433\n"
    },
    {
      "commit": "b1e3b70aeb96004e1d0a1ee60d8df43a2d6ca6f8",
      "tree": "a02b87daa175453710981effe7ca2db5e3a7aa2d",
      "parents": [
        "a59e62341ceb4f27aa1dc8a664efba42d00d668c"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Sep 16 16:48:58 2014 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Sep 16 16:48:58 2014 -0700"
      },
      "message": "Remove Rhodi keylayout\n\nLooks like Broadcom re-used the Rhodi PID since we never shipped.\nRemove the keylayout so we don\u0027t accidentally use it for other\ndevices.\n\nBug: 17504946\nChange-Id: Ia11ad40f8ba7d49f82e7f68d881cf7c9bfafcb37\n"
    },
    {
      "commit": "1ce304bb0262d38aece5693bde651ceb36362099",
      "tree": "e2b725b9f976a943e7f5dc18e271c39083816d7d",
      "parents": [
        "d87f2107d9d8d8e7bbc63613203f8a5c5b07b75f"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Sep 05 17:45:26 2014 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Sep 05 17:45:26 2014 -0700"
      },
      "message": "Map KEY_VOICECOMMAND to KEYCODE_VOICE_ASSIST\n\nThis is to simplify Project Watson requirements and enable USB Audio\nto easily implement similar functionality to the Watson headsets.\n\nChange-Id: Idd0a0cd6c6ba4a977090fb338d9241046f0380e6\n"
    },
    {
      "commit": "8111462d01e665769f36baab37108b91f7cf6c3a",
      "tree": "b8ebe13fec1e98dce2bf86c3655fa96a9a231108",
      "parents": [
        "985086276f90cccd9f37008056645e4c9acb888a"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri May 30 12:23:08 2014 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri May 30 12:27:00 2014 -0700"
      },
      "message": "Add layout for OnLive controller with USB adapter\n\nChange-Id: Ie21ba6550f62eb4797e0e51104b99c2a4a7c44d7\n"
    },
    {
      "commit": "725265a9c2d4195d5829f8f1cb6941724926efe2",
      "tree": "dddddd31500971f1754f1721785f2ab81a6d6fad",
      "parents": [
        "05ad48206a082057e17723d32493c153faa6881e"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed May 21 15:31:14 2014 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed May 21 15:39:24 2014 -0700"
      },
      "message": "Add KL file for Logitech F310\n\nChange-Id: I03f4fd74fb54571e2045b9289228150a348c994a\n"
    },
    {
      "commit": "11ad0e8bac98f4beedf715ed7a513ae622578564",
      "tree": "4e9a00239b871adea90374c0dcb8e6f921926bdf",
      "parents": [
        "56e36a978103daa5ece9eae76fc787340b351581",
        "e8628797833dfab1319d7a17f9ff465de760c633"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@android.com",
        "time": "Fri May 02 22:15:06 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 02 22:15:06 2014 +0000"
      },
      "message": "am e8628797: am 09446329: am 52025796: Merge \"Map KEY_APPSELECT to APP_SWITCH.\"\n\n* commit \u0027e8628797833dfab1319d7a17f9ff465de760c633\u0027:\n  Map KEY_APPSELECT to APP_SWITCH.\n"
    },
    {
      "commit": "e8628797833dfab1319d7a17f9ff465de760c633",
      "tree": "00cedf96a720ccd9b2bf1784618d4a160b9cf459",
      "parents": [
        "76df9c3485526fd99de031d9bc7df7e24e4641cf",
        "09446329b1afbbc8b56885e61ed66841b59532b2"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@android.com",
        "time": "Fri May 02 19:20:01 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 02 19:20:01 2014 +0000"
      },
      "message": "am 09446329: am 52025796: Merge \"Map KEY_APPSELECT to APP_SWITCH.\"\n\n* commit \u002709446329b1afbbc8b56885e61ed66841b59532b2\u0027:\n  Map KEY_APPSELECT to APP_SWITCH.\n"
    },
    {
      "commit": "09446329b1afbbc8b56885e61ed66841b59532b2",
      "tree": "3b9103b0fc176cc7c346cc7d025f502bba7e5fa0",
      "parents": [
        "e1a561620dd18dd71b65faafe5d2fad45794c80a",
        "52025796cd264fd8ba3851c8e42fd5508366456a"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@android.com",
        "time": "Fri May 02 19:16:16 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 02 19:16:16 2014 +0000"
      },
      "message": "am 52025796: Merge \"Map KEY_APPSELECT to APP_SWITCH.\"\n\n* commit \u002752025796cd264fd8ba3851c8e42fd5508366456a\u0027:\n  Map KEY_APPSELECT to APP_SWITCH.\n"
    },
    {
      "commit": "8840f1f13a33b851078aedb98ee247e28f9f0d24",
      "tree": "a96cfd6b6b17a948a4d6e2d13318d2b34f3a7eeb",
      "parents": [
        "86315c452b955bf0b874f45c1a2e15aedda91a52"
      ],
      "author": {
        "name": "Olivier Gay",
        "email": "ogay@logitech.com",
        "time": "Thu May 01 11:10:20 2014 +0200"
      },
      "committer": {
        "name": "Olivier Gay",
        "email": "ogay@logitech.com",
        "time": "Thu May 01 11:11:27 2014 +0200"
      },
      "message": "Map KEY_APPSELECT to APP_SWITCH.\n\nChange-Id: Iec801f2edfec9923aac088cb66663f64d62b3df6\nSigned-off-by: Olivier Gay \u003cogay@logitech.com\u003e\nSigned-off-by: Mathieu Meisser \u003cmmeisser@logitech.com\u003e\n"
    },
    {
      "commit": "4642063d87044b4a16faa68992f18811a00ae3f4",
      "tree": "b70ecaa35c735998c55b8815f8a30fc635cbaa41",
      "parents": [
        "d37ae7c13d527a0019275fda44ce4eb83fd99bed"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Apr 29 16:06:14 2014 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Apr 29 16:06:14 2014 -0700"
      },
      "message": "Improve Gamepad fallbacks for text entry.\n\nChange-Id: Ia8b05730a9b41b93006e678aba2d182748e56083\n"
    },
    {
      "commit": "337d9d2edc262141f9b8f684e53aae5e47f0ae13",
      "tree": "486f2c212e2084a2730cf670fa3a41d11c16b188",
      "parents": [
        "b78263d37690a6a5cb12dd31d82ad2e140b3dfc7"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Apr 22 15:03:48 2014 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Apr 28 14:33:40 2014 -0700"
      },
      "message": "Move key attribute information into KeyEvent.\n\nThis consolidates all of the information that was in the native\nKeyEvent and the KeyLayout files into the managed KeyEvent class.\n\nIt also moves the definition for all of the key names to the native\nside, rather than having them in both places.\n\nChange-Id: I172e3b554e7eb52c79ae2ec406ef4332e8b25ffa\n"
    },
    {
      "commit": "edad218f5ac001f76bef322eb36f86836f0a956c",
      "tree": "f4e217b385fb5890dd400e7494583f4e523e2427",
      "parents": [
        "3eff39fb0f6425601b67296ee25f0497a70976ae"
      ],
      "author": {
        "name": "Tim Kilbourn",
        "email": "tkilbourn@google.com",
        "time": "Fri Apr 18 14:18:07 2014 -0700"
      },
      "committer": {
        "name": "Tim Kilbourn",
        "email": "tkilbourn@google.com",
        "time": "Fri Apr 18 14:24:12 2014 -0700"
      },
      "message": "Add Fire TV remote key layout.\n\nChange-Id: Ida72c48701bf0366f488f1c99ab17e0e5c45de78\n"
    },
    {
      "commit": "ed28fc89e3085a88c6bd8b4269988150f3eceb56",
      "tree": "75104173d5bcb047968215a419f4597a4c9bca44",
      "parents": [
        "5f0c0498a1382ef955cccca95920ec878fe2a64c"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Oct 18 15:26:48 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Mar 11 14:52:18 2014 -0700"
      },
      "message": "Utilize new Android LED constants. DO NOT MERGE\n\nAlso, have EventHub manage game controllers\u0027 player LEDs\n\nChange-Id: Ic7dba19ad236a3c7d1aff5d3f938bd239b98d51d\n"
    },
    {
      "commit": "74f36d31892d8fdfddbecc7bf3018aa3a190e5fb",
      "tree": "cf056e44f9b11e90c66cb410dd7ff42302b9d9aa",
      "parents": [
        "2e76f5d8a282f4f948f88208e77dc4b3d0ec6634",
        "c48c9626bd2eb91aab33a034baf139aa2b92671d"
      ],
      "author": {
        "name": "Zhihai Xu",
        "email": "zhihaixu@google.com",
        "time": "Tue Mar 11 17:43:56 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 11 17:43:56 2014 +0000"
      },
      "message": "am c48c9626: am 82ec1442: Merge \"DO NOT MERGE Revert \"Revert \"Add PLAY and PAUSE keycodes and remove PLAY_PAUSE keycode.\"\"\" into klp-dev\n\n* commit \u0027c48c9626bd2eb91aab33a034baf139aa2b92671d\u0027:\n  DO NOT MERGE Revert \"Revert \"Add PLAY and PAUSE keycodes and remove PLAY_PAUSE keycode.\"\"\n"
    },
    {
      "commit": "7434fa31d8dbd881d44022829ea2b0a0c76728ce",
      "tree": "c3ece3e5ffbce1913df5bf3c70e5277d105e9ab0",
      "parents": [
        "1327e59f36ceea5a1ee7dc66b311206345353de5"
      ],
      "author": {
        "name": "Zhihai Xu",
        "email": "zhihaixu@google.com",
        "time": "Tue Jan 07 19:36:01 2014 +0000"
      },
      "committer": {
        "name": "Zhihai Xu",
        "email": "zhihaixu@google.com",
        "time": "Mon Mar 10 10:58:14 2014 -0700"
      },
      "message": "DO NOT MERGE Revert \"Revert \"Add PLAY and PAUSE keycodes and remove PLAY_PAUSE keycode.\"\"\n\nThis reverts commit 371427b53c70d1a71012de404c29187fe303a22a.\n\nbug:12099469\nChange-Id: I497832b54856a9909fc8651ee67555e02e0e763e\n"
    },
    {
      "commit": "2901e0442ab63d3148b708e88f445acaf8d4dc15",
      "tree": "ec75aa690f1c44bc9ef569aa94b74dbd3109ce43",
      "parents": [
        "edb35cf57c20ba7dfb89a31a02ecf5d4de772fe2",
        "9e3de5f70d77f7152b25fec6c27b73d037c1376d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Mar 08 05:43:12 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Mar 08 05:43:12 2014 +0000"
      },
      "message": "am 9e3de5f7: am 6f9f8e7a: am 01b5e765: Merge \"Declare KEYCODE_SLEEP and KEYCODE_WAKEUP.\" into klp-modular-dev\n\n* commit \u00279e3de5f70d77f7152b25fec6c27b73d037c1376d\u0027:\n  Declare KEYCODE_SLEEP and KEYCODE_WAKEUP.\n"
    },
    {
      "commit": "6212a49a9475768316a999596ffc4dd0f4ce96e5",
      "tree": "c603b01b0acd899910030cf9b7bf9f2097928ec6",
      "parents": [
        "16ed831eb391e1d08050c52579f316ed5505c1e8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 07 13:58:47 2014 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 07 14:02:55 2014 -0800"
      },
      "message": "Declare KEYCODE_SLEEP and KEYCODE_WAKEUP.\n\nThese new keys behave in similarly to KEYCODE_POWER but do not\nsimply toggle between awake and asleep states.\n\nSleep puts the device to sleep if it is awake.\nWakeup wakes up the device if it is asleep.\n\nBug: 12938999\nChange-Id: I260fb918cc858882fe06fa880910df5763a76c5d\n"
    },
    {
      "commit": "a6434b5e8099060066b94921660437d29aeca78e",
      "tree": "2a7b3cb9267fa665552cf09128f3c658e1e8b0a1",
      "parents": [
        "ecc7ca53852a395157ac1b45ee6aa4fe13ade3d1",
        "78e208accebd68fd1dc634a57323cafa1143d6ed"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Mar 06 02:57:18 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 06 02:57:18 2014 +0000"
      },
      "message": "am 78e208ac: am 6b661fdc: am dd9f7cb2: Add Odie KL file.\n\n* commit \u002778e208accebd68fd1dc634a57323cafa1143d6ed\u0027:\n  Add Odie KL file.\n"
    },
    {
      "commit": "dd9f7cb2948af46047ab16d44c28a8f91948bdf5",
      "tree": "626fe991c274209e0d9add443f93a5338a477243",
      "parents": [
        "9aa7c6e583ac18d6c338af8d478512c4ab5293b4"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Mar 03 14:04:11 2014 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Mar 05 17:47:54 2014 -0800"
      },
      "message": "Add Odie KL file.\n\nChange-Id: I74cc90a3c66e876db51da8f9fd8ced3bac373032\n"
    },
    {
      "commit": "bdffc3ad05180d716cc4b808b292e2262f0cd461",
      "tree": "e5d848de8760d7dd37847661f26202b07a8001f9",
      "parents": [
        "43ec3b939b732ea2d3b26635c51a6c91f2692270"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Feb 26 15:40:44 2014 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Feb 26 15:43:48 2014 -0800"
      },
      "message": "Revert Japanese special case fallback keys.\n\nReverts commits 4567e40eb04589d211af82f2dcb16cb3955c605e and\na977707d6e7006d11cfde045f187e777b31b9e04, which added special case fallbacks\nfor game controllers in the Japanese locale.\n\nBug: 12923922\nChange-Id: I229126e589e11fb5de86772ef9c59d09723af941\n"
    },
    {
      "commit": "8a5dbac349ed5bced0d9509aa5bdcf707df40da2",
      "tree": "2c3ff3cff38ff2c3ebf298254ed8eb952fe3952b",
      "parents": [
        "5a92fec650447baddff3c85aaa83c6fc805880bf"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Feb 12 17:28:57 2014 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Feb 14 13:20:58 2014 -0800"
      },
      "message": "Remove Japanese button swap\n\nBug: 12923922\nChange-Id: I4960d8189e751514a595823d7ed9b273e3ff8eb8\n"
    },
    {
      "commit": "c9eff80ecac251f19af38b277760e960bbf1a655",
      "tree": "e525d26adb94ea9c68d0146be8a8583a1ffdd1fc",
      "parents": [
        "88a00abe0803327bb55171082e18fe2901c35d49",
        "541602250640a1996cd7aee6e446d6fcc6726d7d"
      ],
      "author": {
        "name": "Zhihai Xu",
        "email": "zhihaixu@google.com",
        "time": "Fri Jan 10 17:44:22 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 10 17:44:22 2014 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Add PLAY and PAUSE keycodes and remove PLAY_PAUSE keycode.\"\"\""
    },
    {
      "commit": "fbefb93f268293ffc4069ba182379157a41aa5a3",
      "tree": "8885f016eac2bfedf0cd1fa85a3ea2a311de30c6",
      "parents": [
        "fd3c089b1a153875d06cc46a68105e47ad390e59"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Jan 08 15:40:14 2014 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Jan 08 15:40:14 2014 -0800"
      },
      "message": "Fix Rhodi KL file axes\n\nChange-Id: Ifb779c7730ed4b69325bf57aa7629c663ee4cb5c\n"
    },
    {
      "commit": "541602250640a1996cd7aee6e446d6fcc6726d7d",
      "tree": "1560e4ae7c2afb81314e399f13f36fdb1e451aec",
      "parents": [
        "7acec30ac7d5b2fba11757a2d2e3ad351be23441"
      ],
      "author": {
        "name": "Zhihai Xu",
        "email": "zhihaixu@google.com",
        "time": "Tue Jan 07 19:36:01 2014 +0000"
      },
      "committer": {
        "name": "Zhihai Xu",
        "email": "zhihaixu@google.com",
        "time": "Tue Jan 07 11:37:24 2014 -0800"
      },
      "message": "Revert \"Revert \"Add PLAY and PAUSE keycodes and remove PLAY_PAUSE keycode.\"\"\n\nThis reverts commit 371427b53c70d1a71012de404c29187fe303a22a.\n\nChange-Id: I497832b54856a9909fc8651ee67555e02e0e763e\n"
    },
    {
      "commit": "88d7a0650845f345d0b867fabc26c5c0b4d3b206",
      "tree": "6d80d0c78e111fbb6e61bd66064179495cf4acc1",
      "parents": [
        "0c34ee698edcd3bdfa4a1d26224e1ed1b96a9238"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Dec 18 18:20:43 2013 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Dec 18 18:20:43 2013 -0800"
      },
      "message": "Add Rhodi kl file\n\nChange-Id: I950fd2df88b6100dce29e97fd1d9b292ed51fffe\n"
    },
    {
      "commit": "ff0b79fc5316ef13f0edbba4d0eef887567d8849",
      "tree": "7fa4512c96524cb17721f7f855b0e990b866c851",
      "parents": [
        "d617be42c7c3a9a00eb24ce4f310b8349f45db6e",
        "86271499bbac0537630297a670ed67b869cd54d5"
      ],
      "author": {
        "name": "Matthew Xie",
        "email": "mattx@google.com",
        "time": "Mon Nov 04 21:59:19 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 04 21:59:19 2013 -0800"
      },
      "message": "am 86271499: am f2194693: am 371427b5: Revert \"Add PLAY and PAUSE keycodes and remove PLAY_PAUSE keycode.\"\n\n* commit \u002786271499bbac0537630297a670ed67b869cd54d5\u0027:\n  Revert \"Add PLAY and PAUSE keycodes and remove PLAY_PAUSE keycode.\"\n"
    },
    {
      "commit": "371427b53c70d1a71012de404c29187fe303a22a",
      "tree": "5067552e6c468a0c9281b6d294022d0a05158d98",
      "parents": [
        "ee4c84642afffa80f23039bbc2d4f59de11f67da"
      ],
      "author": {
        "name": "Matthew Xie",
        "email": "mattx@google.com",
        "time": "Fri Nov 01 20:34:21 2013 +0000"
      },
      "committer": {
        "name": "Matthew Xie",
        "email": "mattx@google.com",
        "time": "Fri Nov 01 13:49:20 2013 -0700"
      },
      "message": "Revert \"Add PLAY and PAUSE keycodes and remove PLAY_PAUSE keycode.\"\n\nThis reverts commit 7a863b4bdae1d01d4ac972fe8ff8968bbfed6709.\n\nbug 11325212\nChange-Id: I8b50aec4ae39894a854583a74bda4db3445d3d67\n"
    },
    {
      "commit": "58f5a6134e49237bb91aff25442f63060adcb323",
      "tree": "73bf2f5f3844c3e764b319fa71492e640644d72d",
      "parents": [
        "4d8779fc5b0f371b413a605e10c6efb0aa25036c"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Oct 18 15:26:48 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Oct 18 17:54:48 2013 -0700"
      },
      "message": "Utilize new Android LED constants\n\nAlso, have EventHub manage game controllers\u0027 player LEDs\n\nChange-Id: Ic0a1515979d72a30d182d51d89ca6753c5bd7bf8\n"
    },
    {
      "commit": "7b4f60deb2819496733c0c85c57c6236900fe0c2",
      "tree": "a0e3b0505353f9751b75b961a81938a55fe3be4e",
      "parents": [
        "23a5f44c5a306b4a70821722a697da55cc3c5db8",
        "4567e40eb04589d211af82f2dcb16cb3955c605e"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Sat Sep 07 02:04:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Sep 07 02:04:20 2013 +0000"
      },
      "message": "Merge \"Special case game controller fallback keys for Japan\" into klp-dev"
    },
    {
      "commit": "37ad207edc2b83ce23a35d1f0f4b7f3409151acc",
      "tree": "5126770ac3fbb28f019044dd779f644c7aa064e3",
      "parents": [
        "56960fbd39706278dbcb9d6ee95e16fa6eff6c6e"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Sep 05 15:10:20 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Sep 05 15:27:32 2013 -0700"
      },
      "message": "Fix broken copy of kl/kcm/idc files to system image\n\nBug: 10633915\nChange-Id: I244b85dc92d50bf8bdcfdf0fe32556eff8c5d279\n"
    },
    {
      "commit": "18e14c75e3bce96690ac76c78fdb402af9740a01",
      "tree": "7a98143cb9dd9738a2c7c7aad153bddb76509fd3",
      "parents": [
        "5c2dfa8a21e7bd4e07e00f268d30058b654aa099"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Aug 29 14:33:58 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Sep 03 12:27:18 2013 -0700"
      },
      "message": "Fix keymap build dependencies and variable name collisions\n\nChange-Id: I06e67ddc97429ae9c3d04143934c3f8233fcd22f\n"
    },
    {
      "commit": "4567e40eb04589d211af82f2dcb16cb3955c605e",
      "tree": "205c81725c9bd5ec58ddf1f2cf56a2e49797adf5",
      "parents": [
        "0ccb7d117fa13933cb0d7820387e00f3d1aff18d"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Aug 16 15:08:35 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Aug 26 12:27:37 2013 -0700"
      },
      "message": "Special case game controller fallback keys for Japan\n\nBug: 10306633\nChange-Id: I647fc5286678ddd85599a00e68e2fd70c2c3db49\n"
    },
    {
      "commit": "2c126204a538430ea23653a5a77ab67873a4a7d8",
      "tree": "79de028e026572fb5a56e1fa275f48b78d2dd2cf",
      "parents": [
        "ac6c78b6eef49f5c1ab2a346d90ccb99ccec18f4"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Jul 29 13:54:46 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon Jul 29 13:54:46 2013 -0700"
      },
      "message": "Remove incorrect keymapping\n\nTurns out Snakebytes produce all 0s for their vendor / product IDs. This\nsomehow got the vendor / product ID of an international apple keyboard, which\nwill break them. Unfortunately, this also means we cannot map Snakebyte\ncontrollers at all.\n\nRelevant bug: https://code.google.com/p/android/issues/detail?id\u003d58202\n\nChange-Id: I59e134f8d1eb059fdf6823e65d6ce5387428029e\n"
    },
    {
      "commit": "d351180667d685daea50782d95d85e9d7faa48eb",
      "tree": "87167de9e042bda1e146d117e7bfbabbabd5e951",
      "parents": [
        "5ffb7a8b9924ca44639fdb8d094bf162f99200a1"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Apr 23 16:36:29 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue May 14 00:05:05 2013 +0000"
      },
      "message": "Include key maps based on file name\n\nRather than keeping a curated list where it\u0027s easy to miss things, just pick up\nall of the possible key layouts, key character maps and input device configs in\nframework/base/data/keyboards based on filename.\n\nChange-Id: Iefa8eca491dcb6913e5b12bfda7096b6a5fedf18\n(cherry picked from commit 9f5a6ee489f89c93491beef9bf64475fd2bfb0dd)"
    },
    {
      "commit": "275d6915e5f97ebda369553b53df359bbcde0f0d",
      "tree": "a82c5ebc798f97f3ad72303f831a6d00b07b5ab8",
      "parents": [
        "5866570947a7ef325f74d9dbfc1ccbdd02d3e7b6"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Apr 26 15:06:38 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Apr 26 15:06:38 2013 -0700"
      },
      "message": "Add DPad keys to Playpad\n\nChange-Id: If274aa7e9d5e4988cf613ea9a16584c413ded8dd\n"
    },
    {
      "commit": "fb8df2356ab108d5f56413bb524b3dac6a37af3e",
      "tree": "99009a0d064b6bc02729244cd48e00af3812c747",
      "parents": [
        "5e650cef53cf1eb33f9c8b2f8e5c8b1bb24b32d9"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Apr 23 14:46:07 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Apr 23 15:54:21 2013 -0700"
      },
      "message": "Fix keylayouts to use BACK instead of incorrect BUTTON_BACK.\n\nFix duplicate keys in a couple of the onza controllers.  Also, add them to the\nMakefile so they actually get included in the build.\n\nBug: 8292749\nChange-Id: I8246155f84d0c3c75b21e37fb579227fda76e197\n"
    },
    {
      "commit": "f9c2ada62f328fac9747983185463e4e67ef4f6b",
      "tree": "3713edbbb1c1a5b9ea9db3f408a53c29ffb428bd",
      "parents": [
        "83d90b200babe43d5e91cef1bbcf0b224f48e16d"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Apr 04 16:57:20 2013 -0700"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Wed Apr 17 18:00:06 2013 -0700"
      },
      "message": "Standardize gamepad layouts on existing controllers\n\nBug: 8292749\nChange-Id: I24bae8c9229125fcdd583d74b29f4334ddff782e\n"
    },
    {
      "commit": "0648d2c4ce2ca4709382cc5e8bf78d07843b7373",
      "tree": "eb6a1864ccab6de3949566d236c6c3b464c3507b",
      "parents": [
        "d21267a26845c36842990e0705a470b92caa7628"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Feb 12 14:25:01 2013 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Tue Feb 12 14:27:25 2013 -0800"
      },
      "message": "Fix default behavior for gamepad buttons\n\nBug: 8183679\nChange-Id: Iaac33979828f18b1b8b6b111cd07b029384519ec\n"
    },
    {
      "commit": "1df477acf60538f9de18bd597e090d075fa83509",
      "tree": "a163bd932074c49b9fac6792ca85d12569559dd5",
      "parents": [
        "b06870bf49055721bd43b5bbd742feb8422fc071"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Jan 31 16:19:18 2013 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Feb 01 16:29:59 2013 -0800"
      },
      "message": "Add initial plumbing for brightness keys\n\nChange-Id: I595e8a25e6c245e4b22f06df9a8acdbb75e4b041\n"
    },
    {
      "commit": "cf39bdf3dff5e29447f6ce734b76dc3490385e58",
      "tree": "90900366888a32fbfa769f541b0bd8dbbcec748a",
      "parents": [
        "51f2430217a377bc2913862d98a97d0087914540"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 18 14:41:19 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun May 20 14:56:22 2012 -0700"
      },
      "message": "Add support for switching between multiple keyboard layouts.\n\nAlso show a notification when an external keyboard is connected\nand does not have a keyboard layout selected yet.\n\nBug: 6405203\nChange-Id: Id0ac6d83b3b381f8a236b2244a04c9acb203db3c\n"
    },
    {
      "commit": "80b2760332f0c9af3757597ae6e5e5ab6bb69c38",
      "tree": "5a23b552d53703ef3547bbf55b7340197a2b302b",
      "parents": [
        "69b2be163d6ba00fead46c2e01ec775d8487e777"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 25 18:35:46 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 25 18:35:46 2012 -0700"
      },
      "message": "Map KEY_SELECT to DPAD_CENTER.\n\nChange-Id: If387be6b233db2222347e39e9edb3ad886e936a3\n"
    },
    {
      "commit": "9a2bbf680e3b5b98051b9f2913ab6bd31b77f79a",
      "tree": "0e6d9dc80e52a02873462a0e051e34fd6f657bbc",
      "parents": [
        "f35ea5d25b286e166bdc43a589a45b56b6358499"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 18 14:09:10 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 18 15:01:57 2012 -0700"
      },
      "message": "Improve handling of certain keyboard layout properties.\n\nAutomatically choose a default value for the \u0027number\u0027 property\nbased on the characters that the key can generate.\n\nDon\u0027t generate any character when ctrl, alt or meta is\npressed unless the behavior exactly matches the modifier keys\nthat are pressed.\n\nSimplified the basic keyboard layouts taking into account the\nnew features.\n\nBug: 6110399\nChange-Id: Ibc0f0b50c2dcf3f962a33ac77c24d2993b77637d\n"
    },
    {
      "commit": "7511f9cd2ff39075ff56c2558c785caffc8b4383",
      "tree": "25f1eeba677060cfdc52fb75ea58107c0591a8b2",
      "parents": [
        "d56feb91b4b1ac9cd0e9b37dfa20d137825fbbfd"
      ],
      "author": {
        "name": "Yang Chuang",
        "email": "Yang_Chuang@asus.com",
        "time": "Fri Feb 10 15:18:26 2012 +0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 02 15:19:45 2012 -0700"
      },
      "message": "Add Japanese specific key codes.\n\nThese keys are specific to Japanese hardware keyboard which can be\nused by input method.\n\nPatch ported from AOSP, with the addition of EISU and KANA mappings.\n\nChange-Id: I647473cdd257458e3b9d134b0fc623eae946c3e0\n"
    },
    {
      "commit": "6651a638348c15e89e265b0a53c775cac9beafa2",
      "tree": "f42e59d99363cada07cdb6f4bff69fa51bfae2ad",
      "parents": [
        "500afb87a7a8b5928ef1a5196bdfd0bcc2b87e4a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 28 12:59:11 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 29 12:17:22 2011 -0800"
      },
      "message": "Fix application launch shortcuts.\n\nImproved quick launch bookmarks to support category-based shortcuts\ninstead of hardcoding package and class names for all apps.\n\nAdded a set of Intent categories for typical applications on the\nplatform.\n\nAdded support for some of the HID application launch usages to\nreduce reliance on quick launch for special purpose keys.  Some\nkeyboard vendors have hardcoded launch keys that synthesize\n\"Search + X\" type key combos.  The goal is to encourage them\nto stop doing this by implementing more of HID.\n\nBug: 5674723\nChange-Id: I79f1147c65a208efc3f67228c9f0fa5cd050c593\n"
    },
    {
      "commit": "4f3aa5849066841dcf3fcce2f3f367f77c48ddfe",
      "tree": "d4367734b171e18baca59c3fb73ae17119ae4b7f",
      "parents": [
        "b19c7878cc48746b7dda7ebdf1c85f6a7e6996a3"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Oct 10 12:44:12 2011 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Oct 10 12:44:12 2011 -0700"
      },
      "message": "Remove non-module names from PRODUCT_PACKAGES\n\nBug: 5430740\nThose files are in PRODUCT_COPY_FILES but not modules that can be put in\nPRODUCT_PACKAGES.\n\nChange-Id: I9e2f60de7ac2e12e6880e1365a36615835ca747c\n"
    },
    {
      "commit": "eee00495f5c65340bff80e8afa8090b3b18619de",
      "tree": "6350f372de9256108e7359de7b95c31899cb9aa0",
      "parents": [
        "e3373ff620bcab34ac0030ee06140563f5dbb016"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 10 14:43:20 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 10 14:43:20 2011 -0700"
      },
      "message": "Update keymaps.\nBug: 5069142\n\nAdd some additional mappings for the POWER key to support more\nstandard HID devices.\n\nRemove some non-standard mappings that don\u0027t make sense anymore.\n\nChange-Id: Ie95a72c60d4dc4bfb3c90f6f3b343365f8e76685\n"
    },
    {
      "commit": "5487500cf3d9f6d7703ce0704cb91837aa95d716",
      "tree": "cbc4b85dbb6a0a97d811afa00da3e3b1e0b2f561",
      "parents": [
        "fb84ce0df6b2db84981e4efa4530397a85240d4a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 06 15:33:01 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 06 15:38:05 2011 -0700"
      },
      "message": "Minor Alt-TAB / Recent Apps Dialog improvements.\n\nAlt-TAB should have different semantics from the APP_SWITCH key\nor long-press on HOME.  Accordingly, remove the fallback action\nfor Alt-TAB and initiate the task switching behavior directly\nin the policy.\n\nModified RecentApplicationsDialog to be more precise about the\ninitial modifiers that it considers to be holding the dialog.\n\nThe dialog is now dismissed by a second press on the APP_SWITCH\nkey or by a second long press on HOME.\n\nChange-Id: Idf4d803f51103819057cb655ff3b770b7729e4be\n"
    },
    {
      "commit": "8c769cb9cc02fe0496c16b51bc555729accf70c4",
      "tree": "6900ce94534c85be7260bde8b501b9cb4820bbe4",
      "parents": [
        "da3d5a91b6b311ed77f2707d4456c1f18b84d73b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 29 17:26:44 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 29 17:26:44 2011 -0700"
      },
      "message": "Support primitive ALT-TAB style navigation using Recent Apps.\n\nChange-Id: I6dc774326c971826d160c82126fb39acb5b9124b\n"
    },
    {
      "commit": "3a22fa057091cd6614f58ebc57a7ce4fe29462bb",
      "tree": "974dcf7edb5668a7cffd7aa629c4ccc95ed5a99f",
      "parents": [
        "06b0e5899525330119f27f0f7d9898db6f73e0e2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 04 13:07:49 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 04 18:53:32 2011 -0800"
      },
      "message": "Joystick tweaks.\n\nEnsure that the joystick can always reach -1.0, 0.0 and 1.0 positions\neven when noise filtering is applied.  (Bug: 3514510)\n\nAdd support for a few more standard axes.\n\nAdd additional mapping modes for axes.\nSome axes are inverted from standard interpretation\nor are actually intended to be split into two distict axes\nsuch as left/right trigger controls or accelerator/brake.\n\nAdd key layout file for a G25 racing wheel and XBox 360 controller\nto tweak behavior.  They work fine without them but the axis mappings\nare not ideal.\n\nChange-Id: Id4c86a0a272331c680039a9bde6815bb7eba44ab\n"
    },
    {
      "commit": "e7b2029a0b7b948daf2d6accbc200a56d72f96ca",
      "tree": "b9d288df106902ccdbeaa2809fbb62cd4673a34d",
      "parents": [
        "1bc593efeb88f668118bb7c169c49b978410bea4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 03 03:39:29 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 03 03:39:29 2011 -0800"
      },
      "message": "Recognize 3D joysticks.\n\nChange-Id: Ie4eae09c0334f69c2ccfcf7eaede075f9ba02eab\n"
    },
    {
      "commit": "6f2fba428ca5e77a26d991ad728e346cc47609ee",
      "tree": "5dd07c24bd9b474ccfbcba4f63e078598fbd2b50",
      "parents": [
        "b1bdb64d641ac63097619e5ef08d5a25bfdc61bb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 01:08:02 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 05:23:10 2011 -0800"
      },
      "message": "Add new axes for joysticks and mouse wheels.\n\nAdded API on InputDevice to query the set of axes available.\nAdded API on KeyEvent and MotionEvent to convert keycodes and axes\nto symbolic name strings for diagnostic purposes.\nAdded API on KeyEvent to query if a given key code is a gamepad button.\nAdded a new \"axis\" element to key layout files to specify the\nmapping between raw absolute axis values and motion axis ids.\nExpanded the axis bitfield to 64bits to allow for future growth.\nModified the Makefile for keyboard prebuilts to run the keymap\nvalidation tool during the build.\nAdded layouts for two game controllers.\nAdded default actions for game pad button keys.\nAdded more tests.\nFixed a bunch of bugs.\n\nChange-Id: I73f9166c3b3c5bcf4970845b58088ad467525525\n"
    },
    {
      "commit": "dc9988feecada1db5da6d1bb661508ba34395a30",
      "tree": "b3bb574f5e4dea7bb21f3b616c760be015d6a1d8",
      "parents": [
        "ed469907c4b10ec2ed74b563c3ed4f451c8bfe3d",
        "f0ea11d7128f3e654d91683ea6efe59ac714b9ef"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 26 10:50:30 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 26 10:50:30 2011 -0800"
      },
      "message": "am f0ea11d7: am 8b557459: Merge \"Fix emulator touchscreen.\" into honeycomb\n\n* commit \u0027f0ea11d7128f3e654d91683ea6efe59ac714b9ef\u0027:\n  Fix emulator touchscreen.\n"
    },
    {
      "commit": "77ef8b50616dc21f02dc09d77bfdcda166d24a74",
      "tree": "88fb60d95a79dac48c17b25974036e23fd202a9b",
      "parents": [
        "b8942108826893657ca0b8b6d5d6d153739a76f6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 26 10:40:10 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 26 10:40:10 2011 -0800"
      },
      "message": "Fix emulator touchscreen.\n\nBug: 3393763\nChange-Id: Ief16640344d61d283aac08ef4b53e85d7ee3c73f\n"
    },
    {
      "commit": "1df27c02ec96fd2a4a17494cdef4fea8610ecc7c",
      "tree": "0503aea33af3ee189912279399a073e8112e2d73",
      "parents": [
        "ffba6d63029d367fc37852a871d9a1f15a0cfb91",
        "1f26ea1306a018a0d0eac2295a5ca235b9475d86"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 12:38:22 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 12:38:22 2011 -0800"
      },
      "message": "am 1f26ea13: am 561a434b: Merge \"Fix emulator trackball.\" into honeycomb\n\n* commit \u00271f26ea1306a018a0d0eac2295a5ca235b9475d86\u0027:\n  Fix emulator trackball.\n"
    },
    {
      "commit": "76646cef5fea10ec64b804bb3c640c6a545395f5",
      "tree": "9c24e389a09331dc92410c2cbad6250fcd4886c8",
      "parents": [
        "2e44b0788f450f06c0d4e3b8dc26aff43ead587d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 24 17:38:51 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 24 17:38:51 2011 -0800"
      },
      "message": "Fix emulator trackball.\n\nBug: 3369229\nChange-Id: I97ce0ac664636224decb040c743704dfcbd90c81\n"
    },
    {
      "commit": "cb1404e45639d20439d7700b06d57ca1a1aad1fa",
      "tree": "1d9bb7c58ea0a9ae36c242602fca59d343e8a0cd",
      "parents": [
        "e0dfee2b7075c1eac0db08d79d47381693d2f125"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Jan 15 18:14:15 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 13:51:00 2011 -0800"
      },
      "message": "Add joystick support to framework.\n\nChange-Id: I95374436708752e1a9cff3f85c5b9bc3e0987961\n"
    },
    {
      "commit": "7a863b4bdae1d01d4ac972fe8ff8968bbfed6709",
      "tree": "85774170947a7f2d14adcf9c82023dc716987cde",
      "parents": [
        "ceb99ec550d702072e226790b3572b22bfcd5aea"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumar@google.com",
        "time": "Thu Dec 16 16:24:15 2010 -0800"
      },
      "committer": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumar@google.com",
        "time": "Thu Dec 16 16:24:15 2010 -0800"
      },
      "message": "Add PLAY and PAUSE keycodes and remove PLAY_PAUSE keycode.\n\nChange-Id: I0b17bea189c90fcacff42e182e9e47ef179c28ca\n"
    },
    {
      "commit": "49ed71db425c5054e3ad9526496a7e116c89556b",
      "tree": "3d3b28bdaf76d5cc531fd3b52fcbb0efb32a05ba",
      "parents": [
        "f30c8287525ac049d4d7589a330be5713256046b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Dec 06 17:13:33 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Dec 07 17:35:26 2010 -0800"
      },
      "message": "Add support for fallback keycodes.\n\nThis change enables the framework to synthesize key events to implement\ndefault behavior when an application does not handle a key.\nFor example, this change enables numeric keypad keys to perform\ntheir associated special function when numlock is off.\n\nThe application is informed that it is processing a fallback keypress\nso it can choose to ignore it.\n\nAdded a new keycode for switching applications.\n\nAdded ALT key deadkeys.\n\nNew default key mappings:\n- ESC -\u003e BACK\n- Meta+ESC -\u003e HOME\n- Alt+ESC -\u003e MENU\n- Meta+Space -\u003e SEARCH\n- Meta+Tab -\u003e APP_SWITCH\n\nFixed some comments.\nFixed some tests.\n\nChange-Id: Id7f3b6645f3a350275e624547822f72652f3defe\n"
    },
    {
      "commit": "9065504a63d6bf37bf621191fda1d1fe4da76ee3",
      "tree": "500948db3ef54c52fc65f52f4ab4a220e4504009",
      "parents": [
        "d6a46103bfbed17451abf0fb608d7b778597846c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Dec 02 13:50:46 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Dec 02 16:01:32 2010 -0800"
      },
      "message": "Improve support for external keyboards.\n\nUse Vendor ID, Product ID and optionally the Version to\nlocate keymaps and configuration files for external devices.\n\nMoved virtual key definition parsing to native code so that\nEventHub can identify touch screens with virtual keys and load\nthe appropriate key layout file.\n\nCleaned up a lot of old code in EventHub.\n\nFixed a regression in ViewRoot\u0027s fallback event handling.\n\nFixed a minor bug in FileMap that caused it to try to munmap\nor close invalid handled when released if the attempt to map\nthe file failed.\n\nAdded a couple of new String8 conveniences for formatting strings.\n\nModified Tokenizer to fall back to open+read when mmap fails since\nwe can\u0027t mmap sysfs files as needed to open the virtual key\ndefinition files in /sys/board_properties/.\n\nChange-Id: I6ca5e5f9547619fd082ddac47e87ce185da69ee6\n"
    },
    {
      "commit": "47e6b1b5eef8ee99872f278f66bc498c4fcca0d8",
      "tree": "ef5a7c87b8dca433ea9707c1289ae7c8d2ba3787",
      "parents": [
        "735206f121cb2a11b3397870e6565178627e0aa3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 29 17:37:49 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 30 17:15:49 2010 -0800"
      },
      "message": "Support non-orientation aware keyboards and other devices.\n\nFixed a bug with dpad keys on external keyboards being rotated\naccording to the display orientation by adding a new input device\nconfiguration property called \"keyboard.orientationAware\".\n\nAdded a mechanism for overriding the key layout and key character\nmap in the input device configuration file using the new\n\"keyboard.layout\" and \"keyboard.characterMap\" properties.\n\nAlso added \"trackball.orientationAware\", \"touch.orientationAware\" and\n\"touch.deviceType\" configuration properties.\n\nRewrote the configuration property reading code in native code\nso that it can be used by EventHub and other components.\n\nAdded basic support for installable idc, kl, and kcm files\nin /data/system/devices.  However, there is no provision for\ncopying files there yet.\n\nDisabled long-press character pickers on full keyboards so that\nkey repeating works as expected.\n\nChange-Id: I1bd9f0c3d344421db444e7d271eb09bc8bab4791\n"
    },
    {
      "commit": "d49c347921cc2a3b2544803ea1916f80a564584c",
      "tree": "468d1a66e3ad9155f24c366ea2beda28fbf615a3",
      "parents": [
        "b416a71e56cdd50742eb897366a140775aa4cd61"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 25 15:02:36 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 25 15:02:36 2010 -0800"
      },
      "message": "Tweak key layouts.\n\nChange-Id: I19777ec4e5d0a5485cfe2a44a15e2b0680557d08\n"
    },
    {
      "commit": "061cf758841dfc972be3f0ec4857762fafe49aa6",
      "tree": "cc91f82982cc7e0c5af117b5ddc40560777b0bae",
      "parents": [
        "86e735375eb4f681ec8501e12df4730397b4331c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 18 20:52:43 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 23 15:26:48 2010 -0800"
      },
      "message": "Port Emulator keymaps.\n\nAlso added a validation tool for keymaps (not currently integrated\ninto the build system but getting there).\n\nThis change brings back Android.mk with the intent that it will\nbe used to validate keymaps in a later change.\n\nAdded some missing keys that are present on phones.\n\nBug: 3215210\nBug: 3225421\nChange-Id: Id817c6e2215164616942c51a42752915d9ceacd3\n"
    },
    {
      "commit": "6b53e8daa69cba1a2a5a7c95a01e37ce9c53226c",
      "tree": "db912c6cdf230ef7f2cf406c545b3bbae3f09ea2",
      "parents": [
        "a914f340ae5b267dc3ab36c1156c795b8fa18f5d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Nov 10 16:03:06 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 18 09:49:03 2010 -0800"
      },
      "message": "Added support for full PC-style keyboards.\n\nBREAKING CHANGE: Redesigned the key character map format to\naccomodate full keyboards with more comprehensive suite of modifiers.\nOld key character maps will not work anymore and must be updated.\nThe new format is plain text only and it not compiled to a binary\nfile (so the \"kcm\" tool will be removed in a subsequent check-in).\n\nAdded FULL keyboard type to support full PC-style keyboards.\n\nAdded SPECIAL_FUNCTION keyboard type to support special function\nkeypads that do not have any printable keys suitable for typing\nand only have keys like HOME and POWER\n\nAdded a special VIRTUAL_KEYBOARD device id convention that maps\nto a virtual keyboard with a fixed known layout.  This is designed\nto work around issues injecting input events on devices whose\nbuilt-in keyboard does not have a useful key character map (ie.\nwhen the built-in keyboard is a special function keyboard only.)\n\nModified several places where events were being synthesized\nto use the virtual keyboard.\n\nRemoved support for the \"qwerty\" default layout.\nThe new default layout is \"Generic\".  For the most part \"qwerty\"\nwas being used as a backstop in case the built-in keyboard did\nnot have a key character map (probably because it was a special\nfunction keypad) and the framework needed to be able to inject\nkey events anyways.  The latter issue is resolved by using the\nspecial VIRTUAL_KEYBOARD device instead of BUILT_IN_KEYBOARD.\n\nAdded the concept of a key modifier behavior so that\nMetaKeyKeyListener can distinguish between keyboards that use\nchorded vs. toggled modifiers.\n\nWrote more robust key layout and key character map parsers\nto enable support for new keyboard features and user installable\nkey maps.\n\nFixed a bug in InputReader generating key ups when keys\nare released out of sequence.\n\nUpdated tons of documentation.\n\nCurrently QwertyKeyListener is being used for full keyboards\nwith autotext and capitalization disabled.  This mostly works\nbut causes some problems with character pickers, etc.\nThese issues will be resolved in subsequent changes.\n\nChange-Id: Ica48f6097a551141c215bc0d2c6f7b3fb634d354\n"
    },
    {
      "commit": "b0418da0e7594a8c2164a46985c5f1993632e010",
      "tree": "f73f81b31796d4f75ef6530d1fb883fccc74031f",
      "parents": [
        "c68134b74016b82e0c49c47b89d93b2d0921cbe5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 01 15:24:01 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 02 17:31:39 2010 -0700"
      },
      "message": "Add plumbing for volume mute key.\n\nFull support for the volume mute key will be implemented in a\nlater change.\n\nBug: 2912307\nChange-Id: I98c27d6360f159c8b7447e04b45f442eff87b38a\n"
    },
    {
      "commit": "497a92cc5ba2176b8a8484b0a7da040eac0e887b",
      "tree": "2d9bd7a2ef24754fa83a36f440ee45fd8a32b9fb",
      "parents": [
        "cd9afc3722a1edebf0e6f7172627930052c81ce4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 12 17:55:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 16:00:07 2010 -0700"
      },
      "message": "Add keycodes and meta-key modifiers to support external keyboards.\n\nAdded new key maps for external keyboards.  These maps are intended to\nbe shared across devices by inheriting the \"keyboards.mk\" product\nmakefile as part of the device\u0027s product definition.\n\nOne of the trickier changes here was to unwind some code in\nMetaKeyKeyListener that assumed that only the low 8 bits of the meta key\nstate were actually used.  The new code abandons bitshifts in favor\nof simple conditionals that are probably easier to read anyways.\nThe special meta key state constants used by MetaKeyKeyListener\nare now (@hide) defined in KeyEvent now so as to make it clearer that they\nshare the same code space even if those codes are not valid for KeyEvents.\n\nThe EventHub now takes care of detecting the appropriate key layout\nmap and key character map when the device is added and sets system\nproperties accordingly.  This avoids having duplicate code in\nKeyCharacterMap to probe for the appropriate key character map\nalthough the current probing mechanism has been preserved for legacy\nreasons just in case.\n\nAdded support for tracking caps lock, num lock and scroll lock and\nturning their corresponding LEDs on and off as needed.\n\nThe key character map format will need to be updated to correctly support\nPC style external keyboard semantics related to modifier keys.\nThat will come in a later change so caps lock doesn\u0027t actually do\nanything right now except turn the shiny LEDs on and off...\n\nAdded a list of symbolic key names to KeyEvent and improved the toString()\noutput for debug diagnosis.  Having this list in a central place in the\nframework also allows us to remove it from Monkey so there is one less\nthing to maintain when we add new keycodes.\n\nBug: 2912307\nChange-Id: If8c25e8d50a7c29bbf5d663c94284f5f86de5da4\n"
    }
  ]
}
