数日前、こんな記事が話題になり、目が点になりました。何これ!自分と全然違う!
キーボードでどのキーが1番使われているか知っていますか? | roomie(ルーミー)
http://www.roomie.jp/2013/07/88217/
キーボードでよく使うキーなんて HJKL に決まってるだろ!いい加減にしろ!
と言うわけで、そういえば自分はどうなんだろう、と思って調べてみました。
数日前、こんな記事が話題になり、目が点になりました。何これ!自分と全然違う!
キーボードでどのキーが1番使われているか知っていますか? | roomie(ルーミー)
http://www.roomie.jp/2013/07/88217/
キーボードでよく使うキーなんて HJKL に決まってるだろ!いい加減にしろ!
と言うわけで、そういえば自分はどうなんだろう、と思って調べてみました。
その昔、【GVim】Proggy + Osakaで快適コーディングという記事を書いたのですが、当時から 2 年も経って Putty + Vim な環境もずいぶん変わりました。個人的にエポックメイキングと言えるのが次の 2 点です。
両者を組み合わせることでお手軽に快適な環境が得られるわけですが、ここはもう少し踏み込んで自分好みの環境にしてしまいたいところです。
つまり何が言いたいかというと、
半角フォントはやっぱり Proggy Clean の方がかっこいい!
ってことです。そこで Ricty の半角フォントだけを Proggy Clean に置き換えてみました。誰得なんでしょうね? まさに俺得です。
「なんで HJKL なの? ホームポジションに指置くこと考えたら JKL; じゃないの?」という話題が Vim のメーリングリストに出ていた。確かにそうだ。いつも人差し指を J に置いてるけど、カーソルを移動するときだけ中指に変えるよね?
それに対する返答。
キーカスタマイズソフト keyhac において、“複数のキー入力へアクションを割り当てる”ことが可能になっていた。要するにこれは、Emacs 風のショートカットを実現するためのものだ。
from keyhac import * def configure( km ): # グローバルキーマップ kmg = km.defineWindowKeymap() # “切り取り”は C-W に退避させておく kmg[ "C-W" ] = "C-X" # マルチストローク設定 kmg[ "C-X" ] = km.defineMultiStrokeKeymap() # 開く kmg[ "C-X" ][ "C-F" ] = "C-O" # 上書き保存 kmg[ "C-X" ][ "C-S" ] = "C-S" # 名前をつけて保存 kmg[ "C-X" ][ "C-W" ] = "A-F", "A" # 終了 kmg[ "C-X" ][ "C-C" ] = "A-F4"
これにより、Control を押下したまま、XC と順に叩いてウィンドウを閉じることができる。さらに応用として、
keyhac を使ってキー配列をいじるスクリプトを紹介してきたが(その 1、その 2)このソフトではキーボードやマウスを使ったマクロを書くこともできる。今回は簡単な例として、Putty + GNU Screen での例を書いてみる。
GNU Screen で複数のウィンドウを切り替える場合は“コントロールキャラクタを押した後に数字キー”という操作を行う。具体的には、
これで 3 番のウィンドウに切り替わる。毎回 Control を離す動作が面倒なのだ。これを、単に Control + 3 だけで切り替わるようにしたい。
config.py
(部分)def configure( km ): km_putty = km.defineWindowKeymap( exe_name = u"PUTTY.EXE" ) for i in xrange( 10 ): km_putty[ "C-" + str( i ) ] = km.command_InputKey( "C-Z", str( i ) )
2 行目では特定のプログラム(PUTTY.EXE
)でのみ有効なキーマップ(km_putty
)を得ている。そして 4 行目がキモ。command_InputKey
メソッドは引数に並べたキーを順に押した場合と同じ効果を得るための関数を返す。
このスクリプトを使うと、Putty + GNU Screen な環境で Control + 0 ~ 9 を押すと、0 番~ 9 番のウィンドウに切り替わるだろう。
「日本語キーボードドライバで英語配列を使う【keyhac 編】」に続いて、keyhac で Sands の設定を行ってみる。
そもそも SandS とは何かというと、親指シフト配列キーボードの特徴のうち、「ホームポジションに手を置いたときに親指の位置にあるキーを修飾キーとして使う」機能だけを通常の JIS(あるいは ASCII)配列のキーボードで実現するものだ。
具体的には、Space キーを Shift キーの代わりとして使うことである。
こんな機能が実現できる。タイプするときにほとんど働いていない親指を使うことで、Shift Control Tab Enter などの打鍵で忙しい小指を休ませることが狙いだ。
ただ、Space キーを押して一定時間(数十~数百ミリ秒)を上記 1. 2. の判定に使うので、単にスペースを入力したいときは僅かに待つことになる。そこは慣れるしかない。
では実際の設定方法を載せておく。……そのまま引用しただけだけども。
keyhac で SandS – Wisteria::Diary
http://d.hatena.ne.jp/mobitan/20081128/1227792452
# config.py from keyhac import * def configure(keymap): keymap_global = keymap.defineWindowKeymap() keymap.replaceKey("Space", "RShift") keymap_global["O-RShift"] = "Space"
「Windows で英語キーボードを使いたい!」では Autohotkey を使って、日本語キーボードドライバを使いながら英語配列にする技を書いた。
今度は keyhac というソフトを見つけたので使ってみた。Autohotkey でうまく動かなかった SandS 1 や、XKeymacs であったいくつかの問題2もこれで解決したっぽい。
まずは手始めに、使っている HHK を日本語キーボードドライバのまま、英語配列化する設定ファイルを書いた。他のキーボードで使う場合はキーコード等をいじる必要があるかもしれない。
Python という言語は初めて使ったけどおもしろいねえ。簡潔で、初級者でも内容がすぐわかるという取っつきやすさは Perl と正反対だ。早速本を買ってきたので少し勉強してみよう。