一度 skk を使い始めたら, 二度と他の変換方法は使えなくなると思います. その反面, 他の環境に行っても skk が欲しくなる, という...
導入
辞書サーバとして yaskkserv を使用しています. 以前は dbskkd-cdb を使用していましたが, 複数辞書を扱うのが面倒なので yaskkserv に乗り換えました.
$ sudo aptitude install ddskk yaskkserv
設定
基本設定
.emacs では
(require 'skk-leim) (setq default-input-method "japanese-skk") (require 'skk-autoloads) (autoload 'skk-auto-fill-mode "skk" nil t) ;; skk モードの表示のカスタマイズ (setq skk-cursor-latin-color "DeepPink1") (setq skk-latin-mode-string "[aa]") (setq skk-cursor-jisx0208-latin-color "DeepPink1") (setq skk-hiragana-mode-string "[あ]") (setq skk-cursor-katakana-color "DeepPink1") (setq skk-katakana-mode-string "[ア]") (setq skk-cursor-jisx0208-latin-color "DeepPink1") (setq skk-jisx0208-latin-mode-string "[英]") (setq skk-indicator-use-cursor-color nil) ;; 辞書サーバとの指定(localhost) (setq skk-large-jisyo nil) (setq skk-server-host "127.0.0.1" skk-portnum 1178) (global-set-key "\C-x\C-j" 'skk-mode) (global-set-key "\C-xj" 'skk-mode) (global-set-key "\C-j" 'skk-mode) (global-set-key "\C-\\" 'skk-mode) ;; 辞書登録の際に送り仮名を削除 (setq skk-check-okurigana-on-touroku 'auto) ;; インジケータを左端に. (setq skk-status-indicator 'left) ;; 変換時のリターンで改行しない (setq skk-egg-like-newline t) ;; メッセージは日本語で (setq skk-japanese-message-and-error t) ;;"「"を入力したら"」"も自動で挿入 (setq skk-auto-insert-paren t) ;;漢字登録のミスをチェックする (setq skk-check-okurigana-on-touroku t) ;; 句読点は , . を使う (setq skk-kuten-touten-alist '( (jp . ("." . "," )) (en . ("." . ",")) )) ;; jp でも ".""," を使う. (setq skk-kutouten-type 'en) ;; @で挿入する日付表示を西暦&半角に (setq skk-date-ad t) (setq skk-number-style nil)
sticky-shift
シフトキーを打つのに小指が攣りそうになるので「; + ascii」で大文字が打て るようにしています. ; を入力したいときは二回打ちます.
uim で sticky shift できるようにならないかなぁ. scim でも良いけど.
;; skk モード での入力を ; + ascii にする. (defvar sticky-key ";") (defvar sticky-list '( '( ("a" . "A") ("b" . "B") ("c" . "C") ("d" . "D") ("e" . "E") ("f" . "F") ("g" . "G") ("h" . "H") ("i" . "I") ("j" . "J") ("k" . "K") ("l" . "L") ("m" . "M") ("n" . "N") ("o" . "O") ("p" . "P") ("q" . "Q") ("r" . "R") ("s" . "S") ("t" . "T") ("u" . "U") ("v" . "V") ("w" . "W") ("x" . "X") ("y" . "Y") ("z" . "Z") ("1" . "!") ("2" . "\"") ("3" . "#") ("4" . "$") ("5" . "%") ("6" . "&") ("7" . "'") ("8" . "(") ("9" . ")") ("0" . "~") ("@" . "`") ("[" . "{") ("]" . "}") ("-" . "=") (":" . "*") ("," . "、") ("." . "。") ("/" . "?") (";" . "+") ("\\" . "|") ("^" . "_")(" " ." ") )) (defvar sticky-map (make-sparse-keymap)) (define-key global-map sticky-key sticky-map) (mapcar (lambda (pair) (define-key sticky-map (car pair) `(lambda() (interactive) (setq unread-command-events (cons , (string-to-char (cdr pair)) unread-command-events))))) sticky-list) (define-key sticky-map sticky-key '(lambda () (interactive) (insert sticky-key))) (add-hook 'skk-mode-hook (lambda () (progn (define-key skk-j-mode-map sticky-key sticky-map) (define-key skk-jisx0208-latin-mode-map sticky-key sticky-map) (define-key skk-abbrev-mode-map sticky-key sticky-map) ) )) (setq skk-isearch-start-mode 'latin)
辞書の増強
追加するのは
辞書の変換は Wnn 形式なら以下.
$ sudo aptitude install skktools cp /usr/share/skktools/convert2skk/wnn2skk.* chmod u+x wnn2skk.* export LANG=ja_JP.eucJP wnn2skk.sh tandic4.txt > SKK-JISYO.tanudic4 wnn2skk.sh chibutsu.u > SKK-JISYO.chibutsu
MatsuCon は MS-IME 形式の辞書を落してきて, 以下のスクリプトを走らせる.
#!/usr/bin/env ruby require 'nkf' src = ARGV[0] if ARGV.size < 1 puts "usage: ime2skk.rb ime_dictionary" exit 0 end File.open(src, "r") {|f| f.each do |line| line_euc = NKF.nkf("-S -e",line) if line_euc =~ /^([^!]+?)\t(.+?)\t.+$/ entry = $1 content = $2 if content =~/;/ puts entry + " /(concat \""+ content.sub(";","\073")+"\")/" else puts entry + " /"+ content +"/" end end end }で
$ ime2skk.rb ime_std.txt | skkdic-expr2 | skkdic-sort |SKK-JISYO.matsucon
yaskkserv への登録は
$ sudo cp SKK-JISYO.matsucon
/usr/share/skk
$ sudo yaskkserv_make_dictionary /usr/share/skk/SKK-JISYO.matsucon \
/usr/share/yaskkserv/SKK-JISYO.matsucon.yaskkserv
で辞書を変換. /etc/default/yaskkserv の DICS 変数に
追加したい辞書を記述しておく.
でもって yaskkserv を再起動