Cheet.js
easy easter eggs (konami code, etc) for your website.
Install / Use
/learn @namuol/Cheet.jsREADME
cheet.js

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)
Install
Easy CDN
<script src="//cdn.rawgit.com/namuol/cheet.js/master/cheet.min.js" type="text/javascript"></script>
(Awesome free OSS hosting provided by @rgrove via rawgit)
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
<a name='api_cheet'></a>
cheet(sequence, done | {next,fail,done})
Map a sequence of keypresses to a callback. This can be called multiple times.
<a name='api_cheet_sequence'></a>
sequence(String)A string representation of a sequence of key names.
Each keyname must be separated by a single space.
<a name='api_cheet_done'></a>
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.<a name='api_cheet_fail'></a>
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.<a name='api_cheet_next'></a>
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.
<a name='api_done'></a>
cheet.done(callback)
Set a global callback that executes whenever any mapped sequence is completed successfully.
<a name='api_done_callback'></a>
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.
<a name='api_next'></a>
cheet.next(callback)
Set a global callback that executes whenever any mapped sequence progresses.
<a name='api_next_callback'></a>
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.
<a name='api_fail'></a>
cheet.fail(callback)
Set a global callback that executes whenever any in-progress sequence is broken.
<a name='api_fail_callback'></a>
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.
<a name='api_disable'></a>
cheet.disable(sequence)
Disable a previously-mapped sequence.
<a name='api_disable_sequence'></a>
sequence(String)The same string you used to map the callback when using
cheet(seq, ...).
<a name='api_reset'></a>
cheet.reset(sequence)
Resets a sequence that may or may not be in progress.
This will not cause fail callbacks to fire, but will effectively
cancel the sequence.
<a name='api_reset_sequence'></a>
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
left|L|←up|U|↑right|R|→down|D|↓
Alphanumeric
0-9(main number keys)a-z
Misc
backspacetabenter|returnshift|⇧control|ctrl|⌃alt|option|⌥command|⌘pausecapslockescspacepageuppagedownendhomeinsertdeleteequal|=comma|,minus|-period|.
Keypad
kp_0-kp_9kp_multiplykp_pluskp_minuskp_decimalkp_divide
Function keys
f1-f12
License
MIT
Testing
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.
