)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ]
}
