2010-03-04 曇り [長年日記]
_1 xyzzyで現在のIMEの状態によらずワンキーでIMEをON/OFFする方法
現在のIMEの状態を判別し,ON/OFFするコードを書いてみた.「xyzzy 0.2.2.235」と「Windows XP Tablet PC Edition 2005 Version 2002 Service Pack3英語版」(名前長いな)で動作確認済.
(defun ime-off () (interactive) (if (get-ime-mode) (toggle-ime nil))) (defun ime-on () (interactive) (if (not (get-ime-mode)) (toggle-ime t))) (global-set-key #\End 'ime-off) (global-set-key #\Home 'ime-on)
もともとHome/Endにはそれぞれbeginning-of-buffer/end-of-bufferを割り当てていたのだが,ぜんぜん使っていなかったのでIME ON/OFFを割り当てることに.
HHK Pro2を使っているので,SW1をON,SW2をOFFにしてLite Ext.モードにする.次にkeyswapを使い右WindowsキーをHomeに,左WindowsキーをEndに割り当てる.これでスペースバーの両サイドのキーによってIME ON/OFFが切り替えられるように.日本語配列なら変換/無変換に割り当てるだけで済むのだが英語配列はそのキーがないのでこのようにならざるを得ない.
もともとはGoogle日本語入力側でIME ON/OFFのキーバインドを任意のものに変更したかったのだが,たいがいのキー入力はアプリケーション側にとられてしまい自由に変更できなかったのでxyzzyだけでもと思ってこのようにした.
Happy Hacking Keyboard Professional2 白 PD-KB400W
PFU
¥ 20,923
_2 NTEmacs + M+1VM+IPAG circle
mrknさんのM+2VM IPAG Circleの設定を元に,M+2となっている部分をM+1に書き換えただけ.
なおasciiに設定されているBitstream Vera Sans Monoは http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/からダウンロード可能.展開したものすべてをインストールする必要はなく,VeraMono.ttf だけをインストールすればOK.
Shift+右クリックでポップアップが出るのでFontset→mp1vmを選択すればOK.
(cond ((and (featurep 'dos-w32) (not (featurep 'meadow))) (require 'ntemacs-font) (defvar ntemacs-font-encoding-family-list-mp1vm '((ascii . "Bitstream Vera Sans Mono") (japanese-jisx0208 . "M\?1VM\?IPAG circle*") (katakana-jisx0201 . "M\?1VM\?IPAG circle*") (chinese-gb2312 . "Arial Unicode MS*") (chinese-big5-1 . "Arial Unicode MS*") (korean-ksc5601 . "Arial Unicode MS*") (mule-unicode-0100-24ff . "Arial Unicode MS*") (mule-unicode-e000-ffff . "Arial Unicode MS*"))) (defvar fixed-width-scale-alist-bvsm '(("7" . 0.8) ("8" . 0.8) ("9" . 0.9) ("10" . 0.9) ("11" . 0.9) ("12" . 0.9) ("14" . 0.9) ("16" . 0.9) ("18" . 0.9) ("20" . 0.9) ("24" . 0.95))) (fixed-width-create-fontset "mp1vm" ntemacs-font-defined-sizes ntemacs-font-encoding-family-list-mp1vm) ;; (add-to-list 'face-font-rescale-alist ;; '(".*Bitstream Vera Sans Mono.*" . 0.9)) (add-to-list 'fixed-width-get-scale-alist '(".*M.1VM.IPAG circle.*jisx02.*" . (("7" . 1.1) ("8" . 1.2) ("9" . 1.1) ("10" . 1.1) ("11" . 1.2) ("12" . 1.2) ("14" . 1.2) ("16" . 1.3) ("18" . 1.3) ("20" . 1.25) ("24" . 1.2)))) ))