Japanese Input Realization Project (JIRP)
Moderator: roytam
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Japanese Input Realization Project (JIRP)
ReactOSで日本語を入力できるようになるまでがんばってみよう。
日本語入力実現計画、略してJIRP。
というわけで、IMEなどに詳しい人、お願いします。
日本語入力実現計画、略してJIRP。
というわけで、IMEなどに詳しい人、お願いします。
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Re: Japanese Input Realization Project (JIRP)
ReactOSでIMMを実装しているのは、dll/win32/imm32。
dll/win32/imm32は、Wineと同期しているコード。
ReactOSのImmInstallIMEは、IMEの情報を正しく格納していない。
Text Service Framework (TSF) は、実装がむずかしい。
Windows用のTSFは、次のリンクからダウンロードできる。
http://www.microsoft.com/downloads/deta ... laylang=en
このTSFがReactOSで動作するかどうか。
ReactOSで使えそうなフリーのIMEはGoogle日本語入力とSocial IME。
他に使えそうなIMEがありますか(Ajax IME以外)?
dll/win32/imm32は、Wineと同期しているコード。
ReactOSのImmInstallIMEは、IMEの情報を正しく格納していない。
Text Service Framework (TSF) は、実装がむずかしい。
Windows用のTSFは、次のリンクからダウンロードできる。
http://www.microsoft.com/downloads/deta ... laylang=en
このTSFがReactOSで動作するかどうか。
ReactOSで使えそうなフリーのIMEはGoogle日本語入力とSocial IME。
他に使えそうなIMEがありますか(Ajax IME以外)?
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Re: Japanese Input Realization Project (JIRP)
Social IMEは、ソースを見ると明らかにTSFを使っている。
Google日本語入力は、TSFを使っていないように見えるけど、本当のところはどうですか?
Google日本語入力は、TSFを使っていないように見えるけど、本当のところはどうですか?
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Re: Japanese Input Realization Project (JIRP)
IMEについて詳しく知りたい人はこれを見てください:
http://www1.axfc.net/uploader/Sc/so/116978.zip
http://www1.axfc.net/uploader/Sc/so/116978.zip
Re: Japanese Input Realization Project (JIRP)
katayama_hirofumi_mzさん、はじめまして。
私はコードを書いたりできませんが、このプロジェクトには興味があります。私なりにいろいろ調べてみました。
TSFはIMMの後継ということで、Office XPのころからでしたよね。
IMMを使ってそうなフリーのIMEといえばskkimeしか思いつきませんが、これもReactOSでは現状は動かないようです。
Google 日本語入力はTSFでIMMには対応していないようです。
http://www.google.com/support/ime/japan ... _issues.cs
こちらの『Windows XP で「詳細なテキストサービスをオフにする」を有効にすると、Google 日本語入力が使用できなくなる。』に言及してあります。
それから、Ajax IME以外にブラウザで日本語が入力できるアプリケーションにはJapanese IME(http://colspan.net/japaneseime/)というものがあるようです。
このドキュメントはこちらの方が新しいようです。
私はコードを書いたりできませんが、このプロジェクトには興味があります。私なりにいろいろ調べてみました。
TSFはIMMの後継ということで、Office XPのころからでしたよね。
IMMを使ってそうなフリーのIMEといえばskkimeしか思いつきませんが、これもReactOSでは現状は動かないようです。
Google 日本語入力はTSFでIMMには対応していないようです。
http://www.google.com/support/ime/japan ... _issues.cs
こちらの『Windows XP で「詳細なテキストサービスをオフにする」を有効にすると、Google 日本語入力が使用できなくなる。』に言及してあります。
それから、Ajax IME以外にブラウザで日本語が入力できるアプリケーションにはJapanese IME(http://colspan.net/japaneseime/)というものがあるようです。
http://www.osronline.com/ddkx/appendix/imeimes_0h2s.htmkatayama_hirofumi_mz wrote:IMEについて詳しく知りたい人はこれを見てください:
http://www1.axfc.net/uploader/Sc/so/116978.zip
このドキュメントはこちらの方が新しいようです。
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Re: Japanese Input Realization Project (JIRP)
間違いがあったら修正してください。
IME Windowは、IME Classのインスタンスである。
UI WindowはUI Classのインスタンスである。
IME Classは、システムが提供するものとアプリケーションが提供するものがある。
前者を System IME Classという。
UI Classは、IMEのDllEntryPointのDLL_PROCESS_ATTACHで登録される。
IME/IMMは WM_IME_xxxメッセージを生成する。
ウィンドウのDefWindowProcA/Wは、WM_IME_xxxを処理する。
dll/win32/user32/windows/defwnd.c
にDefWindowProcA/Wの定義がある。
dll/win32/user32/controls/edit.c
にEDITコントロールの実装がある。
デフォルトでは、各スレッドに対し、システムはDefault Input Contextを
作成する。
include/ddk/imm.h
にINPUTCONTEXT構造体の定義がある。
dll/win32/imm32/imm.c
にIMMの実装がある。
IMEの情報は、Wine/ReactOSの場合、レジストリの
System\CurrentControlSet\Control\Keyboard Layouts\%08lx
に格納される。
IME Windowは、IME Classのインスタンスである。
UI WindowはUI Classのインスタンスである。
IME Classは、システムが提供するものとアプリケーションが提供するものがある。
前者を System IME Classという。
UI Classは、IMEのDllEntryPointのDLL_PROCESS_ATTACHで登録される。
IME/IMMは WM_IME_xxxメッセージを生成する。
ウィンドウのDefWindowProcA/Wは、WM_IME_xxxを処理する。
dll/win32/user32/windows/defwnd.c
にDefWindowProcA/Wの定義がある。
dll/win32/user32/controls/edit.c
にEDITコントロールの実装がある。
デフォルトでは、各スレッドに対し、システムはDefault Input Contextを
作成する。
include/ddk/imm.h
にINPUTCONTEXT構造体の定義がある。
dll/win32/imm32/imm.c
にIMMの実装がある。
IMEの情報は、Wine/ReactOSの場合、レジストリの
System\CurrentControlSet\Control\Keyboard Layouts\%08lx
に格納される。
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Re: Japanese Input Realization Project (JIRP)
どうやらこれが問題らしいが。
subsystems/win32/win32k/ntuser/kbdlayout.c (196):
subsystems/win32/win32k/ntuser/kbdlayout.c (196):
Code: Select all
static PKBL UserLoadDllAndCreateKbl(DWORD LocaleId)
{
...
/* Microsoft Office expects this value to be something specific
* for Japanese and Korean Windows with an IME the value is 0xe001
* We should probably check to see if an IME exists and if so then
* set this word properly.
*/
langid = PRIMARYLANGID(LANGIDFROMLCID(LocaleId));
hKl = LocaleId;
if (langid == LANG_CHINESE || langid == LANG_JAPANESE || langid == LANG_KOREAN)
hKl |= 0xe001 << 16; /* FIXME */
else hKl |= hKl << 16;
...
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Re: Japanese Input Realization Project (JIRP)
プログラミング以前の問題でつまづいている人が多いようなので
最新のReactOSのインストール方法について解説する(Windows向け)。
0.コマンドプロンプトの使い方を勉強する(start, cd, mkdirなどの
コマンドを勉強し、バッチファイルの作り方を勉強する)。英語も?
1.6GB以上の空きがあるWindows PCを用意する(Windows 2000 SP2/XP以降)。
2.最新のReactOS Build Environmentをインストールする。
http://www.reactos.org/wiki/ReactOS_Build_Environment
3.ReactOS Build Environmentを起動する。
4.Build Environmentで「ssvn create」と入力する。
5.するとダウンロードが始まる。ダウンロードが終わるまで数十分ほど待つ。
6.「make bootcd」と入力。
(マルチコアCPUの場合は、「makex bootcd」の方が早い)
7.するとビルドが始まる。コンパイルが終わるまで、2・3時間ほど待つ。
8.ビルドが終わったら、「start .」と入力する。
9.すると現在のディレクトリ(フォルダ)がエクスプローラで開かれる。
そこにファイル ReactOS.iso があればビルド完了。
実機にインストールする場合:
10.ReactOS.isoをImgBurnなどのCD-Rライティングのソフトで、
CD-Rに焼く。
http://www.imgburn.com/
11.できたCDをインストールしたいPCにセットしてPCを起動する。
12.あとはインストーラの指示に従ってインストールを続ける。
仮想環境にインストールする場合:
10.QEMU on Windows(以下QEMUとする)をインストールする。
http://homepage3.nifty.com/takeda-toshiya/qemu/
11.QEMUと同じフォルダで「qemu-img.exe create harddisk.img 1000MB」
と入力して、1000MBのハードディスクイメージファイルharddisk.imgを作成する。
12.「qemu -L . -boot d -k ja -localtime -hda harddisk.img -cdrom "(ReactOS.isoがあるパス)\ReactOS.iso"」
と入力する(もしくはバッチファイルを実行する)。
13.あとはインストーラの指示に従ってインストールを続ける。
日本語化したい場合は、5.が終わった後で
(ReactOSのフォルダ)\modules\に"optional"フォルダを作成し、
(ReactOSのフォルダ)\modules\optional\にDroidSansFallback.ttfをコピーするとよい。
DroidSansFallback.ttf
http://android.git.kernel.org/?p=platfo ... tf;hb=HEAD
最新のReactOSのインストール方法について解説する(Windows向け)。
0.コマンドプロンプトの使い方を勉強する(start, cd, mkdirなどの
コマンドを勉強し、バッチファイルの作り方を勉強する)。英語も?
1.6GB以上の空きがあるWindows PCを用意する(Windows 2000 SP2/XP以降)。
2.最新のReactOS Build Environmentをインストールする。
http://www.reactos.org/wiki/ReactOS_Build_Environment
3.ReactOS Build Environmentを起動する。
4.Build Environmentで「ssvn create」と入力する。
5.するとダウンロードが始まる。ダウンロードが終わるまで数十分ほど待つ。
6.「make bootcd」と入力。
(マルチコアCPUの場合は、「makex bootcd」の方が早い)
7.するとビルドが始まる。コンパイルが終わるまで、2・3時間ほど待つ。
8.ビルドが終わったら、「start .」と入力する。
9.すると現在のディレクトリ(フォルダ)がエクスプローラで開かれる。
そこにファイル ReactOS.iso があればビルド完了。
実機にインストールする場合:
10.ReactOS.isoをImgBurnなどのCD-Rライティングのソフトで、
CD-Rに焼く。
http://www.imgburn.com/
11.できたCDをインストールしたいPCにセットしてPCを起動する。
12.あとはインストーラの指示に従ってインストールを続ける。
仮想環境にインストールする場合:
10.QEMU on Windows(以下QEMUとする)をインストールする。
http://homepage3.nifty.com/takeda-toshiya/qemu/
11.QEMUと同じフォルダで「qemu-img.exe create harddisk.img 1000MB」
と入力して、1000MBのハードディスクイメージファイルharddisk.imgを作成する。
12.「qemu -L . -boot d -k ja -localtime -hda harddisk.img -cdrom "(ReactOS.isoがあるパス)\ReactOS.iso"」
と入力する(もしくはバッチファイルを実行する)。
13.あとはインストーラの指示に従ってインストールを続ける。
日本語化したい場合は、5.が終わった後で
(ReactOSのフォルダ)\modules\に"optional"フォルダを作成し、
(ReactOSのフォルダ)\modules\optional\にDroidSansFallback.ttfをコピーするとよい。
DroidSansFallback.ttf
http://android.git.kernel.org/?p=platfo ... tf;hb=HEAD
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Re: Japanese Input Realization Project (JIRP)
日本語版のWindows XPのテキストボックスで、IME入力をすると、
次のようなウィンドウが作成される。
クラス名: imejpstcnv81
ウィンドウ名: MSIMEConv
このウィンドウは、変換中の文字列を表示するときに
使われるようだ。
このウィンドウのスタイルは、0x8C000000だった。
(WS_POPUP | WS_DISABLED | WS_CLIPSIBLINGS)
---
If the user inputed by IME on Text box in Japanese Windows XP,
the following window will be created.
class name: imejpstcnv81
window name: MSIMEConv
This window seems to be used to display conversion string.
This window's style is 0x8C000000.
(WS_POPUP | WS_DISABLED | WS_CLIPSIBLINGS)
次のようなウィンドウが作成される。
クラス名: imejpstcnv81
ウィンドウ名: MSIMEConv
このウィンドウは、変換中の文字列を表示するときに
使われるようだ。
このウィンドウのスタイルは、0x8C000000だった。
(WS_POPUP | WS_DISABLED | WS_CLIPSIBLINGS)
---
If the user inputed by IME on Text box in Japanese Windows XP,
the following window will be created.
class name: imejpstcnv81
window name: MSIMEConv
This window seems to be used to display conversion string.
This window's style is 0x8C000000.
(WS_POPUP | WS_DISABLED | WS_CLIPSIBLINGS)
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Re: Japanese Input Realization Project (JIRP)
> qemu-img.exe create harddisk.img 1000MB
1000MBは、大きすぎたね。400MBで十分。
1000MBは、大きすぎたね。400MBで十分。
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Re: Japanese Input Realization Project (JIRP)
> qemu-img.exe create harddisk.img 1000MB
しかもMBのBはいらないようだ。正しくは
qemu-img.exe create harddisk.img 400M
しかもMBのBはいらないようだ。正しくは
qemu-img.exe create harddisk.img 400M
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Re: Japanese Input Realization Project (JIRP)
最近忙しくて、JIRPに貢献する時間がない。
だれかSKKIMEを使いやすく改良してくれないか? おーーい。
だれかSKKIMEを使いやすく改良してくれないか? おーーい。
- katayama_hirofumi_mz
- Posts: 54
- Joined: Mon Apr 05, 2010 5:43 am
- Location: Japan
- Contact:
Re: Japanese Input Realization Project (JIRP)
<imm.h>に足りない宣言や定義がある。
Code: Select all
UINT WINAPI ImmGetVirtualKey(HWND);
#if (WINVER >= 0x040A)
BOOL WINAPI ImmAssociateContextEx(HWND, HIMC, DWORD);
#endif /* (WINVER >= 0x040A) */
#define IME_HOTKEY_PRIVATE_FIRST 0x200
#define IME_ITHOTKEY_RECONVERTSTRING 0x203
#define IME_HOTKEY_PRIVATE_LAST 0x21F
#define IMEVER_0310 0x0003000A
#define IMEVER_0400 0x00040000
#define SCS_CAP_SETRECONVERTSTRING 0x00000004
#define SCS_SETRECONVERTSTRING 0x00010000
#define SCS_QUERYRECONVERTSTRING 0x00020000
#define IME_SMODE_CONVERSATION 0x0010
#define IME_CAND_UNKNOWN 0x0000
#define IME_CAND_READ 0x0001
#define IME_CAND_CODE 0x0002
#define IME_CAND_MEANING 0x0003
#define IME_CAND_RADICAL 0x0004
#define IME_CAND_STROKE 0x0005
#if (WINVER >= 0x040A)
#define IMR_COMPOSITIONWINDOW 0x0001
#define IMR_CANDIDATEWINDOW 0x0002
#define IMR_COMPOSITIONFONT 0x0003
#define IMR_CONFIRMRECONVERTSTRING 0x0005
#define IMR_DOCUMENTFEED 0x0007
#endif
#define IME_ESC_PRIVATE_HOTKEY 0x100a
#define IME_ESC_GETHELPFILENAME 0x100b
#define SOFTKEYBOARD_TYPE_T1 0x0001
#define SOFTKEYBOARD_TYPE_C1 0x0002
Who is online
Users browsing this forum: No registered users and 1 guest