このページで紹介している POBox for Emacs の開発は しばらく休止することにします. 今後は PRIME for Emacsの 開発に注力します. PRIMEも POBox と同じ予測入力システムです.
POBox は増井俊之さんが開発した予測入力手法です. 詳しくは POBox のホームページ を参照して下さい.
pobox-el は増井さん監修の元, 従来の Emacs 版 POBox を大幅に機能追加, コード変更したものです. 主な追加機能は以下の通りです.
pobox-el をインストールするには, 複数のファイルをダウンロードする 必要があります. http://www.taiyaki.org/pobox/src/ から tar.gz を, ダウンロードして下さい. tar.gz には単独でも公開されている mell や kakasi も 一緒にまとめられています. また, tar.gz に含まれている suikyo は, 単独で公開されている suikyo とは若干実装が違いますが, pobox-el を使う上での違いはほとんどありません. pobox-el からはどちらの suikyo も利用可能です. pobox-el 内の suikyo は 今後廃止される予定です.
バージョン 1.15.0 以降から設定の仕方が多少変わりました. バージョン 1.15.0 以前のものでも, バージョン 1.15.0 以降の設定で動作します.
pobox-el のファイル群 を ~/elisp/pobox/ に置いたとして, 以下の設定を .emacs に追加してください. pobox-conf.el は設定ファイルとして使用して下さい. suikyo, mell, kakasi の各ライブラリに対して既に設定を行っていれば 設定の必要はありません.
;;; POBox メインモジュール (setq load-path (cons (expand-file-name "~/elisp/pobox") load-path)) ;;; ローマ字かな変換モジュール (setq load-path (cons (expand-file-name "~/elisp/pobox/suikyo") load-path)) ;;; 汎用ライブラリ (setq load-path (cons (expand-file-name "~/elisp/pobox/mell") load-path)) ;;; KAKASI 用ライブラリ (setq load-path (cons (expand-file-name "~/elisp/pobox/kakasi") load-path)) (load-file (expand-file-name "~/elisp/pobox/pobox-conf.el"))
以下の作業はやらなくても構いません. その場合, 初期設定のローマ字で動作します.
展開されたディレクトリ以下の pobox/suikyo/.romaji-kana を ホームディレクトリへコピーします. 以降, ~/.romaji-kana を 編集することでローマ字の設定が変更可能です.
a あ kya きゃ tt っ t
上記のように, "「ローマ字」<タブ>「かな」" または "「ローマ字」<タブ>「かな」<タブ>「未変換の字」" となっています. 「未変換の字」というのは, 上記の場合だと, "tt" と入力すると "っ" と変換されて, 2 つめの "t" が 未変換でまだ残っているということです.
[Ctrl]-j
[Space]
[Enter]
[Ctrl]-g
[Ctrl]-l
+- "tai" ----------------------------------------------------------------+ |[たい] | |(対応)(待避)(タイムアウト)(対話者)(対象)(対する)(対話)(対して)(対策)(vs)| +------------------------------------------------------------------------+ ↓ +- "tai + [Ctrl]-l" -----------------------------------------------------+ |[対応] | |[対応](待避)(タイムアウト)(対話者)(対象)(対する)(対話)(対して)(対策)(vs)| |(たい)(タイ)(碓)(載)(炊い)(他意)(太)(汰)(体)(堆)(対)(耐)(岱)(帯)(待)(怠)| |(態)(戴)(替)(泰)(滞)(胎)(腿)(苔)(袋)(貸)(退)(逮)(隊)(黛) | +------------------------------------------------------------------------+
[Ctrl]-. (ピリオド)
+- "tai" ----------------------------------------------------------------+ |[たい] | |(対応)(待避)(タイムアウト)(対話者)(対象)(対する)(対話)(対して)(対策)(対)| +------------------------------------------------------------------------+ ↓ ↑ +- "tai + [Ctrl]-." -----------------------------------------------------+ |[たい] | |(対)(体)(態)(大)(隊)(タ)(耐)(泰)(帯)(太) | +------------------------------------------------------------------------+
[Ctrl]-u
+- "kazu" ---------------------------------------------------------------+ |[かず] | |(かず)(カズ)(一)(数)(和)(數)(和彦)(一博)(数々) | +------------------------------------------------------------------------+ ↓ ↑ +- "kazu + [Ctrl]-u" ----------------------------------------------------+ |[かず] | |1かず 2カズ 3一 4数 5和 6數 7和彦 8一博 9数々 | +------------------------------------------------------------------------+
大文字
+- "yoro + [Space]" -----------------------------------------------------+ |[よろしく] | |(よろ)(良炉)(鎧)(具)(甲)(鎧戸)(喜)(慶)(喜び)(憙) | +------------------------------------------------------------------------+ ↓ +- "yoro + [Space] + O" -------------------------------------------------+ |よろしく[お] | | (お願い)(大文字)(ON)(お)(恐れ)(遅い)(重い)(置いた)(行った)(多く)| +------------------------------------------------------------------------+
[Ctrl]-w
+-- "taiyaki" -----------------------------------------------------------+ |[たいやき] | |(たいやき)(タイヤキ)(taiyaki) | +------------------------------------------------------------------------+ ↓ +-- "taiyaki + [Ctrl]-w" ------------------------------------------------+ |[たいやき] | |(たいやき)(タイヤキ)(taiyaki) | +------------------------------------------------------------------------+ |単語登録 (taiyaki): | +------------------------------------------------------------------------+
[Ctrl]-q
+-- "sakujo + [Space]" --------------------------------------------------+ |[削除] | |(作条)(索条)(さくじょ)(サクジョ)(sakujo) | +------------------------------------------------------------------------+ ↓ +-- "sakujo + [Space] + [Ctrl]-q" ---------------------------------------+ |[削除] | |(作条)(索条)(さくじょ)(サクジョ)(sakujo) | +------------------------------------------------------------------------+ |削除 を削除しますか? (y or n) | +------------------------------------------------------------------------+
[Meta]-h
[Meta]-k
[Meta]-l
[Ctrl]-u [Ctrl]-j: 直前の文字列を再変換する.
リージョンを指定して [Space]: リージョンの文字列を再変換する.
リージョンを指定して [Ctrl]-j: リージョンの文字列を再変換する. [Space] との違いは, こちらは pobox-mode でなくても有効.
[Ctrl]-s
+- "sai + [Ctrl]-l" -----------------------------------------------------+ |[最初] | |[最初](殺)(最新作)(採用)(際)(再発明)(再)(さい)(サイ)(差異)(債)(催)(最) | |(哉)(塞)(妻)(宰)(彩)(才)(採)(栽)(歳)(済)(災)(采)(犀)(砕)(砦)(祭)(斎)(細)| |(菜)(裁)(載)(財)(咲い)(晒)(偲)(柴)(衰) | +------------------------------------------------------------------------+ ↓ +- "sai + [Ctrl]-l + [Ctrl]-s + kiwa" -----------------------------------+ |[際|さい*きわ] | |[際] | +------------------------------------------------------------------------+
[Ctrl]-c + e
+- "[Ctrl]-c e" ---------------------------------------------------------+ |[- pobox-engine-dabbrev 動的単語補完 ]| | - pobox-engine-bc bc コマンド (数式計算) | | + pobox-engine-pbserver 基本変換エンジン | | - pobox-engine-canna canna による漢字変換 | | | | OK キャンセル | | ---------------------------------------------------------------------- | | | | dabbrev のような動的単語補完エンジン. | | 同じバッファ内に表示されている文字列を候補として処理します. | | migemo および kakasi が別途インストールされている必要があります. | +------------------------------------------------------------------------+ (これは別ウインドウで表示されます)
[Ctrl]-c + c
+- "nihongo" ------------------------------------------------------------+ |[にほんご] | |(日本語)(にほんご)(ニホンゴ)(nihongo) | +------------------------------------------------------------------------+ ↓ +- "nihongo [Ctrl]-c c" -------------------------------------------------+ |[nihongo] | |(日本語)(にほんご)(ニホンゴ)(nihongo) | +------------------------------------------------------------------------+
[Ctrl]-c + w
[Meta]-[Space]
[Ctrl]-t
pobox-conf.el に設定を記述することでカスタマイズが可能になります. デフォルト値が pobox-conf.el に書かれていますのでそれを参考に 行って下さい.
;;;; ここは変更すると動作しなくなる恐れがあります.
(autoload 'pobox-mode "pobox" "POBox mode" t)
(global-set-key "\C-j" 'pobox-mode)
;;;; ここ以降にカスタマイズ設定を書いて下さい.
;;;; ============================================================
;;;; 基本的な設定
;;;; ============================================================
;; POBox の入力スタイル
;; 'default, 'capital-only, 'komatsu から選択可能.
;; 'default: デフォルトの入力スタイル
;; 'capital-only: 大文字のみが日本語入力開始キー
;; 'komatsu: 小松 (PoBox-el の作者) の入力スタイル")
;; nil: なにもしない
;(setq pobox-style nil)
;; 優先順位および初期使用フラグ
;; \C-ce (pobox-engine-select) で動的に変更可能です.
;(setq pobox-engine-list
; '((pobox-engine-alphabet . t) ;; アルファベット入力補助
; (pobox-engine-dabbrev) ;; 日本語動的単語補完
; (pobox-engine-bc) ;; 数値計算 (おまけ)
; (pobox-engine-pbserver . t) ;; 増井版 Pobox Server
; (pobox-engine-pbserv) ;; 岡田版 Pobox Server
; (pobox-engine-pogemo) ;; 高林版 Pobox Server
; (pobox-engine-canna))) ;; かんなによる単漢字変換
;; 増井版 http://www.csl.sony.co.jp/person/masui/OpenPOBox/server/
;; 岡田版 http://www.math.s.chiba-u.ac.jp/~okada/misc/pbserv.html
;; 高林版 http://cvs.namazu.org/pogemo/
;;;; ============================================================
;;;; キーマップの設定
;;;; ============================================================
;(add-hook
; 'pobox-keymap-init-hook
; '(lambda ()
; (progn
; ;; 以下は例なので, キーバインドに意味はない
; (define-key pobox-fund-mode-map "\M-n" 'pobox-enum-mode)
; (define-key pobox-input-mode-map "\M-n" 'pobox-enum-mode)
; (define-key pobox-conv-mode-map "\M-n" 'pobox-enum-mode)
; (define-key pobox-cand-mode-map "\M-n" 'pobox-enum-mode)
; (define-key pobox-narrow-mode-map "\M-n" 'pobox-enum-mode)
; )))
;; 変換をしないで直接入力をするキー
;(setq pobox-direct-key-alist
; '((?. "。")
; (?, "、")
; (?] "」")
; (?[ "「")))
;; 大文字入力を単語の区切りとするかどうか.
;(setq pobox-fix-by-capital-p t)
;; 大文字を (おそらくは間違えて) 連続入力しても無視する時間. (マイクロ秒)
;(setq pobox-ignore-capital-time 150000)
;;;; ============================================================
;;;; 候補選択
;;;; ============================================================
;; nil 以外の場合, 確定した後次の単語を予測する
;(setq pobox-predict-after-fix nil)
;; pobox-input-mode 時の候補の決定方法の設定: nil 以外の場合は
;; 常に [] 内の候補を, nil の場合は予測候補の最初のものを選択する
;(setq pobox-direct-mode-sensitive nil)
;; nil 以外の場合, 常に変換候補を 1 行で表示
;(setq pobox-disp-cand-list-oneline nil)
;; pobox-enum-mode を ON の状態から始める
;(setq pobox-enum-mode t)
;; pobox-enum-mode 時に選択用として使用される文字のリスト
;(setq pobox-enum-char-list '(?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?0))
;;;; ============================================================
;;;; カーソルの色
;;;; ============================================================
;; find-color の引数の 2 つ目は TTY の時の色
;; POBox モード時のカーソルの色
;(setq pobox-cursor-color '("Pink" 6))
;; POBox 候補の AND 検索中のカーソルの色
;(setq pobox-narrow-cursor-color '("LightSkyBlue" 4))
;;;; ============================================================
;;;; その他
;;;; ============================================================
;; POBox で入力する言語とインジケータのリスト
;(setq pobox-language-list '(japanese "[PB|あ]" english "[PB|Aa]"))
;; デフォルトで入力される言語
;(setq pobox-language-default 'japanese)
;; nil の場合, 頻度に応じてカタカナが第 0 候補になる
;(setq pobox-language-always-hiragana t)
;;;; ============================================================
;;;; 各変換エンジンのカスタマイズ
;;;; ============================================================
;; 優先順位および初期使用フラグ
;(setq pobox-engine-list
; '((pobox-engine-alphabet . t)
; (pobox-engine-dabbrev)
; (pobox-engine-bc)
; (pobox-engine-pbserver . t)
; (pobox-engine-pbserv)
; (pobox-engine-pogemo)
; (pobox-engine-canna)))
;; 接続する pbserver のホスト名
;(setq pobox-engine-pbserver-server "localhost")
;; pbserver が使用するポート番号
;(setq pobox-engine-pbserver-port 1178)
;; 接続する pbserv のホスト名
;(setq pobox-engine-pbserv-server "localhost")
;; pbserv が使用するポート番号
;(setq pobox-engine-pbserv-port 1178)
;; pbserv が返す候補の数. (nil の場合はデフォルト値を使用する)
;(setq pobox-engine-pbserv-max-cands nil)
;; 接続する Pogemo のホスト名
;; pogemo コマンドのパス
;(setq pobox-engine-pogemo-command "pogemo")
;; pogemo に与える引数, 主に使用辞書
;(setq pobox-engine-pogemo-args-list
; '("-p" "~/var/src/pogemo/phrase-dict"
; "~/var/src/pogemo/user-dict.sample"
; "~/var/src/pogemo/pogemo-dict"))
;; pogemo サーバが返す候補の数.
;(setq pobox-engine-pogemo-max-cands 100)
;; bc コマンドのパス
;(setq pobox-engine-bc-command "bc")
;; この時間で動的単語補完はタイムアウトします (マイクロ秒)
;(setq pobox-engine-dabbrev-timeout-time 20000)
;; kakasi コマンドのパス
;(setq kakasi-command "/usr/bin/kakasi")
;; kakasi コマンドのオプション
;(setq kakasi-option "-w")
;; kakasi の代わりに chasen を使用する場合
;(setq kakasi-command "/usr/bin/chasen")
;(setq kakasi-option "-F'%m '")
;; 調査する周辺の文字数
;(setq kakasi-surrounding-length 20)
;;;; 小松カスタマイズ
;(if (featurep 'xemacs)
; (global-set-key '(control ?\;) 'pobox-mode)
; (global-set-key [?\^\;] 'pobox-mode))
;(setq pobox-direct-key-alist
; '((?. ".")
; (?, ", ")
; (?! "!")
; (?? "?")
; (?( "(")
; (?) ")")
; (?[ "「")
; (?] "」")
; ))
(setq pobox-enum-mode t)