diff --git a/.gitignore b/.gitignore
index 386a23ec..f858bdf1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -244,16 +244,6 @@ ModelManifest.xml
# FAKE - F# Make
.fake/
-
-
-# WiX Toolset files
-*.msi
-*.wixobj
-*.wixpdb
-
-# Archive files
-*.zip
-
# Backup files
*.BAK
*.bak
diff --git a/README.md b/README.md
index 57507f59..75d41a86 100644
--- a/README.md
+++ b/README.md
@@ -191,10 +191,14 @@ IME ON/OFF のキーのみ、IME ON → OFF のときにも反映されます。
| config.xml | 各種設定 |
| skkdict.txt | 取込済SKK辞書 |
-各種設定の config.xml ファイルは、UTF-8 の XML フォーマットのテキストファイルとなっており、テキストエディタで編集可能です。変更した後は、IME OFF → ON で新しい設定が反映されます。
+各種設定の config.xml ファイルは、UTF-8 の XML フォーマットのテキストファイルとなっています。
+
+設定ダイアログで OK ボタンまたは適用ボタンを押すと config.xml ファイルが保存されます。テキストエディタなどでも編集可能です。変更した後は、IME OFF → ON で新しい設定が反映されます。
取込済SKK辞書の skkdict.txt ファイルは、UTF-16 (LE, BOMあり) のSKK辞書フォーマットとなっています。
+設定ダイアログのリストにSKK辞書を追加して取込ボタンを押すと取込済SKK辞書に変換されます。後述の[SKK辞書](#skk辞書)の項を参照してください。
+
SKK辞書サーバーを使用するなどでローカルのSKK辞書を使用したくないときは、設定ダイアログのSKK辞書のリストが空またはチェック無しの状態で取込処理をおこなってください。空の取込済SKK辞書が生成されます。
下記のディレクトリの優先順位で各ファイルが読み込まれます。
@@ -233,10 +237,11 @@ UTF-16 (LE, BOMあり) のSKKユーザー辞書フォーマットで書き込ま
辞書管理プロセスを直接実行することも可能です。
-ユーザー辞書は、辞書管理プロセスの起動時にメモリ上に読み込まれ、追加、変更、削除があったとき、かつ、以下のいずれかのときに上書きされます。
+ユーザー辞書は、辞書管理プロセスの起動時にメモリ上に読み込まれ、候補の確定、登録、削除があったとき、かつ、以下のいずれかのときに上書きされます。
-* IME ON 状態から OFF 状態にするとき
+* IME ON → OFF のとき
* IME ON 状態のアプリケーションが終了するとき
+* IME ON 状態で別の IME に切り替えるとき
* アプリケーションがフォーカスを失うとき
* 辞書管理プロセスが終了するとき
* スリープ、休止状態に移行するとき
@@ -331,6 +336,7 @@ SKK辞書のダウンロード機能では HTTP, HTTPS が使用可能です。
| 動的補完を使用する | 見出し語が入力されたとき、ユーザー辞書から補完された見出し語を表示します。
「▽表示属性」の「\*送り」の色が使用されます。 |
| 複数動的補完を使用する | 見出し語が入力されたとき、ユーザー辞書から補完された見出し語を一覧で表示します。
補完対象は「候補一覧の色」の「選択」、補完部分は「候補」の色が使用されます。 |
| 補完された見出し語の候補を表示する | 補完/複数補完/動的補完/複数動的補完のとき、ユーザー辞書の検索結果を追加して表示します。
表示する候補の数は最大で「候補一覧表示に要する変換回数」-1 です。
補完/動的補完では「▽表示属性」の「\*送り」の色が使用されます。
複数補完/複数動的補完では「候補一覧の色」の「注釈」の色が使用されます。 |
+| 前方一致と後方一致で補完する | 通常の前方一致での補完に加えて後方一致でも補完します。 |
###表示
@@ -842,9 +848,9 @@ tsf-tutcodeは未実装機能が多いため。
### 開発環境
-Visual Studio Community 2015 Update 2
+Visual Studio Community 2015 Update 3
-WiX Toolset v3.10.2
+WiX Toolset v3.10.3
pandoc 1.17.1
diff --git a/common/configxml.cpp b/common/configxml.cpp
index d978198e..a51174b2 100644
--- a/common/configxml.cpp
+++ b/common/configxml.cpp
@@ -74,6 +74,7 @@ LPCWSTR ValueStaCompMulti = L"stacompmulti";
LPCWSTR ValueDynamicComp = L"dynamiccomp";
LPCWSTR ValueDynCompMulti = L"dyncompmulti";
LPCWSTR ValueCompUserDic = L"compuserdic";
+LPCWSTR ValueCompIncBack = L"compincback";
//font section
diff --git a/common/configxml.h b/common/configxml.h
index 57e24326..760b8b73 100644
--- a/common/configxml.h
+++ b/common/configxml.h
@@ -101,6 +101,7 @@ extern LPCWSTR ValueStaCompMulti;
extern LPCWSTR ValueDynamicComp;
extern LPCWSTR ValueDynCompMulti;
extern LPCWSTR ValueCompUserDic;
+extern LPCWSTR ValueCompIncBack;
//font section
diff --git a/imcrvcnf/DlgProcBehavior2.cpp b/imcrvcnf/DlgProcBehavior2.cpp
index b9a97ec7..60b459a1 100644
--- a/imcrvcnf/DlgProcBehavior2.cpp
+++ b/imcrvcnf/DlgProcBehavior2.cpp
@@ -32,6 +32,7 @@ INT_PTR CALLBACK DlgProcBehavior2(HWND hDlg, UINT message, WPARAM wParam, LPARAM
LoadCheckButton(hDlg, IDC_CHECKBOX_DYNAMINCOMP, SectionBehavior, ValueDynamicComp);
LoadCheckButton(hDlg, IDC_CHECKBOX_DYNCOMPMULTI, SectionBehavior, ValueDynCompMulti);
LoadCheckButton(hDlg, IDC_CHECKBOX_COMPUSERDIC, SectionBehavior, ValueCompUserDic);
+ LoadCheckButton(hDlg, IDC_CHECKBOX_COMPINCBACK, SectionBehavior, ValueCompIncBack);
return TRUE;
@@ -53,6 +54,7 @@ INT_PTR CALLBACK DlgProcBehavior2(HWND hDlg, UINT message, WPARAM wParam, LPARAM
case IDC_CHECKBOX_DYNAMINCOMP:
case IDC_CHECKBOX_DYNCOMPMULTI:
case IDC_CHECKBOX_COMPUSERDIC:
+ case IDC_CHECKBOX_COMPINCBACK:
PropSheet_Changed(GetParent(hDlg), hDlg);
@@ -78,6 +80,7 @@ INT_PTR CALLBACK DlgProcBehavior2(HWND hDlg, UINT message, WPARAM wParam, LPARAM
SaveCheckButton(hDlg, IDC_CHECKBOX_DYNAMINCOMP, ValueDynamicComp);
SaveCheckButton(hDlg, IDC_CHECKBOX_DYNCOMPMULTI, ValueDynCompMulti);
SaveCheckButton(hDlg, IDC_CHECKBOX_COMPUSERDIC, ValueCompUserDic);
+ SaveCheckButton(hDlg, IDC_CHECKBOX_COMPINCBACK, ValueCompIncBack);
WriterEndSection(pXmlWriter); //End of SectionBehavior
diff --git a/imcrvcnf/imcrvcnf.cpp b/imcrvcnf/imcrvcnf.cpp
index eb79fbed..e78424fe 100644
--- a/imcrvcnf/imcrvcnf.cpp
+++ b/imcrvcnf/imcrvcnf.cpp
@@ -19,6 +19,10 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmd
hMutex = CreateMutexW(nullptr, FALSE, cnfmutexname);
if(hMutex == nullptr || GetLastError() == ERROR_ALREADY_EXISTS)
{
+ if(hMutex != nullptr)
+ {
+ CloseHandle(hMutex);
+ }
return 0;
}
diff --git a/imcrvcnf/imcrvcnf.rc b/imcrvcnf/imcrvcnf.rc
index aaa8b123..7b0ad1bd 100644
Binary files a/imcrvcnf/imcrvcnf.rc and b/imcrvcnf/imcrvcnf.rc differ
diff --git a/imcrvcnf/resource.h b/imcrvcnf/resource.h
index 790fd16e..39637d12 100644
--- a/imcrvcnf/resource.h
+++ b/imcrvcnf/resource.h
@@ -57,6 +57,7 @@
#define IDC_CHECKBOX_DYNAMINCOMP 1303
#define IDC_CHECKBOX_DYNCOMPMULTI 1304
#define IDC_CHECKBOX_COMPUSERDIC 1305
+#define IDC_CHECKBOX_COMPINCBACK 1306
#define IDC_EDIT_FONTNAME 2001
#define IDC_EDIT_FONTPOINT 2002
diff --git a/imcrvmgr/ConfigMgr.cpp b/imcrvmgr/ConfigMgr.cpp
index dfacea7c..d87c9487 100644
--- a/imcrvmgr/ConfigMgr.cpp
+++ b/imcrvmgr/ConfigMgr.cpp
@@ -26,6 +26,7 @@ DWORD encoding = 0; //エンコーディング
DWORD timeout = 1000; //タイムアウト
BOOL precedeokuri = FALSE; //送り仮名が一致した候補を優先する
+BOOL compincback = FALSE; //前方一致と後方一致で補完する
const luaL_Reg luaFuncs[] =
{
@@ -240,6 +241,13 @@ void LoadConfig()
{
precedeokuri = FALSE;
}
+
+ ReadValue(pathconfigxml, SectionBehavior, ValueCompIncBack, strxmlval);
+ compincback = _wtoi(strxmlval.c_str());
+ if(compincback != TRUE && compincback != FALSE)
+ {
+ compincback = FALSE;
+ }
}
BOOL IsFileModified(LPCWSTR path, FILETIME *ft)
diff --git a/imcrvmgr/SearchDictionary.cpp b/imcrvmgr/SearchDictionary.cpp
index 4fe3b8fb..7049e795 100644
--- a/imcrvmgr/SearchDictionary.cpp
+++ b/imcrvmgr/SearchDictionary.cpp
@@ -508,7 +508,7 @@ int lua_delete(lua_State *lua)
int lua_save(lua_State *lua)
{
- StartSaveSKKUserDic(TRUE);
+ StartSaveUserDic(TRUE);
return 0;
}
diff --git a/imcrvmgr/SearchUserDictionary.cpp b/imcrvmgr/SearchUserDictionary.cpp
index afea295a..f6e3c780 100644
--- a/imcrvmgr/SearchUserDictionary.cpp
+++ b/imcrvmgr/SearchUserDictionary.cpp
@@ -12,8 +12,7 @@ KEYORDER complements;
//補完なし
KEYORDER accompaniments;
-void AddKeyOrder(const std::wstring &searchkey, KEYORDER &keyorder);
-void DelKeyOrder(const std::wstring &searchkey, KEYORDER &keyorder);
+HANDLE hThreadUserDic = INVALID_HANDLE_VALUE;
std::wstring SearchUserDic(const std::wstring &searchkey, const std::wstring &okuri)
{
@@ -86,11 +85,22 @@ void SearchComplement(const std::wstring &searchkey, SKKDICCANDIDATES &sc)
break;
}
- if(keyorder_ritr->compare(0, searchkey.size(), searchkey) == 0 &&
- searchkey.size() < keyorder_ritr->size())
+ if(searchkey.size() < keyorder_ritr->size())
{
- sc.push_back(SKKDICCANDIDATE(*keyorder_ritr, L""));
- ++count;
+ if(keyorder_ritr->compare(0, searchkey.size(), searchkey) == 0)
+ {
+ //前方一致
+ sc.push_back(SKKDICCANDIDATE(*keyorder_ritr, L""));
+ ++count;
+ }
+ else if(compincback &&
+ keyorder_ritr->compare((keyorder_ritr->size() - searchkey.size()),
+ searchkey.size(), searchkey) == 0)
+ {
+ //後方一致
+ sc.push_back(SKKDICCANDIDATE(*keyorder_ritr, L""));
+ ++count;
+ }
}
}
}
@@ -146,6 +156,28 @@ void SearchComplementSearchCandidate(SKKDICCANDIDATES &sc, int max)
}
}
+void DelKeyOrder(const std::wstring &searchkey, KEYORDER &keyorder)
+{
+ if(!keyorder.empty())
+ {
+ FORWARD_ITERATION_I(keyorder_itr, keyorder)
+ {
+ if(searchkey == *keyorder_itr)
+ {
+ keyorder.erase(keyorder_itr);
+ break;
+ }
+ }
+ }
+}
+
+void AddKeyOrder(const std::wstring &searchkey, KEYORDER &keyorder)
+{
+ DelKeyOrder(searchkey, keyorder);
+
+ keyorder.push_back(searchkey);
+}
+
void AddUserDic(WCHAR command, const std::wstring &searchkey, const std::wstring &candidate, const std::wstring &annotation, const std::wstring &okuri)
{
SKKDICENTRY userdicentry;
@@ -321,29 +353,7 @@ void DelUserDic(WCHAR command, const std::wstring &searchkey, const std::wstring
}
}
-void AddKeyOrder(const std::wstring &searchkey, KEYORDER &keyorder)
-{
- DelKeyOrder(searchkey, keyorder);
-
- keyorder.push_back(searchkey);
-}
-
-void DelKeyOrder(const std::wstring &searchkey, KEYORDER &keyorder)
-{
- if(!keyorder.empty())
- {
- FORWARD_ITERATION_I(keyorder_itr, keyorder)
- {
- if(searchkey == *keyorder_itr)
- {
- keyorder.erase(keyorder_itr);
- break;
- }
- }
- }
-}
-
-BOOL LoadSKKUserDic()
+BOOL LoadUserDic()
{
FILE *fp;
std::wstring key, empty;
@@ -352,10 +362,12 @@ BOOL LoadSKKUserDic()
SKKDICOKURIBLOCKS so;
USEROKURIENTRY userokurientry;
+ userdic.clear();
+ userokuri.clear();
complements.clear();
accompaniments.clear();
- _wfopen_s(&fp, pathuserdic, RccsUTF8);
+ _wfopen_s(&fp, pathuserdic, RccsUTF8); //UTF-8 or UTF-16LE(with BOM)
if(fp == nullptr)
{
return FALSE;
@@ -505,7 +517,7 @@ BOOL LoadSKKUserDic()
return TRUE;
}
-void WriteSKKUserDicEntry(FILE *fp, const std::wstring &key, const SKKDICCANDIDATES &sc, const SKKDICOKURIBLOCKS &so)
+void WriteUserDicEntry(FILE *fp, const std::wstring &key, const SKKDICCANDIDATES &sc, const SKKDICOKURIBLOCKS &so)
{
std::wstring line;
@@ -533,13 +545,18 @@ void WriteSKKUserDicEntry(FILE *fp, const std::wstring &key, const SKKDICCANDIDA
fwprintf(fp, L"%s\n", line.c_str());
}
-void SaveSKKUserDic(void *p)
+unsigned int __stdcall SaveUserDic(void *p)
{
USERDATA *userdata = (USERDATA *)p;
FILE *fp;
SKKDICOKURIBLOCKS so;
- EnterCriticalSection(&csUserDataSave); // !
+ if(userdata == nullptr)
+ {
+ return 0;
+ }
+
+ EnterCriticalSection(&csSaveUserDic); // !
_wfopen_s(&fp, pathuserdic, WccsUTF16);
if(fp == nullptr)
@@ -561,7 +578,7 @@ void SaveSKKUserDic(void *p)
{
so = userokuri_itr->second.o;
}
- WriteSKKUserDicEntry(fp, userdic_itr->first, userdic_itr->second, so);
+ WriteUserDicEntry(fp, userdic_itr->first, userdic_itr->second, so);
}
}
@@ -575,55 +592,91 @@ void SaveSKKUserDic(void *p)
auto userdic_itr = userdata->userdic.find(*keyorder_ritr);
if(userdic_itr != userdata->userdic.end())
{
- WriteSKKUserDicEntry(fp, userdic_itr->first, userdic_itr->second, so);
+ WriteUserDicEntry(fp, userdic_itr->first, userdic_itr->second, so);
}
}
fclose(fp);
exit:
-
- LeaveCriticalSection(&csUserDataSave); // !
+ LeaveCriticalSection(&csSaveUserDic); // !
delete userdata;
+
+ return 0;
}
-void StartSaveSKKUserDic(BOOL bThread)
+void StartSaveUserDic(BOOL bThread)
{
+ if(hThreadUserDic != INVALID_HANDLE_VALUE)
+ {
+ DWORD ws = WaitForSingleObject(hThreadUserDic, (bThread ? 0 : INFINITE));
+ switch(ws)
+ {
+ case WAIT_OBJECT_0:
+ CloseHandle(hThreadUserDic);
+ hThreadUserDic = INVALID_HANDLE_VALUE;
+ break;
+ case WAIT_TIMEOUT:
+ return;
+ break;
+ default:
+ break;
+ }
+ }
+
if(bUserDicChg)
{
- bUserDicChg = FALSE;
+ USERDATA *userdata = nullptr;
try
{
- USERDATA *userdata = new USERDATA();
+ userdata = new USERDATA();
userdata->userdic = userdic;
userdata->userokuri = userokuri;
userdata->complements = complements;
userdata->accompaniments = accompaniments;
-
- if(bThread)
+ }
+ catch(...)
+ {
+ if(userdata != nullptr)
{
- _beginthread(SaveSKKUserDic, 0, userdata);
+ delete userdata;
}
- else
+ return;
+ }
+
+ if(bThread)
+ {
+ if(hThreadUserDic == INVALID_HANDLE_VALUE)
{
- SaveSKKUserDic(userdata);
+ hThreadUserDic = (HANDLE)_beginthreadex(nullptr, 0, SaveUserDic, userdata, 0, nullptr);
+ if(hThreadUserDic == nullptr)
+ {
+ delete userdata;
+ hThreadUserDic = INVALID_HANDLE_VALUE;
+ }
+ else
+ {
+ bUserDicChg = FALSE;
+ }
}
}
- catch(...)
+ else
{
+ SaveUserDic(userdata);
+ bUserDicChg = FALSE;
}
}
}
-void BackUpSKKUserDic()
+void BackUpUserDic()
{
- EnterCriticalSection(&csUserDataSave); // !
-
WCHAR oldpath[MAX_PATH];
WCHAR newpath[MAX_PATH];
+ EnterCriticalSection(&csSaveUserDic); // !
+
for(int i = BACKUP_GENS; i > 1; i--)
{
_snwprintf_s(oldpath, _TRUNCATE, L"%s%d", pathuserbak, i - 1);
@@ -636,5 +689,5 @@ void BackUpSKKUserDic()
CopyFileW(pathuserdic, newpath, FALSE);
- LeaveCriticalSection(&csUserDataSave); // !
+ LeaveCriticalSection(&csSaveUserDic); // !
}
diff --git a/imcrvmgr/Server.cpp b/imcrvmgr/Server.cpp
index 3c8228bd..97ae7bb8 100644
--- a/imcrvmgr/Server.cpp
+++ b/imcrvmgr/Server.cpp
@@ -252,7 +252,7 @@ void SrvProc(WCHAR command, const std::wstring &argument, std::wstring &result)
}
else
{
- StartSaveSKKUserDic(TRUE);
+ StartSaveUserDic(TRUE);
}
result = REP_OK;
@@ -335,7 +335,7 @@ unsigned int __stdcall SrvThread(void *p)
tedit = std::regex_replace(tedit, re, fmt);
dedit.append(tedit);
- SetWindowTextW(hwndEdit, dedit.c_str());
+ SetWindowTextW(hWndEdit, dedit.c_str());
#endif
SrvProc(command, &pipebuf[2], wspipebuf);
@@ -351,8 +351,8 @@ unsigned int __stdcall SrvThread(void *p)
tedit = std::regex_replace(tedit, re, fmt);
dedit.append(tedit);
- SetWindowTextW(hwndEdit, dedit.c_str());
- SendMessageW(hwndEdit, WM_VSCROLL, SB_BOTTOM, 0);
+ SetWindowTextW(hWndEdit, dedit.c_str());
+ SendMessageW(hWndEdit, WM_VSCROLL, SB_BOTTOM, 0);
switch(command)
{
@@ -402,11 +402,10 @@ HANDLE SrvStart()
if(hPipe != INVALID_HANDLE_VALUE)
{
hThread = (HANDLE)_beginthreadex(nullptr, 0, SrvThread, hPipe, 0, nullptr);
- }
-
- if(hThread == nullptr)
- {
- CloseHandle(hPipe);
+ if(hThread == nullptr)
+ {
+ CloseHandle(hPipe);
+ }
}
return hThread;
diff --git a/imcrvmgr/imcrvmgr.cpp b/imcrvmgr/imcrvmgr.cpp
index 31dca779..00d4fbed 100644
--- a/imcrvmgr/imcrvmgr.cpp
+++ b/imcrvmgr/imcrvmgr.cpp
@@ -3,11 +3,11 @@
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
-CRITICAL_SECTION csUserDataSave;
+CRITICAL_SECTION csSaveUserDic;
BOOL bUserDicChg;
FILETIME ftConfig, ftSKKDic;
#ifdef _DEBUG
-HWND hwndEdit;
+HWND hWndEdit;
HFONT hFont;
#endif
HINSTANCE hInst;
@@ -21,52 +21,21 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmd
MSG msg;
WNDCLASSEXW wc;
HWND hWnd;
- WSADATA wsaData;
- PSECURITY_DESCRIPTOR psd;
- SECURITY_ATTRIBUTES sa;
_wsetlocale(LC_ALL, L"JPN");
- CreateConfigPath();
- UpdateConfigPath();
CreateIpcName();
- if(ConvertStringSecurityDescriptorToSecurityDescriptorW(krnlobjsddl, SDDL_REVISION_1, &psd, nullptr))
+ hMutex = CreateMutexW(nullptr, FALSE, mgrmutexname);
+ if(hMutex == nullptr || GetLastError() == ERROR_ALREADY_EXISTS)
{
- sa.nLength = sizeof(sa);
- sa.lpSecurityDescriptor = psd;
- sa.bInheritHandle = FALSE;
-
- hMutex = CreateMutexW(&sa, FALSE, mgrmutexname);
- if(hMutex == nullptr || GetLastError() == ERROR_ALREADY_EXISTS)
+ if(hMutex != nullptr)
{
- LocalFree(psd);
- return 0;
+ CloseHandle(hMutex);
}
-
- LocalFree(psd);
- }
- else
- {
return 0;
}
- WSAStartup(WINSOCK_VERSION, &wsaData);
-
- ZeroMemory(&ftConfig, sizeof(ftConfig));
- if(IsFileModified(pathconfigxml, &ftConfig))
- {
- LoadConfig();
- }
-
- ZeroMemory(&ftSKKDic, sizeof(ftSKKDic));
- if(IsFileModified(pathskkdic, &ftSKKDic))
- {
- MakeSKKDicPos();
- }
-
- InitLua();
-
hInst = hInstance;
ZeroMemory(&wc, sizeof(wc));
@@ -89,8 +58,8 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmd
if(!hWnd)
{
- UninitLua();
- WSACleanup();
+ ReleaseMutex(hMutex);
+ CloseHandle(hMutex);
return 0;
}
@@ -110,8 +79,8 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmd
}
}
- UninitLua();
- WSACleanup();
+ ReleaseMutex(hMutex);
+ CloseHandle(hMutex);
return (int) msg.wParam;
}
@@ -119,6 +88,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmd
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HANDLE hPipe;
+ WSADATA wsaData;
#ifdef _DEBUG
RECT r;
HDC hDC;
@@ -129,21 +99,40 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
case WM_CREATE:
#ifdef _DEBUG
GetClientRect(hWnd, &r);
- hwndEdit = CreateWindowW(L"EDIT", L"",
+ hWndEdit = CreateWindowW(L"EDIT", L"",
WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_LEFT | ES_MULTILINE | ES_READONLY,
0, 0, r.right, r.bottom, hWnd, nullptr, hInst, nullptr);
- hDC = GetDC(hwndEdit);
+ hDC = GetDC(hWndEdit);
hFont = CreateFontW(-MulDiv(10, GetDeviceCaps(hDC, LOGPIXELSY), 72), 0, 0, 0,
FW_NORMAL, FALSE, FALSE, FALSE, SHIFTJIS_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH,
L"Meiryo");
- SendMessageW(hwndEdit, WM_SETFONT, (WPARAM)hFont, 0);
- ReleaseDC(hwndEdit, hDC);
+ SendMessageW(hWndEdit, WM_SETFONT, (WPARAM)hFont, 0);
+ ReleaseDC(hWndEdit, hDC);
#endif
- InitializeCriticalSection(&csUserDataSave);
+ WSAStartup(WINSOCK_VERSION, &wsaData);
+
+ CreateConfigPath();
+ UpdateConfigPath();
+
+ ZeroMemory(&ftConfig, sizeof(ftConfig));
+ if(IsFileModified(pathconfigxml, &ftConfig))
+ {
+ LoadConfig();
+ }
+
+ ZeroMemory(&ftSKKDic, sizeof(ftSKKDic));
+ if(IsFileModified(pathskkdic, &ftSKKDic))
+ {
+ MakeSKKDicPos();
+ }
bUserDicChg = FALSE;
- LoadSKKUserDic();
+ LoadUserDic();
+
+ InitLua();
+
+ InitializeCriticalSection(&csSaveUserDic); // !
LoadBushuConvUserDic();
@@ -158,16 +147,16 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
#ifdef _DEBUG
case WM_SIZE:
GetClientRect(hWnd, &r);
- MoveWindow(hwndEdit, 0, 0, r.right, r.bottom, TRUE);
+ MoveWindow(hWndEdit, 0, 0, r.right, r.bottom, TRUE);
break;
#endif
case WM_POWERBROADCAST:
if(wParam == PBT_APMSUSPEND)
{
- StartSaveSKKUserDic(FALSE);
+ StartSaveUserDic(FALSE);
- BackUpSKKUserDic();
+ BackUpUserDic();
}
break;
@@ -187,17 +176,18 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
CloseHandle(hThreadSrv);
- StartSaveSKKUserDic(FALSE);
+ StartSaveUserDic(FALSE);
if(message == WM_ENDSESSION)
{
- BackUpSKKUserDic();
+ BackUpUserDic();
}
- DeleteCriticalSection(&csUserDataSave);
+ DeleteCriticalSection(&csSaveUserDic); // !
- ReleaseMutex(hMutex);
- CloseHandle(hMutex);
+ UninitLua();
+
+ WSACleanup();
PostQuitMessage(0);
break;
diff --git a/imcrvmgr/imcrvmgr.h b/imcrvmgr/imcrvmgr.h
index 39971f9e..5fcf6bbd 100644
--- a/imcrvmgr/imcrvmgr.h
+++ b/imcrvmgr/imcrvmgr.h
@@ -53,10 +53,9 @@ void SearchComplement(const std::wstring &searchkey, SKKDICCANDIDATES &sc);
void SearchComplementSearchCandidate(SKKDICCANDIDATES &sc, int max);
void AddUserDic(WCHAR command, const std::wstring &searchkey, const std::wstring &candidate, const std::wstring &annotation, const std::wstring &okuri);
void DelUserDic(WCHAR command, const std::wstring &searchkey, const std::wstring &candidate);
-BOOL LoadSKKUserDic();
-void SaveSKKUserDic(void *p);
-void StartSaveSKKUserDic(BOOL bThread);
-void BackUpSKKUserDic();
+BOOL LoadUserDic();
+void StartSaveUserDic(BOOL bThread);
+void BackUpUserDic();
// SearchSKKServer
std::wstring SearchSKKServer(const std::wstring &searchkey);
@@ -82,11 +81,11 @@ HANDLE SrvStart();
std::wstring ConvBushu(const std::wstring &bushu1, const std::wstring &bushu2);
BOOL LoadBushuConvUserDic();
-extern CRITICAL_SECTION csUserDataSave;
+extern CRITICAL_SECTION csSaveUserDic;
extern BOOL bUserDicChg;
extern FILETIME ftConfig, ftSKKDic;
#ifdef _DEBUG
-extern HWND hwndEdit;
+extern HWND hWndEdit;
extern HFONT hFont;
#endif
extern HINSTANCE hInst;
@@ -123,5 +122,6 @@ extern DWORD encoding; //エンコーディング
extern DWORD timeout; //タイムアウト
extern BOOL precedeokuri; //送り仮名が一致した候補を優先する
+extern BOOL compincback; //前方一致と後方一致で補完する
#endif //IMCRVMGR_H
diff --git a/imcrvtip/CandidatePaint.cpp b/imcrvtip/CandidatePaint.cpp
index 82cf437a..419cb422 100644
--- a/imcrvtip/CandidatePaint.cpp
+++ b/imcrvtip/CandidatePaint.cpp
@@ -7,6 +7,12 @@
#define MERGIN_X 2
#define MERGIN_Y 4
+const int colors_compback[DISPLAY_COLOR_NUM] =
+{
+ CL_COLOR_BG, CL_COLOR_FR, CL_COLOR_CA, CL_COLOR_CO,
+ CL_COLOR_SE, CL_COLOR_SC, CL_COLOR_AN, CL_COLOR_NO
+};
+
void CCandidateWindow::_WindowProcPaint(HWND hWnd)
{
PAINTSTRUCT ps;
@@ -18,7 +24,7 @@ void CCandidateWindow::_WindowProcPaint(HWND hWnd)
HGDIOBJ bmp = nullptr, font = nullptr, pen, brush;
RECT r, rc;
POINT pt;
- int cx, cy, cycle;
+ int cx, cy;
UINT page, count, i;
std::wstring s;
WCHAR strPage[32];
@@ -97,7 +103,7 @@ void CCandidateWindow::_WindowProcPaint(HWND hWnd)
for(i = 0; i < _CandCount[page]; i++)
{
s.clear();
- for(cycle = CL_COLOR_BG; cycle < DISPLAY_COLOR_NUM; cycle++)
+ for(int cycle = 0; cycle < DISPLAY_COLOR_NUM; cycle++)
{
s += _MakeCandidateString(page, count, i, cycle);
}
@@ -284,8 +290,17 @@ void CCandidateWindow::_PaintRegWord(HDC hdc, LPRECT lpr)
std::wstring CCandidateWindow::_MakeCandidateString(UINT page, UINT count, UINT idx, int cycle)
{
std::wstring s;
+ std::wstring ca = candidates[count + _uShowedCount + idx].first.first;
+ std::wstring an = candidates[count + _uShowedCount + idx].first.second;
+
+ int color_cycle = cycle;
+ if(_comp && ca.compare(0, searchkey.size(), searchkey) != 0)
+ {
+ //補完かつ後方一致
+ color_cycle = colors_compback[cycle];
+ }
- switch(cycle)
+ switch(color_cycle)
{
case CL_COLOR_BG:
s.append(markNBSP);
@@ -315,30 +330,40 @@ std::wstring CCandidateWindow::_MakeCandidateString(UINT page, UINT count, UINT
case CL_COLOR_CA:
if(!_comp)
{
- s.append(
- std::regex_replace(candidates[ count + _uShowedCount + idx ].first.first,
+ s.append(std::regex_replace(ca,
std::wregex(markSP), std::wstring(markNBSP)));
}
else
{
- s.append(
- std::regex_replace(candidates[ count + _uShowedCount + idx ].first.first.substr(searchkey.size()),
- std::wregex(markSP), std::wstring(markNBSP)));
+ if(searchkey.size() < ca.size())
+ {
+ if(ca.compare(0, searchkey.size(), searchkey) == 0)
+ {
+ //前方一致
+ s.append(std::regex_replace(ca.substr(searchkey.size()),
+ std::wregex(markSP), std::wstring(markNBSP)));
+ }
+ else
+ {
+ //後方一致
+ s.append(std::regex_replace(ca.substr(0, ca.size() - searchkey.size()),
+ std::wregex(markSP), std::wstring(markNBSP)));
+ }
+ }
}
break;
case CL_COLOR_SC:
if(!_comp)
{
- if(_pTextService->cx_annotation &&
- !candidates[count + _uShowedCount + idx].first.second.empty())
+ if(_pTextService->cx_annotation && !an.empty())
{
s.append(markAnnotation);
}
}
else
{
- if(!candidates[count + _uShowedCount + idx].first.second.empty())
+ if(!an.empty())
{
s.append(markNBSP);
}
@@ -348,20 +373,17 @@ std::wstring CCandidateWindow::_MakeCandidateString(UINT page, UINT count, UINT
case CL_COLOR_AN:
if(!_comp)
{
- if(_pTextService->cx_annotation &&
- !candidates[count + _uShowedCount + idx].first.second.empty())
+ if(_pTextService->cx_annotation && !an.empty())
{
- s.append(
- std::regex_replace(candidates[count + _uShowedCount + idx].first.second,
+ s.append(std::regex_replace(an,
std::wregex(markSP), std::wstring(markNBSP)));
}
}
else
{
- if(!candidates[count + _uShowedCount + idx].first.second.empty())
+ if(!an.empty())
{
- s.append(
- std::regex_replace(candidates[count + _uShowedCount + idx].first.second,
+ s.append(std::regex_replace(an,
std::wregex(markSP), std::wstring(markNBSP)));
}
}
@@ -381,7 +403,6 @@ std::wstring CCandidateWindow::_MakeCandidateString(UINT page, UINT count, UINT
void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT count, UINT idx)
{
- int cycle;
std::wstring s;
RECT r, r_ex;
D2D1_RECT_F rd2d;
@@ -391,10 +412,19 @@ void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT coun
r_ex = *lpr;
r_ex.right = r_ex.left;
- for(cycle = CL_COLOR_BG; cycle < DISPLAY_COLOR_NUM; cycle++)
+ std::wstring ca = candidates[count + _uShowedCount + idx].first.first;
+
+ for(int cycle = 0; cycle < DISPLAY_COLOR_NUM; cycle++)
{
s = _MakeCandidateString(page, count, idx, cycle);
+ int color_cycle = cycle;
+ if(_comp && ca.compare(0, searchkey.size(), searchkey) != 0)
+ {
+ //補完かつ後方一致
+ color_cycle = colors_compback[cycle];
+ }
+
if(_pD2DDCRT != nullptr && _pDWTF != nullptr)
{
if(_GetTextMetrics(s.c_str(), &dwTM) == S_OK)
@@ -411,7 +441,8 @@ void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT coun
rd2d = D2D1::RectF((FLOAT)r.left, (FLOAT)r.top, (FLOAT)r.right, (FLOAT)r.bottom);
- if(_comp && (count + _uShowedCount + idx == candidx) && (cycle == CL_COLOR_SE || cycle == CL_COLOR_CA))
+ if(_comp && (count + _uShowedCount + idx == candidx) &&
+ (color_cycle == CL_COLOR_SE || color_cycle == CL_COLOR_CA))
{
_pD2DDCRT->FillRectangle(&rd2d, _pD2DBrush[CL_COLOR_SE]);
_pD2DDCRT->DrawText(s.c_str(), (UINT32)s.size(),
@@ -420,7 +451,7 @@ void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT coun
else
{
_pD2DDCRT->DrawText(s.c_str(), (UINT32)s.size(),
- _pDWTF, &rd2d, _pD2DBrush[cycle], _drawtext_option);
+ _pDWTF, &rd2d, _pD2DBrush[color_cycle], _drawtext_option);
}
}
else
@@ -433,7 +464,8 @@ void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT coun
r_ex.right = r.right;
- if(_comp && (count + _uShowedCount + idx == candidx) && (cycle == CL_COLOR_SE || cycle == CL_COLOR_CA))
+ if(_comp && (count + _uShowedCount + idx == candidx) &&
+ (color_cycle == CL_COLOR_SE || color_cycle == CL_COLOR_CA))
{
SetTextColor(hdc, _pTextService->cx_colors[CL_COLOR_BG]);
SetBkColor(hdc, _pTextService->cx_colors[CL_COLOR_SE]);
@@ -441,7 +473,7 @@ void CCandidateWindow::_PaintCandidate(HDC hdc, LPRECT lpr, UINT page, UINT coun
}
else
{
- SetTextColor(hdc, _pTextService->cx_colors[cycle]);
+ SetTextColor(hdc, _pTextService->cx_colors[color_cycle]);
SetBkMode(hdc, TRANSPARENT);
}
@@ -459,7 +491,7 @@ void CCandidateWindow::_CalcWindowRect()
HGDIOBJ font = nullptr;
RECT r, rw;
POINT pt;
- int x, y, cx = 0, cy = 0, xmax = 0, cycle;
+ int x, y, cx = 0, cy = 0, xmax = 0;
UINT page, count, i;
std::wstring s;
WCHAR strPage[32];
@@ -538,7 +570,7 @@ void CCandidateWindow::_CalcWindowRect()
for(i = 0; i < _CandCount[page]; i++)
{
s.clear();
- for(cycle = CL_COLOR_BG; cycle < DISPLAY_COLOR_NUM; cycle++)
+ for(int cycle = 0; cycle < DISPLAY_COLOR_NUM; cycle++)
{
s += _MakeCandidateString(page, count, i, cycle);
}
@@ -596,7 +628,7 @@ void CCandidateWindow::_CalcWindowRect()
for(i = 0; i < _CandCount[page]; i++)
{
s.clear();
- for(cycle = CL_COLOR_BG; cycle < DISPLAY_COLOR_NUM; cycle++)
+ for(int cycle = 0; cycle < DISPLAY_COLOR_NUM; cycle++)
{
s += _MakeCandidateString(page, count, i, cycle);
}
diff --git a/imcrvtip/FnConfig.cpp b/imcrvtip/FnConfig.cpp
index c41fe567..fd6ffe86 100644
--- a/imcrvtip/FnConfig.cpp
+++ b/imcrvtip/FnConfig.cpp
@@ -50,7 +50,7 @@ static const TF_PRESERVEDKEY configpreservedkey[] =
static const struct {
LPCWSTR value;
COLORREF color;
-} colorsxmlvalue[8] =
+} colorsxmlvalue[DISPLAY_COLOR_NUM] =
{
{ValueColorBG, RGB(0xFF,0xFF,0xFF)},
{ValueColorFR, RGB(0x00,0x00,0x00)},
diff --git a/imcrvtip/Icon/imdebug.ico b/imcrvtip/Icon/imdebug.ico
index 1358aa97..de391699 100644
Binary files a/imcrvtip/Icon/imdebug.ico and b/imcrvtip/Icon/imdebug.ico differ
diff --git a/imcrvtip/InputModeWindow.cpp b/imcrvtip/InputModeWindow.cpp
index f326f6f1..14013842 100644
--- a/imcrvtip/InputModeWindow.cpp
+++ b/imcrvtip/InputModeWindow.cpp
@@ -41,50 +41,60 @@ class CInputModeWindowGetTextExtEditSession : public CEditSessionBase
RECT rc;
BOOL fClipped;
- if(_pContextView->GetTextExt(ec, tfSelection.range, &rc, &fClipped) == S_OK)
+ if(_pContextView->GetTextExt(ec, tfSelection.range, &rc, &fClipped) != S_OK)
{
- POINT pt;
- pt.x = rc.left;
- pt.y = rc.bottom;
- HMONITOR hMonitor = MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST);
+ SafeRelease(&tfSelection.range);
+ return E_FAIL;
+ }
- MONITORINFO mi;
- mi.cbSize = sizeof(mi);
- GetMonitorInfoW(hMonitor, &mi);
+ //ignore abnormal position (from CUAS ?)
+ if((rc.top == rc.bottom) && ((rc.right - rc.left) == 1))
+ {
+ SafeRelease(&tfSelection.range);
+ return E_FAIL;
+ }
- RECT rw;
- _pInputModeWindow->_GetRect(&rw);
- LONG height = rw.bottom - rw.top;
- LONG width = rw.right - rw.left;
+ POINT pt;
+ pt.x = rc.left;
+ pt.y = rc.bottom;
+ HMONITOR hMonitor = MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST);
- if(rc.left < mi.rcWork.left)
- {
- rc.left = mi.rcWork.left;
- }
+ MONITORINFO mi;
+ mi.cbSize = sizeof(mi);
+ GetMonitorInfoW(hMonitor, &mi);
- if(mi.rcWork.right < rc.right)
- {
- rc.left = mi.rcWork.right - width;
- }
+ RECT rw;
+ _pInputModeWindow->_GetRect(&rw);
+ LONG height = rw.bottom - rw.top;
+ LONG width = rw.right - rw.left;
- if(mi.rcWork.bottom < rc.top)
- {
- rc.bottom = mi.rcWork.bottom - height - IM_MERGIN_Y;
- }
- else if(mi.rcWork.bottom < (rc.bottom + height + IM_MERGIN_Y))
- {
- rc.bottom = rc.top - height - IM_MERGIN_Y * 2;
- }
+ if(rc.left < mi.rcWork.left)
+ {
+ rc.left = mi.rcWork.left;
+ }
- if(rc.bottom < mi.rcWork.top)
- {
- rc.bottom = mi.rcWork.top - IM_MERGIN_Y;
- }
+ if(mi.rcWork.right < rc.right)
+ {
+ rc.left = mi.rcWork.right - width;
+ }
- _pInputModeWindow->_Move(rc.left, rc.bottom + IM_MERGIN_Y);
- _pInputModeWindow->_Show(TRUE);
+ if(mi.rcWork.bottom < rc.top)
+ {
+ rc.bottom = mi.rcWork.bottom - height - IM_MERGIN_Y;
+ }
+ else if(mi.rcWork.bottom < (rc.bottom + height + IM_MERGIN_Y))
+ {
+ rc.bottom = rc.top - height - IM_MERGIN_Y * 2;
}
+ if(rc.bottom < mi.rcWork.top)
+ {
+ rc.bottom = mi.rcWork.top - IM_MERGIN_Y;
+ }
+
+ _pInputModeWindow->_Move(rc.left, rc.bottom + IM_MERGIN_Y);
+ _pInputModeWindow->_Show(TRUE);
+
SafeRelease(&tfSelection.range);
return S_OK;
diff --git a/imcrvtip/KeyHandler.cpp b/imcrvtip/KeyHandler.cpp
index 58f40c79..e01e40d1 100644
--- a/imcrvtip/KeyHandler.cpp
+++ b/imcrvtip/KeyHandler.cpp
@@ -94,7 +94,8 @@ HRESULT CTextService::_HandleKey(TfEditCookie ec, ITfContext *pContext, WPARAM w
if(complement)
{
complement = FALSE; //補完終了
- kana = kana.erase(cursoridx);
+ kana = searchkey;
+ cursoridx = kana.size();
if(cx_dynamiccomp || cx_dyncompmulti)
{
diff --git a/imcrvtip/KeyHandlerConv.cpp b/imcrvtip/KeyHandlerConv.cpp
index 3169b26a..0185ccfb 100644
--- a/imcrvtip/KeyHandlerConv.cpp
+++ b/imcrvtip/KeyHandlerConv.cpp
@@ -560,7 +560,13 @@ void CTextService::_NextComp()
{
complement = TRUE;
candidx = 0;
- _SetComp(candidates[candidx].first.first);
+ std::wstring compc = candidates[candidx].first.first;
+ cursoridx = searchkey.size();
+ if(compc.compare(0, searchkey.size(), searchkey) != 0)
+ {
+ cursoridx = compc.size() - searchkey.size();
+ }
+ _SetComp(compc);
}
}
else
@@ -568,7 +574,13 @@ void CTextService::_NextComp()
if(candidx < candidates.size() - 1)
{
++candidx;
- _SetComp(candidates[candidx].first.first);
+ std::wstring compc = candidates[candidx].first.first;
+ cursoridx = searchkey.size();
+ if(compc.compare(0, searchkey.size(), searchkey) != 0)
+ {
+ cursoridx = compc.size() - searchkey.size();
+ }
+ _SetComp(compc);
}
}
}
@@ -580,15 +592,21 @@ void CTextService::_PrevComp()
if(candidx == 0)
{
complement = FALSE;
+ kana = searchkey;
+ cursoridx = kana.size();
+
_SetComp(searchkey);
}
else
{
--candidx;
- if(candidx < candidates.size())
+ std::wstring compc = candidates[candidx].first.first;
+ cursoridx = searchkey.size();
+ if(compc.compare(0, searchkey.size(), searchkey) != 0)
{
- _SetComp(candidates[candidx].first.first);
+ cursoridx = compc.size() - searchkey.size();
}
+ _SetComp(compc);
}
}
}
diff --git a/imcrvtip/Register.cpp b/imcrvtip/Register.cpp
index 5c814893..bfdcfc7c 100644
--- a/imcrvtip/Register.cpp
+++ b/imcrvtip/Register.cpp
@@ -1,14 +1,10 @@
#include "imcrvtip.h"
-#define CLSID_STRLEN 38
-#define TEXTSERVICE_MODEL L"Apartment"
-#define TEXTSERVICE_LANGID MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT)
-#ifndef _DEBUG
-#define TEXTSERVICE_ICON_INDEX 0 // see resource script file
-#else
-#define TEXTSERVICE_ICON_INDEX 1
-#endif
+#define CLSID_STRLEN 38
+#define TEXTSERVICE_MODEL L"Apartment"
+#define TEXTSERVICE_LANGID MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT)
+#define TEXTSERVICE_ICON_INDEX 0
static const WCHAR c_szInfoKeyPrefix[] = L"CLSID\\";
static const WCHAR c_szInProcSvr32[] = L"InProcServer32";
diff --git a/imcrvtip/imcrvtip.rc b/imcrvtip/imcrvtip.rc
index 17cf2181..e69aac3b 100644
Binary files a/imcrvtip/imcrvtip.rc and b/imcrvtip/imcrvtip.rc differ
diff --git a/imcrvtip/imcrvtip.vcxproj b/imcrvtip/imcrvtip.vcxproj
index ee90cabd..27eaaedb 100644
--- a/imcrvtip/imcrvtip.vcxproj
+++ b/imcrvtip/imcrvtip.vcxproj
@@ -115,6 +115,7 @@
$(SolutionDir)common;%(AdditionalIncludeDirectories)
0x0411
/c 65001
+ _DEBUG;%(PreprocessorDefinitions)
icacls "$(SolutionDir)$(Platform)\$(Configuration)\$(TargetFileName)" /grant *S-1-15-2-1:RX > nul
@@ -143,6 +144,7 @@ ver > nul
$(SolutionDir)common;%(AdditionalIncludeDirectories)
0x0411
/c 65001
+ _DEBUG;%(PreprocessorDefinitions)
icacls "$(SolutionDir)$(Platform)\$(Configuration)\$(TargetFileName)" /grant *S-1-15-2-1:RX > nul
diff --git a/imcrvtip/resource.h b/imcrvtip/resource.h
index b7f4940e..e55ca08a 100644
--- a/imcrvtip/resource.h
+++ b/imcrvtip/resource.h
@@ -2,8 +2,7 @@
#ifndef RESOURCE_H
#define RESOURCE_H
-#define IDI_0_SKK 100
-#define IDI_1_DBG 101
+#define IDI_0_IME 100
#define IDI_X_DEFAULT 201
#define IDI_X_HIRAGANA 202
diff --git a/installer/config-sample/config - act.xml b/installer/config-sample/config - act.xml
deleted file mode 100644
index 16351b27..00000000
--- a/installer/config-sample/config - act.xml
+++ /dev/null
@@ -1,1046 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/installer/config-sample/config - azik-jpkbd.xml b/installer/config-sample/config - azik-jpkbd.xml
deleted file mode 100644
index c4b14b5a..00000000
--- a/installer/config-sample/config - azik-jpkbd.xml
+++ /dev/null
@@ -1,960 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/installer/config-sample/config - azik-uskbd.xml b/installer/config-sample/config - azik-uskbd.xml
deleted file mode 100644
index ea3cc9fe..00000000
--- a/installer/config-sample/config - azik-uskbd.xml
+++ /dev/null
@@ -1,960 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/installer/config-sample/config - gact10.xml b/installer/config-sample/config - gact10.xml
deleted file mode 100644
index 3971a0bf..00000000
--- a/installer/config-sample/config - gact10.xml
+++ /dev/null
@@ -1,1482 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/installer/config-sample/config - kana.xml b/installer/config-sample/config - kana.xml
deleted file mode 100644
index e004d871..00000000
--- a/installer/config-sample/config - kana.xml
+++ /dev/null
@@ -1,1245 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/installer/config-sample/config - roman.xml b/installer/config-sample/config - roman.xml
deleted file mode 100644
index e4b40018..00000000
--- a/installer/config-sample/config - roman.xml
+++ /dev/null
@@ -1,659 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/installer/config-share/config.xml b/installer/config-share/config.xml
index 15d7ce8a..3238f92e 100644
--- a/installer/config-share/config.xml
+++ b/installer/config-share/config.xml
@@ -26,6 +26,7 @@
+
diff --git a/installer/resource-md/01_dictionary.png b/installer/resource-md/01_dictionary.png
index f5b66046..1295759c 100644
Binary files a/installer/resource-md/01_dictionary.png and b/installer/resource-md/01_dictionary.png differ
diff --git a/installer/resource-md/02_behavior_1.png b/installer/resource-md/02_behavior_1.png
index 815aab43..d1bfb8eb 100644
Binary files a/installer/resource-md/02_behavior_1.png and b/installer/resource-md/02_behavior_1.png differ
diff --git a/installer/resource-md/03_behavior_2.png b/installer/resource-md/03_behavior_2.png
index c85bcf0d..ec375c91 100644
Binary files a/installer/resource-md/03_behavior_2.png and b/installer/resource-md/03_behavior_2.png differ
diff --git a/installer/resource-md/04_display.png b/installer/resource-md/04_display.png
index 05d459a1..0c21af3f 100644
Binary files a/installer/resource-md/04_display.png and b/installer/resource-md/04_display.png differ
diff --git a/installer/resource-md/05_display_attribute_1.png b/installer/resource-md/05_display_attribute_1.png
index e0f215b5..aa9d2974 100644
Binary files a/installer/resource-md/05_display_attribute_1.png and b/installer/resource-md/05_display_attribute_1.png differ
diff --git a/installer/resource-md/06_display_attribute_2.png b/installer/resource-md/06_display_attribute_2.png
index dbbe9afc..1136d768 100644
Binary files a/installer/resource-md/06_display_attribute_2.png and b/installer/resource-md/06_display_attribute_2.png differ
diff --git a/installer/resource-md/07_select_key.png b/installer/resource-md/07_select_key.png
index ef948042..b680f685 100644
Binary files a/installer/resource-md/07_select_key.png and b/installer/resource-md/07_select_key.png differ
diff --git a/installer/resource-md/08_on_off_key.png b/installer/resource-md/08_on_off_key.png
index 06c22975..9c8c6400 100644
Binary files a/installer/resource-md/08_on_off_key.png and b/installer/resource-md/08_on_off_key.png differ
diff --git a/installer/resource-md/09_key1_character.png b/installer/resource-md/09_key1_character.png
index 4559eb7a..7673e533 100644
Binary files a/installer/resource-md/09_key1_character.png and b/installer/resource-md/09_key1_character.png differ
diff --git a/installer/resource-md/10_key2_virtual_key.png b/installer/resource-md/10_key2_virtual_key.png
index 38fed252..71566b9f 100644
Binary files a/installer/resource-md/10_key2_virtual_key.png and b/installer/resource-md/10_key2_virtual_key.png differ
diff --git a/installer/resource-md/11_conversion_point.png b/installer/resource-md/11_conversion_point.png
index f03c30d3..dc75e58e 100644
Binary files a/installer/resource-md/11_conversion_point.png and b/installer/resource-md/11_conversion_point.png differ
diff --git a/installer/resource-md/12_kana.png b/installer/resource-md/12_kana.png
index d21cad91..3db8688f 100644
Binary files a/installer/resource-md/12_kana.png and b/installer/resource-md/12_kana.png differ
diff --git a/installer/resource-md/13_full_width_latin.png b/installer/resource-md/13_full_width_latin.png
index ac6f9ae5..dd21682c 100644
Binary files a/installer/resource-md/13_full_width_latin.png and b/installer/resource-md/13_full_width_latin.png differ
diff --git a/installer/resource-md/21_convert_program.png b/installer/resource-md/21_convert_program.png
index 402be79d..6cb1565e 100644
Binary files a/installer/resource-md/21_convert_program.png and b/installer/resource-md/21_convert_program.png differ
diff --git a/tsf-tutcode.sln b/tsf-tutcode.sln
index 50785be3..ee479d0b 100644
--- a/tsf-tutcode.sln
+++ b/tsf-tutcode.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
-VisualStudioVersion = 14.0.25123.0
+VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "installer", "installer\installer.vcxproj", "{C65505E2-5456-473C-91B1-C6D91B294DC3}"
ProjectSection(ProjectDependencies) = postProject