スキップしてメイン コンテンツに移動

Emacsキーバインドとアプリケーションショートカットキーを併用

プログラミングをしながらの上下左右キーはキーボードのホームポジションを離れることもさることなら、手首を折り曲げて操作するので、最近つらいです。

そういう思いで検索してたら上記のリンクの記事を見つけました。これなら手首を酷使する事もないだろうと。

2016/03/09:記事を修正しました。
Windows10アップグレード後の挙動の記載と紛らわしい不要な情報を削除などしました。

やりたいこと

 Windows上でEmacsキーバインドとアプリケーションのショートカットキーの併用
  • Capslockキー:Emacsキーバインド
  • 左Ctrlキー:今まで通りアプリケーションのショートカットを利用
    • 例)ブラウザ上でCtrl + T:タブを開く

環境

  • Windows 7 64bit / Windows10 64bit
  • XKeymacs Version 4.0 (64bit版 xkeymacs-110830.zip)
  • KeySwap Ver.4.02

KeySwapの設定

Capslockに右Ctrlを割り当てる

XKeymacsの設定

こちらを参考にさせていただきました。
XKeymacsでWindowsキーバインドとEmacsキーバインドを併用する方法 - 地平線に行く
http://d.hatena.ne.jp/chiheisen/20100605/1275752452
  • キーボードレイアウトは変更しない
  • プロパティ
    • 「ダイアログにはダイアログ専用の設定を利用する」のチェックを外す
    • 「詳細」タブの カテゴリから「その他」
      • デフォルトの状態を忘れましたが、コマンド一覧から「C-」を選択し、割り当ては「Right Ctrl」のみにする
その他、標準的なEmacsキーバインドをカスタマイズしてかなり独自なキー割り当てになっています。

少しEmacsキーバインドを使ってみて

早速このブログはEmacsキーバインドで編集しながら書いています。慣れなくてかなりぎこちない操作をして労力を使います。手の移動が少なくて済んでるのは実感できますが、油断するとバックスペースとか押してしまいホームポジションから手を離してしまいます。

その他参考

メモ

  • なぜXKeymacsなのかという点
    • Left CtrlとRight Ctrlを区別して扱えかえる点なのですが、keyhacでもPythonコードを編集すればいけるのかも?でもGUIで変更する方が扱いやすいですかね...
  • Page UpがM-vな件
    • MはEscを一度押すというもの。Escキーでウィンドウを閉じてしまうタイプのものには使えない?例えば、Evernoteのノートを子Windowで開いてる時にM-vすると閉じてしまう。押しっぱなしで使えないので連続して押せない。
    • Q&AにはEscを無効にするようにという記述があったが、Escを無効にするとXKeymacsも反応しなくなるので、XKeymacsだけ有効にする方法が不明
    • 今はEscキーを使わず別のキー割り当てた。
        • 例えば、Page Donw : Ctrl + V、Page Up:Ctrl + Shift + Vというように
  • C-Spaceの解除方法
    • 一度Shiftキーを押すと解除される
  • Evernoteではショートカットが反応してしまう。

Windows10になってから

Evernote Windowsクライアント

CapsLockに右Ctrlを割り当てているので、Windows7の時はCapsLockを押しても通常のCtrlと変わらない動きをしてしまい、Emacsキーバインドとの併用ができませんでした。そのため、複雑なこと(※1)をして無理矢理動かしてましたが、Window10になってから、CapsLockを押してもXkeymacsが先に反応するようで、上記のみの設定でうまくいっています。(※2)

ただし、そんな挙動なのでEvernoteを起動してからXKeymacs起動(常駐)させるという手順を踏まないといけまんせん。面倒ですね。

※1:Evernote利用時は右CtrlをPauseキーへ送信するよう、「Keyboard Butler ~鍵盤の執事くん~」で設定し、XKeymacsで右CtrlとPauseをキーバインドの対象としていました。

※2:Pauseキーを利用していた時は、Pauseキーをショートカットの対象にしないATOKがうまく反応しない問題がありましたが、Windows10から使わなくなったのでこの問題も発生しなくなりました。

XKeymacs

設定の書き出しができない。どうしよう....

コメント

このブログの人気の投稿

Javaでprivateなfieldやmethodにアクセスする

JUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。 例えば、次のような対象のクラスがあるとします。 public class ParentClass { private String hoge = "ParentClass!!"; public void dispMsg() { System.out.println("dispMsg:" + hoge); } private void privateDispMsg(String msg) { System.out.println("dispMsg:" + msg); } }

GolangでWindows GUIアプリケーション

GUIアプリ作成の前提 社内ツールとしてexeで配布 開発環境はGoLandを使う 社内ツールとしてexeを配布ということであれば、Visual StudioでC#による開発だと思います。しかしながら、Go言語を習得したいのと、GoLandの補完機能が便利で、Android Studio使っていたこともあり、とっつきやすいという点からGo縛りでGUIアプリケーションを考えたいと思います。 lxn/walk Windows application library kit for Go. Windows向けしか考えていないので、まずこのライブラリなのですが、ボタンやコンボボックスが思ったように並ばなかったり、手軽にイメージボタンを配置したりなど、簡単にレイアウトを変更できない課題に直面しました。レイアウト作成だけで時間を取られてしまいます。そう言えば、Androidアプリ開発のときは、XMLでデザイン部分を切り離してたのを思い出して、今回の調査の運びとなりました。 fyne-io/fyne Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android. walkと比べると、クロスプラットフォームで作成できるのですが、こちらもコードの中にデザインを書いていく形でした。 therecipe/qt therecipe/qt allows you to write Qt applications entirely in Go or JavaScript. Qt Creatorなるものがあるようで、デザイン部分を切り離せる印象はあるものの、最新のPCでもビルドに時間がかかるようで、学習コストもかかるという記事を見かけて断念しました。 どうしたものかとツイートしましたら、下記のようにご助言をいただいた。 同じ課題に対し色々試した結果、PWAのフルキャッシュドに落ち着いた。中身はGo+WASMで。 https://t.co/e60whDTV16 — のぼのぼ📡 (@nobonobo) July 21, 2020 PWA 早速調べてみました。Googleが進めているプロジェクトで、ネイティブアプリのよ

Eclipseの高速化メモ

Eclipseが重いと一言に言っても、いろいろな工程での話があると思いますが、過去記事のなども含めてこの記事にピックアップしておきたいと思います。以下はWindows環境での話です。