diff --git a/README.md b/README.md
index a309fbba52..c6ab088f34 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,7 @@ Complete
* [Foundation](http://foundation.zurb.com/) (by [Boris Yankov](https://github.com/borisyankov))
* [GoogleMaps](https://developers.google.com/maps/) (by [Esben Nepper](https://github.com/eNepper))
* [Handlebars](http://handlebarsjs.com/) (by [Boris Yankov](https://github.com/borisyankov))
+* [Hammer.js](http://eightmedia.github.com/hammer.js/) (by [Boris Yankov](https://github.com/borisyankov))
* [Highcharts](http://www.highcharts.com/) (by [damianog](https://github.com/damianog))
* [History.js](https://github.com/balupton/History.js/) (by [Boris Yankov](https://github.com/borisyankov))
* [Humane.js](http://wavded.github.com/humane-js/) (by [John Vrbanac](https://github.com/jmvrbanac))
diff --git a/hammerjs/hammerjs-0.6.d.ts b/hammerjs/hammerjs-0.6.d.ts
new file mode 100644
index 0000000000..5cdb87c7c8
--- /dev/null
+++ b/hammerjs/hammerjs-0.6.d.ts
@@ -0,0 +1,73 @@
+// Type definitions for Hammer.js 0.6
+// Project: http://eightmedia.github.com/hammer.js/
+// Definitions by: Boris Yankov
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+
+///
+
+interface HammerOptions {
+ prevent_default?: bool;
+ css_hacks?: bool;
+ swipe?: bool;
+ swipe_time?: number;
+ swipe_min_distance?: number;
+ drag?: bool;
+ drag_vertical?: bool;
+ drag_horizontal?: bool;
+ drag_min_distance?: number;
+ transform?: bool;
+ scale_treshold?: number;
+ rotation_treshold?: number;
+ tap?: bool;
+ tap_double?: bool;
+ tap_max_interval?: number;
+ tap_max_distance?: number;
+ tap_double_distance?: number;
+ hold?: bool;
+ hold_timeout?: number;
+}
+
+interface HammerPoint {
+ x: number;
+ y: number;
+}
+
+interface HammerEvent {
+ originalEvent: Event;
+ position: HammerPoint;
+ touches: HammerPoint[];
+}
+
+interface HammertTransformEvent extends HammerEvent {
+ scale: number;
+ rotation: number;
+}
+
+interface HammerDirectionEvent extends HammerEvent {
+ angle: number;
+ direction: string;
+ distance: number;
+ distanceX: number;
+ distanceY: number;
+}
+
+class Hammer {
+ constructor (element: any, options?: HammerOptions);
+
+ ondragstart: (event: HammerDirectionEvent) => void;
+ ondrag: (event: HammerDirectionEvent) => void;
+ ondragend: (event: HammerDirectionEvent) => void;
+ onswipe: (event: HammerDirectionEvent) => void;
+ ontap: (event: HammerEvent) => void;
+ ondoubletap: (event: HammerEvent) => void;
+ onhold: (event: HammerEvent) => void;
+ ontransformstart: (event: HammertTransformEvent) => void;
+ ontransform: (event: HammertTransformEvent) => void;
+ ontransformend: (event: HammertTransformEvent) => void;
+ onrelease: (event: HammerEvent) => void;
+}
+
+interface JQuery {
+ hammer(options?: HammerOptions): JQuery;
+}
\ No newline at end of file
diff --git a/hammerjs/hammerjs-tests.ts b/hammerjs/hammerjs-tests.ts
new file mode 100644
index 0000000000..db1bb053a3
--- /dev/null
+++ b/hammerjs/hammerjs-tests.ts
@@ -0,0 +1,32 @@
+///
+///
+
+var hammer = new Hammer(document.getElementById("container"));
+hammer.ondragstart = function (ev) { };
+hammer.ondrag = function (ev) { };
+hammer.ondragend = function (ev) { };
+hammer.onswipe = function (ev) { };
+
+hammer.ontap = function (ev) { };
+hammer.ondoubletap = function (ev) { };
+hammer.onhold = function (ev) { };
+
+hammer.ontransformstart = function (ev) { };
+hammer.ontransform = function (ev) { };
+hammer.ontransformend = function (ev) { };
+
+hammer.onrelease = function (ev) { };
+
+$("#element")
+ .hammer({
+ // Options
+ })
+ .bind("tap", function (ev) {
+ console.log(ev);
+ });
+
+$("#container").hammer({
+ prevent_default: false,
+ drag_vertical: false
+}).bind("hold tap doubletap transformstart transform transformend dragstart drag dragend release swipe", function (ev) {
+});
\ No newline at end of file