Add initial OpenSearch search engine support
[conkeror.git] / modules / global-overlay-keymap.js
blobf483f314259df67bf800dccede77eb825d659ee4
1 require("keyboard.js");
3 var global_overlay_keymap = new keymap();
5 function global_overlay_keymap_handler(window, ctx, true_event) {
6     var binding = lookup_key_binding(global_overlay_keymap, ctx.event);
7     if (!binding)
8         return false;
9     if (!binding.fallthrough)
10     {
11         true_event.preventDefault();
12         true_event.stopPropagation();
13     }
15     if (binding.command)
16         call_interactively(ctx, binding.command);
18     return true;
21 define_global_mode("global_overlay_keymap_mode",
22                    function () {
23                        add_hook("key_press_hook", global_overlay_keymap_handler);
24                    },
25                    function () {
26                        remove_hook("key_press_hook", global_overlay_keymap_handler);
27                    });
29 function define_key_alias(typed_key, generated_key) {
30     typed_key = kbd(typed_key);
31     generated_key = kbd(generated_key);
32     var formatted = format_key_spec(generated_key[0]);
33     var name = "generate-key-event:" + formatted;
34     interactive(name,
35                 "Generate a fake key press event for the key: " + formatted,
36                 function (I) {
37                     send_key_as_event(I.window, I.buffer.focused_element, generated_key);
38                 });
39     define_key(global_overlay_keymap, typed_key, name);
40     global_overlay_keymap_mode(true);
42 ignore_function_for_get_caller_source_code_reference("define_key_alias");
45 function define_sticky_modifier(typed_key, modifiers) {
46     typed_key = kbd(typed_key);
47     var mod_str = "";
48     for (var i = 0; i < modifier_names.length; ++i)
49     {
50         if (modifiers & (1 << i)) {
51             if (mod_str.length > 0)
52                 mod_str = mod_str + "-";
53             mod_str = mod_str + modifier_names[i];
54         }
55     }
56     if (mod_str.length == 0)
57         throw new Error("Invalid modifiers: " + modifiers);
58     var name = "sticky-modifiers:" + mod_str;
59     interactive(name, "Set sticky modifiers: " + mod_str, function (I) {
60         I.sticky_modifiers |= modifiers;
61     });
62     define_key(global_overlay_keymap, typed_key, name);
63     global_overlay_keymap_mode(true);
65 ignore_function_for_get_caller_source_code_reference("define_sticky_modifier");