browser-next-form-field: skip non-visible elements
[conkeror.git] / modules / global-overlay-keymap.js
blob2b2e3ba196bb94b66eb7a1389430f6d959d78c56
1 /**
2  * (C) Copyright 2008 Jeremy Maitin-Shepard
3  * (C) Copyright 2008 John J. Foerch
4  *
5  * Use, modification, and distribution are subject to the terms specified in the
6  * COPYING file.
7 **/
9 require("keyboard.js");
11 var global_overlay_keymap = new keymap();
13 function global_overlay_keymap_handler(window, ctx, true_event) {
14     var binding = lookup_key_binding(global_overlay_keymap, ctx.combo, ctx.event);
15     if (!binding)
16         return false;
17     if (!binding.fallthrough)
18     {
19         true_event.preventDefault();
20         true_event.stopPropagation();
21     }
23     if (binding.command)
24         call_interactively(ctx, binding.command);
26     return true;
29 define_global_mode("global_overlay_keymap_mode",
30                    function () {
31                        add_hook("keypress_hook", global_overlay_keymap_handler);
32                    },
33                    function () {
34                        remove_hook("keypress_hook", global_overlay_keymap_handler);
35                    });
37 function define_key_alias (typed_key, generated_key) {
38     var name = "generate-key-event:"+generated_key;
39     interactive(
40         name,
41         "Generate a fake key press event for the key: "+generated_key,
42         function (I) {
43             send_key_as_event(
44                 I.window,
45                 I.buffer.focused_element,
46                 generated_key);
47         });
48     define_key(global_overlay_keymap, typed_key, name);
49     global_overlay_keymap_mode(true);
51 ignore_function_for_get_caller_source_code_reference("define_key_alias");
54 function define_sticky_modifier (typed_key, modifiers) {
55     var name = "sticky-modifiers:"+modifiers;
56     interactive(name, "Set sticky modifiers: "+modifiers,
57                 function (I) {
58                     I.sticky_modifiers = modifiers;
59                 });
60     define_key(global_overlay_keymap, typed_key, name);
61     global_overlay_keymap_mode(true);
63 ignore_function_for_get_caller_source_code_reference("define_sticky_modifier");