)]}'
{
  "log": [
    {
      "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": "287bf98077b4529264a3a262ef9b6f5c1ef67cbc",
      "tree": "f4236155bcddc063b986e748c0f7d0859332c068",
      "parents": [
        "212db7d3f8ce5297f4a556234a9c0675c697f1cf"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Apr 15 10:58:48 2010 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Apr 15 10:58:48 2010 -0700"
      },
      "message": "add execution permission to \"input\" script\n\nAlthough when building system image, \"input\" script will be given execution\npermission, adb sync will push a version without x onto device from build\ntree. Refer to frameworks/base/cmds/svc/svc, which has execution bit set.\n\nChange-Id: I3e5bf0ce1a65133cb259d5c78456d36783c06b80\n"
    },
    {
      "commit": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
