2 * (C) Copyright 2012 John J. Foerch
4 * Use, modification, and distribution are subject to the terms specified in the
8 require("content-buffer.js");
10 define_keymap("duckduckgo_keymap", $display_name = "duckduckgo");
11 define_keymap("duckduckgo_anchor_keymap", $display_name = "duckduckgo-anchor");
12 define_keymap("duckduckgo_select_keymap", $display_name = "duckduckgo-select");
14 function duckduckgo_call_command (buffer, command) {
15 var s = Components.utils.Sandbox(buffer.top_frame);
16 s.window = buffer.top_frame.wrappedJSObject;
17 s.document = buffer.document.wrappedJSObject;
18 Components.utils.evalInSandbox("window."+command+"()", s);
21 function duckduckgo_command (command) {
23 duckduckgo_call_command(I.buffer, command);
27 // The bindings were found in <http://duckduckgo.com/d676.js>. Each one
28 // corresponds to a call to 'new YAHOO.util.KeyListener(...)', from which
29 // the keycode and function name can be gotten.
31 interactive("duckduckgo-down",
32 "Calls DuckDuckGo command.",
33 duckduckgo_command("nkda"));
35 interactive("duckduckgo-up",
36 "Calls DuckDuckGo command.",
37 duckduckgo_command("nkua"));
39 interactive("duckduckgo-focus-search",
40 "Calls DuckDuckGo command.",
41 duckduckgo_command("nks"));
43 interactive("duckduckgo-related-topics",
44 "Calls DuckDuckGo command.",
45 duckduckgo_command("nkr"));
47 interactive("duckduckgo-main-results",
48 "Calls DuckDuckGo command.",
49 duckduckgo_command("nkm"));
51 interactive("duckduckgo-bang-dropdown",
52 "Calls DuckDuckGo command.",
53 duckduckgo_command("nkex"));
55 interactive("duckduckgo-domain-search",
56 "Calls DuckDuckGo command.",
57 duckduckgo_command("nkd"));
59 interactive("duckduckgo-follow-current",
60 "Calls DuckDuckGo command.",
61 alternates(duckduckgo_command("nke"),
62 duckduckgo_command("nkn")));
64 define_key(duckduckgo_keymap, "j", "duckduckgo-down");
65 define_key(duckduckgo_keymap, "k", "duckduckgo-up");
66 define_key(duckduckgo_keymap, "down", "duckduckgo-down");
67 define_key(duckduckgo_keymap, "up", "duckduckgo-up");
68 define_key(duckduckgo_keymap, "r", "duckduckgo-related-topics");
69 define_key(duckduckgo_keymap, "m", "duckduckgo-main-results");
70 define_key(duckduckgo_keymap, "/", "duckduckgo-focus-search");
71 define_key(duckduckgo_keymap, "!", "duckduckgo-bang-dropdown");
72 define_key(duckduckgo_keymap, "d", "duckduckgo-domain-search");
73 define_key(duckduckgo_select_keymap, "return", "duckduckgo-follow-current");
75 define_keymaps_page_mode("duckduckgo-mode",
76 build_url_regexp($domain = "duckduckgo"),
77 { normal: duckduckgo_keymap,
78 anchor: duckduckgo_anchor_keymap,
79 select: duckduckgo_select_keymap },
80 $display_name = "DuckDuckGo");
82 page_mode_activate(duckduckgo_mode);
84 provide("duckduckgo");