Alien-GvaScript
view release on metacpan or search on metacpan
doc/html/KeyMap.html view on Meta::CPAN
</div>
<div class="TN_leaf">
<a class="TN_label" href="#DESCRIPTION">DESCRIPTION</a>
<div class="TN_content"></div>
</div>
<div class="TN_leaf">
<a class="TN_label" href="#WRITING_HANDLERS">WRITING HANDLERS</a>
<div class="TN_content"></div>
</div>
<div class="TN_leaf">
<a class="TN_label" href="#ATTACHING_TO_HTML_ELEMENTS">ATTACHING TO HTML ELEMENTS</a>
<div class="TN_content"></div>
</div>
<div class="TN_node">
<a class="TN_label" href="#METHODS">METHODS</a>
<div class="TN_content"><div class="TN_node">
<a class="TN_label" href="#KeyMap"><code>KeyMap</code></a>
<div class="TN_content"><div class="TN_leaf">
<a class="TN_label" href="#Single_key_rules">Single-key rules</a>
<div class="TN_content"></div>
</div>
<div class="TN_leaf">
<a class="TN_label" href="#Regex_rules">Regex rules</a>
<div class="TN_content"></div>
</div>
<div class="TN_leaf">
<a class="TN_label" href="#Antiregex_rules">Antiregex rules</a>
<div class="TN_content"></div>
</div>
</div>
</div>
<div class="TN_leaf">
<a class="TN_label" href="#eventHandler"><code>eventHandler</code></a>
<div class="TN_content"></div>
</div>
<div class="TN_leaf">
<a class="TN_label" href="#observe"><code>observe</code></a>
<div class="TN_content"></div>
</div>
<div class="TN_leaf">
<a class="TN_label" href="#rules"><code>rules</code></a>
<div class="TN_content"></div>
</div>
<div class="TN_leaf">
<a class="TN_label" href="#MapAllKeys"><code>MapAllKeys</code></a>
<div class="TN_content"></div>
</div>
<div class="TN_leaf">
<a class="TN_label" href="#Prefix"><code>Prefix</code></a>
<div class="TN_content"></div>
</div>
<div class="TN_leaf">
<a class="TN_label" href="#destroy"><code>destroy</code></a>
<div class="TN_content"></div>
</div>
</div>
</div>
</div>
</div>
<hr/>
</div>
</div>
<div class="TN_node" id="NAME">
<h2 class="TN_label">NAME</h2>
<div class="TN_content">
<p>Alien::GvaScript::KeyMap - Manage maps of handlers for key events</p>
</div>
</div>
<div class="TN_node" id="SYNOPSIS">
<h2 class="TN_label">SYNOPSIS</h2>
<div class="TN_content">
<pre> var rules = {
// attach handlers to specific keys
RETURN: function(event){doSomethingWith(event)},
C_DOWN: ctrlArrowDownHandler,
C_S_F7: ctrlShiftF7Handler,
// special rules using regular expressions
REGEX: [ ["", /^[0-9]$/, digitHandler ],
["C_", /^[aeiou]$/i, ctrlVowelHandler] ],
// use Ctrl-X as a prefix for another set of rules
C_X: KeyMap.Prefix({R: ctrlX_R_handler,
4: ctrlX_4_handler})
};
// create a keymap object
var aKeyMap = new KeyMap(rules);
// attach the corresponding handler to the keydown event (on document)
aKeyMap.observe("keydown");
// other way to attach : manually insert handler
document.onkeydown = aKeyMap.eventHandler({preventDefault: true,
ignoreShift : true});
// dynamically change the map
aKeyMap.rules.push(new_rules);
// idem, temporarily ignore all keys
aKeyMap.rules.push(KeyMap.MapAllKeys(function(){}));
// back to previous handling state
aKeyMap.rules.pop();</pre>
</div>
</div>
<div class="TN_node" id="DESCRIPTION">
<h2 class="TN_label">DESCRIPTION</h2>
<div class="TN_content">
<p>Provides an abstraction layer for associating handlers
with HTML key events, in a browser-independent way.</p>
<p>A <i>keymap</i> is a stack of collections of rules. Each rule has a
<i>key specification</i>
or a <i>regexp specification</i>, and a <i>handler</i> to be called whenever the
specification is met. The keymap object as a whole can then be
registered as a usual HTML event handler associated to some DOM
( run in 0.728 second using v1.01-cache-2.11-cpan-df04353d9ac )