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

一日に30分節約できるかもしれない変態キーバインド(3/3)

IMEのON/OFF切り替えが人間には不可能な件



コーディングに関わらず、日本にいる限り日本語を入力することは避けられないことだと思われます。

しかし、この切り替えを行うためのトリガーとなっている半角/全角キーは人の手が届かない場所に配置されています。



日本で生きていくために、キーバインドでホームポジションに近づけます。



IMEのプロパティ、キー設定ツールで以下のように設定を行います。





これにより、IME ON/OFF 周りで以下のような操作が設定されます。

  • 文字入力状態外で無変換を押すと必ず IME が OFF になる
  • 文字入力状態外で変換を押すと必ず IME が ON になる
  • 文字入力中に無変換を押すと入力中の文字が半角になる(F8と同じ動作)
  • 文字入力中に変換を押すと入力中の文字が全角英数字になる(F9と同じ動作)
  • 文字入力中にひらがな/カタカナを押すと入力中の文字が全角カタカナになる(F7と同じ動作)




IMEのON/OFF以外に、日本語を入力する際に良く使うファンクションキーの動作を親指で自然に押すことのできるキーへ充てることで、人間の指でも無理なく日本語が打てるようになります。



よく使うキーが人外の域にいる件



日ごろコードを書く上で使うキーとして Enter や BackSpaceがあります。

また、自分はエディタとしてvimを使っているため、ショートカットのための Ctrl やノーマルモードへ戻るための Esc も非常に頻繁に使います。



これらのキーは、非常に良く使われるにもかかわらず、人の手では到達することができない、人外の域に生息しています。



キーバインドでホームポジションに近づけるしか生きる術はないでしょう。



以下を dot.nodoka に追記し、再読み込みを行います。



https://gist.github.com/1130249



これによって、以下のキーバインドが設定されます。

  • CapsLockキーを一度押すとEscが入力される
  • CapsLockキーを押しながら別のキー(例えばx)を入力すると、Ctrl + x が入力される
  • Ctrl + h(つまり、CapsLock + h)を入力すると、BackSpaceが入力される
  • セミコロンを入力すると、Enterキーが入力される
  • Ctrl + ; を入力すると、セミコロンが入力される




ここで、最も異質なのがセミコロンをEnterとしてしまうところですが、Enterキーというのはコーディングにおいて最もよく使うキーのひとつであることは自明なので、セミコロンを退避させてEnterキーに差し替えることはそれほど不自然なことではないでしょう。



一部の記号が人間に押されることを考慮していない件



コーディングにおいては、キャップ(^)やバックスラッシュ(\)等、一般の会話では用いられない記号を打ち込まなければならない場合が多々あります。

しかし、これらのキーはあまり用いられないためか、人間に押されることを考慮していない位置のキーに配置されています。



コーディングを続けるためにはキーバインドで我々だって人間なんだということを主張しなければなりません。



以下を dot.nodoka に追記して、再読み込みします。



https://gist.github.com/1130266



この設定によって、以下の記号を日ごろ打つ我々も人間なんだと主張することができます。

  • ^ (Ctrl + 無変換)
  • ~ (Shift + 無変換)
  • | (Shift + Space)
  • - (Ctrl + 変換)
  • _ (Shift + 変換)
  • = (Ctrl + ひらがな)
  • + (Shift + ひらがな)
  • \ (Ctrl + /)
  • ` (Ctrl + ‘)




Shift + Space はブラウジングなどで用いる可能性があるため、充てることができないかもしれません。適宜調整してください。



キーを拡張しても今までのキーを押してしまって慣れることができない



人に押すことのできないキーを押す技術を身に付けてしまったことで、本来の人間の姿を取り戻せなくなってしまった場合、どうにか矯正を行っていくしかありません。



以下のキーバインドを設定することで、人外の力を制限することができます。



https://gist.github.com/1130276



この制限は非常に強力なものであるため、よく考えて使う必要があります。

人外の力が弱まり必要がなくなったり、ストレスで寝込んでしまうなどの症状が現れたりした場合は、冒頭に # でコメントアウトしながら調整を行いましょう。



人間の手について考えながらキーを配置していたら自分のキーボードを触る人が居なくなった



キーバインドについて深く考察を進めていると、次第に自分のキーボードを触る人が減ってくる可能性があります。



キーの配置は人それぞれ最適なものが異なるため、自分に最適なものを突き詰めていくに従い、その他の人の最適なキー配置との距離が次第に広がっていくことは仕方がないことです。

しかし、ペアプログラミングや何かちょっとした操作を人に行ってもらうときなどに、自分以外の人が触ることのできないままでは、何かと不都合が発生します。

そのため、以下の一行を追加して人に使用してもらうときはあらゆるキーバインドを一度リセットする準備をしておきます。



key Pause = &LoadSetting("日本語 109 キーボード")



この設定により、Pauseキーを押すことで、それ以後、そのキーボードは元の「人間には扱いづらい一般的なキー配置」の姿に戻ります。

再度自分の作業に戻るときは、のどかの設定から再読み込みを行いましょう。



最後は自分で設定する



これはキーバインドに限ったことではないですが、設定はできる限り自分で一度書いてみるのが良いと思います。



自分で書くことで、「この配置はちょっと違和感があるが、変更するのが面倒」、「ここにこのキーを配置すればうまいこと行きそうだけど、設定方法が分からない」、「この文字を打ちたいのに何処に配置したか忘れてしまった」というようなことが少なくなってきます。





まとめ



以上、長々とキーボードの人間最適化について書きました。



まとめると、

  • キーボードはコーディングを行う人間に適した配置になっていない
  • 人間の手に適したキー配置を行うことで一日30分節約できる(かもしれない)
  • キーバインドソフトはのどか(or 窓使いの憂鬱関連)がお勧め
  • とりあえず以下を設定するとキー配列のKMNK最適化が行われる
  • キーバインドは一日してならず




という感じになった気がします。



紹介した以外にも自分最適化のために設定しているキーバインドはいくつかあるのですが、これは仕事環境や用いているエディタなどに依存してくるため、今回紹介はしませんでした。



自分の現行の設定はgitの構成を変更していなければおそらく以下から見られると思います。



https://github.com/kmnk/config/blob/master/dotfiles/dot.nodoka



何かおかしかったり、より良い設定などがあればお知らせいただけると非常にうれしいです。



また、こんなキー配列にしたらすごく捗るよ!とかも教えていただけると有り難いです。



ついこの前も、ずいぶん昔の記事なのですが、 http://pi200k.blog35.fc2.com/?no=70 のような配置を実践している方が居て、非常に夢がふくらみました。



Kinesisを買うことも一つの答えではあると思うのですが、どのマシンでもキーボードでも設定ファイルさえ読み込めば自己最適化されるというようなキー配置を色々と模索して、新たな配置を考えたら垂れ流していきたいと思います。

コメント

このブログの人気の投稿

git を操作したい時にちょっと便利かもしれない unite-source を書いています

こんばんは。この記事は、 Vim Advent Calendar 2012 の 50日目の記事です。
49日目は、 @uryt さんの vim.orgにアップロードされていないプラグインがあるかチェックするgit-unreleased-vimplugins作った でした。

本日は、長いこと自前で作成している、 unite を利用して 簡単な git 操作を行える unite-source 、 giti を紹介します。

vim-unite-giti
https://github.com/kmnk/vim-unite-giti

これは何?初期構想としては、自分の自分による自分のための git 操作用 unite source です。
現在はドキュメントも書いたので、自分以外の方にも、お使いいただける物になっていると思います。

言わずと知れた unite のインターフェースを用いて、 git の色々な操作を実現するための plugin's plugin になります。
unite を使って git 操作をしたい気持ちになる方に、是非使ってみて頂きたいです。

普段の仕事でヘビーに使っているので、基本的な操作に関しては、この source で(多分)完結できるはずです。

何故作ったの?git の vim plugin と言えば、有名な vim-fugitive があります。

自分も、仕事で使うバージョン管理システムが svn から git に移行したタイミングで、最初は使おうとしていました。
ですが、長らく(こちらも自前の) vim-unite-svn で、バージョン管理システムを unite 経由で使うことに慣れきってしまっており、
差分をコミットするごとにフラストレーションが溜まり、限界を超えた頃、気づくと自前で作成していました。

何ができるの?(自分が仕事を使ってる分には不自由しない程度に)基本的な操作は大体出来ます。

source 名を羅列すると、以下のような物を用意してあります。

* giti/branch, giti/branch_all
* giti/config
* giti/log
* giti/remote
* giti/status

それぞれ、簡単に説明してみます。

giti/branch, giti/branch_allgit branch や git branch -a を叩いた結果を…

builderscon tokyo 2017 に行ってきた

builderscon tokyo 2017 に行ってきたbuilderscon tokyo 2017 (2017/08/03-05) の本編1,2日目に行ってきましたきっかけは rebuild.fm のスポンサー宣伝
YAPC ASIA の系統をついでいるのもあるのか、 コンテンツ はかなり幅のある内容で、誰でも興味のある内容が何かしらあるであろう。な、カンファレンスでした発表資料は既に タイムテーブル の各詳細ページに大体公開されているので、内容はそちらを参考にしていただければと思います(リンクが貼られていないものも少し有りますが、検索すればどこかに上がってることが多いはずです)このエントリでは、自分が聞きに行ったセッションがどこだったかのリストとセッション全体についてのざっくりとした感想、及び、カンファレンス自体についてのざっくりとした感想を書いておき、来年以降また開催された時の参加判断の資料にできればと思います更新履歴2017.08.07 公開聞いたセッション実際にその場に行って、聞いたセッションのリスト1日目OpeningDeepLearningによるアイドル顔識別を支える技術ランチセッション A 株式会社VOYAGE GROUPランチセッションB Momentum株式会社マイクロチームでの高速な新規開発を支える開発・分析基盤Goで実装する軽量マークアップ言語パーサー2日目静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話小さく始めて育てるコンパイラランチセッション【PR】エンジニアがkintoneを使うべき3つの理由 サイボウズ株式会社ランチセッション 【PR】検索サービス開発が絶対におもしろいと思う理由 Supership株式会社polyglot になろう !!WEB+DB PRESS 100号記念 特別企画聞きたかったセッション後評判を聞いたりして、聞きたかったかなーと思ったセッション(後でスライド読む)1日目Desktop Apps with JavaScript横山三国志に「うむ」は何コマある?〜マンガ全文検索システムの構築RDBアンチパターン リファクタリングLT全部
#builderscon TL が大分沸いていた(残っていた人全員が見ていたのもあると思うけれど)2日目Ionic 3+ではじめる次世代アプリ開発(…

のどか(と窓使いの憂鬱)のvim風キーバインド設定を書いてみた

せっかくのどかを購入したのにあんまりキーバインドの改造をしていないので、練習がてらざっくりとvim風キーバインド設定を書いてみました。

多分窓使いの憂鬱でも動きます。動作確認はしていないです。

個人的に以下のキーバインドを先に行っているので、それ前提で見ていただければ。


# CapsLock 単発だと Esc になり、押しながら何かを押すと Ctrl になる
mod ctrl += !!英数
key *英数 = *Esc

# SemiColon を Enter に
key *IC-SemiColon = Enter

# Control を押しながら SemiColon で SemiColon
key *IC-C-~S-SemiColon = SemiColon


で、以下がvim風キーバインド


### vim mode
## vim mode トグル
key C-OpenBracket = &Toggle(Lock0)

## keymaps
# 一行ヤンク
keymap2 LineYankReady
key L0-*S-*C-*A-Y = Home S-End C-C Home

# 一行デリート
keymap2 LineDeleteReady
key L0-*S-*C-*A-D = Home S-End C-X

# 一行カット
keymap2 LineCutReady
key L0-*S-*C-*A-C = Home S-End C-X

# 頑張って一番上まで戻ろうとする
keymap2 GoTopReady
key L0-*S-*C-*A-G = PageUp PageUp PageUp PageUp PageUp

# exモードセーブ
keymap2 ex_mode_save
key L0-*S-*C-*A-Enter = C-S
key L0-*S-*C-*A-SemiColon = C-S # Enter代替

# exモード
keymap2 ex_mode
key L0-*S-*C-*A-W = &Prefix(ex_mode_save)

keymap Global

## vim mode 時の挙動
# default mode (Lock0 : on)
key L0-*S-*C-*A-_1 = &Undefined
key L0-*S-*C-*A-_2 = &…