Giter Club home page Giter Club logo

keysnail's Introduction

KeySnail

For those who misses Emacs keys on Linux (both in Firefox and Chrome)

Good news! I started a new project xkeysnail, which provides you a key-configuration functionality on every application (including Firefox and Chrome) on Linux (it's like AutoHotKey on Windows). This frees you from limitations of web-browsers that prohibits you to override keys such as Ctrl+n and Ctrl+p.

In combination of Vim-oriented browsing-addons such as Surfingkeys (BTW, this add-on is a way better than old-style KeySnail I feel), xkeysnail provides you a better browsing experience as in KeySnail, I believe.

KeySnail doesn't support Firefox57+

Since Firefox 57 dropped several important features required by KeySnail (or Vimperator), there is no chance to migrate KeySnail to Firefox 57+ for now.

The most important feature, which has been unfortunately dropped in Firefox 57+, is API for overriding browser-level shortcut keys. See https://bugzilla.mozilla.org/show_bug.cgi?id=1215061 for details. Since current API only allows content-level shortcut keys, KeySnail doesn't work in most of the places including location bars, search field, and so forth.

If you want to keep using KeySnail, I recommend using Waterfox https://www.waterfoxproject.org/ instead of Firefox. Several KeySnail users have already reported that they are enjoying Waterfox.

Another option is to switch to other add-ons that still work in Firefox 57+. I tried several add-ons and personally recommend Surfingkeys, which is highly extensible and has sophisticated APIs.

Thanks for using KeySnail! Without your encouraging reactions, I couldn't enjoy such a long-time lasting development.

mooz

About

KeySnail is an add-on for Mozilla Firefox that aims to be a competitor and lightweight alternative to Vimperator. Unlike Vimperator, KeySnail provides comfortable browsing experience for Emacs users, but its target users are not limited to.

See https://github.com/mooz/keysnail/wiki for details.

How to release

  1. Update the package version by ./set_version_info.rb X.Y.Z
  2. Rebuild the package by ./createpackage.sh
  3. Sign keysnail.xpi file in addons.mozilla.org
  4. Replace keysnail.xpi with signed one, and update hash information in update.rdf by ./updatehash.sh
  5. Update signature information in update.rdf for auto-updating by mccoy
  6. Push changes to GitHub

keysnail's People

Contributors

958 avatar ardumont avatar azu avatar gardejo avatar gifnksm avatar hogelog avatar louiz avatar mooz avatar piroor avatar tomykaira avatar yibe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

keysnail's Issues

ページの文字エンコーディングを keysnail から変更するプラグイン

ページの文字エンコーディングを keysnail から変更する機能が欲しいとの要望があった。

ひとまず作成したプロトタイプを以下に

http://gist.github.com/308874

これだと全ての文字エンコーディングが出てしまうので、少々使い辛い。「表示」 ->「 文字エンコーディング」としたときに表示されるモノのみを候補とするようにしたいが、これらのアイテムを得る方法が今のところ分かっていない。 (メニュー表示時にアイテムが生成されるため、候補の取得には最低でも一度メニューを表示しておく必要があるのが現状)

yatck stopped functioning at version 3.0.5

upgraded yatck to version 3.0.5 and now nothing seems to work. None of the ext commands that existed before are appearing, and the previous keybindings report missing ext, like: ext "twitter-client-display-timeline" not found. Let me know what information I can provide that will help.

Keysnall becomes disabled each time I upgrade firefox 4

I'm up to RC2. Each time I upgrade install, for example from RC1 to RC2, I have to check the enable line in the keysnail menu again.

(I DONOT mean the addon becomes disabled, but that keysnail enters its not enabled mode).

"Open plugin manager" forces me to create a folder

When clicking "Open plugin manager", (chrome://keysnail/content/pluginmanager.xul) A folder opening dialog opens and I cannot close it, it reappears. I am not given instructions to what I'm supposed to select, so I created a "test" folder. Probably that's where the plugins will be installed to or from.

Doesn’t work with non-ascii chars

For example, I wanted to bind M-é to “Backward char”, and it just doesn’t work.
Typing these keys in the configuration editor just doesn’t do anything.
Editing keysnails.js with

key.setEditKey('M-é', function (ev) {
command.previousChar(ev);
}, 'Backward char');

doesn’t work either (even though, this time, the input for that action is correctly set to “M-é” in the configuration editor).

Emacs (at least when started graphically) supports them. So should keysnails.

Keysnail doesn't work with non-English keyboard layouts

I use English and Russian keyboard layouts and Keysnail works only for English one.
It's clear that Russian letters are different from English letters so I tried to check if it is possible to get combinations with Russian letters and it doesn't seem that it is possible.
What is the reason for it?

ズーム挙動のFirefoxとの不一致

resource://keysnail-share/functions.js
で提供しているズームの挙動がFirefoxツールバーのズーム挙動とは異なり
一時的に拡大/縮小/リセットされるだけとなっています。これは
chrome://broser/content/browser.xul





というFullZoomのメソッドを呼び出しているのに対し、functions.jsが
text_zoom_reduce: [
function () {
ZoomManager.reduce();
}, false],

    text_zoom_enlarge: [
        function () {
            ZoomManager.enlarge();
        }, false],

    text_zoom_reset: [
        function () {
            ZoomManager.reset();
        }, false]

ZoomManagerのメソッドを呼んでいるためです。これはツールバーのズーム機能と合わせるべき
ではないでしょうか。また文字ズーム/フルズームのトグル機能の提供についても同様です。

一時的なズーム機能もあったらあったで便利そうだなとは思います。

Google Toolbar, Web Developer, FireMobileSimulator との併用で prompt.selector の keymap がうまく働かなくなる

  • Google Toolbar
  • Web Developer
  • FireMobileSimulator

といったアドオンと併用したとき、 prompt.selector の keymap がうまく働かなくなり Enter で決定が行えなくなってしまう現象が確認されている。

具体的には Enter が continuous-decide になってしまっている様子。どうもキーイベントの ctrlKey が true となって返ってきてしまっているようだ。

早急に対処したいが、どうしたものか。

Scope (Timer) problem in yatck on Mac OS X

yatck はウィンドウの setInterval を利用してステータスの定期的な取得を行うが,この際ウィンドウが閉じられると setInterval が働かなくなってしまうため,他のウィンドウへ setInterval の実行を委譲する.

(ちなみに nsITimer はウィンドウに属さないため,このように泥臭い作業を必要としない.拙作の gpum ではそちらの方法を用いている)

このスタイルには,ウィンドウが閉じられた際にウィンドウが残っていない,すなわち全てのウィンドウが閉じられてしまった場合にステータスの更新が行われなくなってしまうという問題が存在するが,一般的なプラットフォームでは全てのウィンドウが閉じられるとアプリケーションも終了するため,顕在はしてこなかった.

しかしながら,実のところ Mac OSX では Firefox のウィンドウを閉じてもプロセスは残り続けてしまう.

このためか,一度 Firefox のウィンドウを全て閉じた後もう一度 Firefox を起動すると,ステータスの更新がされなくなってしまうだけでなく,次のようなエラーが出てしまうことが分かった.

chrome://keysnail/content/modules/util.js の 140 行目を実行中にエラーが発生しました。
TypeError: attempt to run compile-and-go script on a cleared scope (in /Users/masa/Library/Application Support/Firefox/Profiles/dnnn74id.default/keysnail/plugins/yet-another-twitter-client-keysnail.ks.js)

一度解放されたスコープにアクセスしようとしているためにエラーが出ているのだろうか.余裕のあるときに調査を行いたい.

Request: on/off button (snail icon) in Navigation bar

With Firefox 4, it's possible to hide the "extension bar" (previously status line); I like having it hidden to conserve screen estate, but I miss the keysnail icon. Could we have one in the Navigation bar? (This would be optional of course, you can always drag-and-drop these icons.)

(Main use case for keysnail icon: Someone is borrowing my computer/browser to check their email, and I say "oh, click the snail so that you don't have to suffer my strange keyboard shortcuts".)

completer.fetch.directory による補完でヒストリをたどると例外

completer.fetch.directory による補完でヒストリをたどると例外が発生する。

  • completer.fetch.directory は"アイコン, ディレクトリ名" の 2 カラム構造
  • ヒストリは 1 カラム構造

となっているため、ヒストリ用に作成された listbox へ 2 カラム分のデータを格納しようとして
ノードが足りず例外が発生している。

この為の対策としてカラム数が異なった場合 listbox を再生成するという処置をすでに取っているが、今回は icon が絡んできたためカラム数の判断がうまくいっていない様子。

あまり使われることの無い機能ではあると思うが、早急に対処したい。

Config file not loading

Suddenly keysnail just stopped working. I'm having some difficulty pinning the issue down, but it seems like it refuses to load init files now.

The file is there, but it can't load it. If I try to do 'select init file' or 'create ..', the textbox with the folder path is empty, and the browse button doesn't work.

If i go into preferences and set the directory of the config file (to what it currently is), it says no config file is found there, but I clearly see one in explorer when I look, and it should have permissions.

util.httpGetのタイムアウト処理が正しくない

util.httpGet で第4引数の aTimeout に数字を指定すると、どのような数字を指定した場合でも0秒でタイムアウトされてしまいます。
以下のように修正すれば正しく動作するようになると思います。

--- util.js     2010-09-15 02:46:43.161453200 +0900
+++ util.mod.js 2010-09-15 02:47:17.556453200 +0900
@@ -1120,7 +1120,7 @@
                     timer = setTimeout(function () {
                                            self.message("Aborted");
                                            req.abort();
-                                       }, 0);
+                                       }, aTimeOut);
                 }

                 if (async)

Thunderbird 5?

Keysnail 1.2.5 (the latest I have for thunderbird) does not work for me. To start with, the browse key to find a config file does nothing and the empty path stays gray.

A code snippet to focus on the body of the current selected tab.

こんにちは。

機能追加の提案です。
Firemacs という Firefox 用アドオンに「現在選択しているタブの body にフォーカスを移す」機能がありまして、それが大変便利で .keysnail.js にも

key.setViewKey(['C-x', '.'], function (ev) {
    gBrowser.selectedTab.focus();  
    content.focus();
}, 'Focus on the body of the current selected tab');

というコードを追加して KeySnail を使っているのですが、不都合がなければこの機能を標準機能として取り込んでいただきたいです。

_追記_

githubの使い方がわからなくて request Label を付け損ねてしまいました。
すみません。

command.yank

組み込みコマンドの登録で「貼付け(yank)」のコードが

command.yank

になってますが

funtction (aEvent) {
command.yank(aEvent);
}

ではないかと。

設定ファイルの指定ができず.ローカルのファイルが読み込めず?

環境:windows 7 pro 32bit
.keysnail.jsのパスを指定すると下記エラー
"
設定ファイルがディレクトリ C:\foo\bar 内に見つかりませんでした。
設定ファイルの存在するディレクトリを指定して下さい。
"
設定ファイルの作成/選択ダイアログからも,
「選択先」「作成先」が入力できず.変更ボタンを押すと下記エラーログ
エラー: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsILocalFile.initWithPath]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: chrome://keysnail/content/modules/util.js :: anonymous :: line 153" data: no]

Error: KeySnail is not defined Source file: chrome://browser/content/browser.xul Line: 1

KeySnail doesn't load/initialize most of the time. The profile is big. Well over a hundred extensions. Many are disabled. I intend to create 3 to 6 task oriented sub-sets.

I've not done a "standard diagnostic", but have done extensive testing/debugging without success. Any SWAGs (sophisticated wild ass guesses) to limit the search space would be appreciated.

I tried to nuke the problem with Venkman. I'm still on the positive slope of the learning curve. Especially on starting venkman before the first browser window (chrome) is loaded. So far the start-init preference and the -venkman switch haven't done the trick. I haven't used -chrome path to venkman-url, then open-browser-window command.

I did set break points in keysnail-loader.js, but haven't trapped a call the register function or loading keysnail files.

FUD (fear, uncertainty and doubt) was created when keysnail loaded successfully in the debugger. That led to speculating about permissions. Firefox is started through DropMyRights. Several startups as a limited user and with administrator rights supported that hypothesis. Being unable to step through file open/loading failure auditing was setup on all objects dependencies.

No failure events were recorded. Keysnail failed to load in subsequent start-ups as both limited and administrator rights.

Totaltoolbar is installed. The statusbar became corrupted while in venkman. disabling/re-enabling Totaltoolbar apparently fixed it. It is now at the top of the list of suspects.

It maybe interferring with or corrupting keysnail dom nodes. They are sparse, lacking attributes. The subject above contains the only relevant error console entry. The message is generated by any event related to the keysnail statusbar button.

I haven't posted a keysnail review yet. I'm waiting till I can speak from experience. It is much more then a key customization/config utility. It appears to be a robust (at least a foundation for an) abstraction layer on top of Firefox's DOM based implementation details.

IMO it could have far reaching uses and implications as a proof of concept.

KeySnail slogan is misleading

I think the slogan is a bit misleading as it suggests that KeySnail is not really for vim fans. As a long time vimperator user, I recently made the switch to KeySnail and I've been very impressed by KeySnail's speed and simplicity. It provides the same keystroke customization as vimperator without completely overhauling the interface. I think KeySnail is just as good for vim fans as it is for emacs.

Just my two cents...

Firefox 4 beta version?

I am a big fan, but I was wondering if a firefox 4 beta version is planned or in the works.

How to refocus / close and reopen prompt

If i have a keysnail prompt open and it loses focus, I have no idea how to get back to it, or close and reopen it. Is there a simple solution for this that I am missing?

An example of what I mean: I hit M-x then decide to ctrl-tab to a different tab, the prompt will be up but the page in the new tab will have focus, then I have no way back to the prompt. C-g doesn't kill it, and M-x again yeilds: "Prompt is already in use by another command."

C-@ does not work in Mac OS X

Mac OS X leopard, Firefox 3.6.10をつかっておりますが、設定ファイルに"C-@"と書いたときにはコマンドが実行されず、"C-`"と書いたときにはCtrlと@キーの同時押しで実行されるという問題を見つけました。
もうご存知かもしれないとは思いますが、.keysnail.js内のキーコンフィグリストに注意書きを書いていただくか、初めに選択する初期設定キーコンフィグにおいてmac用を独立させるなどしていただけると後続のmacでのユーザにとって利便性が高いかと存じます。
よろしくおねがいします。

In Mac OS X, "C-@" does not work, and "C-`" (shift-@) should be used instead of it.

With "C-`" in .keysnail.js, mac users can use Ctrl-@ in firefox.

status-4-evar and keysnail bad interaction

I use status-4-evar to put messages back in the status bar, as they were before Firefox 4.

When it and keysnail are enabled, opening a new window produces the error:

An error occured in .....keysnail.js line 312 . ::XULBrowserWindow.setStatusText is not a function.

Of course, there is no line 312 in .keysnail.js, and no mention of setStatusText.

This will happen with an empty new .keysnail.js created by keysnail.

Further searching indicates that this is probably a status-4-evar problem.

prompt.readで補完したときのフォーカス

prompt.readを実行したときにTABで補完候補を出そうとすると、フォーカスがロケーションバーにうつってしまいます。
KeySnailバージョン:1.5.2
現象を確認したプラグイン:keydledo,xbookmark

twitter-clientのtweetにargを渡したい。

function test (ev, arg) {
plugins.twitterClient.tweet(arg);
}

このように、引数を付けてあらかじめargを入力した状態でtweetをしたいのですが、
現状ですとpublicな関数であるtwitterClient.tweetがargを取らないようになっています。
もし可能であれば引数を付けられませんでしょうか。

Some way to toggle caret / view mode?

I am look for a way to rebind a key to for firefox caret toggle, usually bound to "F7", any simple way to do it? I did not see it in the preferences and I am not up enough on the code to understand how to do it on my own.

<select> doesn't react to letters

When I select a element and press a letter to make it easier for me to select something the browser/keysnail will think I'm trying to give a view-mode command. For example if I type "j", it will not jump to the first that starts with "j" but instead move selection down by one item. Letters should be passed to and

Also: Thanks for this great tool!

k2edit plugin not working well with gmail

Here on Github, if I type "foo" and hit the control (C-i) key, I pop up a text area and start editing and all is working pretty much fine!!

However, in another tab in the same browser, I'm in Gmail, and I hit C-i when I'm in a text field, and I get a blank buffer in Emacs, and what I save isn't written back to Gmail either.

// k2edit config is as follows:

key.setEditKey ('C-i', function (ev, arg) {
ext.exec ( "edit_text", arg);
}, "Edit in external editor", true);

plugins.options [ "K2Emacs.editor" ] = "/usr/bin/emacsclient -c -a emacs23";

prompt.completer()

I'm planning to implement the prompt.completer() which is corresponds to the completer of the liberator (vimperator).

REQ: Storing common functions

Would it be more practical to store a list of commonly used functions which could then be bound and executed by their function name instead of having to write the actual body of a function into each key binding?

For example, I have a function which toggles the Page Style rendering for a given page:

cssToggle () {

    if (setStyleDisabled()) {
        setStyleDisabled(false); 
        event.stopPropagation();
    } else {
        setStyleDisabled(true); 
        event.stopPropagation();
    }
}

It seems it would be more practical if common functions such as this could be included upstream in a javascript file (similar to functions.js) and then referenced by their function name in .keysnail.js. It would significantly clean up our .keysnail.js files and I think make things a bit clearer:

key.setViewKey('\\', cssToggle(), 'Toggle Page Style (CSS) rendering');

flags の上書き

prompt.js line 654 の handleKeyPressSelector 内で var flags; としているが flags は
クロージャ内のグローバル変数として定義済み。これが原因で Google Toolbar や WebDeveloper との
競合が生じている可能性がある。

早急修正が必要。

[HoK] when unique_fire == false, key hints remain visible after firing

unique_fireをfalseにしていると、Enter押してリンクを開いた後もキーヒントが画面に残りつづけます。
onKeyPress関数のcase 'Enter'の後、destruction()の呼び出しをif節の前に移動したら一応直りました。

When unique_fire is set to false, key hints remain visible even after opening a link.
I think I was able to fix this bug by moving the call to destruction() (after "case 'Enter'", in onKeyPress function) to the front of the if statement.

keybindings with non-english layout

Hi there!
Thanks you for the awesome framework - this is the best solution for my emacs habits in firefox!

There is one thing that annoys me though: When I use russian keyboard layout, all key-bindings are gone... It feels bad :(
Constantly switching layouts is an option, but it is really annoying. Must be another way!

Do you have any idea how to handle with that?
I would really appreciate any hints.

And thanks again!

Chrome loading conflict - beforeLoadHook

I found a kludge work-around that allows Keysnail to load completely.

  1. Clear XUL cache (used Addon Developer Helper Restart Application).
  2. Start Firefox. Keysnail doesn't work.
  3. Open new window, Keysnail works.

I haven't studied the code yet, so I may be hallucinating. The underlying problem appears to be a race condition that breaks call back notification and/or loadOverlay queue dispatching for boundary use cases.

The keysnail.js load message is displayed at the end of chrome initialization. Keysnail has loaded completely when startup processing/timing has varied.

Clearing/reinitializing the XUL cache corrected a problem with AIOS toolbar initialization on windows opened after startup. Reopening window 1, using Addon Developer Helper, allowed Keysnail to load several times. An uncontrolled chrome change caused subsequent attempts to reopen a window to fail with Firefox entering a tight infinite loop.

It is reasonable to speculate adjusting load timing through a hook executed early in the loadOverlay process would avoid conflicts with other extensions. There may be other uses for loadOverlay hooks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.