Last active
March 31, 2025 15:48
-
-
Save masato3/564dc1e482fbdd4401eeb6d7222da983 to your computer and use it in GitHub Desktop.
Surfingkeys 設定ファイル
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// デフォルトキー | |
// https://github.com/brookhong/Surfingkeys/blob/75afdb75e3f226e9a7f2db542a279d924a8403ce/pages/default.js | |
// 特殊キー | |
// https://github.com/brookhong/Surfingkeys/blob/982942c780d46908484c9906e6d74ca3628ceb8d/content_scripts/keyboardUtils.js | |
// APIリスト | |
// https://github.com/brookhong/Surfingkeys/blob/master/docs/API.md | |
// feature_groups | |
// https://github.com/brookhong/Surfingkeys/blob/5940fb2cfac098c3347db9cbb6b47205d9c83641/src/content_scripts/ui/frontend.js | |
// mapkeyで記載しないとMiscにまとめられて表示される 気にしなくてもいい | |
// 0: Help | |
// 1: Mouse Click | |
// 2: Scroll Page / Element | |
// 3: Tabs | |
// 4: Page Navigation | |
// 5: Sessions | |
// 6: Search selected with | |
// 7: Clipboard | |
// 8: Omnibar | |
// 9: Visual Mode | |
// 10: vim-like marks | |
// 11: Settings | |
// 12: Chrome URLs | |
// 13: Proxy | |
// 14: Misc | |
// 15: Insert Mode | |
// 16: Lurk Mode | |
// ------------------------------------------------------------ | |
// Properties list | |
// https://github.com/brookhong/Surfingkeys?tab=readme-ov-file#properties-list | |
// ブラウザ履歴の最大数 | |
settings.omnibarHistoryCacheSize = 500; | |
// ビジュアルモードでテキストコピー後にノーマルモードへ | |
settings.modeAfterYank = 'Normal'; | |
// j/k のスクロール量 | |
settings.scrollStepSize = 100; | |
// 前/次 のページリンクに一致する正規表現 | |
settings.prevLinkRegex = /((<<|prev(ious)?)|<|‹|«|←|前[のへ]+)/i; | |
settings.nextLinkRegex = /((>>|next)|>|›|»|→|次[のへ]+)/i; | |
// ヒント表示位置 | |
settings.hintAlign = 'left'; | |
// ヒントキー表示中にShift押しながらヒントキーで新タブで開く | |
settings.hintShiftNonActive = true; | |
// Surfingkeys無効サイト | |
settings.blocklistPattern = /mail.google.com/i; | |
// 最近使用した順へ | |
settings.tabsMRUOrder = false; | |
settings.historyMUOrder = false; | |
// 入力ボックスからフォーカスが外れたときにカーソルがあった場所にカーソル | |
// Xでiで入力ボックスに切り替えるとiが入力され、ヒントキーも表示されるため | |
settings.cursorAtEndOfInput = false; | |
// ------------------------------------------------------------ | |
// other | |
// hit-a-hint hjklはヒントキー表示中の移動キー | |
// wで切り替えたときに表示すると、デフォルトキーが表示されるときがある | |
api.Hints.setCharacters('asdfwerxcvuionm'); | |
// ------------------------------------------------------------ | |
// Help | |
// PassThrough mode 1.5秒間だけSurfingkeys無効 | |
api.mapkey('p', '#0enter ephemeral PassThrough mode to temporarily suppress SurfingKeys', function() { | |
api.Normal.passThrough(1500); | |
}); | |
// ------------------------------------------------------------ | |
// Mouse Click | |
api.map('F', 'gf'); | |
api.map('Q', ';di'); | |
api.map('[', '[['); | |
api.map(']', ']]'); | |
// ------------------------------------------------------------ | |
// Scroll Page / Element | |
// 5回分の j/k | |
api.mapkey('<Ctrl-j>', '#2feedkeys 5j', function() { | |
api.Normal.feedkeys('5j'); | |
}); | |
api.mapkey('<Ctrl-k>', '#2feedkeys 5k', function() { | |
api.Normal.feedkeys('5k'); | |
}); | |
// ------------------------------------------------------------ | |
// Tabs | |
api.map('gxa', 'gx0'); | |
api.map('gxe', 'gx$'); | |
api.map('ga', 'g0'); | |
api.map('ge', 'g$'); | |
api.map('gh', 'gxt'); | |
api.map('gl', 'gxT'); | |
api.map('gp', '<Alt-p>'); | |
api.map('h', 'E'); | |
api.map('l', 'R'); | |
// タブが2個のときにEscでキャンセルすると、もう一個のタブに移動する | |
api.map('t', 'T'); | |
api.map('<', '<<'); | |
api.map('>', '>>'); | |
// タブ検索でomnibarを常に使用 | |
api.mapkey('T', '#3Choose a tab with omnibar', function() { | |
api.Front.openOmnibar({type: 'Tabs'}); | |
}); | |
// ------------------------------------------------------------ | |
// Page Navigation | |
api.map('g/', 'g?'); | |
api.map('gr', 'g#'); | |
api.map('u', 'gu'); | |
api.map(';b', '<Ctrl-6>'); | |
api.map('\\', 'gU'); | |
api.map('H', 'S'); | |
api.map('L', 'D'); | |
// ------------------------------------------------------------ | |
// Search selected with | |
api.removeSearchAlias('b'); | |
api.removeSearchAlias('d'); | |
api.removeSearchAlias('g'); | |
api.removeSearchAlias('w'); | |
// ------------------------------------------------------------ | |
// Clipboard | |
api.map('yn', 'yl'); | |
api.map('P', 'cc'); | |
// Markdown形式でサイトリンクコピー <> はエスケープ | |
api.mapkey('ymd', "#7Copy current page's link with markdown", function() { | |
const title = window.document.title.replace(/(<|>)/g, '\\$1'); | |
api.Clipboard.write(`[${title}](${location.href})`); | |
}); | |
// デコードしたサイトリンクコピー | |
api.mapkey('yd', "#7Copy current page's decoded link", function() { | |
api.Clipboard.write(decodeURI(location.href)); | |
}); | |
// ------------------------------------------------------------ | |
// Omnibar | |
api.map('gO', 'go'); | |
api.unmap('go'); | |
api.unmap('oi'); | |
api.map('b', 'ox'); | |
api.unmap('ox'); | |
api.map('B', 'oh'); | |
api.unmap('ob'); | |
api.map('oM', 'om'); | |
api.unmap('om'); | |
// ------------------------------------------------------------ | |
// Visual Mode | |
api.vunmap('gr'); | |
api.vunmap('q'); | |
// ------------------------------------------------------------ | |
// vim-like marks | |
// qmarks | |
// https://github.com/hushin/dotfiles/blob/master/docs/SurfingkeysSetting.js | |
const qmarksUrls = { | |
1: 'https://calendar.gameiroiro.com/animecd.php', | |
2: 'https://ascii2d.net/', | |
4: 'https://rakko.tools/tools/2/', | |
a: 'https://annict.com/legacy/sign_in', | |
A: 'https://www.google.com/analytics/web/?hl=ja', | |
bl: 'https://booklog.jp/login', | |
bs: 'https://bsky.app/', | |
c: 'https://cloudinary.com/users/login', | |
dm: 'https://mission.games.dmm.com/', | |
dw: 'http://www.dmm.com/rental/-/wishlist/', | |
e: 'https://ecnavi.jp/login/', | |
E: 'https://accounts.evernote.com/login', | |
fd: 'https://feedly.com/i/back?gate=%2Fhomepage', | |
fl: 'https://fewlight.net', | |
fw: 'https://fewlight.net/wish-list/', | |
gh: 'https://github.com/login', | |
gs: 'https://gist.github.com/auth/github?', | |
G: 'https://mail.google.com/', | |
i: 'https://jp.inoreader.com/ja/login', | |
j: 'https://translate.google.com/?hl=ja&sl=auto&tl=ja&op=translate', | |
k: 'https://kanji.sljfaq.org/drawj.html', | |
l: 'http://localhost:4000/', | |
m: 'https://monitor.macromill.com/airs/exec/monitorLoginAction.do', | |
M: 'https://ssl.pc.moppy.jp/login/', | |
n: 'https://app.netlify.com/', | |
pi: 'https://accounts.pixiv.net/login?', | |
pt: 'https://photos.google.com/login', | |
px: 'https://pex.jp/login?', | |
q: 'https://creazy.net/amazon_quick_affiliate#AmaQuick', | |
r: 'https://research-panel.jp/login/', | |
s: 'https://speedtest.gate02.ne.jp/', | |
S: 'https://search.google.com/search-console/manual-actions?hl=ja', | |
tm: 'https://tokimeki.blue/login', | |
tn: 'https://notes.toodledo.com/', | |
to: 'https://outlines.toodledo.com/#/dashboard', | |
vu: 'https://www.virustotal.com/gui/home/upload', | |
vU: 'https://www.virustotal.com/gui/home/url', | |
wg: 'https://gamerch.com/gakumasu/', | |
wp: 'https://gamewith.jp/pricone-re/', | |
x: 'https://x.com/login' | |
}; | |
const qmarksMapKey = (prefix, urls, newTab) => { | |
const openLink = (link, newTab) => () => { | |
api.RUNTIME('openLink', { | |
tab: { tabbed: newTab }, | |
url: link | |
}); | |
}; | |
for (const key in urls) { | |
api.mapkey(prefix + key, `#10qmark: ${urls[key]}`, openLink(urls[key], newTab)); | |
}; | |
}; | |
// gn/go キー qmarksUrlsに設定したキーと対のURLを 新タブ/現在のタブ で開く | |
api.unmap('gn'); | |
qmarksMapKey('gn', qmarksUrls, true); | |
qmarksMapKey('go', qmarksUrls, false); | |
api.map('M', 'm'); | |
api.unmap('m'); | |
// ------------------------------------------------------------ | |
// Chrome URLs | |
api.unmap('gc'); | |
api.unmap('gk'); | |
api.mapkey('gD', '#12Open Chrome dns cache', function() { | |
api.tabOpenLink('chrome://net-internals/#dns'); | |
}); | |
api.mapkey('gE', '#12Open Chrome Extensions', function() { | |
api.tabOpenLink('chrome://extensions/'); | |
}); | |
api.mapkey('gS', '#12Open Chrome Extensons shortcuts', function() { | |
api.tabOpenLink('chrome://extensions/shortcuts'); | |
}); | |
api.mapkey('gV', '#12Open Chrome version', function() { | |
api.tabOpenLink('chrome://version/'); | |
}); | |
// ------------------------------------------------------------ | |
// Proxy | |
const unmapsProxy = [ | |
'cp', ';pa', ';pb', ';pd', ';ps', ';pc', ';cp', ';ap' | |
]; | |
unmapsProxy.forEach(function(key) { | |
api.unmap(key); | |
}); | |
// ------------------------------------------------------------ | |
// Misc | |
// Amazon jp商品URL短く ただしdp以外のパターンがあるみたい | |
// 現在のタブをリロード | |
api.mapkey(';a', 'Amazon short url in current tab', function () { | |
const asin = document.getElementById('ASIN').value; | |
location.href='https://amazon.co.jp/dp/' + asin; | |
}); | |
// 日付と曜日と時刻を表示 数字は0詰め2桁 Escで非表示 | |
api.mapkey(';dd', 'display the date, day, and time', function () { | |
const padZero2 = (num) => String(num).padStart(2, '0'); | |
const today = new Date(); | |
const month = padZero2(today.getMonth() + 1); | |
const date = padZero2(today.getDate()); | |
const day = today.getDay(); | |
const dayList = ['日', '月', '火', '水', '木', '金', '土']; | |
const dayWeek = dayList[day]; | |
const hour = padZero2(today.getHours()); | |
const minutes = padZero2(today.getMinutes()); | |
const formatTodayDate = `${month}月${date}日(${dayWeek}) ${hour}:${minutes}`; | |
api.Front.showPopup(formatTodayDate); | |
}); | |
// Pocket ブックマークレット | |
// https://efe.me/posts/2025-03-02-pocket-universal-browser-extension/ | |
api.mapkey(';p', 'Pocket ブックマークレット', function () { | |
const url = encodeURIComponent(window.location.href); | |
const pocketUrl = 'https://getpocket.com/save?url=' + url; | |
api.tabOpenLink(pocketUrl); | |
}); | |
// Raindrop.io ブックマークレット | |
// https://help.raindrop.io/install-extension#bookmarklet-universal | |
// ブックマークのみ 自動で保存されるので間違えたら削除 | |
api.mapkey(';r', 'Raindrop ブックマークレット', function () { | |
const rspW = 450, rspH = 600, | |
rspL = parseInt((screen.width / 2) - (rspW / 2)), | |
rspT = parseInt((screen.height / 2) - (rspH / 2)); | |
window.open( | |
'https://app.raindrop.io/add?link=' + encodeURIComponent(location.href) + '&title=' + | |
encodeURIComponent(document.title), 'raindrop-save', 'width=' + rspW + ',height=' + rspH + | |
',resizable=yes,scrollbars=yes,status=false,location=false,toolbar=false,left=' + rspL + ',top=' + rspT | |
); | |
}); | |
// 表示中のサイトをGoogle翻訳 ウェブサイトで翻訳 auto-jp | |
api.mapkey(';t', 'Search Google翻訳 ウェブサイト', function() { | |
api.tabOpenLink(`https://translate.google.com/translate?hl=&sl=auto&tl=ja&u=${location.href}`); | |
}); | |
// 後で設定しないとうまくいかない | |
api.map('mf', 'cf'); | |
// ------------------------------------------------------------ | |
// 検索エンジン favicon取得できないサイトある | |
// Google 1年以内 | |
api.addSearchAlias('1', 'Google-1年以内', 'https://www.google.com/search?q={0}&lr=lang_ja&hl=ja&tbs=lr:lang_1ja,qdr:y'); | |
api.mapkey('o1', 'Search with alias Google 1年以内', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: '1'}); | |
}); | |
// 2ch(5ch)横断検索 - re.Find2ch | |
api.addSearchAlias('2', '2ch(5ch)横断検索-re.Find2ch', 'https://refind2ch.org/search?q='); | |
api.mapkey('o2', 'Search with alias 2ch(5ch)横断検索', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: '2'}); | |
}); | |
// Google 3ヶ月以内 | |
api.addSearchAlias('3', 'Google-3ヶ月以内', 'https://www.google.com/search?q={0}&lr=lang_ja&hl=ja&tbs=lr:lang_1ja,qdr:m3'); | |
api.mapkey('o3', 'Search with alias Google 3ヶ月以内', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: '3'}); | |
}); | |
// Google 6ヶ月以内 | |
api.addSearchAlias('6', 'Google-6ヶ月以内', 'https://www.google.com/search?q={0}&lr=lang_ja&hl=ja&tbs=lr:lang_1ja,qdr:m6'); | |
api.mapkey('o6', 'Search with alias Google 6ヶ月以内', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: '6'}); | |
}); | |
// annict | |
api.addSearchAlias('ac', 'annict', 'https://annict.com/search?q='); | |
api.mapkey('oac', 'Search with alias annict', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'ac'}); | |
}); | |
// ABEMA | |
api.addSearchAlias('am', 'ABEMA', 'https://abema.tv/search?q='); | |
api.mapkey('oam', 'Search with alias ABEMA', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'am'}); | |
}); | |
// aguse ウェブ検査したいURL貼り付け | |
api.addSearchAlias('as', 'aguse', 'https://www.aguse.jp/?url='); | |
api.mapkey('oas', 'Search with alias aguse URL', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'as'}); | |
}); | |
// Amazon jp | |
api.addSearchAlias('az', 'amazon', 'https://www.amazon.co.jp/s?k='); | |
api.mapkey('oaz', 'Search with alias amazon', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'az'}); | |
}); | |
// ブクログ 電子書籍(一般書) ストア横断検索 | |
api.addSearchAlias('ba', 'ブクログ-電子書籍(一般書)-ストア横断', 'https://booklog.jp/search?keyword={0}&service_id=202&index=All&sort=rank'); | |
api.mapkey('oba', 'Search with alias ブクログ 電子書籍(一般書) ストア横断検索', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'ba'}); | |
}); | |
// ブクログ 電子書籍(一般書) Kindle | |
api.addSearchAlias('bk', 'ブクログ-電子書籍(一般書)-Kindle', 'https://booklog.jp/search?keyword={0}&service_id=202&index=1&sort=rank'); | |
api.mapkey('obk', 'Search with alias ブクログ 電子書籍(一般書) Kindle', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'bk'}); | |
}); | |
// ブクログ 電子書籍(一般書) honto | |
api.addSearchAlias('bh', 'ブクログ-電子書籍(一般書)-honto', 'https://booklog.jp/search?keyword={0}&service_id=202&index=16&sort=rank'); | |
api.mapkey('obh', 'Search with alias ブクログ 電子書籍(一般書) honto', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'bh'}); | |
}); | |
// Bluesky | |
api.addSearchAlias('bs', 'Bluesky', 'https://bsky.app/search?q='); | |
api.mapkey('obs', 'Search with alias Bluesky', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'bs'}); | |
}); | |
// Bluesky my ログインしてから | |
api.addSearchAlias('bm', 'Bluesky-my', 'https://bsky.app/search?q=from%3Ame+'); | |
api.mapkey('obm', 'Search with alias Bluesky', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'bm'}); | |
}); | |
// Can I use | |
api.addSearchAlias('ci', 'Can-I-use', 'https://caniuse.com/?search='); | |
api.mapkey('oci', 'Search with alias Can I use', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'ci'}); | |
}); | |
// Chocolatey | |
api.addSearchAlias('cl', 'Chocolatey', 'https://chocolatey.org/packages?q='); | |
api.mapkey('ocl', 'Search with alias Chocolatey', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'cl'}); | |
}); | |
// Chrome ウェブストア | |
api.addSearchAlias('cw', 'chrome-ウェブストア', 'https://chromewebstore.google.com/search/'); | |
api.mapkey('ocw', 'Search with alias chrome ウェブストア', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'cw'}); | |
}); | |
// DuckDuckGo 1年以内 | |
api.addSearchAlias('d1', 'DuckDuckGo-1年以内', 'https://duckduckgo.com/?q={0}&df=y&ia=web'); | |
api.mapkey('od1', 'Search with alias DuckDuckGo 1年以内', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'd1'}); | |
}); | |
// DuckDuckGo | |
api.addSearchAlias('dd', 'DuckDuckGo', 'https://duckduckgo.com/?q={0}&ia=web'); | |
api.mapkey('odd', 'Search with alias DuckDuckGo', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'dd'}); | |
}); | |
// DMM 単品DVDレンタル | |
api.addSearchAlias('dD', 'DMM-単品DVDレンタル', 'https://www.dmm.com/rental/ppr/-/search/=/searchstr={0}/floor=dvd/limit=120/'); | |
api.mapkey('odD', 'Search with alias DMM 単品DVDレンタル', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'dD'}); | |
}); | |
// Google翻訳 auto-en | |
api.addSearchAlias('e', 'Google翻訳-auto-en', 'https://translate.google.com/?hl=ja&tab=TT&sl=auto&tl=en&text='); | |
api.mapkey('oe', 'Search with alias Google翻訳 auto-en', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'e'}); | |
}); | |
// Google 日本除外で1年以内 検索語によっては除外が難しい | |
api.addSearchAlias('E', 'Google日本除外-1年以内', 'https://www.google.com/search?q={0}&gl=us&hl=en&pws=0&tbs=qdr:y-lang_ja'); | |
api.mapkey('oE', 'Search with alias Google日本除外-1年以内', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'E'}); | |
}); | |
api.addSearchAlias('gg', 'Google', 'https://www.google.com/search?q='); | |
api.mapkey('ogg', 'Search with alias Google', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'gg'}); | |
}); | |
// Gist my | |
api.addSearchAlias('gm', 'Gist-my', 'https://gist.github.com/search?q=user%3Amasato3+{0}&ref=searchresults'); | |
api.mapkey('ogm', 'Search with alias Gist my', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'gm'}); | |
}); | |
// grep.app | |
api.addSearchAlias('gp', 'grep.app', 'https://grep.app/search?q='); | |
api.mapkey('ogp', 'Search with alias grep.app', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'gp'}); | |
}); | |
// GitHub repositories | |
api.addSearchAlias('gr', 'GitHub-repositories', 'https://github.com/search?q={0}&type=repositories'); | |
api.mapkey('ogr', 'Search with alias GitHub repositories', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'gr'}); | |
}); | |
// Gist | |
api.addSearchAlias('gs', 'Gist', 'https://gist.github.com/search?utf8=%E2%9C%93&q='); | |
api.mapkey('ogs', 'Search with alias Gist', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'gs'}); | |
}); | |
// IT用語辞典 e-Words | |
api.addSearchAlias('i', 'IT用語辞典-e-Words', 'https://e-words.jp/search?q='); | |
api.mapkey('oi', 'Search with alias IT用語辞典 e-Words', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'i'}); | |
}); | |
// Google翻訳 auto-jp | |
api.addSearchAlias('j', 'Google翻訳-auto-jp', 'https://translate.google.com/?hl=ja&sl=auto&tl=ja&text='); | |
api.mapkey('oj', 'Search with alias Google翻訳 auto-jp', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'j'}); | |
}); | |
// JVN iPedia - 脆弱性対策情報データベース | |
api.addSearchAlias('J', 'JVN-Pedia', 'https://jvndb.jvn.jp/search/index.php?mode=_vulnerability_search_IA_VulnSearch&lang=ja&useSynonym=1&keyword='); | |
api.mapkey('oJ', 'Search with alias JVN iPedia', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'J'}); | |
}); | |
// 価格.com 日本語文字化け | |
api.addSearchAlias('k', '価格.com', 'http://kakaku.com/search_results/'); | |
api.mapkey('ok', 'Search with alias 価格.com', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'k'}); | |
}); | |
// MDN Web Docs | |
api.addSearchAlias('mw', 'MDN-Web-Docs', 'https://developer.mozilla.org/ja/search?q='); | |
api.mapkey('omw', 'Search with alias MDN Web Docs', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'mw'}); | |
}); | |
// Neovim Googleサイト内検索 | |
api.addSearchAlias('n', 'Neovim-Googleサイト内検索', 'https://www.google.com/search?q=site:neovim.io%20'); | |
api.mapkey('on', 'Search with alias Neovim Googleサイト内検索', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'n'}); | |
}); | |
// goo辞書 all | |
api.addSearchAlias('o', 'goo辞書-all', 'https://dictionary.goo.ne.jp/srch/all/{0}/m0u/'); | |
api.mapkey('oo', 'Search with alias goo辞書 all', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'o'}); | |
}); | |
// PortableApps | |
api.addSearchAlias('pa', 'PortableApps', 'https://portableapps.com/search/node/'); | |
api.mapkey('opa', 'Search with alias PortableApps', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'pa'}); | |
}); | |
// ピクシブ百科事典 | |
api.addSearchAlias('pd', 'ピクシブ百科事典', 'https://dic.pixiv.net/search?query='); | |
api.mapkey('opd', 'Search with alias ピクシブ百科事典', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'pd'}); | |
}); | |
// pixiv | |
api.addSearchAlias('pi', 'pixiv', 'https://www.pixiv.net/tags/{0}/artworks?s_mode=s_tag'); | |
api.mapkey('opi', 'Search with alias pixiv', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'pi'}); | |
}); | |
// Python 言語リファレンス | |
api.addSearchAlias('pp', 'python-言語リファレンス', 'https://docs.python.org/ja/3/search.html?q='); | |
api.mapkey('opp', 'Search with alias python-言語リファレンス', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'pp'}); | |
}); | |
// Google Play store アプリ | |
api.addSearchAlias('ps', 'Google-Play-store-アプリ', 'https://play.google.com/store/search?q={0}&c=apps'); | |
api.mapkey('ops', 'Search with alias Google Play store アプリ', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'ps'}); | |
}); | |
// Qiita 新着順 | |
api.addSearchAlias('q', 'Qiita-新着', 'https://qiita.com/search?q={0}&sort=created'); | |
api.mapkey('oq', 'Search with alias Qiita 新着', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'q'}); | |
}); | |
// Raindrop.io | |
api.addSearchAlias('r', 'Raindrop', 'https://app.raindrop.io/my/0/', 'https://raindrop.io/favicon.ico'); | |
api.mapkey('or', 'Search with alias Raindrop.io', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'r'}); | |
}); | |
// Yahoo!リアルタイム検索 | |
api.addSearchAlias('R', 'Yahoo!リアルタイム検索', 'https://search.yahoo.co.jp/realtime/search?p={0}&ei=UTF-8&ifr=tp_sc'); | |
api.mapkey('oR', 'Search with alias Yahoo!リアルタイム検索', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'R'}); | |
}); | |
// Googleサイト内検索 hostname | |
api.addSearchAlias('s', 'Googleサイト内検索 hostname', `https://www.google.com/search?q=site:${window.location.hostname}%20`); | |
api.mapkey('os', 'Search with alias Googleサイト内検索 hostname', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 's'}); | |
}); | |
// Google翻訳 ウェブサイト auto-jp 翻訳したいURL貼り付け | |
api.addSearchAlias('tw', 'Google翻訳-ウェブサイト-auto-jp', 'https://translate.google.com/translate?hl=&sl=auto&tl=ja&u='); | |
api.mapkey('otw', 'Search with alias Google翻訳 ウェブサイト auto-jp URL', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'tw'}); | |
}); | |
// X user 最新 | |
api.addSearchAlias('x', 'X-user-最新', 'https://x.com/search?q=from:{0}&f=live'); | |
api.mapkey('ox', 'Search with alias X user 最新', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'x'}); | |
}); | |
// Wikipedia en | |
api.addSearchAlias('we', 'wikipedia-en', 'https://en.wikipedia.org/wiki/'); | |
api.mapkey('owe', 'Search with alias wikipedia en', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'we'}); | |
}); | |
// Wikipedia jp | |
api.addSearchAlias('wj', 'wikipedia-jp', 'https://ja.wikipedia.org/wiki/'); | |
api.mapkey('owj', 'Search with alias wikipedia', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'wj'}); | |
}); | |
// プリコネ攻略wiki|プリンセスコネクト!Re:Dive解説 - ゲームウィズ | |
api.addSearchAlias('wp', 'プリコネ攻略wiki', 'https://gamewith.jp/pricone-re/search/results?query='); | |
api.mapkey('owp', 'Search with alias プリコネ攻略wiki', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'wp'}); | |
}); | |
// zenn | |
api.addSearchAlias('z', 'zenn', 'https://zenn.dev/search?q='); | |
api.mapkey('oz', 'Search with alias zenn', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: 'z'}); | |
}); | |
// 1Screen | |
api.addSearchAlias('!', '1Screen', 'https://1screen.ciatr.jp/search?q='); | |
api.mapkey('o!', 'Search with alias 1Screen', function() { | |
api.Front.openOmnibar({type: 'SearchEngine', extra: '!'}); | |
}); | |
// 検索して検索欄が表示中のときに他の検索エンジンでの再検索 | |
// S > (入力要素が複数あるときは選択後に)検索エンジンで設定したaddSearchAliasのkey入力 | |
api.mapkey('S', 'Search with alias feedkeys yis', function() { | |
api.Normal.feedkeys('yis'); | |
}); | |
// ------------------------------------------------------------ | |
// Insert Mode | |
// 絵文字off | |
api.iunmap(':'); | |
// ------------------------------------------------------------ | |
// 指定サイトのキー | |
// サイトキーにfが割り当てられているので他に割り当て | |
api.map('<Alt-f>', 'f', /abema.tv|jp.inoreader.com|www.youtube.com/); | |
// サイトキーなどで j/k が割り当てられていると設定した Ctrl- j/k が動かないので置き換え | |
if ( | |
/jp.inoreader.com|www.pixiv.net|notes.toodledo.com|outlines.toodledo.com|www.youtube.com|x.com/.test( | |
window.location.hostname | |
) | |
) { | |
api.map('<Ctrl-j>', 'd'); | |
api.map('<Ctrl-k>', 'e'); | |
} | |
// ABEMA | |
api.unmap('f', /abema.tv/); | |
// Feedly gaなどはgとaみたいに2個unmapする必要あり | |
const unmapsFeedly = [ | |
'?', 'g', 'a', '/', 'r', 'j', 'k', 'n', 'p', 'o', 'v', 's', 'z' | |
]; | |
unmapsFeedly.forEach(function(key) { | |
api.unmap(key, /feedly.com/); | |
}); | |
// pixiv cockpit for pixiv使用中 | |
const unmapsPixiv = [ | |
'?', 'p', 'i', 'm', 'j', 'k', 'n' | |
]; | |
unmapsPixiv.forEach(function (key) { | |
api.unmap(key, /www.pixiv.net/); | |
}); | |
// Toggl ?が効かなくなることがある | |
const unmapsToggl = [ | |
'?', 'c', 'm', 's', 'v', 'n', '<Ctrl-k>' | |
]; | |
unmapsToggl.forEach(function (key) { | |
api.unmap(key, /toggl.com/); | |
}); | |
// TOKIMEKI | |
const unmapsTokimeki = [ | |
'r', 'd' | |
]; | |
unmapsTokimeki.forEach(function (key) { | |
api.unmap(key, /tokimeki.blue/); | |
}); | |
// Toodledo Task qは一度クリック後などでないと動かない | |
const unmapsToodledoTask = [ | |
'?', 'i', 'c', 'q', 'e', 'd', 'w', 'z', 'x', 's', 'M', 's' | |
]; | |
unmapsToodledoTask.forEach(function (key) { | |
api.unmap(key, /www.toodledo.com/); | |
}); | |
// Toodledo Notes eは一度クリック後でないと正常に動かない | |
const unmapsToodledoNotes = [ | |
'e', 'j', 'k', 'n' | |
]; | |
unmapsToodledoNotes.forEach(function (key) { | |
api.unmap(key, /notes.toodledo.com/); | |
}); | |
// Toodledo Outlines c/a は一度クリック後でないと正常に動かない | |
const unmapsToodledoOutlines = [ | |
'c', 'a', 'j', 'k', 'x' | |
]; | |
unmapsToodledoOutlines.forEach(function (key) { | |
api.unmap(key, /outlines.toodledo.com/); | |
}); | |
// YouTube unmapで数字は無効にできない 使うときはPassThrough modeから | |
const unmapsYoutube = [ | |
'?', '.', 'c', 'i', 'f', 'j', 'k', 'l', 't', '<', '>', ',' | |
]; | |
unmapsYoutube.forEach(function(key) { | |
api.unmap(key, /www.youtube.com/); | |
}); | |
// X | |
const unmapsX = [ | |
'?', 'j', 'k', 't' | |
]; | |
unmapsX.forEach(function(key) { | |
api.unmap(key, /x.com/); | |
}); | |
// ------------------------------------------------------------ | |
// 指定サイトでSurfingkeysの一部キー優先 | |
// inoreader | |
api.unmapAllExcept( | |
[ | |
'p', 'i', 'I', '<Alt-f>', 'q', 'F', '<Ctrl-j>', '<Ctrl-k>', 'X', 'h', 'l', 't', '<', '>', 'T', 'w', 'L', 'H', 'saz', 's1', | |
'sgg', 'si', 'so', 'sR', 'swj', 'b', 'B', "'" | |
], | |
/jp.inoreader.com/ | |
); | |
// ------------------------------------------------------------ | |
// style | |
// theme | |
settings.theme = ` | |
.sk_theme { | |
font-family: sans-serif; | |
font-size: 16px; | |
} | |
.sk_theme #sk_omnibarSearchResult>ul>li.focused { | |
background: #cddef9 !important; | |
} | |
.sk_theme #sk_omnibarSearchResult>ul>li:nth-child(odd) { | |
background: #f7f7f7; | |
} | |
#sk_tabs .sk_tab_hint { | |
font-family: monospace; | |
font-size: 16px; | |
font-weight: normal; | |
text-transform: lowercase; | |
} | |
`; | |
// Link Hints | |
api.Hints.style (` | |
font-family: monospace; | |
font-size: 16px; | |
font-weight: normal; | |
text-transform: lowercase; | |
`); | |
// Text Hints | |
api.Hints.style (` | |
font-family: monospace; | |
font-size: 16px; | |
text-transform: lowercase; | |
`, | |
'text' | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment