thinkpadで、Dvorak×vim !!

X31キーカスタム

X31のキー配列を少し弄りましたので、備忘録。
OSはopenSUSE11.4。

まず、
私のthinkpadX31は日本版ですので、キーボードはJIS配列です。

そんで、私はDvorakerです。
記号関連はUS配置。

IMのON/OFFは、Shift-Spaceを採用しています。

ESCが遠い。

vim使いにとって、ESCキーの遠さは致命的です。
っていうか、イラっとします。笑

というわけで、
Linux版mayuを使って、Aの左をControl&Escにしていました。

しかし、
openSUSE11.4にしたら、不具合が出て使いえなくなってしまいました。
(´・ω・`)

仕方ないので、別の方法を模索。

AutoKeyはまだ覚えてないし、
とりあえずすぐ使える方法として、やはり、Xmodmapが浮上しますね。

HHKBの配置を参考に。

HHKBのサイトを見ていたら、なんと左上(1の左)のキーをESCにしているではないですか。

US配置では左上にある「`」「~」は、右上に配置してある。

おー、なるほど。

JIS配列だから、ちょうど右側のキーは余ってるんですよね!!

やっちまいな!!
そう聞こえた気がします。笑

以下が、.xmobmapの該当箇所です。

keycode 49 = Escape     !半/全をESCに
keycode 132 = grave asciitilde     !Backspaceの左となりを`~に

これだけ。

これだけだけど、大分快適に。

JIS配列で、Dvorakって格好悪い...とかいって足踏みしているあなた!!

有効活用出来ますよ!!



ほかの設定は、KDE Keboard Layout(配列スウィッチャ)でやってます。

そのうち公開するかも。

About Vim keybind for Dvorak.

私は、テキストエディタとしてvimを使っている。
私は、キーボードの配列としてDvorakを使っている。

この二つは、ここの評価自体はそんなに悪いものではない、というか一部に熱狂的なファンがいるコアな存在。
尖がった奴らです。

しかし、いかんせんこの二つは相性が悪い。

Dvorakvimの相性が悪い理由。

単純にvimキーバインドqwertyに最適化されたものであるからである。
hjklでカーソル移動が出来たものも、qwertyを離れた瞬間にその美しさを失う。

いかにして、快適にvim上でDvorakを使用するか。

  1. コマンドモードのみQWERTYを使用する。
    Dvorakは、文字入力のみと割り切って、コマンドモードではおとなしくQWERTYを使う。
  2. コマンドモードも完全にDvorakにする。
    コマンドモードですらDvorakを追求する。現在私はこれ。
  3. vimのコマンドモードのキーバインドを全て書き換える。
    Dvorakに最適化したキーバインドを再考する。今やりたいと思っていること。

考察?

以下のリンク先で、Dvorak,Qwertyそれぞれのキーバインドの一覧シートが公開されている。

vi/vim tutorial

http://boredzo.org/vi_tutorial/

以下のリンクでは、Escの入力方法について考察してある。

Vim; Dvorak and Escape

https://bbs.archlinux.org/viewtopic.php?pid=524624

現状の把握。

現状私は、窓使いの憂鬱を使い、CapsLockつまりAの脇にCtrl兼Escを配置している。

#CapsLockキーに、Ctrl機能を割り当てる。
#通常押下時は、Escキーに置換。
#Ctrlキーとして使う際(キーリピート時)は、Escを出力しない。
mod	ctrl += !!CapsLock
key	*CapsLock = *Esc
key	R-*CapsLock = *LeftControl

#RightControlをCapsLockにする。
mod	ctrl -= RightControl
mod	ctrl += !!RightControl
key	*RightControl = *CapsLock

ワンショットモディファイヤを利用しているところがポイント。

これで、単打時はEsc、長押しやコンビネーション時はCtrlとして機能することになる。

ただし、この方法ではEscとのコンビネーションが出来なくなるためオリジナルのEscキーは生かしてある。

あと、カーソルキーが左手に欲しかったため、左手esdfの位置にカーソルキーを配置してみた。これが案外快適であるが、いちいちSpaceを押さなければいけないのが億劫だし、これだとVimのコマンドモードというものの意味合いが薄れる。

#esdfダイヤモンドカーソルとする。
mod	mod0 += !!Space
key	M0-*e = *Up
key	M0-*d = *Down
key	M0-*s = *Left
key	M0-*f = *Right
key	M0-*a = *Enter
key	M0-*q = *BackSpace
key	M0-*w = *Delete
key	M0-*i = *PageUp
key	M0-*k = *PageDown
key	M0-*j = *Home
key	M0-*l = *End

この方法の良い点は、ソフトによらずspace押下時に別モードを用意することが出来るという点だ。
すなわち、vimキーバインドをこの方法で定義しておけば他のソフトにおいても擬似的にvimキーバインドを利用することができる。

今後。

今は、spaceキーで別モードを用意している状態である。
別モードを用意する代わりにVimキーバインドDvorakの相性の悪さには目を瞑っているのだ。

しかし、
VimEmacsをはじめとした多くのソフトウェアとは違い、
"完全モーダブルなコマンドモードを用意しているという利点を生かす"ためには、
ネイティブなリマッピングを行うのが最良であろう。

今後折を見てリマッピング作業に取り掛かることとする。

追記

通常のカーソル並びをダイヤモンドカーソルっていうと思ってました。。。
esdx系をダイアモンドっていうのですね。
esdf,wasd系はなんていうのでしょうか。。。

独自のキーバインド考察。Dvorak,vimerの苦悩。

久しぶりの更新です。
Dvorakerにとって、vimにおけるキーバインドの再考察は重要です。

QWERTYに最適化された、hjkl移動の配置が変わってしまうからです。

jkは隣接しているので良いですが、hlはなんとも。
w,bをうまく使うというのも一理ありますが、なんとも。

っていうか、私はダイヤモンドカーソルが得意なんですがね。
って言ったらコメントが来そうで怖い。笑

思考の速度でパソコンを使う。

そもそも私が知的生産とか、タイピングに手を出した理由は、
作業中に作業の改善を始めて作業が進まないみたいな状態をさけたかったからです。

手になじまない道具を使っているとそれが非常に気になってしまうのです。

だから、
道具や手法に関してはあらかじめ熟考しておき実際の作業時は作業に集中する事にしたのです。

PC操作の洗練について、分かりやすく説明してくれている記事があります。

思考の速度でパソコンを使う技術。

http://d.hatena.ne.jp/fromdusktildawn/20070212/1171244226

操作系の最適化をしている人はこれをすごい理解できるはず。

色んな変態キーバインド

上記以外でんお、独自変態キーバインドに関してはこちらもおもしろい。

禁断の快楽・変態キーバインドのお誘い

http://kaede.to/~canada/doc/weird-key-binding

キーバインドの変態さ加減なら俺も負けてない

http://cocoromi.seesaa.net/article/47118625.html

Hash流”思考の速度”キーバインド (ver20080917)

http://t.hash.bz/archives/938542.html

超絶変態キーバインド

http://pi200k.blog35.fc2.com/blog-entry-70.html

【方針変更】えっへへー、マニアでーす!ホームポジション原理主義に傾倒する

http://ejan.jugem.cc/?eid=513

"もういいんだ、一般人のふりをするのは。"
"よぉし書くぞー!"

には感動した。笑

我がキーバインド

spaceをモディファイヤキーに採用しているのがポイント。

  • -esdf => ↑←↓→ (Dvorak的に言えば、.oeu)
  • -a =>
  • -qw => , (Dvorak的に言えば、' , )
  • -ijkl =>
  • Shift- => IMEのON/OFF
  • CapsLock => ESC兼Ctrl
    単打時にESC,コンビネーション時はCtrlとして機能する。
  • 右Ctrl => CapsLock
  • Winキー => bbleanのメニューとか仮想デスクトップの切り替え用。
  • F3 => fenrir呼び出し
  • Shift-F3 => Everything呼び出し
  • Ctrl-h => IM使用中の訂正用に

経緯

I am Dvoraker/vimer!!
基本的にはキーボードのみで作業したいが、GUIを使ったほうが便利な場合はやはりマウスが必要になる。
その補完の意味合いが強い気がする。

  • カーソルキーの場所。
    独立したカーソルキーは、windows内の選択には欠かせない。
    しかし、
    ウェブブラウジング中とか、右手がマウスに乗っている状態のときに、カーソルキーに右手を乗せかえることのなんと面倒なことか。
    1. hjklの改革を諦める。
      一度、vimキーバインドDvorak用に全部書き換えてやろうかと思ったがやめた。素直にカーソルキーを使う。しかし、ホームポジションで使えるカーソルキーがあれば…
    2. というわけで、文i字キーに左手にダイヤモンドカーソルを配置。
      これは、上記リンク内の話と、FPSゲームキーバインドを参考にした。
    3. wasdと、esdfの候補があったが、wasdは上下のねじれが強く私は苦手なので後者を選択。
    4. ついでに、右手も色々あててみた。
  • 左手にBS,Del,Enterも配置。

左の角のキーが空いてるから、ついでに配置した。
思った以上に便利。右手がマウス担当しているときは、こっちを使う。

  • Ctrl-h…まあ、伝統?
  • CapsLockを置き換える。
    Ctrlをaの隣に置くというのは納得の理由でしょう。しかし、vim使いにとって、ESCキーの遠さは致命的です。というわけで、兼用にしました。

現状の問題点

文字入力中に、C-hを使うべきか独立BSを使うべきか悩むんでしまう。
連続してSpaceキー押したり、Ctrl押したりしてるとたまに混乱する。

くらいかな。

ファイラの操作とかは、すごい楽になった。

コンビネーションなしで、文字キーをカーソル化できればよいけど、独自ロック使わないといけないんだろうなぁ。

あ、Linux,Windowsともにmayuで実装してます。

追記

左Ctrlは、左手の小指の付け根で押すもの!
っていう話がありますが、みなさんはどう思うだろう?
いままで、実際どうかな・・・と思っていたが、firefoxにVimperatorを入れたら、一変した。

  • 左手の小指付け根を左Ctrlに置きっぱなしにしてみる。
    • 右手はマウス、左手はキーボードの時に威力を発揮
    • タブの選択を、左手のみで行えるため、サイトを巡回して、記事をまとめたいときに便利。
    • C-p,tabの組み合わせでタブを選択すれば、右手はマウスでのコピペに集中できる。
    • さらに、bbWorkspaceWheelを入れることにより、仮想デスクトップ間の移動をホイールで行う。

配列の習得について考えてみた。

配列の習得について、私なりに考察をしてみようと思う。

タイピング再考。

キーボードの配列を変更したことのある人なら一度は経験があるであろう"配列が混ざる"現象。
これを少し掘り下げて考えてみよう。

タイピングの習得の順番は以下の流れだと私は思っている。

    1. 配列の概要を理解する。
      配列の概要を理解すれば、配置の記憶定着に一役買うはず。その方が楽しいし。論理記憶。
    2. キーマップを記憶する。
      これは、単純記憶もしくは、論理記憶。
    3. 運動記憶化する。
      練習練習!指に染み込ませる。
    4. 高速打鍵化する。
      習熟。この頃には、考えなくても条件反射で打てる。はず。

この流れは、スポーツのフォームを覚えるのと一緒だと思う。
論理的な記憶はフォームの最適化にも一役買うよね。

しかし、タイピングに関して言えば、通常のスポーツと違うところがある。

タイピングは、言語と密接に結びついている?

"書く"という行為の代替であるので当然といえば当然である。

英語の参考書に、"単語耳"なるものがあるのを皆さんはご存知だろうか。
その中に、発音の曖昧な単語は記憶に定着しにくいという話がある。
逆に発音さえバッチリにしてしまえば、どんどん単語を吸収出来るし、リスニングも出来るようになる。

また、派生単語については論理的に記憶してしまえば一度に複数の単語を習得することが可能である。と。

言語についてもう少し。

あ、ちなみに私は言語学や音声学に精通している訳ではありません。ていうか、分かってません。
いままで、見聞きしたことから類推しているだけですので、怪しいと思ったら、調べて下さい。

人間は、会話をするとき声を用いますが、
発声を伴わない言語処理、つまり、脳内での考え事、文字を読む時に関しても脳内では音として再生(?)しています。

ネットで引けばすぐにそれらしい文章に行き当たりますが、発声を伴うにしろ、伴わないにしろ、"言語音"を駆使しているわけです。
余談ですが、感情やら事象やらに言葉を割り当てることにより人間は違いを認識・区別出来ていて、進化・深化してきたのではないでしょうか。

さらに、"音"の組み合わせから、"音節"を作りだし、さらにそれらで単語・文章を形勢する訳ですよね。

で、何が言いたいのか。

音節を意識する事と、指に配列を記憶させる事。
似ているっていうか、感覚的には同じなんじゃね?って事。

多分、n-gramを意識して配列を組む事も。


配列の設計って、キーの配置の考察である、のはだれでも知っている(思っている?)こと。

でも、
この前段階に、"音と文字を対応させ関連付けた"という偉大な歴史があるというのは忘れてはいけない。

ともすれば、
"キーに文字を対応させ関連付けて、配置する"というのが配列設計となろうか。

つまりだ。
この単語はこう打つ、この音節はこう打つというのは、
この単語はこう発音する、この音節はこう発音する、と同義ではないのか。

複数のキーボード配列を習得すること。

可能、不可能で言えば可能である。

事実、複数の配列を使い分けているという人は掲示板やらtwitterやらを探せば何人かを見つけることができよう。
しかし、複数配列は"混ざる"という内容も見る。

さて、そろそろ話をまとめよう。

英語入力、日本語入力は問題なく使い分けられるのに、
英字配列同士(qweとdvoとか)、かな配列同士(JISかなとNICOLAとか)、の組み合わせが"混ざる"のは、


"言語が一緒で最終的な表現方法が一緒"なのに、"打鍵方法が違う"という所に問題があるんではないか。
つまり、同じ音なのに、発声方法が違うみたいな。


さて、ここで私は先ほどの話を持ち出す。

中国語覚えたてとか、英語覚えたての頃って、似た音を聞き分けられないから混乱するよね。
rとlなんかは、嫌な思いで多い人も多いかも。
中国語の母音とか、ドイツ語の母音とか、なれてない日本人には辛いよね。

この時、初心者にはほぼ同じ音に聞こえているから、聞き取れないし、言い分けられない。
"同じ音だけど別手段"である時、明確に選択するにはそれなりの理由が必要である。

ここに、キーボード配列の複数習得に関する重要事項が隠れてやしないか?
というのが、今回の記事を書き始めた動機。

で?

この説が正しければ、
使用する配列を明確に脳内で意識・選択出来れば、複数配列の習得が出来るという事になる。んー…苦笑

って、当たり前の結論になりましたね。。。残念。

まずは、複数のキーマップを瞬時に頭のなかで切り替える練習からかな?

他の配列における運指を入力時の選択肢からすべて切り捨てられれば、完璧
この時、運動記憶すら制御しないといけないというのが一番の難点。

はっ...配列の書き取りドリルが有功か?!

VirtualBoxに、キー入力を奪われる問題。

WindowsXP上で、VirtualBox×openSUSE11.3を動かしている。

私の環境。

私は、キーフックを掛けるソフトを複数入れている。

下のふたつは、キーフックというほどのキーフックではないが、呼び出しキーを割り当てているため、一応書いておこう。

使っているうちに、キーボードからの入力を受付けなくなる。

windowsキーをHostキーに割り当てていたら、

  • bbleanのメニューが呼び出せなくなったり、
  • テキスト入力が出来なくなったり、

した。
Hostキーが押しっぱなし状態になっている感じだった。

処置方法。

現段階では、

  1. VirtualBoxメニュー→環境設定
  2. 左ペイン→入力と進み、
  3. キーボードの自動キャプチャのチェックをはずす。

事で対処しました。

手動でON/OFFしなくちゃいけないですが、
もともとworkspaceの切り替え時に、キー入力を奪われるのがわずらわしかったので良しとします。

mfiler3コンパイル!!@openSUSE11.3

あふライクコンソールファイラ、mfiler3のコンパイルに成功したので記録。

少々初心者には、難しかったが、まぁ無事終了してよかった。

本体のコンパイル前に準備が必要。

  1. 本体をダウンロードして来ましょう。
    http://www.geocities.jp/daisuke530221jp/index3.html
    http://ab25cq.web.fc2.com/
  2. マニュアルに記載されているソフト類をあらかじめインストールしておきます。
    これが、案外曲者。

cd gc6.8  #versionは適時読み替えて下さい。
./configure
make
sudo make install

若干他のと、コンパイルの際のコマンドが違うので注意。よくマニュアルを読みましょう。

cd cmigemo-1.3c  #versionは、適時読み替えて下さい。
./configure  #応答メッセージがないからビビる。
make gcc
make gcc-dict
sudo make gcc-install
    • ruby
      yastからインストールでおk。
    • oniguruma
      ここは実は地雷。yastで(openSUSE公式とPackmanリポジトリにおいては)配布されているのは、現段階でversionが古い。
      "無い場合同封の鬼車がコンパイルされます。"という説明があるが、その通りにする。(同封の鬼車を使用する。)
      http://www.geocities.jp/kosako3/oniguruma/index_ja.htmlにあるものを、あらかじめインストールしておく。
      yastでインストールしちゃっている人は要削除。
    • libtar
      yastからインストールでおk。
    • lftp
      yastからインストールでおk。

やっと、本体のコンパイル

下準備を間違わなければ、ここでこける事は無いはず。。。
もし、なんらかのヘッダファイル(.hファイル)が無いと怒られた場合は、該当ソフトのdevelパッケージをインストールして対応する。

cd mfiler3
./configure
make
sudo make install

これで、オッケーな筈。

ちなみに、
コンパイル終了後に、各作業ディレクトリでcheckinstallすると、簡単にRPMパッケージ化できるので便利。


追記。

下コメントで、最新版のmfiler3のリンク先を指定していただきました。
私の対象としていた版は、バージョンが古かったようです。
それに合わせて記事の一部を修正しておきました。その他に以下が必要となります。

    • readline
      上記のほか、readlineのdevelパッケージも必要です。saphireのコンパイルに必要。
    • saphire
      mfiler3と一緒に配布されているシェル。あらかじめコンパイル&インストールしておく。

さらに追記。

mfiler3-4.2.1において、
Makefile.inの、mattrのコンパイルのオプションが間違っているっぽい。コンパイル時にエラーが出ます。
'-lcurses'を、'-lncurses'にすれば大丈夫のよう。

mattr:mattr.c
$(CC) -o mattr mattr.c -lncurses