try typing "cheet.js"

cheet.js

easy easter eggs (konami code, etc) for your site.

View the Project on GitHubnamuol/cheet.js

cheet.js Build Status

easy easter eggs in the browser

cheet('↑ ↑ ↓ ↓ ← → ← → b a', function () {
  alert('Voilà!');
});
cheet('i d d q d', function () {
  alert('god mode enabled');
});
cheet('o n e a t a t i m e', {
  next: function (str, key, num, seq) {
    console.log('key pressed: ' + key);
    console.log('progress: ' + num / seq.length);
    console.log('seq: ' + seq.join(' '));
  },

  fail: function () {
    console.log('sequence failed');
  },

  done: function () {
    console.log('+30 lives ;)');
  }
});
cheet('o n c e', function () {
  console.log('This will only fire once.');
  cheet.disable('o n c e');
});
var sequences = {
  cross: 'up down left right',
  circle: 'left up right down'
};

cheet(sequences.cross);
cheet(sequences.circle);

cheet.done(function (seq) {
  if (seq === sequences.cross) {
    console.log('cross!');
  } else {
    console.log('circle!');
  }
});

Demo

My personal site uses cheet.js (Try the Konami Code)

All the examples you see above are live on this page.

Install

bower

bower install cheet.js

<script src="/bower_components/cheet.js/cheet.js" type="text/javascript"></script>

component

component install namuol/cheet.js

<script src="/components/namuol-cheet.js/cheet.js" type="text/javascript"></script>

API

cheet(sequence, done | {next,fail,done})

Map a sequence of keypresses to a callback. This can be called multiple times.

sequence (String)

A string representation of a sequence of key names.

Each keyname must be separated by a single space.

done(str, seq) (callback)

A callback to execute each time the sequence is correctly pressed.

Arguments:

  • str - The string representation of the sequence that completed.
  • seq - An array of key names representing the sequence that completed.

fail(str, seq) (callback)

A callback to execute each time a sequence's progress is broken.

Arguments:

  • str - The string representation of the sequence that failed.
  • seq - An array of key names representing the sequence that was pressed.

next(str, key, num, seq) (callback)

A callback to execute each time a correct key in the sequence is pressed in order.

Arguments:

  • str - The string representation of the sequence that is in progress.
  • key - The name of the key that was just pressed.
  • num - A number representing the current progress of the sequence. (starts at 0)
  • seq - An array of key names representing the sequence that is in progress.

cheet.done(callback)

Set a global callback that executes whenever any mapped sequence is completed successfully.

callback(str, seq) (callback)

A callback to execute each time any sequence is correctly pressed.

Arguments:

  • str - The string representation of the sequence that completed.
  • seq - An array of key names representing the sequence that completed.

cheet.next(callback)

Set a global callback that executes whenever any mapped sequence progresses.

callback(str, key, num, seq) (callback)

A callback to execute each time a correct key in any sequence is pressed in order.

Arguments:

  • str - The string representation of the sequence that is in progress.
  • key - The name of the key that was just pressed.
  • num - A number representing the current progress of the sequence. (starts at 0)
  • seq - An array of key names representing the sequence that is in progress.

cheet.fail(callback)

Set a global callback that executes whenever any in-progress sequence is broken.

callback(str, seq) (callback)

A callback to execute each time any sequence's progress is broken.

Arguments:

  • str - The string representation of the sequence that failed.
  • seq - An array of key names representing the sequence that was pressed.

cheet.disable(sequence)

Disable a previously-mapped sequence.

sequence (String)

The same string you used to map the callback when using cheet(seq, ...).

Available Key Names

NOTE: Key names are case-sensitive

Directionals

Alphanumeric

Misc

Keypad

Function keys

License

MIT

Testing Build Status

From the cheet.js' root directory:

grunt test

You can also run the tests directly in your browser:

grunt test.open

Or just view them online.

Acknowledgements

Special thanks to Guilherme J. Tramontina for writing the delicious mocha/chai test suite.


cheet.js was just a fun little one-night project I made to put easter eggs on my personal site.

If you're looking for something more useful/serious, check out Mousetrap.