山下泰平の趣味の方法

これは趣味について考えるブログです

GPD Pocket 上の emacs で Dvorak 配列を使うための keyhac 設定

私は emacs の上だけで Dvorak 配列を使っている。もちろん GPD Pocket でも同じ環境で使用している。

なんでそんなことをしているのか、誰も興味ないだろうが一応説明しておこう。

まず OS や多くのアプリケションのショートカットキーは Qwerty 配列を前提に作られている。ターミナルのコマンドも Qwerty を前提として命名されている。だから文字入力のみ Dvorak 配列、あとは Qwerty 配列を使うという実に合理的な理由からだ。

ところで GPD Pocket のキーボードはかなり個性的である。Dvorak 配列を使った実用的な入力のためには、多少の変更が必要となる。変更点は少ないのだが、わりと工夫したので情報を共有しておく。キー配列の変更は色々と試し、一番安定しているような気がした keyhac を使っている。

GPD Pocket のような変則的なキー配列の場合、あるべき場所にあるべきキーがあることには、こだわらないというのが快適な環境を作るポイントになる。単純なようでかなり複雑なので、キー配列の図を眺めながら読んでいただきたい。

f:id:cocolog-nifty:20171002162328p:plain

Dvorak 配列

f:id:cocolog-nifty:20171002162413p:plain

GPD Pocket のキーボード

GPD Pocket 上で Dvorak 配列を使用する際に、一番の問題となるのが、"S"となる。通常の配列をDvorakに変換するとSキーが";"の位置になってしまう。ホームポジションから離れているため、日本語入力だとサ行の入力が面倒くさい。だからEnterと入れ替える。Enterは"'"と入れ替える。

次に Caps だが通常は Ctrl とする場合が多い。しかしこれを "'" とする。これでDvorak配列だと"-"が入力される。慣れは必要だが、キーボード、マイホーム、などの入力が少しマシにできる。

余った"'"と";"のキーだが、";"には Enter、"'" には好みのキーを割当てる。私は "F4" と "S-F4" で "F2" としている。

asdfghjtl をひとつズラすという設定も試してみたものの、 Caps キーは小さく入力しにくい。頻繁に使用する "a" とするには心許無い雰囲気であった。手先が器用な人にとっては、実用的な配列になるかもしれない。

このキー配列の変更を利用することで emacs 上で Dvorak 配列が普通に入力可能となる。emacs 以外の環境では qwerty 配列を使っているが、デフォルトよりはマシ程度には入力ができる。その他、細々とした変更を含めた設定は下記の通りであるが、あんまり理解せずに書いているため、参考にはならないかもしれない。

from keyhac import *
from pyauto import *

def configure(keymap):
    keymap.replaceKey(163 , 222)
    keymap.replaceKey(13 , 186)
    keymap.replaceKey(222 , 13)
    keymap.replaceKey(186 , 115)
    keymap.replaceKey(46 , 220)
# キーバインドに"したくない"アプリケーションを指定(False を返す)
    def is_target(window):
        if window.getProcessName() in ("vcxsrv.exe" ,
        ):
            return False
        return True
#emacsっぽいキーバインド
    keymap_global = keymap.defineWindowKeymap(check_func=is_target) 
    keymap_global[ "C-D" ] = "Delete"
    keymap_global[ "C-H" ] = "Back"
    keymap_global[ "C-M" ] = "Return"
    keymap_global[ "C-B" ] = "Left"
    keymap_global[ "C-N" ] = "Down"
    keymap_global[ "C-P" ] = "Up"
    keymap_global[ "C-F" ] = "Right"
    keymap_global["S-F4"]=["F2"]

GPD Pocket 上の emacs で Dvorak 配列を利用する人の数はかなり多いと思うのだが、検索してみたところほとんど情報がなかった。私の設定はショボくてまだまだ洗練されていない。GPD Pocket 上の emacs で Dvorak 配列を利用している人はノウハウを公開していただければ嬉しいです。

効率よく練習したい人にはこちらも。

cocolog-nifty.hatenablog.com