2012-01-04 25 views
4

私はC-xを押しすぎると、ピンクのemacsのケースを開発しました。理想的には、プレビューコマンドとしてコントロールの代わりにスペースバーを使用したいのですが、それは親指を押したままにするほうがずっと簡単です。スペースを押して離してもスペースは追加されますが、Space + xを同時に押すとコマンドにバインドする必要があります。例:Emacs Pinkyを避けるためにControlの代わりにSpaceを使用していますか?

(local-set-key (kbd "SPC-s") 'search-forward) 

これはどのように実装できますか?それはelispのみを使用して行うことができますか、またはemacsソースを変更して自分のバージョンをコンパイルする必要がありますか?

WindowsとLinuxの両方でemacsを使用しているので、私はOSに依存しないソリューションを好むでしょう。

EDIT: 私はkey-chord.elを試してみましたが、すべてではない場合があります(C-x C-s)。私は、保持空間制御または保持空間IS-MAのようなマイナーモードを好むでしょう。

EDIT: すべての返信ありがとうございます。私は現在、多くのC- *コマンドをj *またはf *にマップするためにキーコードを使用しています(左または右のキーであるかどうかに応じて)。たとえば、私はC-x bをjbに置き換えました。一度入力するすべてのコマンドでうまく動作しますが、繰り返し使用するコマンド(前方または後方の段落など)では使用できません。これは、これまでカスタムの.emacsとkey-chord.elファイルしか必要としないため、これまでのところ最良のクロスプラットフォームソリューションです。私はより少ない再マッピングを必要とし、 "fyi"と "< yank> i"と入力するリスクを減らすソリューションを好むでしょう。私はスペースを使用することができると思うが、私はemacsの技術的な詳細については十分理解していない。

私はCaps-LockまたはAltをCtrlで置き換えることを検討しましたが、これは左のピンキーのみに役立ちます。多くの一般的なコマンドは、正しいピンク色(C-x、C-s、C-w、C-y)を使用して実行されます。

+1

私が見つけた1つのトリックは、(キーボードが許せば)ctrlキーを押して、C-x C-sなどのキーを打つためにあなたの手の一部を休めることができるということです。薬指を使用するだけで、Caps Lockの再マッピングも機能します。私の個人的な好みはスイッチALTとCTRLですが、その前のほとんどのキーボードはそのようなキーを実際に持っていたため(ALTはCTRLよりも一般的に使用されています)、代わりに親指を使用するので、これは慣れていて、 CTRLよりもずっと少ない –

+0

Ctrlキーを押したままで手のひらを使ってみましたが、MS Natural Keyboardのキーのサイズが小さいために簡単ではありませんでした。私が巨大なctrlボタンを持つキーボードを見つけることができれば、私はカップルを買うだろう。私はKinesisとMaltronのキーボードを見てきましたが、かなり高価です。 – athoren

+0

私にとって、CTRLとALTの切り替えは、従来の古いキーボードは実際にはこの方法で、デフォルトではEmacs pinkyは決して問題にはならなかったのです。 –

答えて

0

これは、あなたの質問への答えではありませんが、Emacsの小指を避けるための方法です:修飾子とキーを押すように片手を使用しないでください。だから(あなたがQwertyキーボードを持っていると仮定して)右手でControlを押し、左手で「x」を押します。

+1

私が最初に痛みを感じていたら、 )私が今までに見つけた最良の解決策はキーコードです。たとえば、「C-x b」の代わりに「jb」を使用します。ただし、「4行上へ移動」(5 x C-p)などの繰り返しコマンドではうまく機能しません。 – athoren

6

私は痛みを避けるために私のCapsLockをControlに再マッピングしました(ただし、マッピングを行うのにKDEを使用しますが、emacsは使用しません)。

アップデート:私は、あまりにも、LXDEとMS Windowsでそれを行うことができました。

3

Emacs Lispではこれが可能ではないと思います。あなたが望むことをするためには、「スペース」キーがまだ押されているのか、それとも解放されたのかをチェックする必要があります。しかし、Emacsのキーボードイベントは単なる文字であり、マウスボタンのような '押された'イベントや '解放された'イベントではありません。 EmacsのCコードが、通常のイベントループを壊すことなくそこに実装できるかどうかについては十分に分かりません。

OS依存のソリューションに注目しましょう。 Xorgでは、モディファイアを通常のキーにマップできます(xmodmapを使用)。しかし、 'space'を押すと空白が生成されますが、でもが修飾子として機能しますが、これはあなたが望むものではありません。私の知っている唯一の解決策は、特別のXorgキーボードドライバです:似た何かがWindowsのために存在している場合

https://gitlab.com/at-home-modifier/at-home-modifier-evdev/wikis/home

でも、私は知りません。

+0

私はWindowsで作業しているので、Windowsは主な問題です。勝利のカスタムキーボードドライバを書くことは、Linuxよりはるかに難しいようです。私はそれが何も見たことがないので、elispに「押された」イベントはなかったと思った。私はまだEmacsのソースで可能かもしれないことを願っています。 – athoren

+0

at-home-modifierは、Linux上では良い解決策のようです。私が窓で似たようなものを見つけることができたら、私はとても幸せになれるでしょう。 – athoren

+0

AutoHotKeyを使って、philsが答えました。 (私はat-home-modifierの作者です。=)幸運を祈る。 –

4

XAHリーは、このテーマに関するnice article書い は特に、彼はコントロールを押して、あなたの小指のではなく、手のひらまたは半拳を使用

に推奨していたときにしている キー

+2

スペースキーとctrlの両方でスペースキーを使用する方がはるかに優れています(http://stackoverflow.com/a/8935973/780703)。 CtrlはEmacsにとって非常に重要で、手のひらでCtrlを押すのは面倒です。ウィンドウの管理には左下のキーを使用します。 –

6

オンWindowsのAutoHotKeyは、ほとんどの種類のキー再マッピング要件のための非常に柔軟性が高く、スクリプト可能なソリューションです。

1

私がしているのは、alt-metaのコントロールとスーパーキーを切り替えることです。これは、迷惑な左のコントロールをクリックするのを避けます。私は、バッファーH-p H-nと他のものを切り替えるために使用する追加の修飾子を持つために、Caps Lock for Hyperを切り替えるだけでなく、 Ubuntuをお持ちの場合は、キーボードの設定が変更になります。

1

C-xC-c(マークが有効な場合)と類似しているcua-modeを見ることができます。私は確かに専門家(私もcua-modeを使用していない)ですが、コードを簡単に見てそこにtimeoutイベントを送信するタイマーがあります(あなたの場合)あなたがバインドするように[?\s timeout]スペースを挿入し、他のキーをバインドするあなたが欲しいものは何でも。

(local-set-key (kbd "SPC-s") 'search-forward) 

が、私は迅速に実行しようとしました

(define-key space-as-prefix-map (kbd "s") 'search-forward) 

(例えば)として、あなたがそれらを結合する:SPCは修飾であるかのようにまた、バインドキーを(私は考えていない)ことはできません cua-modeを使用してテストしますが、残念ながらマークはマークがアクティブなときにのみ実行されます。まあ、それより少し複雑ですが、私はそれをすべて把握するのに十分なほど長くは耐えられなかったと言えば十分です。しかし、エスケープがどのようなメタになるかを制御するスペースを作ることは、間違いなく可能です。

3

これは、あなたが欲しいものを行う必要があります。

http://www.emacswiki.org/emacs/space-chord.el

(宇宙弦-定義するグローバルな "s" を「検索・フォワード)それはあなたが "コーディング" がありますんので

スペースとsを同時に入力することができますが、そうすることは簡単です。

または、制御ロックを使用すると、制御を制限しないようにすることができます(これは、制御キーのcaps lockのようなものです)。

2

私はここ数週間、あなたが記述したことを正確に行うためのWindows全体の機能を提供するAutoHotKeyスクリプトを作成して使用しました。現在、on GitHubが利用可能です。これはOSに依存しない解決策ではありませんが、Linux上にはほぼ同じ実装(At-Home-ModifierやSpace2Ctrlなど)がありますので、どちらのプラットフォームでも同じユーザーエクスペリエンスを持つことができます。プラス面では、ブラウザのタブのコピー、貼り付け、切り替えなどのタスクのために他のプログラムでもこの機能を使用できます。それが役に立てば幸い。

関連する問題