perky       03/12/26 17:22:45

  Log:
  Import saenaru as of openlook-era
  
  Status:
  
  Vendor Tag:	OPENLOOK
  Release Tags:	SAENARU_EPOCH
  
  N saenaru/DIRS
  N saenaru/LICENSE
  N saenaru/LICENSE.MICROSOFT
  N saenaru/doc/saenaru.htm
  N saenaru/resource/about.ico
  N saenaru/resource/check.bmp
  N saenaru/resource/close.bmp
  N saenaru/resource/face.bmp
  N saenaru/resource/general.ico
  N saenaru/resource/penindic.ico
  N saenaru/resource/saenaru.dic
  N saenaru/resource/saenaru.dlg
  N saenaru/resource/saenaru.ico
  N saenaru/resource/saenaru.rcv
  N saenaru/resource/status.bmp
  N saenaru/resource/uncheck.bmp
  N saenaru/setup/saenaru.inf
  N saenaru/src/config.c
  N saenaru/src/data.c
  N saenaru/src/dic.c
  N saenaru/src/dic2.c
  N saenaru/src/fdebug.c
  N saenaru/src/imm.c
  N saenaru/src/immsec.c
  N saenaru/src/immsec.h
  N saenaru/src/indicml.h
  N saenaru/src/input.c
  N saenaru/src/makefile
  N saenaru/src/makefile.inc
  N saenaru/src/process.c
  N saenaru/src/regword.c
  N saenaru/src/resource.h
  N saenaru/src/saenaru.c
  N saenaru/src/saenaru.def
  N saenaru/src/saenaru.h
  N saenaru/src/saenaru.rc
  N saenaru/src/sources
  N saenaru/src/subs.c
  N saenaru/src/toascii.c
  N saenaru/src/ui.c
  N saenaru/src/uicand.c
  N saenaru/src/uicomp.c
  N saenaru/src/uiguide.c
  N saenaru/src/uistate.c
  N saenaru/src/vksub.h
  
  No conflicts created by this import


perky       03/12/26 17:25:51

  Log:
  Import KLE saenaru as of 031215 snapshot
  
  Status:
  
  Vendor Tag:	KLE
  Release Tags:	SAENARUKLE_031215
  
  U saenaru/DIRS
  U saenaru/LICENSE
  U saenaru/LICENSE.MICROSOFT
  U saenaru/doc/saenaru.htm
  U saenaru/resource/about.ico
  N saenaru/resource/ARWDWN.ico
  N saenaru/resource/ARWUP.ico
  U saenaru/resource/check.bmp
  U saenaru/resource/close.bmp
  U saenaru/resource/face.bmp
  N saenaru/resource/full.ico
  N saenaru/resource/full_old.ico
  U saenaru/resource/general.ico
  N saenaru/resource/half.ico
  N saenaru/resource/half_old.ico
  N saenaru/resource/keyboard.ico
  U saenaru/resource/penindic.ico
  U saenaru/resource/saenaru.dlg
  U saenaru/resource/saenaru.ico
  U saenaru/resource/saenaru.rcv
  U saenaru/resource/status.bmp
  N saenaru/resource/status_old.bmp
  U saenaru/resource/uncheck.bmp
  N saenaru/resource/2set3set.reg
  U saenaru/resource/saenaru.dic
  N saenaru/resource/saenaru0.dic
  N saenaru/resource/button/engkey.ico
  N saenaru/resource/button/hanjakey.ico
  N saenaru/resource/button/hankey.ico
  N saenaru/resource/text/engkey.ico
  N saenaru/resource/text/hanjakey.ico
  N saenaru/resource/text/hankey.ico
  U saenaru/setup/saenaru.inf
  N saenaru/src/btncmd.cpp
  N saenaru/src/btnext.cpp
  N saenaru/src/btnime.cpp
  U saenaru/src/config.c
  U saenaru/src/data.c
  U saenaru/src/dic.c
  U saenaru/src/dic2.c
  N saenaru/src/hangul.c
  U saenaru/src/imm.c
  U saenaru/src/immsec.c
  U saenaru/src/immsec.h
  U saenaru/src/indicml.h
  U saenaru/src/input.c
  U saenaru/src/makefile
  U saenaru/src/makefile.inc
  U saenaru/src/process.c
  N saenaru/src/reg.c
  U saenaru/src/regword.c
  U saenaru/src/resource.h
  U saenaru/src/saenaru.c
  U saenaru/src/saenaru.def
  U saenaru/src/saenaru.h
  U saenaru/src/saenaru.rc
  U saenaru/src/sources
  U saenaru/src/subs.c
  U saenaru/src/toascii.c
  N saenaru/src/tsf.cpp
  N saenaru/src/tsf.h
  U saenaru/src/ui.c
  U saenaru/src/uicand.c
  U saenaru/src/uicomp.c
  U saenaru/src/uiguide.c
  U saenaru/src/uistate.c
  U saenaru/src/vksub.h
  
  No conflicts created by this import


perky       03/12/26 17:28:43

  Modified:    .        LICENSE LICENSE.MICROSOFT
  Log:
  Change $Perky$ cvsheader tags to $Saenaru$
  
  Revision  Changes    Path
  1.2       +1 -1      saenaru/LICENSE
  
  Index: LICENSE
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/LICENSE,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LICENSE	26 Dec 2003 08:22:36 -0000	1.1
  +++ LICENSE	26 Dec 2003 08:28:42 -0000	1.2
  @@ -1,4 +1,4 @@
  -$Perky: saenaru/LICENSE,v 1.1 2003/10/23 19:25:26 perky Exp $
  +$Saenaru: saenaru/LICENSE,v 1.2 2003/12/26 08:28:42 perky Exp $
   
   Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
   
  
  
  
  1.2       +1 -1      saenaru/LICENSE.MICROSOFT
  
  Index: LICENSE.MICROSOFT
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/LICENSE.MICROSOFT,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LICENSE.MICROSOFT	26 Dec 2003 08:22:36 -0000	1.1
  +++ LICENSE.MICROSOFT	26 Dec 2003 08:28:42 -0000	1.2
  @@ -3,7 +3,7 @@
   DDK XP's. As long as you use or distribute SAENARU as SOURCE FORM, you
   must agree the following Microsoft End User License Agreement.
   ===
  -$Perky: saenaru/LICENSE.MICROSOFT,v 1.1 2003/10/23 19:25:26 perky Exp $
  +$Saenaru: saenaru/LICENSE.MICROSOFT,v 1.2 2003/12/26 08:28:42 perky Exp $
   
   
   -- Beginning of EULA --
  
  
  


perky       03/12/26 17:28:54

  Modified:    src      config.c data.c dic.c dic2.c fdebug.c imm.c
                        immsec.c immsec.h indicml.h input.c process.c reg.c
                        regword.c resource.h saenaru.c saenaru.h subs.c
                        toascii.c ui.c uicand.c uicomp.c uiguide.c
                        uistate.c vksub.h
  Log:
  Change $Perky$ cvsheader tags to $Saenaru$
  
  Revision  Changes    Path
  1.2       +261 -2    saenaru/src/config.c
  
  Index: config.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/config.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- config.c	26 Dec 2003 08:22:37 -0000	1.1
  +++ config.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/config.c,v 1.4 2003/10/23 20:00:33 perky Exp $
  + * $Saenaru: saenaru/src/config.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -40,9 +40,12 @@
   #include "saenaru.h"
   #include "prsht.h"
   #include "resource.h"
  +#include "malloc.h"
   
   #define MAX_PAGES 3
   
  +
  +
   /**********************************************************************/
   /*                                                                    */
   /*      AddPage()                                                     */
  @@ -175,7 +178,9 @@
   /**********************************************************************/
   INT_PTR CALLBACK GeneralDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
   {
  +    DWORD dwTemp;
       NMHDR FAR *lpnm;
  +    HWND  hwndRadio;
       LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));
   
       switch(message)
  @@ -191,6 +196,52 @@
                       break;
           
                   case PSN_APPLY:
  +                    dwTemp = 0;
  +                    if (IsDlgButtonChecked(hDlg, IDC_COMPOSITE_TYPING))
  +                        dwTemp |= COMPOSITE_TYPING;
  +                    if (IsDlgButtonChecked(hDlg, IDC_CONCURRENT_TYPING))
  +                        dwTemp |= CONCURRENT_TYPING;
  +                    if (IsDlgButtonChecked(hDlg, IDC_BACKSPACE_BY_JAMO))
  +                        dwTemp |= BACKSPACE_BY_JAMO;
  +                    if (IsDlgButtonChecked(hDlg, IDC_KSX1002_SUPPORT))
  +                        dwTemp |= KSX1002_SUPPORT;
  +                    if (IsDlgButtonChecked(hDlg, IDC_KSX1001_SUPPORT))
  +                        dwTemp |= KSX1001_SUPPORT;
  +                    if (IsDlgButtonChecked(hDlg, IDC_FULL_MULTIJOMO))
  +                        dwTemp |= FULL_MULTIJOMO;
  +                    if (IsDlgButtonChecked(hDlg, IDC_USE_SHIFT_SPACE))
  +                        dwTemp |= USE_SHIFT_SPACE;
  +                    if (IsDlgButtonChecked(hDlg, IDC_DVORAK_SUPPORT))
  +                        dwTemp |= DVORAK_SUPPORT;
  +                    dwOptionFlag = dwTemp;
  +
  +                    SetDwordToSetting(TEXT("OptionFlag"), dwOptionFlag);
  +
  +		    dwTemp = 0;
  +		    if (dwLayoutFlag == 0)
  +			dwLayoutFlag = LAYOUT_OLD2BUL;
  +		    if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_OLD2BUL))
  +                        dwTemp = LAYOUT_OLD2BUL;
  +		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_3FIN))
  +                        dwTemp = LAYOUT_3FIN;
  +		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_390))
  +                        dwTemp = LAYOUT_390;
  +		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_NEW2BUL))
  +                        dwTemp = LAYOUT_NEW2BUL;
  +		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_NEW3BUL))
  +                        dwTemp = LAYOUT_NEW3BUL;
  +		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_AHNMATAE))
  +                        dwTemp = LAYOUT_AHNMATAE;
  +		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_3SUN))
  +                        dwTemp = LAYOUT_3SUN;
  +		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_USER))
  +                        dwTemp = LAYOUT_USER;
  +                    dwLayoutFlag = dwTemp;
  +
  +                    SetDwordToSetting(TEXT("LayoutFlag"), dwLayoutFlag);
  +
  +		    set_keyboard(dwLayoutFlag);
  +		    
                       break;
   
                   case PSN_RESET:
  @@ -207,6 +258,58 @@
           case WM_INITDIALOG:
               SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)lParam);
               lpPropSheet = (LPPROPSHEETPAGE)lParam;
  +
  +#if 0
  +	    if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_NEW2BUL) )
  +	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_NEW3BUL) )
  +	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_OLD2BUL) )
  +	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_3BULFINAL) )
  +	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_390) )
  +	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_AHNMATAE) )
  +	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +#endif
  +            /* Global options */
  +            CheckDlgButton(hDlg, IDC_CONCURRENT_TYPING, 
  +                                (dwOptionFlag & CONCURRENT_TYPING) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_COMPOSITE_TYPING, 
  +                                (dwOptionFlag & COMPOSITE_TYPING) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_KSX1001_SUPPORT, 
  +                                (dwOptionFlag & KSX1001_SUPPORT) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_KSX1002_SUPPORT, 
  +                                (dwOptionFlag & KSX1002_SUPPORT) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_BACKSPACE_BY_JAMO, 
  +                                (dwOptionFlag & BACKSPACE_BY_JAMO) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_FULL_MULTIJOMO, 
  +                                (dwOptionFlag & FULL_MULTIJOMO) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_DVORAK_SUPPORT, 
  +                                (dwOptionFlag & DVORAK_SUPPORT) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_USE_SHIFT_SPACE, 
  +                                (dwOptionFlag & USE_SHIFT_SPACE) ? 1 : 0);
  +
  +            /* Layout */
  +	    if (dwLayoutFlag == 0)
  +		dwLayoutFlag = LAYOUT_OLD2BUL;
  +            CheckDlgButton(hDlg, IDC_LAYOUT_OLD2BUL, 
  +                                (dwLayoutFlag == LAYOUT_OLD2BUL) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_LAYOUT_3FIN, 
  +                                (dwLayoutFlag == LAYOUT_3FIN) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_LAYOUT_390, 
  +                                (dwLayoutFlag == LAYOUT_390) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_LAYOUT_NEW2BUL, 
  +                                (dwLayoutFlag == LAYOUT_NEW2BUL) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_LAYOUT_NEW3BUL, 
  +                                (dwLayoutFlag == LAYOUT_NEW3BUL) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_LAYOUT_AHNMATAE, 
  +                                (dwLayoutFlag == LAYOUT_AHNMATAE) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_LAYOUT_3SUN, 
  +                                (dwLayoutFlag == LAYOUT_3SUN) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_LAYOUT_USER, 
  +                                (dwLayoutFlag >= LAYOUT_USER) ? 1 : 0);
               break;
   
           case WM_DESTROY:
  @@ -219,6 +322,8 @@
               break;
   
           case WM_COMMAND:
  +            dwTemp = LAYOUT_NEW2BUL;
  +            //SetDwordToSetting(TEXT("Layout"), dwLayoutFlag);
               break;
   
           default:
  @@ -303,7 +408,6 @@
                                   (dwDebugFlag & DEBF_THREADID) ? 1 : 0);
               CheckDlgButton(hDlg, IDC_DEBF_GUIDELINE, 
                                   (dwDebugFlag & DEBF_GUIDELINE) ? 1 : 0);
  -            
   #endif
               break;
   
  @@ -325,4 +429,159 @@
       }
       return TRUE;
   } 
  +
  +#if 1
  +#define SAENARU_KEYBOARD_2SET 2
  +#define SAENARU_KEYBOARD_3SET 3
  +static
  +DWORD string_to_hex(TCHAR* p)
  +{
  +    DWORD ret = 0;
  +    UINT remain = 0;
  +
  +    if (*p == 'U')
  +	p++;
  +
  +    while (*p != '\0') {
  +	if (*p >= '0' && *p <= '9')
  +	    remain = *p - '0';
  +	else if (*p >= 'a' && *p <= 'f')
  +	    remain = *p - 'a' + 10;
  +	else if (*p >= 'A' && *p <= 'F')
  +	    remain = *p - 'A' + 10;
  +	else
  +	    return 0;
  +
  +	ret = ret * 16 + remain;
  +	p++;
  +    }
  +    return ret;
  +}
  +
  +UINT
  +load_keyboard_map_from_reg(LPCTSTR lpszKeyboard, UINT nKeyboard, WCHAR *keyboard_map)
  +{
  +    int i;
  +    WCHAR *line, *p, *saved_position;
  +    TCHAR buf[256];
  +    //FILE* file;
  +    DWORD key, value;
  +    UINT type;
  +    INT sz, len;
  +    WCHAR name[256];
  +    //LPTSTR kbuf=NULL;
  +    LPTSTR kbuf=NULL;
  +    WCHAR _map[94];
  +
  +    WCHAR achValue[256]; 
  +
  +    //NabiKeyboardMap *keyboard_map;
  +    //
  +    if (lpszKeyboard == NULL && nKeyboard <10)
  +    {
  +        DWORD cchValue = 256;
  +        DWORD retCode;
  +	HKEY hKey;
  +
  +        if (!GetRegKeyHandle(TEXT("\\Keyboard"), &hKey))
  +            return 0;
  +
  +        achValue[0] = '\0'; 
  +        retCode = RegEnumValue(hKey, nKeyboard, 
  +            achValue, 
  +            &cchValue, 
  +            NULL, 
  +            NULL,
  +            NULL,
  +            NULL);
  +
  +        if (retCode != ERROR_SUCCESS ) 
  +        { 
  +            MyDebugPrint((TEXT("(%d) %s\n"), nKeyboard, achValue));
  +            return 0;
  +        }
  +	lpszKeyboard = (LPCTSTR) &achValue;
  +    }
  +
  +    sz= GetRegMultiStringValue(TEXT("\\Keyboard"),lpszKeyboard,NULL);
  +    if (sz <= 0) {
  +    	MyDebugPrint((TEXT("Saenaru: Keyboard not found\n")));
  +    	return 0;
  +    }
  +
  +    MyDebugPrint((TEXT("Saenaru: reg size %d\n"), sz));
  +    kbuf=(LPTSTR) malloc(sz);
  +    //
  +    if (kbuf == (LPTSTR)NULL) {
  +    	MyDebugPrint((TEXT("Saenaru: Can't read keyboard registry\n")));
  +    	return 0;
  +    }
  +
  +    GetRegMultiStringValue(TEXT("\\Keyboard"),lpszKeyboard,kbuf);
  +    //keyboard_map = g_malloc(sizeof(NabiKeyboardMap));
  +
  +    /* init */
  +    type = SAENARU_KEYBOARD_3SET;
  +    //keyboard_map->filename = g_strdup(filename);
  +    //name = NULL;
  +    //MyDebugPrint((TEXT("Saenaru: %s\n"),kbuf));
  +
  +    for (i = 0; i < 94; i++)
  +    	_map[i] = i + '!';
  +    	//_map[i] = 0;
  +
  +    for (line = Mystrtok(kbuf, TEXT("\0"));
  +	 ;
  +	 line = Mystrtok(saved_position, TEXT("\0"))) {
  +	len=Mylstrlen(line);
  +        saved_position=line+len+1;
  +
  +        //MyDebugPrint((TEXT("Saenaru: %s:%d\n"),line,len));
  +	if (len==0) break;
  +
  +	p = Mystrtok(line, TEXT(" \t\0"));
  +        MyDebugPrint((TEXT("tok: %s\n"),p));
  +	/* comment */
  +	if (p == NULL || p[0] == '#')
  +	    continue;
  +
  +	if (Mylstrcmp(p, TEXT("Name:")) == 0) {
  +	    p = Mystrtok(NULL, TEXT("\0"));
  +	    if (p == NULL)
  +		continue;
  +	    //name = g_strdup(p);
  +	    continue;
  +	} else if (Mylstrcmp(p, TEXT("Type2")) == 0) {
  +	    type = SAENARU_KEYBOARD_2SET;
  +	} else {
  +	    key = string_to_hex(p);
  +	    if (key == 0)
  +		continue;
  +
  +	    p = Mystrtok(NULL, TEXT(" \t"));
  +	    if (p == NULL)
  +		continue;
  +	    value = string_to_hex(p);
  +	    if (value == 0)
  +		continue;
  +
  +	    if (key < '!' || key > '~')
  +		continue;
  +
  +	    MyDebugPrint((TEXT("REG %x=%x\n"),(DWORD)key,(DWORD)value));
  +
  +	    _map[key - '!'] = (WCHAR)value;
  +	}
  +    }
  +    free(kbuf);
  +
  +    if (keyboard_map != NULL)
  +	for (i=0;i<94;i++) keyboard_map[i]=_map[i];	
  +
  +    //if (name == NULL)
  +    //	name = g_path_get_basename(keyboard_map->filename);
  +
  +    return type;
  +}
  +#endif
   
  
  
  
  1.2       +7 -9      saenaru/src/data.c
  
  Index: data.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/data.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- data.c	26 Dec 2003 08:22:37 -0000	1.1
  +++ data.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/data.c,v 1.4 2003/10/23 20:00:33 perky Exp $
  + * $Saenaru: saenaru/src/data.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -58,7 +58,6 @@
   TCHAR    szStatusClassName[]  = TEXT("SAENARUStatus");
   TCHAR    szGuideClassName[]   = TEXT("SAENARUGuide");
   
  -
   MYGUIDELINE glTable[] = {
           {GL_LEVEL_ERROR,   GL_ID_NODICTIONARY, IDS_GL_NODICTIONARY, 0},
           {GL_LEVEL_WARNING, GL_ID_TYPINGERROR,  IDS_GL_TYPINGERROR, 0},
  @@ -70,15 +69,14 @@
   
   
   
  +#pragma data_seg("SHAREDDATA")
   #ifdef DEBUG
   /* for DebugOptions */
  -#pragma data_seg("SHAREDDATA")
   DWORD dwLogFlag = 0L;
   DWORD dwDebugFlag = 0L;
  -#pragma data_seg()
   #endif
  -
  -
  -
  -
  -
  +DWORD dwLayoutFlag = 0L;
  +DWORD dwOptionFlag = BACKSPACE_BY_JAMO;
  +/* local flags */
  +DWORD dwImeFlag = SAENARU_ONTHESPOT;
  +#pragma data_seg()
  
  
  
  1.2       +349 -97   saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- dic.c	26 Dec 2003 08:22:38 -0000	1.1
  +++ dic.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/dic.c,v 1.4 2003/10/23 20:00:33 perky Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -152,7 +152,9 @@
       {
           lpstr = GETLPCOMPSTR(lpCompStr);
           lpread = GETLPCOMPREADSTR(lpCompStr);
  +	/*
           lHanToZen(lpstr,lpread,lpIMC->fdwConversion);
  +	*/
   
           //
           // make attribute
  @@ -161,8 +163,8 @@
           // DeltaStart is 0 at RevertText time.
           lpCompStr->dwDeltaStart = 0;
   
  -        lmemset(GETLPCOMPATTR(lpCompStr),0,Mylstrlen(lpstr));
  -        lmemset(GETLPCOMPREADATTR(lpCompStr),0,Mylstrlen(lpread));
  +        lmemset(GETLPCOMPATTR(lpCompStr),ATTR_INPUT,Mylstrlen(lpstr));
  +        lmemset(GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT,Mylstrlen(lpread));
   
           SetClause(GETLPCOMPCLAUSE(lpCompStr),Mylstrlen(lpstr));
           SetClause(GETLPCOMPREADCLAUSE(lpCompStr),Mylstrlen(lpread));
  @@ -193,12 +195,12 @@
   
   /**********************************************************************/
   /*                                                                    */
  -/* ConvKanji()                                                        */
  +/* ConvHanja()                                                        */
   /*                                                                    */
  -/* VK_KANJI Key handling function                                     */
  +/* VK_HANJA Key handling function                                     */
   /*                                                                    */
   /**********************************************************************/
  -BOOL PASCAL ConvKanji(HIMC hIMC)
  +BOOL PASCAL ConvHanja(HIMC hIMC, int offset, UINT select)
   {
       LPINPUTCONTEXT lpIMC;
       LPCOMPOSITIONSTRING lpCompStr;
  @@ -214,6 +216,8 @@
       int cnt;
       BOOL bRc = FALSE;
   
  +    WCHAR cs=0;
  +
       if ((GetFileAttributes(szDicFileName) == 0xFFFFFFFF) ||
           (GetFileAttributes(szDicFileName) == FILE_ATTRIBUTE_DIRECTORY)) {
           MakeGuideLine(hIMC,MYGL_NODICTIONARY);
  @@ -243,7 +247,11 @@
       //
       szBuf[256] = 0;    // Double NULL-terminate
       szBuf[257] = 0;    // Double NULL-terminate
  -    nBufLen = GetCandidateStringsFromDictionary(lpT2, szBuf, 256, (LPTSTR)szDicFileName);
  +
  +    Mylstrcpy(szBuf,lpT2); // add Hangul
  +    szBuf[Mylstrlen(lpT2)] = 0;
  +
  +    nBufLen = GetCandidateStringsFromDictionary(lpT2, szBuf+Mylstrlen(lpT2)+1, 256, (LPTSTR)szDicFileName);
       //
       // Check the result of dic. Because my candidate list has only MAXCANDSTRNUM
       // candidate strings.
  @@ -262,7 +270,6 @@
               //
               goto cvk_exit40;
           }
  -
       }
   
       lpb = GETLPCOMPATTR(lpCompStr);
  @@ -274,9 +281,9 @@
               //
               // make attribute
               //
  -            lmemset(GETLPCOMPATTR(lpCompStr),1,
  +            lmemset(GETLPCOMPATTR(lpCompStr),ATTR_TARGET_CONVERTED ,
                     Mylstrlen(GETLPCOMPSTR(lpCompStr)));
  -            lmemset(GETLPCOMPREADATTR(lpCompStr),1,
  +            lmemset(GETLPCOMPREADATTR(lpCompStr),ATTR_TARGET_CONVERTED,
                     Mylstrlen(GETLPCOMPREADSTR(lpCompStr)));
   
               GnMsg.message = WM_IME_COMPOSITION;
  @@ -305,6 +312,8 @@
                   // Set the composition string to the structure.
                   //
                   Mylstrcpy(GETLPCOMPSTR(lpCompStr),lpstr);
  +		if ((dwImeFlag & SAENARU_ONTHESPOT)&& Mylstrlen(lpstr) == 1)
  +		   cs = *lpstr;
   
                   lpstr = GETLPCOMPSTR(lpCompStr);
   
  @@ -319,9 +328,11 @@
                   //
                   // make attribute
                   //
  -                lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),1, Mylstrlen(lpstr));
  -                lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),1,
  -                                      Mylstrlen(GETLPCOMPREADSTR(lpCompStr)));
  +                lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),
  +				ATTR_TARGET_CONVERTED, Mylstrlen(lpstr));
  +                lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),
  +				ATTR_TARGET_CONVERTED,
  +                                Mylstrlen(GETLPCOMPREADSTR(lpCompStr)));
   
                   //
                   // make clause info
  @@ -335,8 +346,10 @@
                   // Generate messages.
                   //
                   GnMsg.message = WM_IME_COMPOSITION;
  -                GnMsg.wParam = 0;
  +                GnMsg.wParam = cs;
                   GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +		if (dwImeFlag & SAENARU_ONTHESPOT)
  +	            GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
                   GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
   
                   bRc = TRUE;
  @@ -352,6 +365,7 @@
           // String is converted, so that open candidate.
           //
           int i = 0;
  +	int pages = 0;
           LPDWORD lpdw;
   
           //
  @@ -391,17 +405,57 @@
               lpCandList->dwPageSize  = i;
           else
               lpCandList->dwPageSize  = MAXCANDPAGESIZE;
  +	// Total pages
  +	pages = i / lpCandList->dwPageSize + i % lpCandList->dwPageSize;
  +
  +	if (select)
  +	{
  +	    int sel = lpCandList->dwSelection / lpCandList->dwPageSize;
  +	    sel *= lpCandList->dwPageSize;
  +	    sel +=select - 1;
  +	    if (sel >= i)
  +	        sel = i - 1;
  +	    lpCandList->dwSelection = sel;
  +	    offset = 0;
  +	}
  +	else if (offset > 2)
  +	{
  +	    // last (END)
  +            lpCandList->dwSelection = i - 1;
  +	    offset = 0; // reset
  +	} else if (offset < -2)
  +	{
  +	    // first (HOME)
  +            lpCandList->dwSelection = 0;
  +	    offset = 0; // reset
  +	}
   
  -        lpCandList->dwSelection++;
  -        if (lpCandList->dwSelection == (DWORD)i)
  +	// PgUp/PgDn
  +        if (offset ==2) offset = lpCandList->dwPageSize;
  +	else if (offset ==-2) offset = -(int)lpCandList->dwPageSize;
  +
  +	if (offset < 0 && (int)(lpCandList->dwSelection + offset) < 0)
  +	{
  +	    int select = lpCandList->dwSelection + offset;
  +	    //if (select < 0) select= pages * lpCandList->dwPageSize - offset;
  +	    if (select < 0) select= 0;
  +	    if (select >= i)
  +		select = i - 1;    
  +            lpCandList->dwSelection = (DWORD)select;
  +	} else {
  +            lpCandList->dwSelection += offset;
  +	    if (offset > 1 && lpCandList->dwSelection >= (DWORD)i)
  +		lpCandList->dwSelection = i - 1;
  +	}
  +
  +	//   + 1̸  ó
  +	if (lpCandList->dwSelection >= (DWORD)i)
           {
               lpCandList->dwPageStart = 0;
               lpCandList->dwSelection = 0;
  -        }
  -        else if (lpCandList->dwSelection >= MAXCANDPAGESIZE)
  -        {
  -            if (lpCandList->dwPageStart + MAXCANDPAGESIZE < lpCandList->dwCount)
  -                 lpCandList->dwPageStart++;
  +        } else {
  +            int spage = lpCandList->dwSelection / lpCandList->dwPageSize;
  +            lpCandList->dwPageStart= spage * lpCandList->dwPageSize;
           }
   
           //
  @@ -462,6 +516,7 @@
       DWORD dwCurPos;
       TRANSMSG GnMsg;
   
  +    WCHAR cs = 0;
   
       if (!IsCompStr(hIMC))
           return;
  @@ -480,17 +535,33 @@
               goto dc_exit;
   
           lpptr = MyCharPrev( lpstr, lpstr+dwCurPos );
  -        nChar = 1;
  -        if( lpstr == lpptr && Mylstrlen(lpstr) == nChar )
  -        {
  -            dwCurPos = 0;
  -            *lpstr = MYTEXT('\0');
  -        }
  -        else
  -        {
  -            Mylstrcpy( lpptr, lpstr+dwCurPos );
  -            dwCurPos -= nChar;
  -        }
  +
  +	if ( ic.len && (dwOptionFlag & BACKSPACE_BY_JAMO)) {
  +	    // Delete jamos
  +            if (--ic.len > 0) {
  +		ic.laststate--;    
  +                *lpptr = cs = hangul_ic_get(&ic,0);
  +	    } else {
  +		hangul_ic_init(&ic);
  +                Mylstrcpy( lpptr, lpstr+dwCurPos );
  +		if (dwCurPos > 0)
  +		    cs = *(lpptr-1);
  +		dwCurPos--;
  +	    }
  +	} else {
  +            nChar = 1;
  +            if( lpstr == lpptr && Mylstrlen(lpstr) == nChar )
  +            {
  +                dwCurPos = 0;
  +                *lpstr = MYTEXT('\0');
  +            }
  +            else
  +            {
  +                Mylstrcpy( lpptr, lpstr+dwCurPos );
  +                dwCurPos -= nChar;
  +	        cs = *(lpptr-1);
  +            }
  +	}
   
           fDone = TRUE;
       }
  @@ -510,10 +581,11 @@
       {
           lpstr = GETLPCOMPSTR(lpCompStr);
           lpread = GETLPCOMPREADSTR(lpCompStr);
  -        lZenToHan (lpread,lpstr);
  +        /*lZenToHan (lpread,lpstr);
  +	 */
   
  -        lmemset(GETLPCOMPATTR(lpCompStr),0,Mylstrlen(lpstr));
  -        lmemset(GETLPCOMPREADATTR(lpCompStr),0,Mylstrlen(lpread));
  +        lmemset(GETLPCOMPATTR(lpCompStr),ATTR_INPUT,Mylstrlen(lpstr));
  +        lmemset(GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT,Mylstrlen(lpread));
   
           //
           // make length
  @@ -538,8 +610,10 @@
           if (lpCompStr->dwCompStrLen)
           {
               GnMsg.message = WM_IME_COMPOSITION;
  -            GnMsg.wParam = 0;
  +            GnMsg.wParam = cs;
               GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +	    if (dwImeFlag & SAENARU_ONTHESPOT)
  +	        GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
           }
           else
  @@ -559,13 +633,16 @@
   
               GnMsg.message = WM_IME_COMPOSITION;
               GnMsg.wParam = 0;
  -            GnMsg.lParam = 0;
  +            GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +	    if (dwImeFlag & SAENARU_ONTHESPOT)
  +	        GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
   
               GnMsg.message = WM_IME_ENDCOMPOSITION;
               GnMsg.wParam = 0;
               GnMsg.lParam = 0;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +//            PostMessage(lpIMC->hWnd,WM_IME_ENDCOMPOSITION,0,0);
           }
       }
   
  @@ -574,7 +651,7 @@
       ImmUnlockIMC(hIMC);
   }
   
  -
  +#if 0
   /**********************************************************************/
   /*                                                                    */
   /* AddChar()                                                          */
  @@ -620,7 +697,7 @@
   
       if (!dwStrLen)
       {
  -        //lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
  +	//  ʱȭ
           InitCompStr(lpCompStr,CLR_RESULT_AND_UNDET);
   
           GnMsg.message = WM_IME_STARTCOMPOSITION;
  @@ -671,7 +748,7 @@
                       if( IsSecond( code ) )
                       {
                           code = ConvChar(hIMC, 0, code );
  -                        if (!(fdwConversion & IME_CMODE_KATAKANA))
  +                        if (!(fdwConversion & IME_CMODE_HANGUL))
                           {
                               code = KataToHira(code);
                           }
  @@ -684,7 +761,7 @@
                       if( IsSecond( code ) )
                       {
                           code = ConvChar(hIMC, 0, code );
  -                        if (!(fdwConversion & IME_CMODE_KATAKANA))
  +                        if (!(fdwConversion & IME_CMODE_HANGUL))
                           {
                               code = KataToHira(code);
                           }
  @@ -697,7 +774,7 @@
                       if ( IsFirst( code2 ) &&
                          (code3 = ConvChar(hIMC, code2, code )))
                       {
  -                        if (fdwConversion & IME_CMODE_KATAKANA) 
  +                        if (fdwConversion & IME_CMODE_HANGUL) 
                           {
                               *lpprev = code3;
                           }
  @@ -710,7 +787,7 @@
                       {
                           code = ConvChar(hIMC, 0, code );
   
  -                        if (!(fdwConversion & IME_CMODE_KATAKANA))
  +                        if (!(fdwConversion & IME_CMODE_HANGUL))
                           {
                               code = KataToHira(code);
                           }
  @@ -826,9 +903,10 @@
       // make reading string.
       lpstr = GETLPCOMPSTR(lpCompStr);
       lpread = GETLPCOMPREADSTR(lpCompStr);
  -    if (fdwConversion & IME_CMODE_KATAKANA) 
  +    if (fdwConversion & IME_CMODE_HANGUL) 
       {
  -        if (fdwConversion & IME_CMODE_FULLSHAPE)
  +            Mylstrcpy(lpread,lpstr);
  +/*        if (fdwConversion & IME_CMODE_FULLSHAPE)
           {
               Mylstrcpy(lpread,lpstr);
           }
  @@ -836,6 +914,7 @@
           {
               lHanToZen(lpread,lpstr,fdwConversion);
           }
  +	*/
       }
       else
       {
  @@ -843,7 +922,8 @@
           LPMYSTR pDst = lpread;
   
           for (; *pSrc;) {
  -            *pDst++ = HiraToKata(*pSrc);
  +            //*pDst++ = HiraToKata(*pSrc);
  +            *pDst++ = *pSrc;
               pSrc++;
           }
           *pDst = (MYCHAR) 0;
  @@ -855,8 +935,8 @@
       lpCompStr->dwDeltaStart = (DWORD)(MyCharPrev(lpstr, lpstr+Mylstrlen(lpstr)) - lpstr);
   
       //MakeAttrClause(lpCompStr);
  -    lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),0, Mylstrlen(lpstr));
  -    lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),0, Mylstrlen(lpread));
  +    lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),ATTR_INPUT, Mylstrlen(lpstr));
  +    lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT, Mylstrlen(lpread));
   
       // make length
       lpCompStr->dwCompStrLen = Mylstrlen(lpstr);
  @@ -882,6 +962,8 @@
       ImmUnlockIMC(hIMC);
   }
   
  +#endif
  +
   
   /**********************************************************************/
   /*                                                                    */
  @@ -903,93 +985,238 @@
   LPBYTE lpbKeyState;
   {
       LPINPUTCONTEXT lpIMC;
  +    LPCOMPOSITIONSTRING lpCompStr;
  +    DWORD fdwConversion;
  +
  +    BOOL cf=FALSE;
  +    int next=0;
  +    UINT select=0;
  +
  +    // Candidate 
  +    if (IsConvertedCompStr(hIMC))
  +    {
  +	switch( wParam )
  +	{
  +	    case VK_UP:
  +		next=-1;
  +		break;
  +	    case VK_DOWN:
  +		next=1;
  +		break;
  +	    case VK_NEXT:
  +		next=2;
  +		break;
  +	    case VK_PRIOR:
  +		next=-2;
  +		break;
  +	    case VK_HOME:
  +		next=-100;
  +	        break;
  +	    case VK_END:
  +		next=100;
  +	        break;
  +	    case VK_1:
  +	    case VK_2:
  +	    case VK_3:
  +	    case VK_4:
  +	    case VK_5:
  +	    case VK_6:
  +	    case VK_7:
  +	    case VK_8:
  +	    case VK_9:
  +		select= wParam - VK_1 + 1;
  +		break;
  +	    default:
  +		break;
  +	}
  +	if (next || select)
  +	{
  +	    ConvHanja(hIMC,next,select);
  +            return TRUE;
  +	}
  +    }
   
       switch( wParam )
       {
  -        case VK_ESCAPE:
  -            FlushText(hIMC);
  -            break;
  -
           case VK_DELETE:
           case VK_BACK:
  -            DeleteChar(hIMC,wParam);
  +            if (IsConvertedCompStr(hIMC))
  +	    {
  +                FlushText(hIMC);
  +	        return TRUE;
  +	    } else if (IsCompStr(hIMC))
  +	    {
  +                DeleteChar(hIMC,wParam);
  +	        return TRUE;
  +	    }
               break;
   
  -        case VK_SPACE:
  -            ConvKanji(hIMC);
  -            break;
  +        case VK_HANJA:
  +        case VK_F9:
  +	    hangul_ic_init(&ic);
  +	    ConvHanja(hIMC,1,0);
  +	    return TRUE;
  +	    break;
  +
  +	case VK_SPACE:
  +	    lpIMC = ImmLockIMC(hIMC);
  +	    // Get ConvMode from IMC.
  +	    fdwConversion = lpIMC->fdwConversion;
  +            ImmUnlockIMC(hIMC);
   
  -        case VK_F3:
  -            if (IsCTLPushed(lpbKeyState))
  -                ChangeMode(hIMC,TO_CMODE_ROMAN);
  -            break;
  +	    if (IsCompStr(hIMC) &&
  +		    (fdwConversion & IME_CMODE_FULLSHAPE) &&
  +		    (fdwConversion & IME_CMODE_NATIVE)) {
  +		hangul_ic_init(&ic);
  +		ConvHanja(hIMC,1,0);
  +		return TRUE;
  +	    }
   
  -        case VK_F6:
  -            if (IsCTLPushed(lpbKeyState))
  -                ChangeMode(hIMC,TO_CMODE_HIRAGANA);
  -            else
  -                ChangeCompStr(hIMC,TO_CMODE_HIRAGANA);
  -            break;
  +	    if (IsCompStr(hIMC))
  +            {
  +                MakeResultString(hIMC,TRUE);
  +#if 0
  +                lpIMC = ImmLockIMC(hIMC);
  +                lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
  +                InitCompStr(lpCompStr,CLR_UNDET);
  +                ImmUnlockIMC(hIMC);
  +#endif
   
  -        case VK_F7:
  -            if (IsCTLPushed(lpbKeyState))
  -                ChangeMode(hIMC,TO_CMODE_KATAKANA);
  -            else
  -                ChangeCompStr(hIMC,TO_CMODE_KATAKANA);
  -            break;
  +                // Simulate a key press
  +                keybd_event( (BYTE)wParam, 0x0, 0, 0 );
   
  -        case VK_F8:
  -            if (IsCTLPushed(lpbKeyState))
  -                ChangeMode(hIMC,TO_CMODE_FULLSHAPE);
  -            else
  -                ChangeCompStr(hIMC,TO_CMODE_FULLSHAPE);
  -            break;
  +                // Simulate a key release
  +                //keybd_event( (BYTE)wParam, 0x0, KEYEVENTF_KEYUP, 0);
  +		return TRUE;
  +	    }
  +#if 0
  +	    // ̽   ѱ Ű Ѵ.
  +	    // ɼ Ѱ ų  ְ.
  +            if (IsConvertedCompStr(hIMC))
  +	    {
  +	        ConvHanja(hIMC,1);
  +	        return TRUE;
  +	    }
  +#endif
  +	    break;
   
  -        case VK_F9:
  -            if (IsCTLPushed(lpbKeyState))
  -                ChangeMode(hIMC,TO_CMODE_ALPHANUMERIC);
  -            else
  -                ChangeCompStr(hIMC,TO_CMODE_ALPHANUMERIC);
  -            break;
  +	case VK_LEFT:
  +	case VK_RIGHT:
  +	case VK_UP:
  +	case VK_DOWN:
  +	case VK_HOME:
  +	case VK_END:
  +	case VK_NEXT:
  +	case VK_PRIOR:
  +
  +	case VK_TAB:
  +	case VK_ESCAPE:
  +	    if (IsCompStr(hIMC))
  +            {
  +                MakeResultString(hIMC,TRUE);
  +                // Simulate a key press
  +                keybd_event( (BYTE)wParam, 0x0, 0, 0 );
  +
  +                // Simulate a key release
  +                //keybd_event( (BYTE)wParam, 0x0, KEYEVENTF_KEYUP, 0);
  +		return TRUE;
  +	    }
  +	    break;
   
           case VK_RETURN:
  +            if (IsConvertedCompStr(hIMC))
  +		cf = TRUE;
  +            MakeResultString(hIMC,TRUE);
  +
               lpIMC = ImmLockIMC(hIMC);
   
  -            if( !( lpIMC->fdwConversion & IME_CMODE_CHARCODE ) )
  -                MakeResultString(hIMC,TRUE);
  -            else
  -                FlushText(hIMC);
  +	    if (!cf)
  +	    {
  +#if 0
  +                if (IsWindow(lpIMC->hWnd))
  +                {
  +                   //PostMessage(lpIMC->hWnd,WM_IME_KEYDOWN,wParam,lParam);
  +		}
  +#endif
  +                TRANSMSG GnMsg;
  +                GnMsg.message = WM_IME_KEYDOWN;
  +                GnMsg.wParam = wParam;
  +                GnMsg.lParam = lParam;
  +                GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +                // Simulate a key press
  +                // keybd_event( VK_RETURN, 0x0d, 0, 0 );
   
  +                // Simulate a key release
  +                // keybd_event( VK_RETURN, 0x0d, KEYEVENTF_KEYUP, 0);
  +	    }
               ImmUnlockIMC(hIMC);
  +	    // spy++ ѱ IME2002 ൿ 캻 ,
  +	    // CompStr   RETURN ġ ó ̺Ʈ   ѹ
  +	    // ׸, CompStr commit Ŀ ٽ ѹ Ű̺Ʈ .
  +	    // strings imekr61.ime 캻  keybd_event()  ־
  +	    // saenaru   .
  +	    //
  +	    // Ÿڸ  мغ, WM_IME_KEYDOWN  .
  +	    // ׷ ó GenerateMessage() ̿غ keybd_event 
  +	    // ʾƵ Ǿ.
  +	    //
  +            hangul_ic_init(&ic);
  +	    return TRUE;
  +#if 0
  +            lpIMC = ImmLockIMC(hIMC);
  +            if (IsCandidate(lpIMC))
  +	    {
  +                MakeResultString(hIMC,TRUE);
  +		cf = TRUE;
  +	    }
  +            ImmUnlockIMC(hIMC);
  +	    if (cf) return TRUE;
  +#endif
  +	    break;
  +
  +	    /*
  +        case VK_HANGUL:
  +	    // Toggle HANGUL
  +            ChangeMode(hIMC,TO_CMODE_HANGUL);
  +	    return TRUE;
               break;
  +	    */
   
  -        case VK_G:
   #ifdef DEBUG
  +        case VK_G:
               if (dwDebugFlag & DEBF_GUIDELINE)
               {
                   if (IsCTLPushed(lpbKeyState))
                   {
                       MakeGuideLine(hIMC,MYGL_TESTGUIDELINE);
  +                    //MakeGuideLine(hIMC,MYGL_TYPINGERROR);
                       return( TRUE );
                   }
               }
  -#endif
               break;
  -
  +#endif
           default:
               break;
       }
   
       if (( VK_0 <= wParam && VK_9 >= wParam ) ||
           ( VK_A <= wParam && VK_Z >= wParam ) ||
  -        ( VK_NUMPAD0 <= wParam && VK_NUMPAD9 >= wParam ) ||
  +        ( VK_RETURN == wParam || VK_SPACE == wParam ) ||
  +        //( VK_NUMPAD0 <= wParam && VK_NUMPAD9 >= wParam ) ||
           ( VK_OEM_1 <= wParam && VK_OEM_9 >= wParam ) ||
           ( VK_MULTIPLY <= wParam && VK_DIVIDE >= wParam ))
       {
  +	// RETURN  ʰ, ٷ κп ó .
  +	//     ʴ´ٸ RETURNŰ ó  ִ.
           return( FALSE );
       }
  -    else
  +    else {
  +	TCHAR szDev[80];
  +
  +        wsprintf(szDev, TEXT("code: %x\r\n"), wParam);
  +        OutputDebugString(szDev);
           return( TRUE );
  +    }
   }
   
   /**********************************************************************/
  @@ -1044,15 +1271,38 @@
   
       if (fFlag)
       {
  +#if 1
  +	// ѱ IME 2002 ̻ϰԵ,  WM_IME_ENDCOMPOSITION 
  +	//   WM_IME_COMPOSITION ´.
  +	// ̷ ؾ߸ Ÿڿ  ۵ Ѵ.
  +        GnMsg.message = WM_IME_ENDCOMPOSITION;
  +        GnMsg.wParam = 0;
  +        GnMsg.lParam = 0;
  +        GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +#endif
  +
           GnMsg.message = WM_IME_COMPOSITION;
           GnMsg.wParam = 0;
           GnMsg.lParam = GCS_RESULTALL;
  -        GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +	if (dwImeFlag & SAENARU_ONTHESPOT)
  +	{
  +            LPMYSTR lpptr;
  +            LPMYSTR lpstr;
  +            DWORD dwCurPos;
  +	
  +            dwCurPos = lpCompStr->dwCursorPos;
  +            lpstr = GETLPCOMPSTR(lpCompStr);
  +            lpptr = MyCharPrev( lpstr, lpstr+dwCurPos );
   
  +	    GnMsg.wParam = *lpptr;
  +	}
  +        GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +#if 0
           GnMsg.message = WM_IME_ENDCOMPOSITION;
           GnMsg.wParam = 0;
           GnMsg.lParam = 0;
           GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +#endif
       }
   
       ImmUnlockIMC(hIMC);
  @@ -1122,14 +1372,16 @@
   /**********************************************************************/
   BOOL PASCAL GenerateMessage(HIMC hIMC, LPINPUTCONTEXT lpIMC, LPTRANSMSGLIST lpTransBuf,LPTRANSMSG lpGeneMsg)
   {
  +    MyDebugPrint((TEXT("GenerateMessage:TransKey %d\n"),lpGeneMsg->message));
       if (lpTransBuf)
           return GenerateMessageToTransKey(lpTransBuf,lpGeneMsg);
  +    MyDebugPrint((TEXT("GenerateMessage:ImmGenerateMessage %d\n"),lpGeneMsg->message));
   
       if (IsWindow(lpIMC->hWnd))
       {
           LPTRANSMSG lpTransMsg;
           if (!(lpIMC->hMsgBuf = ImmReSizeIMCC(lpIMC->hMsgBuf,
  -                                 sizeof(TRANSMSG) * (lpIMC->dwNumMsgBuf +1))))
  +             sizeof(TRANSMSG) * (lpIMC->dwNumMsgBuf +1))))
               return FALSE;
   
           if (!(lpTransMsg = (LPTRANSMSG)ImmLockIMCC(lpIMC->hMsgBuf)))
  @@ -1146,7 +1398,7 @@
   
   /**********************************************************************/
   /*                                                                    */
  -/*  Entry    : CheckAttr( LPCOMPOSITIONSTRING)                           */
  +/*  Entry    : CheckAttr( LPCOMPOSITIONSTRING)                        */
   /*                                                                    */
   /**********************************************************************/
   BOOL PASCAL CheckAttr( LPCOMPOSITIONSTRING lpCompStr)
  @@ -1164,7 +1416,7 @@
   
   /**********************************************************************/
   /*                                                                    */
  -/*  Entry    : MakeAttrClause( LPCOMPOSITIONSTRING)                         */
  +/*  Entry    : MakeAttrClause( LPCOMPOSITIONSTRING)                   */
   /*                                                                    */
   /**********************************************************************/
   void PASCAL MakeAttrClause( LPCOMPOSITIONSTRING lpCompStr)
  
  
  
  1.2       +2 -2      saenaru/src/dic2.c
  
  Index: dic2.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic2.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- dic2.c	26 Dec 2003 08:22:38 -0000	1.1
  +++ dic2.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/dic2.c,v 1.4 2003/10/23 20:00:33 perky Exp $
  + * $Saenaru: saenaru/src/dic2.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -415,7 +415,7 @@
               }
               else {
                   //
  -                // this case means it is not Japanese char
  +                // this case means it is not Korean char
                   //
                   *lpDst++ = *lpSrc;
               }
  
  
  
  1.2       +1 -1      saenaru/src/fdebug.c
  
  Index: fdebug.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/fdebug.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- fdebug.c	26 Dec 2003 08:22:38 -0000	1.1
  +++ fdebug.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/fdebug.c,v 1.5 2003/10/23 20:00:33 perky Exp $
  + * $Saenaru: saenaru/src/fdebug.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  
  
  
  1.2       +126 -6    saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- imm.c	26 Dec 2003 08:22:40 -0000	1.1
  +++ imm.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/imm.c,v 1.4 2003/10/23 20:00:33 perky Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -53,13 +53,18 @@
       lpIMEInfo->dwPrivateDataSize = sizeof(UIEXTRA);
       lpIMEInfo->fdwProperty = IME_PROP_KBD_CHAR_FIRST |
                                IME_PROP_UNICODE |
  +//                             IME_PROP_COMPLETE_ON_UNSELECT |
                                IME_PROP_AT_CARET;
       lpIMEInfo->fdwConversionCaps = IME_CMODE_LANGUAGE |
                                   IME_CMODE_FULLSHAPE |
  +                                IME_CMODE_NOCONVERSION |
                                   IME_CMODE_ROMAN |
  +                                IME_CMODE_SOFTKBD |
                                   IME_CMODE_CHARCODE;
       lpIMEInfo->fdwSentenceCaps = 0L;
  -    lpIMEInfo->fdwUICaps = UI_CAP_2700;
  +    lpIMEInfo->fdwUICaps = UI_CAP_2700
  +	                   | UI_CAP_SOFTKBD
  +			   ;
   
       lpIMEInfo->fdwSCSCaps = SCS_CAP_COMPSTR |
                               SCS_CAP_MAKEREAD |
  @@ -81,7 +86,6 @@
   {
       ImeLog(LOGF_API, TEXT("ImeConversionList"));
   
  -
       return 0;
   }
   
  @@ -165,15 +169,76 @@
       LPINPUTCONTEXT lpIMC;
       LPCOMPOSITIONSTRING lpCompStr;
   
  +    DWORD dwConversion, dwSentense ;
  +    WORD ch;
  +
       ImeLog(LOGF_KEY | LOGF_API, TEXT("ImeProcessKey"));
   
  +    {
  +	WORD ch;
  +        MyDebugPrint((TEXT("\t** vKey is 0x%x\r\n"),vKey));
  +    }
   
       if (lKeyData & 0x80000000)
  +    {
           return FALSE;
  +    }
  +    MyDebugPrint((TEXT("\t** lKeyData is 0x%x\r\n"),lKeyData));
   
       if (!(lpIMC = ImmLockIMC(hIMC)))
           return FALSE;
   
  +    // SHIFT-SPACE
  +    // See ui.c how to hook the shift-space event.
  +    if ( (LOWORD(vKey) & 0x00FF) == VK_SPACE && dwOptionFlag & USE_SHIFT_SPACE)
  +    {
  +        //SHORT ShiftState = (GetKeyState(VK_SHIFT) >> 31) & 1;
  +        SHORT ShiftState = lpbKeyState[VK_SHIFT] & 0x80;
  +	if (ShiftState)
  +	    vKey = VK_HANGUL;
  +    }
  +
  +    switch ( ( LOWORD(vKey) & 0x00FF ) ){
  +        case VK_HANGUL:
  +            // Toggle Hangul composition state
  +	    //
  +	    if (IsCompStr(hIMC))
  +                 MakeResultString(hIMC,TRUE);
  +
  +            fOpen = ImmGetOpenStatus(hIMC);
  +	    if (!fOpen)
  +                ImmSetOpenStatus(hIMC,TRUE);
  +
  +            if (ImmGetConversionStatus (hIMC, &dwConversion, &dwSentense))
  +            {
  +                if (fOpen)
  +		{
  +                    dwConversion &= ~IME_CMODE_NATIVE;
  +                    dwConversion &= ~IME_CMODE_FULLSHAPE;
  +                    MyDebugPrint((TEXT("O Hangul key\n")));
  +		    fOpen=FALSE;
  +		}
  +                else
  +		{
  +                    dwConversion &= ~IME_CMODE_FULLSHAPE;
  +                    dwConversion |= IME_CMODE_NATIVE;
  +                    MyDebugPrint((TEXT("O Hangul key\n")));
  +		    fOpen=TRUE;
  +		}
  +                ImmSetConversionStatus (hIMC, dwConversion, 0) ;
  +            }
  +	    if (!fOpen)
  +                ImmSetOpenStatus(hIMC,FALSE);
  +
  +	    return FALSE;
  +	    break;
  +	case VK_SHIFT:
  +	    return FALSE;
  +	    break;
  +        default:
  +	    break;
  +    }
  +
       fOpen = lpIMC->fOpen;
   
       if (fOpen)
  @@ -187,6 +252,7 @@
   
           if (lpbKeyState[VK_MENU] & 0x80)
           {
  +            MakeResultString(hIMC,TRUE);
               fRet = FALSE;
           }
           else if (lpbKeyState[VK_CONTROL] & 0x80)
  @@ -214,6 +280,8 @@
           if (lpCompStr)
               ImmUnlockIMCC(lpIMC->hCompStr);
       }
  +    if (!fRet && IsCompStr(hIMC))
  +        MakeResultString(hIMC,TRUE);
   
       ImmUnlockIMC(hIMC);
       return fRet;
  @@ -277,7 +345,7 @@
                        break;
   
                    case CPS_CONVERT:
  -                     ConvKanji(hIMC);
  +                     ConvHanja(hIMC,1, 0);
                        bRet = TRUE;
                        break;
   
  @@ -545,7 +613,7 @@
               // Init the general member of IMC.
               if (!(lpIMC->fdwInit & INIT_LOGFONT))
               {
  -                lpIMC->lfFont.A.lfCharSet = SHIFTJIS_CHARSET;
  +                lpIMC->lfFont.A.lfCharSet = NATIVE_CHARSET;
                   lpIMC->fdwInit |= INIT_LOGFONT;
               }
   
  @@ -569,9 +637,18 @@
                   ImmUnlockIMCC(lpIMC->hCandInfo);
               }
           }
  +        ImmUnlockIMC(hIMC);
  +#if !defined (NO_TSF)
  +        if (fSelect) {
  +            if (InitLanguageBar ()) {
  +                ActivateLanguageBar (TRUE) ;
  +            }
  +        } else {
  +            ActivateLanguageBar (FALSE) ;
  +        }
  +#endif
       }
   
  -    ImmUnlockIMC(hIMC);
       return TRUE;
   }
   
  @@ -608,8 +685,13 @@
   /**********************************************************************/
   BOOL WINAPI ImeSetCompositionString(HIMC hIMC, DWORD dwIndex, LPVOID lpComp, DWORD dwComp, LPVOID lpRead, DWORD dwRead)
   {
  +    LPCOMPOSITIONSTRING lpCompStr;
  +    LPINPUTCONTEXT lpIMC;
  +    
       ImeLog(LOGF_API, TEXT("ImeSetCompositionString"));
   
  +    MyDebugPrint((TEXT("ImeSetCompoitionString\n")));
  +
       switch (dwIndex)
       {
           case SCS_QUERYRECONVERTSTRING:
  @@ -620,6 +702,7 @@
               if (lpRead)
                   DumpRS((LPRECONVERTSTRING)lpRead);
   #endif
  +	    return TRUE;
               break;
   
           case SCS_SETRECONVERTSTRING:
  @@ -630,7 +713,44 @@
               if (lpRead)
                   DumpRS((LPRECONVERTSTRING)lpRead);
   #endif
  +	    return TRUE;
               break;
  +	case SCS_CHANGEATTR:
  +	    MyDebugPrint((TEXT("SCS_CHANGEATTR\n")));
  +	    break;
  +	case SCS_SETSTR:
  +	    MyDebugPrint((TEXT("*** SCS_SETSTR start\n")));
  +	    lpIMC = ImmLockIMC (hIMC) ;
  +	    if (!lpIMC)
  +		break ;
  +
  +	    lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr) ;
  +	    if (lpCompStr != NULL) {
  +	        if (lpComp != NULL && dwComp > 0) {
  +		    //InitCompStr (lpCompStr, CLR_RESULT_AND_UNDET);
  +		    MyDebugPrint((TEXT(" * LPCOMP %s:%d\n"),lpComp,dwComp / sizeof(TCHAR)));
  +		    Mylstrcpyn(GETLPCOMPSTR(lpCompStr),lpComp,dwComp);
  +		} else if (lpRead != NULL && dwRead >0) {
  +		    MyDebugPrint((TEXT(" * LPREAD %s:%d\n"),lpRead,dwRead));
  +		    Mylstrcpyn(GETLPCOMPREADSTR(lpCompStr),lpRead,dwRead / sizeof(TCHAR));
  +		    if (!Mylstrlen(lpRead)) {
  +			// Ÿ ൿ мؼ  :
  +			// lpRead  ٽ տ .
  +			// ImeSetCompostionString()    ʾƼ
  +			//  ൿ ùٸ ൿ    ;p
  +			hangul_ic_init(&ic);
  +		        InitCompStr (lpCompStr, CLR_RESULT_AND_UNDET);
  +		    }
  +		}
  +		ImmUnlockIMCC (lpIMC->hCompStr);
  +	    }
  +	    ImmUnlockIMC (hIMC) ;
  +	    MyDebugPrint((TEXT("*** SCS_SETSTR end\n")));
  +	    return TRUE ;
  +	    break;
  +	case SCS_CHANGECLAUSE:
  +	    MyDebugPrint((TEXT("SCS_CHANGECLAUSE\n")));
  +	    break;
       }
   
       return FALSE;
  
  
  
  1.2       +1 -1      saenaru/src/immsec.c
  
  Index: immsec.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/immsec.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- immsec.c	26 Dec 2003 08:22:40 -0000	1.1
  +++ immsec.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/immsec.c,v 1.2 2003/10/23 20:00:33 perky Exp $
  + * $Saenaru: saenaru/src/immsec.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  
  
  
  1.2       +1 -1      saenaru/src/immsec.h
  
  Index: immsec.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/immsec.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- immsec.h	26 Dec 2003 08:22:40 -0000	1.1
  +++ immsec.h	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/immsec.h,v 1.2 2003/10/23 20:00:33 perky Exp $
  + * $Saenaru: saenaru/src/immsec.h,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  
  
  
  1.2       +1 -1      saenaru/src/indicml.h
  
  Index: indicml.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/indicml.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- indicml.h	26 Dec 2003 08:22:40 -0000	1.1
  +++ indicml.h	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/indicml.h,v 1.2 2003/10/23 20:00:33 perky Exp $
  + * $Saenaru: saenaru/src/indicml.h,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /**********************************************************************/
   /*      INDICML.H - Indicator Service Manager definitions             */
  
  
  
  1.2       +13 -4     saenaru/src/input.c
  
  Index: input.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/input.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- input.c	26 Dec 2003 08:22:40 -0000	1.1
  +++ input.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/input.c,v 1.4 2003/10/23 20:00:33 perky Exp $
  + * $Saenaru: saenaru/src/input.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -62,11 +62,22 @@
           case VK_CONTROL:
               //goto not_proccessed;
               break;
  +	    /*
  +	case VK_ESCAPE:
  +	case VK_LEFT:
  +	case VK_RIGHT:
  +	    break;
  +	    */
   
           default:
               if( !DicKeydownHandler( hIMC, wVKey, lParam, lpbKeyState ) ) {
  +                TCHAR szDev[80];
  +
  +                wsprintf(szDev, TEXT("Vkey: %x\r\n"), wVKey);
  +                OutputDebugString(szDev);
                   // This WM_IMEKEYDOWN has actual character code in itself.
  -                AddChar( hIMC,  HIWORD(wParam));
  +                hangulKeyHandler( hIMC, wParam, lParam, lpbKeyState );
  +                //AddChar( hIMC,  HIWORD(wParam));
                   //CharHandler( hIMC,  (WORD)((BYTE)HIBYTE(wParam)), lParam );
               }
               break;
  @@ -89,5 +100,3 @@
   {
       return FALSE;
   }
  -
  -
  
  
  
  1.2       +30 -20    saenaru/src/process.c
  
  Index: process.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/process.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- process.c	26 Dec 2003 08:22:40 -0000	1.1
  +++ process.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/process.c,v 1.3 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/process.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -50,14 +50,17 @@
                           1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,        // 30-3F
                           0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,        // 40-4F
                           1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,        // 50-5F
  -                        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,        // 60-6F
  +                        //1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,        // 60-6F
  +                        0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,        // 60-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 70-7F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 80-8F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 90-9F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // A0-AF
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // B0-BF
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // C0-CF
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // D0-DF
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // B0-BF
  +                        0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,        // B0-BF
  +                        1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // C0-CF
  +                        0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,        // D0-DF
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // D0-DF
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // E0-EF
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};       // F0-FF
   
  @@ -89,9 +92,11 @@
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 80-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 90-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // A0-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // B0-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // C0-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // D0-0F
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // B0-0F
  +                        0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,        // B0-BF
  +                        1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // C0-0F
  +                        0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,        // D0-DF
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // D0-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // E0-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};       // F0-0F
           
  @@ -113,19 +118,25 @@
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};       // F0-0F
   
   BYTE bComp[] = {        0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,        // 00-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,        // 10-0F
  +                        0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,        // 10-0F
  +			// 0x19 == VK_HANJA
  +                        //0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,        // 10-0F
                           1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,        // 20-0F
                           1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,        // 30-0F
                           0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,        // 40-0F
                           1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,        // 50-0F
  -                        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,        // 60-0F
  +                        //1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,        // 60-0F
  +                        0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,        // 60-0F
                           0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,        // 70-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 80-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 90-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // A0-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // B0-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // C0-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // D0-0F
  +                        0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,        // B0-0F
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // B0-0F
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // C0-0F
  +                        1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // C0-0F
  +                        0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,        // D0-DF
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // D0-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // E0-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};       // F0-0F
   
  @@ -157,9 +168,12 @@
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 80-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 90-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // A0-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // B0-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // C0-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // D0-0F
  +                        0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,        // B0-0F
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // B0-0F
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // C0-0F
  +                        1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // C0-0F
  +                        0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,        // D0-DF
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // D0-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // E0-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};       // F0-0F
   
  @@ -179,7 +193,3 @@
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 00-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 00-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};        // 00-0F
  -
  -
  -
  -
  
  
  
  1.2       +1 -1      saenaru/src/reg.c
  
  Index: reg.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/reg.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- reg.c	26 Dec 2003 08:25:47 -0000	1.1
  +++ reg.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky$
  + * $Saenaru: saenaru/src/reg.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  
  
  
  1.2       +1 -1      saenaru/src/regword.c
  
  Index: regword.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/regword.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- regword.c	26 Dec 2003 08:22:41 -0000	1.1
  +++ regword.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/regword.c,v 1.3 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/regword.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  
  
  
  1.2       +37 -15    saenaru/src/resource.h
  
  Index: resource.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/resource.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- resource.h	26 Dec 2003 08:22:41 -0000	1.1
  +++ resource.h	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/resource.h,v 1.5 2003/10/24 16:26:57 perky Exp $
  + * $Saenaru: saenaru/src/resource.h,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -43,9 +43,9 @@
   #define VER_DEBUG                       0
   
   /* Property Sheet DLG ID */
  -#define DLG_GENERAL             100
  -#define DLG_ABOUT               103
  -#define DLG_DEBUG               104
  +#define DLG_GENERAL             125
  +#define DLG_ABOUT               126
  +#define DLG_DEBUG               127
   
   /* for dialog box */
   #define ID_WR_READING           200
  @@ -63,17 +63,24 @@
   
   #define IDI_GENERAL             102
   #define IDI_ABOUT               103
  -#define IDC_LAYOUT_NEW2BUL      1000
  -#define IDC_LAYOUT_NEW3BUL      1001
  -#define IDC_LAYOUT_AHNMATAE     1002
  -#define IDC_LAYOUT_OLD2BUL      1003
  -#define IDC_LAYOUT_390          1004
  -#define IDC_LAYOUT_3BULFINAL    1005
  -#define IDC_CONCURRENT_TYPING   1006
  -#define IDC_KSX1001_SUPPORT     1007
  -#define IDC_BACKSPACE_BY_JAMO   1008
  -#define IDC_KSX1002_SUPPORT     1009
  -#define IDC_FULL_MULTIJOMO      1010
  +
  +#define IDC_LAYOUT_OLD2BUL      1001
  +#define IDC_LAYOUT_3FIN         1002
  +#define IDC_LAYOUT_390          1003
  +#define IDC_LAYOUT_NEW2BUL      1004
  +#define IDC_LAYOUT_NEW3BUL      1005
  +#define IDC_LAYOUT_AHNMATAE     1006
  +#define IDC_LAYOUT_3SUN         1007
  +#define IDC_LAYOUT_USER         1008
  +
  +#define IDC_CONCURRENT_TYPING   2000
  +#define IDC_COMPOSITE_TYPING    2001
  +#define IDC_KSX1001_SUPPORT     2002
  +#define IDC_KSX1002_SUPPORT     2003
  +#define IDC_DVORAK_SUPPORT      2004
  +#define IDC_BACKSPACE_BY_JAMO   2005
  +#define IDC_FULL_MULTIJOMO      2006
  +#define IDC_USE_SHIFT_SPACE     2007
   
   /* string tables */
   #define IDS_DICFILENAME             1000
  @@ -91,6 +98,21 @@
   
   #define IDM_RECONVERT                   40001
   #define IDM_ABOUT                       40002
  +
  +
  +#define IDM_SKL1                0x0500
  +#define IDM_SKL2                0x0501
  +#define IDM_SKL3                0x0502
  +#define IDM_SKL4                0x0503
  +#define IDM_SKL5                0x0504
  +#define IDM_SKL6                0x0505
  +#define IDM_SKL7                0x0506
  +#define IDM_SKL8                0x0507
  +#define IDM_SKL9                0x0508
  +#define IDM_SKL10               0x0509
  +#define IDM_SKL11               0x050a
  +#define IDM_SKL12               0x050b
  +#define IDM_SKL13               0x050c
   
   // Next default values for new objects
   // 
  
  
  
  1.2       +7 -3      saenaru/src/saenaru.c
  
  Index: saenaru.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- saenaru.c	26 Dec 2003 08:22:41 -0000	1.1
  +++ saenaru.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/saenaru.c,v 1.3 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/saenaru.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -68,6 +68,7 @@
               // CreateSecurityAttributes() will create
               // the proper security attribute for IME.
               //
  +#if 1
               psa = CreateSecurityAttributes();
               if ( psa != NULL ) {
                    hMutex = CreateMutex( psa, FALSE, TEXT("SaeNaru_Mutex"));
  @@ -78,7 +79,8 @@
               }
               else {
                     // Failed, not NT system
  -                  }
  +            }
  +#endif
   
               hInst= hInstDLL;
               IMERegisterClass( hInst );
  @@ -90,7 +92,10 @@
                   *lpDicFileName++ = TEXT('\\');
               LoadString( hInst, IDS_DICFILENAME, lpDicFileName, 128);
   
  +	    // read registry
               SetGlobalFlags();
  +            // set keyboard layout
  +	    set_keyboard(dwLayoutFlag);
   
   #ifdef DEBUG
               wsprintf(szDev,TEXT("DLLEntry Process Attach hInst is %lx"),hInst);
  @@ -127,4 +132,3 @@
       }
       return TRUE;
   }
  -
  
  
  
  1.2       +113 -14   saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- saenaru.h	26 Dec 2003 08:22:41 -0000	1.1
  +++ saenaru.h	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/saenaru.h,v 1.5 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -50,6 +50,29 @@
   #define LOGF_APIOUT          0x00000004
   #define LOGF_KEY             0x00000008
   
  +#define LAYOUT_OLD2BUL	     0x00000001
  +#define LAYOUT_3FIN          0x00000002
  +#define LAYOUT_390	     0x00000003
  +#define LAYOUT_NEW2BUL	     0x00000004
  +#define LAYOUT_NEW3BUL	     0x00000005
  +#define LAYOUT_AHNMATAE	     0x00000006
  +#define LAYOUT_3SUN	     0x00000007
  +#define LAYOUT_USER	     0x00000008
  +
  +
  +#define SAENARU_ONTHESPOT      0x00020000
  +#define SAENARU_MODE_CANDIDATE 0x00040000
  +
  +#define COMPOSITE_TYPING       0x00000001
  +#define CONCURRENT_TYPING      0x00000002
  +#define PSEUDO_COMPOSITE       0x00000004
  +#define BACKSPACE_BY_JAMO      0x00000008
  +#define KSX1001_SUPPORT        0x00000010
  +#define KSX1002_SUPPORT        0x00000020
  +#define FULL_MULTIJOMO         0x00000040
  +#define USE_SHIFT_SPACE        0x00000080
  +#define DVORAK_SUPPORT         0x00000100
  +
   
   /**********************************************************************/
   /*                                                                    */
  @@ -85,7 +108,8 @@
   #define MAXCANDPAGESIZE         9
   #define MAXCANDSTRSIZE          16
   #define MAXGLCHAR               32
  -#define MAXCANDSTRNUM           32
  +//#define MAXCANDSTRNUM           32
  +#define MAXCANDSTRNUM           128
   
   
   /* for GlobalAlloc */
  @@ -136,11 +160,11 @@
   
   /* Change Mode index */
   #define TO_CMODE_ALPHANUMERIC  0x0001
  -#define TO_CMODE_KATAKANA      0x0002
  +#define TO_CMODE_HANGUL        0x0002
   #define TO_CMODE_HIRAGANA      0x0003
   #define TO_CMODE_FULLSHAPE     0x0008
   #define TO_CMODE_ROMAN         0x0010
  -#define TO_CMODE_CHARCODE     0x0020
  +#define TO_CMODE_CHARCODE      0x0020
   #define TO_CMODE_TOOLBAR       0x0100
   
   /* WndExtra of child UI windows */
  @@ -153,6 +177,10 @@
   #define FIGWL_CLOSEBMP     (FIGWL_STATUSBMP+sizeof(LONG_PTR))
   #define FIGWL_PUSHSTATUS   (FIGWL_CLOSEBMP+sizeof(LONG_PTR))
   #define FIGWL_CHILDWND     (FIGWL_PUSHSTATUS+sizeof(LONG))
  +
  +#define FIGWL_PREVCURSOR   (FIGWL_COMPSTARTNUM+sizeof(LONG))
  +
  +
   #define UIEXTRASIZE        (FIGWL_CHILDWND+sizeof(LONG_PTR))
   
   /* The flags of FIGWL_MOUSE */
  @@ -228,7 +256,7 @@
   #define IDIM_SUB_MR_1        0x40
   #define IDIM_SUB_MR_2        0x41
   
  -#define NATIVE_CHARSET SHIFTJIS_CHARSET
  +#define NATIVE_CHARSET HANGUL_CHARSET
   
   /**********************************************************************/
   /*                                                                    */
  @@ -274,6 +302,10 @@
       HIMC     hIMC;
       UICHILD  uiStatus;
       UICHILD  uiCand;
  +#if 1
  +    UICHILD  uiSoftKbd;
  +    DWORD    nShowSoftKbdCmd;
  +#endif
       DWORD    dwCompStyle;
       HFONT    hFont;
       BOOL     bVertical;
  @@ -289,6 +321,22 @@
       DWORD dwPrivateID;
   } MYGUIDELINE, NEAR *PMYGUIDELINE, FAR *LPMYGUIDELINE;
   
  +#define MAXICREADSIZE	10+2
  +#define MAXICCOMPSIZE	2
  +typedef struct _tagHangulIC {
  +    //WCHAR 	read[10]; // L{1,3}V{1,3}T{0,3}
  +    WCHAR read[MAXICREADSIZE];
  +    WCHAR comp[MAXICCOMPSIZE];
  +    WCHAR cho;
  +    WCHAR jung;
  +    WCHAR jong;
  +    WCHAR last;
  +    UINT  len;
  +    UINT  lastvkey;
  +    int   laststate;
  +    BOOL  syllable;
  +} HangulIC;
  +
   /**********************************************************************/
   /*                                                                    */
   /*      Externs                                                       */
  @@ -315,8 +363,17 @@
   extern BYTE bNoCompCtl[];
   extern BYTE bNoCompSht[];
   extern BYTE bNoCompAlt[];
  +#if DEBUG
   extern DWORD dwLogFlag;
   extern DWORD dwDebugFlag;
  +#endif
  +
  +extern DWORD dwLayoutFlag;
  +extern DWORD dwOptionFlag;
  +
  +extern DWORD dwImeFlag;
  +
  +extern HangulIC ic;
   #endif //_NO_EXTERN_
   
   /**********************************************************************/
  @@ -333,6 +390,7 @@
   void PASCAL ClearCandidate(LPCANDIDATEINFO lpCandInfo);
   void PASCAL ChangeMode(HIMC hIMC,DWORD dwToMode);
   void PASCAL ChangeCompStr(HIMC hIMC,DWORD dwToMode);
  +HKL  PASCAL GetMyHKL (void) ;
   BOOL PASCAL IsCompStr(HIMC hIMC);
   BOOL PASCAL IsConvertedCompStr(HIMC hIMC);
   BOOL PASCAL IsCandidate(LPINPUTCONTEXT lpIMC);
  @@ -390,6 +448,12 @@
   void PASCAL HideCompWindow(LPUIEXTRA lpUIExtra);
   void PASCAL SetFontCompWindow(LPUIEXTRA lpUIExtra);
   
  +/* uisoft.c      */
  +void PASCAL ShowSoftKbd(HWND, int);
  +void PASCAL SetSoftKbdData(HWND);
  +void PASCAL UpdateSoftKbd(HWND);
  +void PASCAL SoftKbdDestroyed(HWND);
  +
   /*   uiguide.c   */
   LRESULT CALLBACK GuideWndProc(HWND,UINT,WPARAM,LPARAM);
   void PASCAL PaintGuide(HWND hGuideWnd , HDC hDC, LPPOINT lppt,DWORD dwPushedGuide);
  @@ -401,6 +465,7 @@
   INT_PTR CALLBACK AboutDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam);
   INT_PTR CALLBACK GeneralDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam);
   INT_PTR CALLBACK DebugOptionDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam);
  +UINT load_keyboard_map_from_reg(LPCTSTR, UINT, WCHAR *);
   
   /* DIC.C         */
   BOOL PASCAL IsEat(WORD);
  @@ -408,8 +473,12 @@
   void PASCAL DeleteChar( HIMC hIMC ,UINT uVKey);
   void PASCAL FlushText();
   void PASCAL RevertText(HIMC hIMC);
  +
   void PASCAL AddChar(HIMC,WORD);
  -BOOL PASCAL ConvKanji(HIMC);
  +WCHAR PASCAL hangul_ic_get(HangulIC*, UINT);
  +void PASCAL  hangul_ic_init(HangulIC*);
  +
  +BOOL PASCAL ConvHanja(HIMC, int, UINT);
   BOOL WINAPI MakeResultString(HIMC,BOOL);
   BOOL PASCAL MakeGuideLine(HIMC, DWORD);
   BOOL PASCAL GenerateMessage(HIMC,LPINPUTCONTEXT,LPTRANSMSGLIST,LPTRANSMSG);
  @@ -417,6 +486,11 @@
   void PASCAL MakeAttrClause( LPCOMPOSITIONSTRING lpCompStr);
   void PASCAL HandleShiftArrow( HIMC hIMC, BOOL fArrow);
   
  +/* hangul.c       */
  +void PASCAL hangulKeyHandler(HIMC,WPARAM,LPARAM,LPBYTE);
  +int PASCAL set_keyboard(UINT);
  +int PASCAL set_automata(UINT);
  +
   /* DIC2.C        */
   BOOL OneCharZenToHan(WCHAR ,WCHAR* ,WCHAR* );
   WORD PASCAL HanToZen(WORD,WORD,DWORD);
  @@ -440,19 +514,44 @@
   WORD PASCAL GetWordNum(LPSTR);
   WORD PASCAL DeleteWord(LPSTR,LPSTR);
   
  -/* FDEBUG.C      */
  -#ifdef DEBUG
  -#define MyDebugPrint(x) DebugPrint x
  -int DebugPrint(LPCTSTR lpszFormat, ...);
  +/* reg.C      */
   void SetDwordToSetting(LPCTSTR lpszFlag, DWORD dwFlag);
  +long PASCAL GetRegMultiStringValue (LPCTSTR,LPCTSTR,LPTSTR);
  +void SetRegMultiString(LPCTSTR lpszFlag, DWORD dwFlag);
   void PASCAL SetGlobalFlags();
  +void GetRegKeyList(LPCTSTR lpszSubDir);
  +BOOL GetRegKeyHandle(LPCTSTR lpszSubKey, HKEY *hKey);
   void PASCAL ImeLog(DWORD dwFlag, LPTSTR lpStr);
  +#ifdef DEBUG
  +
  +//#include "debug.h"
  +#define	DEBUGPRINTF(arg)	DebugPrint##arg
  +#define	DEBUGPRINTFW(arg)	DebugPrintW##arg
  +
  +#if !defined (DEBUG_LV)
  +#define	DEBUG_LV	1
  +#endif
  +#define	DEBUGPRINTFEX(level,arg)	if((level) >= DEBUG_LV) DebugPrint##arg
  +
  +#define MyDebugPrint(x) DebugPrint x
  +int DebugPrint(LPCTSTR lpszFormat, ...);
   #else
   #define MyDebugPrint(x)
  -#define SetDwordToSetting() FALSE
  -//#define SetDwordToSetting(lpszFlag, dwFlag) FALSE
  -#define SetGlobalFlags() FALSE
  -//#define ImeLog() FALSE
   #define ImeLog(dwFlag, lpStr) FALSE
  +
  +#define	DEBUGPRINTF(arg)	/*arg*/
  +#define	DEBUGPRINTFW(arg)	/*arg*/
  +
  +#define	DEBUGPRINTFEX(level,arg)	/*if((level) >= DEBUG_LV) DebugPrintfToFile##arg*/
  +
   #endif
   
  +/* tsf.cpp */
  +#if !defined (NO_TSF)
  +BOOL	PASCAL	InitLanguageBar (void) ;
  +void	PASCAL	UninitLanguageBar (void) ;
  +BOOL	PASCAL	UpdateLanguageBarIfSelected (void) ;
  +BOOL	PASCAL	UpdateLanguageBar (void) ;
  +void	PASCAL	ActivateLanguageBar (BOOL) ;
  +BOOL	PASCAL	IsTSFEnabled (void) ;
  +#endif
  
  
  
  1.2       +45 -19    saenaru/src/subs.c
  
  Index: subs.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/subs.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- subs.c	26 Dec 2003 08:22:42 -0000	1.1
  +++ subs.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/subs.c,v 1.4 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/subs.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -178,6 +178,7 @@
       LPINPUTCONTEXT lpIMC;
       DWORD fdwConversion;
       TRANSMSG GnMsg;
  +    BOOL fOpen;
   
       if (!(lpIMC = ImmLockIMC(hIMC)))
           return;
  @@ -190,10 +191,25 @@
               fdwConversion = (fdwConversion & ~IME_CMODE_LANGUAGE);
               break;
   
  -        case TO_CMODE_KATAKANA:
  -            fdwConversion |= (IME_CMODE_NATIVE | IME_CMODE_KATAKANA);
  +        case TO_CMODE_HANGUL:
  +        // XXX turn off FULLSHAPE
  +            if (fdwConversion & IME_CMODE_FULLSHAPE)
  +                fdwConversion &= ~IME_CMODE_FULLSHAPE;
  +
  +        // Toggle CHAR MODE to the HANGUL composition mode
  +            if (fdwConversion & IME_CMODE_HANGUL) {
  +                ImmSetOpenStatus(hIMC,FALSE);
  +                fdwConversion &= ~IME_CMODE_HANGUL;
  +                fdwConversion = (fdwConversion & ~IME_CMODE_LANGUAGE);
  +        } else {
  +                ImmSetOpenStatus(hIMC,TRUE);
  +                fdwConversion &= ~IME_CMODE_LANGUAGE;
  +                fdwConversion |= (IME_CMODE_NATIVE | IME_CMODE_HANGUL);
  +        }
  +
               break;
   
  +/*
           case TO_CMODE_HIRAGANA:
               fdwConversion = 
                   ((fdwConversion & ~IME_CMODE_LANGUAGE) | IME_CMODE_NATIVE);
  @@ -208,7 +224,7 @@
    
                   // If hiragana mode, make it katakana mode.
                   if ((fdwConversion & IME_CMODE_LANGUAGE) == IME_CMODE_NATIVE)
  -                    fdwConversion |= (IME_CMODE_NATIVE | IME_CMODE_KATAKANA);
  +                    fdwConversion |= (IME_CMODE_NATIVE | IME_CMODE_HANGUL);
                   
               }
               else
  @@ -218,6 +234,7 @@
   
               }
               break;
  +*/
   
           case TO_CMODE_ROMAN:
               if (fdwConversion & IME_CMODE_ROMAN)
  @@ -286,7 +303,20 @@
           case TO_CMODE_ALPHANUMERIC:
               break;
   
  -        case TO_CMODE_KATAKANA:
  +        case TO_CMODE_HANGUL:
  +            lpSrc = ((LPMYCOMPSTR)lpCompStr)->szCompStr;
  +            lpSrc0 = lpSrc;
  +            lpDst0 = lpDst;
  +            while (*lpSrc)
  +            {
  +                *lpDst++ = *lpSrc; // XXX
  +                lpSrc++;
  +            }
  +            Mylstrcpy (lpSrc0,lpDst0);
  +            lpCompStr->dwCompStrLen = Mylstrlen(lpSrc0);
  +            fChange = TRUE;
  +            break;
  +        /*
               lpSrc = ((LPMYCOMPSTR)lpCompStr)->szCompStr;
               lpSrc0 = lpSrc;
               lpDst0 = lpDst;
  @@ -313,6 +343,7 @@
               lpCompStr->dwCompStrLen = Mylstrlen(lpSrc0);
               fChange = TRUE;
               break;
  +        */
   
           case TO_CMODE_FULLSHAPE:
               break;
  @@ -391,7 +422,9 @@
       lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
   
       if (lpCompStr->dwCompStrLen > 0)
  -        fRet = (((LPMYCOMPSTR)lpCompStr)->bCompAttr[0] > 0);
  +        fRet = (((LPMYCOMPSTR)lpCompStr)->bCompAttr[0] > ATTR_INPUT);
  +
  +    MyDebugPrint((TEXT("CompAttr: %d\n"),((LPMYCOMPSTR)lpCompStr)->bCompAttr[0]));
   
       ImmUnlockIMCC(lpIMC->hCompStr);
       ImmUnlockIMC(hIMC);
  @@ -457,8 +490,6 @@
   
       GlobalFree((HANDLE)lphkl);
       return hKL;
  -
  -
   }
   /*****************************************************************************
   *                                                                            *
  @@ -478,17 +509,11 @@
              return;
       }
   
  -    hwndIndicate = FindWindow(INDICATOR_CLASS, NULL);
  +#if !defined (NO_TSF)
  +    UpdateLanguageBar ();
  +#endif
   
  -    if (hIMC)
  -    {
  -        lpIMC = ImmLockIMC(hIMC);
  -        if (lpIMC)
  -        {
  -            fOpen = lpIMC->fOpen;
  -            ImmUnlockIMC(hIMC);
  -        }
  -    }
  +    hwndIndicate = FindWindow(INDICATOR_CLASS, NULL);
   
       if (IsWindow(hwndIndicate))
       {
  @@ -581,7 +606,7 @@
   {
       int n;
       for (n = 0; *lp1 && n < nCount - 1; *lp0++ = *lp1++, n++)
  -                ;
  +               ;
       *lp0 = L'\0';
       return lp0;
   }
  @@ -595,6 +620,7 @@
       hOldFont = GetCurrentObject(hDC, OBJ_FONT);
       GetObject(hOldFont, sizeof(LOGFONT), &lfFont);
   
  +    /* ۲  ⺻  ´ */
       if (lfFont.lfCharSet != NATIVE_CHARSET) {
           bDiffCharSet = TRUE;
           lfFont.lfWeight = FW_NORMAL;
  
  
  
  1.2       +1 -2      saenaru/src/toascii.c
  
  Index: toascii.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/toascii.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- toascii.c	26 Dec 2003 08:22:42 -0000	1.1
  +++ toascii.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/toascii.c,v 1.3 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/toascii.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -79,7 +79,6 @@
           IMEKeyupHandler( hIMC, uVKey, lParam, lpbKeyState);
       else
           IMEKeydownHandler( hIMC, uVKey, lParam, lpbKeyState);
  -
   
       // Clear static value, no more generated message!
       lpCurTransKey = NULL;
  
  
  
  1.2       +436 -21   saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ui.c	26 Dec 2003 08:22:42 -0000	1.1
  +++ ui.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/ui.c,v 1.4 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -37,15 +37,26 @@
   ++*/
   
   /**********************************************************************/
  -#include "windows.h"
  -#include "immdev.h"
  +#include <windows.h>
  +#include <immdev.h>
   #include "saenaru.h"
  +#include "vksub.h"
   
   void PASCAL ShowUIWindows(HWND hWnd, BOOL fFlag);
  +
  +void PASCAL UpdateSoftKeyboard(LPUIEXTRA, int);
   #ifdef DEBUG
   void PASCAL DumpUIExtra(LPUIEXTRA lpUIExtra);
   #endif
   
  +LRESULT CALLBACK SAENARUKbdProc(int, WPARAM, LPARAM);
  +BOOL WINAPI SetHookFunc(void);
  +BOOL WINAPI UnsetHookFunc(void);
  +#if 0
  +void PASCAL HideGuideLine (LPUIEXTRA lpUIExtra);
  +void PASCAL CreateGuideLine (HWND, LPUIEXTRA, LPINPUTCONTEXT);
  +#endif
  +
   #define CS_SAENARU (CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS | CS_IME)
   /**********************************************************************/
   /*                                                                    */
  @@ -112,7 +123,8 @@
       wc.hIcon          = NULL;
       wc.lpszMenuName   = (LPTSTR)NULL;
       wc.lpszClassName  = (LPTSTR)szCandClassName;
  -    wc.hbrBackground  = GetStockObject(LTGRAY_BRUSH);
  +    wc.hbrBackground  = (HBRUSH)(COLOR_BTNFACE + 1);
  +    //wc.hbrBackground  = GetStockObject(LTGRAY_BRUSH);
       wc.hIconSm        = NULL;
   
       if( !RegisterClassEx( (LPWNDCLASSEX)&wc ) )
  @@ -132,7 +144,8 @@
       wc.lpszMenuName   = (LPTSTR)NULL;
       wc.lpszClassName  = (LPTSTR)szStatusClassName;
       wc.hbrBackground  = NULL;
  -    wc.hbrBackground  = GetStockObject(LTGRAY_BRUSH);
  +    wc.hbrBackground  = (HBRUSH)(COLOR_BTNFACE + 1);
  +    //wc.hbrBackground  = GetStockObject(LTGRAY_BRUSH);
       wc.hIconSm        = NULL;
   
       if( !RegisterClassEx( (LPWNDCLASSEX)&wc ) )
  @@ -199,7 +212,7 @@
               case WM_IME_COMPOSITIONFULL:
               case WM_IME_SELECT:
               case WM_IME_CHAR:
  -#ifdef _DEBUG
  +#ifdef DEBUG
                   {
                   TCHAR szDev[80];
                   OutputDebugString((LPTSTR)TEXT("Why hUICurIMC is NULL????\r\n"));
  @@ -239,14 +252,22 @@
               lpUIExtra->uiCand.pt.y = -1;
               lpUIExtra->uiGuide.pt.x = -1;
               lpUIExtra->uiGuide.pt.y = -1;
  +#if 1
  +            lpUIExtra->uiSoftKbd.pt.x = -1;
  +            lpUIExtra->uiSoftKbd.pt.y = -1;
  +#endif
               lpUIExtra->hFont = (HFONT)NULL;
   
               GlobalUnlock(hUIExtra);
               SetWindowLongPtr(hWnd,IMMGWLP_PRIVATE,(LONG_PTR)hUIExtra);
   
  +            MyDebugPrint((TEXT("WM_CREATE\n")));
  +            SetHookFunc();
  +
               break;
   
           case WM_IME_SETCONTEXT:
  +            MyDebugPrint((TEXT("WM_IME_SETCONTEXT\n")));
               if (wParam)
               {
                   hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
  @@ -285,12 +306,32 @@
   
                           if (lParam & ISC_SHOWUICANDIDATEWINDOW)
                           {
  -                            if (lpCompStr->dwCompStrLen)
  +                            if (0 && lpCompStr->dwCompStrLen)
                               {
                                   CreateCompWindow(hWnd,lpUIExtra,lpIMC );
                                   MoveCompWindow(lpUIExtra,lpIMC);
                               }
                           }
  +#if 0
  +                        if (lParam & ISC_SHOWUIGUIDELINE) {
  +                            DWORD dwLevel, dwSize = 0;
  +                            if (ImmGetGuideLine (hUICurIMC, GGL_LEVEL, NULL, 0))
  +                            {
  +                                dwLevel = ImmGetGuideLine (hUICurIMC, GGL_LEVEL, NULL, 0);
  +                                if (dwLevel) 
  +                                    dwSize = ImmGetGuideLine (hUICurIMC, GGL_STRING, NULL, 0);
  +                            }
  +                            if (dwSize > 0) {
  +                                CreateGuideLine (hWnd, lpUIExtra, lpIMC);
  +                                ShowWindow (lpUIExtra->uiGuide.hWnd, SW_SHOWNOACTIVATE);
  +                                lpUIExtra->uiGuide.bShow = TRUE;
  +                            } else {
  +                                HideGuideLine (lpUIExtra);
  +                            }
  +                        } else {
  +                            HideGuideLine (lpUIExtra);
  +                        }
  +#endif
   
                           ImmUnlockIMCC(lpIMC->hCompStr);
                           ImmUnlockIMCC(lpIMC->hCandInfo);
  @@ -307,7 +348,6 @@
                   {
                       HideCandWindow(lpUIExtra);
                       HideCompWindow(lpUIExtra);
  -                    
                   }
                   GlobalUnlock(hUIExtra);
               }
  @@ -320,13 +360,17 @@
               //
               // Start composition! Ready to display the composition string.
               //
  +            lpIMC = ImmLockIMC(hUICurIMC);
               hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
               lpUIExtra = (LPUIEXTRA)GlobalLock(hUIExtra);
  -            lpIMC = ImmLockIMC(hUICurIMC);
               CreateCompWindow(hWnd,lpUIExtra,lpIMC );
  -            ImmUnlockIMC(hUICurIMC);
  +
               GlobalUnlock(hUIExtra);
  +            ImmUnlockIMC(hUICurIMC);
               break;
  +            // Windows XP notepad bug ??
  +            // ѱ IME  STARTCOMPOSITION ޽  ޵
  +            // ʴ´.
   
           case WM_IME_COMPOSITION:
               //
  @@ -335,10 +379,22 @@
               lpIMC = ImmLockIMC(hUICurIMC);
               hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
               lpUIExtra = (LPUIEXTRA)GlobalLock(hUIExtra);
  +            // STARTCOMPOSITION ޽ ޵ ʴ 
  +            if (lpIMC && !(dwImeFlag & SAENARU_ONTHESPOT))
  +            {
  +                LPCOMPOSITIONSTRING lpCompStr;
  +                lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
  +                if (lpCompStr->dwCompStrLen)
  +                {
  +                      CreateCompWindow(hWnd,lpUIExtra,lpIMC );
  +                }
  +            }
  +            //
               MoveCompWindow(lpUIExtra,lpIMC);
               MoveCandWindow(hWnd,lpIMC,lpUIExtra, TRUE);
               GlobalUnlock(hUIExtra);
               ImmUnlockIMC(hUICurIMC);
  +
               break;
   
           case WM_IME_ENDCOMPOSITION:
  @@ -347,8 +403,12 @@
               //
               hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
               lpUIExtra = (LPUIEXTRA)GlobalLock(hUIExtra);
  +
  +	    //hangul_ic_init(&ic);
  +
               HideCompWindow(lpUIExtra);
               GlobalUnlock(hUIExtra);
  +
               break;
   
           case WM_IME_COMPOSITIONFULL:
  @@ -362,6 +422,8 @@
                   lpUIExtra->hIMC = hUICurIMC;
                   GlobalUnlock(hUIExtra);
               }
  +            // XXX
  +            //
               break;
   
           case WM_IME_CONTROL:
  @@ -385,7 +447,10 @@
   
               if (IsWindow(lpUIExtra->uiDefComp.hWnd))
                   DestroyWindow(lpUIExtra->uiDefComp.hWnd);
  -
  +#if 1
  +            if (IsWindow(lpUIExtra->uiSoftKbd.hWnd))
  +                ImmDestroySoftKeyboard(lpUIExtra->uiSoftKbd.hWnd);
  +#endif
               for (i = 0; i < MAXCOMPWND; i++)
               {
                   if (IsWindow(lpUIExtra->uiComp[i].hWnd))
  @@ -400,6 +465,10 @@
   
               GlobalUnlock(hUIExtra);
               GlobalFree(hUIExtra);
  +
  +            MyDebugPrint((TEXT("WM_DELETE\n")));
  +            UnsetHookFunc();
  +
               break;
   
           case WM_UI_STATEMOVE:
  @@ -434,10 +503,16 @@
               // Set the position of the candidate window to UIExtra.
               // This message is sent by the candidate window.
               //
  +            lpIMC = ImmLockIMC(hUICurIMC);
               hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
               lpUIExtra = (LPUIEXTRA)GlobalLock(hUIExtra);
               lpUIExtra->uiCand.pt.x = (long)LOWORD(lParam);
               lpUIExtra->uiCand.pt.y = (long)HIWORD(lParam);
  +
  +	    MyDebugPrint((TEXT(" * CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
  +            //MoveCandWindow(hWnd,lpIMC,lpUIExtra,FALSE);
  +
  +            ImmUnlockIMC(hUICurIMC);
               GlobalUnlock(hUIExtra);
               break;
   
  @@ -453,8 +528,13 @@
               GlobalUnlock(hUIExtra);
               break;
   
  -
           default:
  +            if (HIWORD(lParam) == WM_LBUTTONDOWN)
  +            {
  +                 if (hUICurIMC && IsCompStr(hUICurIMC))
  +                 MakeResultString(hUICurIMC,TRUE);
  +            }
  +
               return DefWindowProc(hWnd,message,wParam,lParam);
       }
   
  @@ -507,6 +587,18 @@
       switch (wParam)
       {
           case IMN_CLOSESTATUSWINDOW:
  +#ifndef NO_USE_SOFTKBD
  +            if (IsWindow(lpUIExtra->uiSoftKbd.hWnd))
  +            {
  +                GetWindowRect(lpUIExtra->uiSoftKbd.hWnd,(LPRECT)&rc);
  +                lpUIExtra->uiSoftKbd.pt.x = rc.left;
  +                lpUIExtra->uiSoftKbd.pt.y = rc.top;
  +                //ShowWindow(lpUIExtra->uiSoftKbd.hWnd,SW_HIDE);
  +                ImmShowSoftKeyboard(lpUIExtra->uiSoftKbd.hWnd,SW_HIDE);
  +                lpUIExtra->uiSoftKbd.bShow = FALSE;
  +            }
  +#endif
  +#ifdef USE_STATUS_WIN98_XXX
               if (IsWindow(lpUIExtra->uiStatus.hWnd))
               {
                   GetWindowRect(lpUIExtra->uiStatus.hWnd,(LPRECT)&rc);
  @@ -515,9 +607,30 @@
                   ShowWindow(lpUIExtra->uiStatus.hWnd,SW_HIDE);
                   lpUIExtra->uiStatus.bShow = FALSE;
               }
  -            break;
  -
  +#endif
  +        break;
           case IMN_OPENSTATUSWINDOW:
  +#ifndef NO_USE_SOFTKBD
  +            if (lpUIExtra->uiSoftKbd.pt.x == -1)
  +            {
  +                GetWindowRect(lpIMC->hWnd,&rc);
  +                lpUIExtra->uiSoftKbd.pt.x = rc.right + 1;
  +                lpUIExtra->uiSoftKbd.pt.y = rc.top;
  +            }
  +            if (!IsWindow(lpUIExtra->uiSoftKbd.hWnd))
  +            {
  +                lpUIExtra->uiSoftKbd.hWnd = 
  +                ImmCreateSoftKeyboard(SOFTKEYBOARD_TYPE_C1, hWnd,
  +                0, 0);
  +            }
  +
  +            //ShowWindow(lpUIExtra->uiSoftKbd.hWnd,SW_SHOWNOACTIVATE);
  +            ImmShowSoftKeyboard(lpUIExtra->uiSoftKbd.hWnd,SW_HIDE);
  +
  +            //lpUIExtra->uiSoftKbd.bShow = TRUE;
  +            //SetWindowLongPtr(lpUIExtra->uiSoftKbd.hWnd,FIGWL_SVRWND,(LONG_PTR)hWnd);
  +#endif
  +#ifdef USE_STATUS_WIN98_XXX
               if (lpUIExtra->uiStatus.pt.x == -1)
               {
                   GetWindowRect(lpIMC->hWnd,&rc);
  @@ -527,14 +640,14 @@
               if (!IsWindow(lpUIExtra->uiStatus.hWnd))
               {
                   lpUIExtra->uiStatus.hWnd = 
  -                      CreateWindowEx( WS_EX_WINDOWEDGE | WS_EX_DLGMODALFRAME,
  +                      CreateWindowEx(WS_EX_WINDOWEDGE,
                               (LPTSTR)szStatusClassName,NULL,
  -                            WS_DISABLED | WS_POPUP | WS_BORDER ,
  +                            WS_COMPDEFAULT | WS_DLGFRAME,
                               lpUIExtra->uiStatus.pt.x,
                               lpUIExtra->uiStatus.pt.y,
  -                            BTX * 3 + 2 * GetSystemMetrics(SM_CXBORDER)
  +                            BTX * 2 + 2 * GetSystemMetrics(SM_CXBORDER)
                                       + 2 * GetSystemMetrics(SM_CXEDGE),
  -                            BTX + GetSystemMetrics(SM_CYSMCAPTION)
  +                            BTX // + GetSystemMetrics(SM_CYSMCAPTION)
                                   + 2 * GetSystemMetrics(SM_CYBORDER)
                                   + 2 * GetSystemMetrics(SM_CYEDGE),
                               hWnd,NULL,hInst,NULL);
  @@ -543,10 +656,20 @@
               ShowWindow(lpUIExtra->uiStatus.hWnd,SW_SHOWNOACTIVATE);
               lpUIExtra->uiStatus.bShow = TRUE;
               SetWindowLongPtr(lpUIExtra->uiStatus.hWnd,FIGWL_SVRWND,(LONG_PTR)hWnd);
  +#endif
               break;
   
           case IMN_SETCONVERSIONMODE:
               UpdateStatusWindow(lpUIExtra);
  +
  +            UpdateSoftKeyboard(lpUIExtra,
  +            lpIMC->fdwConversion & IME_CMODE_SOFTKBD);
  +#if 0
  +        if (!lpIMC->fdwConversion & IME_CMODE_SOFTKBD )
  +                ImmShowSoftKeyboard(lpUIExtra->uiSoftKbd.hWnd,SW_HIDE);
  +        else 
  +                ImmShowSoftKeyboard(lpUIExtra->uiSoftKbd.hWnd,SW_SHOWNOACTIVATE);
  +#endif
               break;
   
           case IMN_SETSENTENCEMODE:
  @@ -566,8 +689,8 @@
               }
   
               //
  -            // if current font can't display Japanese characters, 
  -            // try to find Japanese font
  +            // if current font can't display Korean characters, 
  +            // try to find Korean font
               //
               if (lf.lfCharSet != NATIVE_CHARSET) {
                   lf.lfCharSet = NATIVE_CHARSET;
  @@ -582,6 +705,8 @@
   
           case IMN_SETOPENSTATUS:
               UpdateStatusWindow(lpUIExtra);
  +            UpdateSoftKeyboard(lpUIExtra,
  +            lpIMC->fdwConversion & IME_CMODE_SOFTKBD);
               break;
   
           case IMN_OPENCANDIDATE:
  @@ -689,6 +814,7 @@
   
       switch (wParam)
       {
  +        TCHAR szDev[80];
           case IMC_GETCANDIDATEPOS:
               if (IsWindow(lpUIExtra->uiCand.hWnd))
               {
  @@ -697,6 +823,15 @@
                   lRet = 0;
               }
               break;
  +        case IMC_SETCANDIDATEPOS:
  +            MyDebugPrint((TEXT("IMC_SETCANDIDATEPOS\n")));
  +            break;
  +
  +        case IMC_SETCOMPOSITIONFONT:
  +            wsprintf((LPTSTR)szDev,TEXT("SETCOMPOSITIONFONT\r\n"));
  +            OutputDebugString((LPTSTR)szDev);
  +
  +            break;
   
           case IMC_GETCOMPOSITIONWINDOW:
               *(LPCOMPOSITIONFORM)lParam  = lpIMC->cfCompForm; 
  @@ -772,8 +907,11 @@
               if ( HIWORD(lParam) == WM_LBUTTONDOWN
                   || HIWORD(lParam) == WM_RBUTTONDOWN ) 
               {
  +                SetCursor(LoadCursor(NULL,IDC_SIZEALL));
  +
                   GetCursorPos( &pt );
                   SetCapture(hWnd);
  +
                   GetWindowRect(hWnd,&drc);
                   ptdif.x = pt.x - drc.left;
                   ptdif.y = pt.y - drc.top;
  @@ -782,6 +920,10 @@
                   rc.bottom -= rc.top;
                   SetWindowLong(hWnd,FIGWL_MOUSE,FIM_CAPUTURED);
               }
  +#if (WINVER >= 0x0500)
  +	      else
  +                SetCursor(LoadCursor(NULL,IDC_HAND));
  +#endif
               break;
   
           case WM_MOUSEMOVE:
  @@ -894,6 +1036,280 @@
       GlobalUnlock(hUIExtra);
   
   }
  +
  +/**********************************************************************/
  +/* UpdateSoftKbd()                                                    */
  +/**********************************************************************/
  +void PASCAL UpdateSoftKeyboard(
  +    LPUIEXTRA   lpUIExtra, int mode)
  +{
  +    LPINPUTCONTEXT lpIMC;
  +
  +    if (!mode)
  +    {
  +        ImmShowSoftKeyboard(lpUIExtra->uiSoftKbd.hWnd,SW_HIDE);
  +    }
  +    else
  +    {
  +        SetSoftKbdData(lpUIExtra->uiSoftKbd.hWnd);
  +
  +        ImmShowSoftKeyboard(lpUIExtra->uiSoftKbd.hWnd,SW_SHOWNOACTIVATE);
  +    }
  +    return;
  +}
  +
  +static HHOOK hHookWnd = 0;
  +
  +BOOL WINAPI SetHookFunc(void)
  +{
  +    if((hHookWnd=SetWindowsHookEx(WH_GETMESSAGE, SAENARUKbdProc, (HINSTANCE) NULL, GetCurrentThreadId())) == NULL)
  +        return FALSE;
  +    return TRUE;
  +}
  +
  +BOOL WINAPI UnsetHookFunc(void)
  +{
  +    if(UnhookWindowsHookEx(hHookWnd) == 0)
  +        return FALSE;
  +    return TRUE;
  +}
  +
  +static const WCHAR qwerty2dvorak_table[] = {
  +    0x021,    /* GDK_exclam */
  +    0x05f,    /* GDK_underscore */
  +    0x023,    /* GDK_numbersign */
  +    0x024,    /* GDK_dollar */
  +    0x025,    /* GDK_percent */
  +    0x026,    /* GDK_ampersand */
  +    0x02d,    /* GDK_minus */
  +    0x028,    /* GDK_parenleft */
  +    0x029,    /* GDK_parenright */
  +    0x02a,    /* GDK_asterisk */
  +    0x07d,    /* GDK_braceright */
  +    0x077,    /* GDK_w */
  +    0x05b,    /* GDK_bracketleft */
  +    0x076,    /* GDK_v */
  +    0x07a,    /* GDK_z */
  +    0x030,    /* GDK_0 */
  +    0x031,    /* GDK_1 */
  +    0x032,    /* GDK_2 */
  +    0x033,    /* GDK_3 */
  +    0x034,    /* GDK_4 */
  +    0x035,    /* GDK_5 */
  +    0x036,    /* GDK_6 */
  +    0x037,    /* GDK_7 */
  +    0x038,    /* GDK_8 */
  +    0x039,    /* GDK_9 */
  +    0x053,    /* GDK_S */
  +    0x073,    /* GDK_s */
  +    0x057,    /* GDK_W */
  +    0x05d,    /* GDK_bracketright */
  +    0x056,    /* GDK_V */
  +    0x05a,    /* GDK_Z */
  +    0x040,    /* GDK_at */
  +    0x041,    /* GDK_A */
  +    0x058,    /* GDK_X */
  +    0x04a,    /* GDK_J */
  +    0x045,    /* GDK_E */
  +    0x03e,    /* GDK_greater */
  +    0x055,    /* GDK_U */
  +    0x049,    /* GDK_I */
  +    0x044,    /* GDK_D */
  +    0x043,    /* GDK_C */
  +    0x048,    /* GDK_H */
  +    0x054,    /* GDK_T */
  +    0x04e,    /* GDK_N */
  +    0x04d,    /* GDK_M */
  +    0x042,    /* GDK_B */
  +    0x052,    /* GDK_R */
  +    0x04c,    /* GDK_L */
  +    0x022,    /* GDK_quotedbl */
  +    0x050,    /* GDK_P */
  +    0x04f,    /* GDK_O */
  +    0x059,    /* GDK_Y */
  +    0x047,    /* GDK_G */
  +    0x04b,    /* GDK_K */
  +    0x03c,    /* GDK_less */
  +    0x051,    /* GDK_Q */
  +    0x046,    /* GDK_F */
  +    0x03a,    /* GDK_colon */
  +    0x02f,    /* GDK_slash */
  +    0x05c,    /* GDK_backslash */
  +    0x03d,    /* GDK_qual */
  +    0x05e,    /* GDK_asciicircum */
  +    0x07b,    /* GDK_braceleft */
  +    0x060,    /* GDK_grave */
  +    0x061,    /* GDK_a */
  +    0x078,    /* GDK_x */
  +    0x06a,    /* GDK_j */
  +    0x065,    /* GDK_e */
  +    0x02e,    /* GDK_period */
  +    0x075,    /* GDK_u */
  +    0x069,    /* GDK_i */
  +    0x064,    /* GDK_d */
  +    0x063,    /* GDK_c */
  +    0x068,    /* GDK_h */
  +    0x074,    /* GDK_t */
  +    0x06e,    /* GDK_n */
  +    0x06d,    /* GDK_m */
  +    0x062,    /* GDK_b */
  +    0x072,    /* GDK_r */
  +    0x06c,    /* GDK_l */
  +    0x027,    /* GDK_apostrophe */
  +    0x070,    /* GDK_p */
  +    0x06f,    /* GDK_o */
  +    0x079,    /* GDK_y */
  +    0x067,    /* GDK_g */
  +    0x06b,    /* GDK_k */
  +    0x02c,    /* GDK_comma */
  +    0x071,    /* GDK_q */
  +    0x066,    /* GDK_f */
  +    0x03b,    /* GDK_semicolon */
  +    0x03f,    /* GDK_question */
  +    0x07c,    /* GDK_bar */
  +    0x02b,    /* GDK_plus */
  +    0x07e,    /* GDK_asciitilde */
  +};
  +
  +LRESULT CALLBACK SAENARUKbdProc(int code, WPARAM wParam, LPARAM lParam)
  +{
  +    BYTE pbKeyState [256];
  +    LPMSG lpmsg;
  +    UINT vKey;
  +    SHORT ALT;
  +
  +    BOOL dvorak = FALSE;
  +
  +    if (code < 0)
  +        return CallNextHookEx(hHookWnd, code, wParam, lParam);
  +
  +    if (dwOptionFlag & DVORAK_SUPPORT) {
  +	HIMC hIMC = NULL;
  +	HWND hwnd = GetFocus ();
  +	LPINPUTCONTEXT lpIMC;
  +
  +	if (hwnd != NULL) {
  +	    hIMC = ImmGetContext (hwnd);
  +	    lpIMC = ImmLockIMC(hIMC);
  +            if (lpIMC) {
  +	        dvorak = !(lpIMC->fdwConversion & IME_CMODE_NATIVE);
  +	    }
  +	    ImmUnlockIMC(hIMC);
  +	}
  +    }
  +
  +    lpmsg = (LPMSG)lParam;
  +    vKey = lpmsg->wParam;
  +
  +    switch (lpmsg->message)
  +    {
  +        case WM_KEYUP:
  +            break;
  +        case WM_KEYDOWN:
  +#if 0
  +            if ((dwImeFlag & SAENARU_DVORAK ) &&
  +                (vKey >= '!' && vKey <= '~'))
  +            {
  +                 WORD dv;
  +                 SHORT sc;
  +                 dv = qwerty2dvorak_table[vKey - '!'];
  +                 sc = VkKeyScan(dv);
  +                 // lpmsg->wParam = sc; XXX
  +            }
  +            else
  +#endif
  +            if ( vKey == VK_SPACE && dwOptionFlag & USE_SHIFT_SPACE)
  +            {
  +               // SHORT ShiftState = (GetAsyncKeyState(VK_LSHIFT) >> 31) & 1;
  +                TCHAR szDev[80];
  +		SHORT ShiftState;
  +                GetKeyboardState((LPBYTE)&pbKeyState);
  +		ShiftState = pbKeyState[VK_LSHIFT] & 0x80;
  +
  +                wsprintf((LPTSTR)szDev,TEXT("ShiftState is %x\r\n"),ShiftState);
  +                OutputDebugString((LPTSTR)szDev);
  +                wsprintf((LPTSTR)szDev,TEXT(" * VKey %x\r\n"),lpmsg->wParam);
  +                OutputDebugString((LPTSTR)szDev);
  +                MyDebugPrint((TEXT("\t** ShiftState is 0x%x\r\n"),ShiftState));
  +                if (ShiftState)
  +                {
  +                     lpmsg->message=WM_KEYDOWN;
  +                     lpmsg->wParam=VK_HANGUL; // XXX
  +                     lpmsg->lParam=(0xF2<<16) | 0x41000001;
  +                }
  +            }
  +            break;
  +        case WM_CHAR:
  +#ifndef NO_DVORAK
  +            if (dvorak &&
  +                (vKey >= '!' && vKey <= '~'))
  +            {
  +                WORD dv;
  +                SHORT sc;
  +		UINT caps = 0;
  +
  +                GetKeyboardState((LPBYTE)&pbKeyState);
  +
  +		caps = pbKeyState[VK_CAPITAL];
  +		if (caps) {
  +		    if (vKey >= 'A' && vKey <= 'Z')
  +			vKey += 'a' - 'A';
  +		    else if (vKey >= 'a' && vKey <= 'z')
  +			vKey -= 'a' - 'A';
  +		    dv = qwerty2dvorak_table[vKey - '!'];
  +		    if (dv >= 'A' && dv <= 'Z')
  +			dv += 'a' - 'A';
  +		    else if (dv >= 'a' && dv <= 'z')
  +			dv -= 'a' - 'A';
  +		} else
  +		    dv = qwerty2dvorak_table[vKey - '!'];
  +		 
  +                lpmsg->wParam = dv;
  +                sc = VkKeyScan(dv);
  +                lpmsg->lParam &= ~0x00ff0000;
  +                lpmsg->lParam |= (sc <<16);
  +                pbKeyState[dv]=1;
  +                pbKeyState[vKey]=0;
  +                SetKeyboardState((LPBYTE)&pbKeyState);
  +            }
  +#endif
  +            break;
  +        case WM_SYSKEYDOWN:
  +        case WM_SYSKEYUP:
  +            // hack to use RALT(VK_RMENU) as a Mode_Switch
  +            GetKeyboardState((LPBYTE)&pbKeyState);
  +            if ( pbKeyState[VK_RMENU] & 0x80 && !(lpmsg->lParam & 0x01000000))
  +            {
  +		WORD ch;
  +
  +                ToAscii(vKey,(lpmsg->lParam | 0xff0000)>>16,pbKeyState,&ch,0);
  +		ch = 0xff & ch;
  +                if (ch < '!' || ch > '~')
  +                     break;
  +                MyDebugPrint((TEXT("RALT + %x\n"), ch));
  +#if 1
  +                lpmsg->message-=4; // WM_SYSKEYUP - WM_KEYUP = 4 See WINUSER.H
  +                MyDebugPrint((TEXT("RALT %x\n"), lpmsg->lParam));
  +
  +                if (dvorak)
  +	 	{
  +		    WORD dv;
  +                    SHORT sc;
  +
  +                    dv = qwerty2dvorak_table[ch - '!'];
  +                    sc = VkKeyScan(dv);
  +                    lpmsg->wParam = sc;
  +		}
  +#endif
  +            }
  +            break;
  +        default:
  +            break;
  +    }
  +
  +    return CallNextHookEx(hHookWnd, code, wParam, lParam);
  +}
  +
   #ifdef DEBUG
   void PASCAL DumpUIExtra(LPUIEXTRA lpUIExtra)
   {
  @@ -933,4 +1349,3 @@
       }
   }
   #endif
  -
  
  
  
  1.2       +137 -16   saenaru/src/uicand.c
  
  Index: uicand.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicand.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- uicand.c	26 Dec 2003 08:22:43 -0000	1.1
  +++ uicand.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/uicand.c,v 1.3 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/uicand.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -56,6 +56,17 @@
   LPARAM lParam;
   {
       HWND hUIWnd;
  +#if 1
  +    HWND hSvrWnd;
  +    HIMC hIMC;
  +    LPINPUTCONTEXT lpIMC;
  +    static INT dy=0;
  +#endif
  +    DWORD dwPushedCand;
  +    POINT pt;
  +    RECT rc;
  +    INT select;
  +    INT offset;
   
       switch (message)
       {
  @@ -64,20 +75,75 @@
               break;
   
           case WM_SETCURSOR:
  +#if (WINVER >= 0x0500)
  +            SetCursor(LoadCursor(NULL,IDC_HAND));
  +#endif
  +            if (dy == 0)
  +            {
  +                TEXTMETRIC tm;
  +                HDC hDC;
  +
  +                hDC = CreateIC(TEXT("DISPLAY"),NULL,NULL,NULL);
  +                GetTextMetrics(hDC,&tm);
  +                dy = tm.tmHeight + tm.tmExternalLeading;
  +                DeleteDC(hDC);
  +            }
  +
  +            select = 0;
  +            offset = 0;
  +            {
  +                GetCursorPos(&pt);
  +                ScreenToClient(hWnd,&pt);
  +                GetClientRect(hWnd,&rc);
  +                if (!PtInRect(&rc,pt))
  +                    return 0;
  +
  +                pt.y -= GetSystemMetrics(SM_CYEDGE);
  +                if (pt.y > 0)
  +                    select = pt.y / dy + ((pt.y % dy) ? 1:0);
  +                if (select == 0)
  +                    offset = -2;
  +            }
  +            if ((HIWORD(lParam) != WM_LBUTTONDOWN) &&
  +                (HIWORD(lParam) != WM_RBUTTONDOWN)) 
  +                 return DefWindowProc(hWnd,message,wParam,lParam);
  +            if ((HIWORD(lParam) == WM_LBUTTONDOWN))
  +            {
  +#if 0
  +                else if (select > 9)
  +                {
  +                    if (pt.x < 14)
  +                        offset = -2;
  +                    else
  +                        offset = 2;
  +                    select = 0;
  +                }
  +#endif
  +                MyDebugPrint((TEXT("Cand offset %d\n"),offset));
  +                hSvrWnd = (HWND)GetWindowLongPtr(hWnd,FIGWL_SVRWND);
  +                if (select > 0 &&
  +                    (hIMC = (HIMC)GetWindowLongPtr(hSvrWnd,IMMGWLP_IMC)) )
  +                {
  +                    lpIMC = ImmLockIMC(hIMC);
  +                    ConvHanja(hIMC,offset,select);
  +	            ImmUnlockIMC(hIMC);
  +                    break;
  +                }
  +            }
           case WM_MOUSEMOVE:
           case WM_LBUTTONUP:
           case WM_RBUTTONUP:
               DragUI(hWnd,message,wParam,lParam);
  -            if ((message == WM_SETCURSOR) &&
  -                (HIWORD(lParam) != WM_LBUTTONDOWN) &&
  -                (HIWORD(lParam) != WM_RBUTTONDOWN)) 
  -                    return DefWindowProc(hWnd,message,wParam,lParam);
  -            if ((message == WM_LBUTTONUP) || (message == WM_RBUTTONUP))
  +            if ((message == WM_LBUTTONUP) || (message == WM_RBUTTONUP)) {
  +	        MyDebugPrint((TEXT(" $ CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
                   SetWindowLong(hWnd,FIGWL_MOUSE,0L);
  +	    }
               break;
   
           case WM_MOVE:
               hUIWnd = (HWND)GetWindowLongPtr(hWnd,FIGWL_SVRWND);
  +
  +	    MyDebugPrint((TEXT(" x CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
               if (IsWindow(hUIWnd))
                   SendMessage(hUIWnd,WM_UI_CANDMOVE,wParam,lParam);
               break;
  @@ -135,9 +201,26 @@
           {
               if (!lpUIExtra->bVertical)
               {
  +		UINT dy = GetCompFontHeight(lpUIExtra);
  +		UINT hy = GetSystemMetrics(SM_CYFULLSCREEN);
  +		POINT pt;
  +
                   lppt->x = lpIMC->cfCompForm.ptCurrentPos.x;
  -                lppt->y = lpIMC->cfCompForm.ptCurrentPos.y +
  -                                     GetCompFontHeight(lpUIExtra);
  +                lppt->y = lpIMC->cfCompForm.ptCurrentPos.y + dy;
  +                                     //GetCompFontHeight(lpUIExtra);
  +				     //
  +		pt.x = lppt->x;
  +		pt.y = lppt->y;
  +		
  +		ClientToScreen(lpIMC->hWnd,&pt);
  +		if ((pt.y + 9 * dy) > hy) {
  +		    pt.x += dy + 2;
  +		    pt.y = hy - 10 * dy;
  +		    ScreenToClient(lpIMC->hWnd,&pt);
  +		    lppt->x = pt.x;
  +		    lppt->y = pt.y;
  +		}
  +		MyDebugPrint((TEXT("XXX #1\n")));
               }
               else
               {
  @@ -179,7 +262,8 @@
           lpUIExtra->uiCand.hWnd = 
                   CreateWindowEx(WS_EX_WINDOWEDGE,
                                (LPTSTR)szCandClassName,NULL,
  -                             WS_COMPDEFAULT | WS_DLGFRAME,
  +                             WS_COMPNODEFAULT,
  +                             //WS_COMPDEFAULT | WS_DLGFRAME,
                                lpUIExtra->uiCand.pt.x,
                                lpUIExtra->uiCand.pt.y,
                                1,1,
  @@ -214,12 +298,26 @@
       SIZE sz;
       HWND hSvrWnd;
       HBRUSH hbrHightLight = CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT));
  +#if 0
       HBRUSH hbrLGR = GetStockObject(LTGRAY_BRUSH);
  -    HFONT hOldFont;
  +#else
  +    HBRUSH hbrLGR = (HBRUSH)(COLOR_BTNFACE + 1);
  +#endif
  +    HFONT hOldFont = NULL;
   
       GetClientRect(hCandWnd,&rc);
       hDC = BeginPaint(hCandWnd,&ps);
  +    FillRect(hDC,&rc,(HBRUSH) (COLOR_BTNFACE + 1));
       SetBkMode(hDC,TRANSPARENT);
  +
  +#if 0
  +    MoveToEx(hDC, rc.left+1,rc.top+1,NULL);
  +    LineTo(hDC, rc.left+1,rc.bottom-1);
  +    LineTo(hDC, rc.right-1,rc.bottom-1);
  +    LineTo(hDC, rc.right-1,rc.top+1);
  +    LineTo(hDC, rc.left+1,rc.top+1);
  +#endif
  +
       hSvrWnd = (HWND)GetWindowLongPtr(hCandWnd,FIGWL_SVRWND);
   
       if (hIMC = (HIMC)GetWindowLongPtr(hSvrWnd,IMMGWLP_IMC))
  @@ -233,7 +331,14 @@
               for (i = lpCandList->dwPageStart; 
                    i < (lpCandList->dwPageStart + lpCandList->dwPageSize); i++)
               {
  -                lpstr = (LPMYSTR)((LPSTR)lpCandList + lpCandList->dwOffset[i]);
  +		TCHAR num[3];
  +                wsprintf(num, TEXT("%d "), i % lpCandList->dwPageSize + 1);
  +
  +		if (i >= lpCandList->dwCount) 
  +		    lpstr=(LPMYSTR)(LPSTR)" ";
  +		else
  +                    lpstr=(LPMYSTR)((LPSTR)lpCandList +lpCandList->dwOffset[i]);
  +
                   MyGetTextExtentPoint(hDC,lpstr,Mylstrlen(lpstr),&sz);
                   if (((LPMYCAND)lpCandInfo)->cl.dwSelection == (DWORD)i)
                   {
  @@ -245,11 +350,13 @@
                   else
                   {
                       hbr = SelectObject(hDC,hbrLGR);
  -                    PatBlt(hDC,0,height,rc.right,sz.cy,PATCOPY);
  +                    //PatBlt(hDC,0,height,rc.right,sz.cy,PATCOPY);
                       SelectObject(hDC,hbr);
                       SetTextColor(hDC,RGB(0,0,0));
                   }
  -                MyTextOut(hDC,GetSystemMetrics(SM_CXEDGE),height,lpstr,Mylstrlen(lpstr));
  +		if (i < lpCandList->dwCount)
  +                    MyTextOut(hDC,GetSystemMetrics(SM_CXEDGE),height,num,Mylstrlen(num));
  +                MyTextOut(hDC,10 + GetSystemMetrics(SM_CXEDGE),height,lpstr,Mylstrlen(lpstr));
                   height += sz.cy;
               }
               ImmUnlockIMCC(lpIMC->hCandInfo);
  @@ -313,12 +420,11 @@
           MoveWindow(lpUIExtra->uiCand.hWnd,
                          rc.left,
                          rc.top,
  -                       width+ 4 * GetSystemMetrics(SM_CXEDGE),
  +                       width+ 10 + 4 * GetSystemMetrics(SM_CXEDGE),
  +		       /* 10 is a left margin */
                          height+ 4 * GetSystemMetrics(SM_CYEDGE),
                          TRUE);
  -
       }
  -
   }
   
   /**********************************************************************/
  @@ -360,6 +466,20 @@
               caf.dwStyle        = CFS_CANDIDATEPOS;
               caf.ptCurrentPos.x = pt.x;
               caf.ptCurrentPos.y = pt.y;
  +#if 0
  +            GetWindowRect(lpUIExtra->uiCand.hWnd,&rc);
  +	    if ((int)rc.left != -1 && (int)rc.left < 4096 ) {
  +		POINT spt;
  +		spt.x = (int)rc.left;
  +		spt.y = (int)rc.top;
  +		MyDebugPrint((TEXT("S X,Y:%d,%d\n"),spt.x,spt.y));
  +		ScreenToClient(lpIMC->hWnd, &spt);
  +		MyDebugPrint((TEXT("C X,Y:%d,%d\n"),spt.x,spt.y));
  +
  +		caf.ptCurrentPos.x = spt.x;
  +		caf.ptCurrentPos.y = spt.y;
  +	    }
  +#endif
               ImmSetCandidateWindow(lpUIExtra->hIMC,&caf);
           }
           return;
  @@ -377,6 +497,7 @@
               ShowWindow(lpUIExtra->uiCand.hWnd,SW_SHOWNOACTIVATE);
               lpUIExtra->uiCand.bShow = TRUE;
               InvalidateRect(lpUIExtra->uiCand.hWnd,NULL,FALSE);
  +
               SendMessage(hUIWnd,WM_UI_CANDMOVE, 0,MAKELONG((WORD)pt.x,(WORD)pt.y));
           }
           return;
  
  
  
  1.2       +24 -3     saenaru/src/uicomp.c
  
  Index: uicomp.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicomp.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- uicomp.c	26 Dec 2003 08:22:43 -0000	1.1
  +++ uicomp.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/uicomp.c,v 1.4 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/uicomp.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -66,16 +66,22 @@
           case WM_MOUSEMOVE:
           case WM_LBUTTONUP:
           case WM_RBUTTONUP:
  +#if 1
  +//	Compâ  ʿ䰡  â̴. 
               DragUI(hWnd,message,wParam,lParam);
               if ((message == WM_SETCURSOR) &&
                   (HIWORD(lParam) != WM_LBUTTONDOWN) &&
                   (HIWORD(lParam) != WM_RBUTTONDOWN)) 
                   return DefWindowProc(hWnd,message,wParam,lParam);
  +#endif
  +#if 1
               if ((message == WM_LBUTTONUP) || (message == WM_RBUTTONUP))
                   SetWindowLong(hWnd,FIGWL_MOUSE,0L);
  +#endif
               break;
   
           case WM_MOVE:
  +            OutputDebugString(TEXT("MOVE\r\n"));
               hUIWnd = (HWND)GetWindowLongPtr(hWnd,FIGWL_SVRWND);
               if (IsWindow(hUIWnd))
                   SendMessage(hUIWnd,WM_UI_DEFCOMPMOVE,wParam,lParam);
  @@ -128,7 +134,11 @@
           lpUIExtra->uiDefComp.pt.y = rc.bottom + 1;
       }
   
  -    if (!IsWindow(lpUIExtra->uiDefComp.hWnd))
  +    // Root window style XXX
  +    // skkime ̰ rootwindow style̶ ִ. ׷
  +    // Ʒ  ̻ϰ  ܻ   
  +    //  . ׷ ƿ  ȴ. 2003/11/15
  +    if (1 && !IsWindow(lpUIExtra->uiDefComp.hWnd))
       {
           lpUIExtra->uiDefComp.hWnd = 
               CreateWindowEx( WS_EX_WINDOWEDGE,
  @@ -140,7 +150,7 @@
                            hUIWnd,NULL,hInst,NULL);
       }
   
  -    //SetWindowLong(lpUIExtra->uiDefComp.hWnd,FIGWL_FONT,(DWORD)lpUIExtra->hFont);
  +    SetWindowLongPtr(lpUIExtra->uiDefComp.hWnd,FIGWL_FONT,(LONG_PTR)lpUIExtra->hFont);
       SetWindowLongPtr(lpUIExtra->uiDefComp.hWnd,FIGWL_SVRWND,(LONG_PTR)hUIWnd);
       ShowWindow(lpUIExtra->uiDefComp.hWnd,SW_HIDE);
       lpUIExtra->uiDefComp.bShow = FALSE;
  @@ -518,9 +528,15 @@
               lpattr++;
               cnt++;
           }
  +
  +        //TextOut(hDC,x,y,lpstr,cnt);
           switch (bAttr)
           {
               case ATTR_INPUT:
  +                SetTextColor(hDC,RGB(0,0,0));
  +                //SetBkMode(hDC,TRANSPARENT);
  +		MoveToEx(hDC, rc.right, rc.top, NULL);
  +		LineTo  (hDC, rc.right, rc.bottom);
                   break;
   
               case ATTR_TARGET_CONVERTED:
  @@ -550,6 +566,11 @@
           TextOut(hDC,x,y,lpstr,cnt);
           GetTextExtentPoint(hDC,lpstr,cnt,&sz);
           lpstr += cnt;
  +	if (bAttr == ATTR_INPUT)
  +	{
  +		MoveToEx(hDC, rc.right, rc.top, NULL);
  +		LineTo  (hDC, rc.right, rc.bottom);
  +	}
   
           if (!fVert)
               x += sz.cx;
  
  
  
  1.2       +3 -1      saenaru/src/uiguide.c
  
  Index: uiguide.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uiguide.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- uiguide.c	26 Dec 2003 08:22:43 -0000	1.1
  +++ uiguide.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/uiguide.c,v 1.3 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/uiguide.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -77,8 +77,10 @@
   
           case WM_MOUSEMOVE:
           case WM_SETCURSOR:
  +	    MyDebugPrint((TEXT("UIGuide\n")));
           case WM_LBUTTONUP:
           case WM_RBUTTONUP:
  +	    MyDebugPrint((TEXT("UIGuide BUTTON\n")));
               ButtonGuide(hWnd,message,wParam,lParam);
               if ((message == WM_SETCURSOR) &&
                   (HIWORD(lParam) != WM_LBUTTONDOWN) &&
  
  
  
  1.2       +30 -59    saenaru/src/uistate.c
  
  Index: uistate.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uistate.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- uistate.c	26 Dec 2003 08:22:44 -0000	1.1
  +++ uistate.c	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/uistate.c,v 1.3 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/uistate.c,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -46,8 +46,8 @@
   /*                                                                    */
   /* StatusWndProc()                                                    */
   /* IME UI window procedure                                            */
  -/*                                                                    */
   /**********************************************************************/
  +// â :  â Ƿ     wkpark
   LRESULT CALLBACK StatusWndProc( hWnd, message, wParam, lParam )
   HWND hWnd;
   UINT message;
  @@ -133,24 +133,16 @@
           if (!PtInRect(&rc,pt))
               return 0;
   
  -        if (pt.y > GetSystemMetrics(SM_CYSMCAPTION))
  +        if (pt.y > 0)
           {
               if (pt.x < BTX)
                   return PUSHED_STATUS_HDR;
               else if (pt.x < (BTX * 2))
                   return PUSHED_STATUS_MODE;
  +#if 0
               else if (pt.x < (BTX * 3))
                   return PUSHED_STATUS_ROMAN;
  -        }
  -        else
  -        {
  -            RECT rc;
  -            rc.left = STCLBT_X; 
  -            rc.top = STCLBT_Y; 
  -            rc.right = STCLBT_X + STCLBT_DX; 
  -            rc.bottom = STCLBT_Y + STCLBT_DY; 
  -            if (PtInRect(&rc,pt))
  -                return PUSHED_STATUS_CLOSE;
  +#endif
           }
       }
       return 0;
  @@ -165,19 +157,11 @@
   {
       if (dwCmode & IME_CMODE_FULLSHAPE)
       {
  -        if (!(dwCmode & IME_CMODE_LANGUAGE))
  -            return BTFALPH;
  -        else if ((dwCmode & IME_CMODE_LANGUAGE) == IME_CMODE_NATIVE)
  -            return BTFHIRA;
  -        else
  -            return BTFKATA;
  +        return 80;
       }
       else
       {
  -        if ((dwCmode & IME_CMODE_LANGUAGE) == IME_CMODE_ALPHANUMERIC)
  -            return BTHALPH;
  -        else
  -            return BTHKATA;
  +        return 60;
       }
   
   }
  @@ -194,6 +178,7 @@
       HBITMAP hbmpOld;
       int x;
       HWND hSvrWnd;
  +    return; /* XXX */
   
       hSvrWnd = (HWND)GetWindowLongPtr(hStatusWnd,FIGWL_SVRWND);
   
  @@ -201,12 +186,14 @@
       {
           HBITMAP hbmpStatus;
           HBRUSH hOldBrush,hBrush;
  -        int nCyCap = GetSystemMetrics(SM_CYSMCAPTION);
  +//      int nCyCap = GetSystemMetrics(SM_CYSMCAPTION);
  +        int nCyCap = 0;
           RECT rc;
   
           lpIMC = ImmLockIMC(hIMC);
           hMemDC = CreateCompatibleDC(hDC);
   
  +#if 0
           // Paint Caption.
           hBrush = CreateSolidBrush(GetSysColor(COLOR_ACTIVECAPTION));
           hOldBrush = SelectObject(hDC,hBrush);
  @@ -227,7 +214,7 @@
           else
               BitBlt(hDC,STCLBT_X,STCLBT_Y,STCLBT_DX,STCLBT_DY,
                      hMemDC,STCLBT_DX,0,SRCCOPY);
  -
  +#endif
   
           hbmpStatus = (HBITMAP)GetWindowLongPtr(hStatusWnd,FIGWL_STATUSBMP);
           SelectObject(hMemDC,hbmpStatus);
  @@ -250,6 +237,7 @@
           else
               BitBlt(hDC,BTX,nCyCap,BTX,BTY,hMemDC,x,BTY,SRCCOPY);
   
  +#if 0
           // Paint Roman MODE.
           x = BTEMPT;
           if (lpIMC->fdwConversion & IME_CMODE_ROMAN)
  @@ -259,8 +247,10 @@
               BitBlt(hDC,BTX*2,nCyCap,BTX,BTY,hMemDC,x,0,SRCCOPY);
           else
               BitBlt(hDC,BTX*2,nCyCap,BTX,BTY,hMemDC,x,BTY,SRCCOPY);
  -
  +#endif
  +#if 0
           SelectObject(hMemDC,hbmpOld);
  +#endif
           DeleteDC(hMemDC);
           ImmUnlockIMC(hIMC);
       }
  @@ -279,48 +269,24 @@
       BOOL fFullShape = ((fdwConversion & IME_CMODE_FULLSHAPE) != 0);
   
       //
  -    // When the mode button is pushed, the convmode will be chage as follow
  -    // rotation.
  +    // When the mode button is pushed,
  +    // the convmode will be switched as following
       //
  -    //     FULLSHAPE,HIRAGANA     ->
  -    //     FULLSHAPE,KATAKANA     ->
  -    //     FULLSHAPE,ALPHANUMERIC ->
  -    //     HALFSHAPE,KATAKANA     ->
  -    //     HALFSHAPE,ALPHANUMERIC ->
  -    //     FULLSHAPE,HIRAGANA 
  +    //     FULLSHAPE -> HALFSHAPE
  +    //     NATIVE -> ROMAN
       //
       if (dwPushed == PUSHED_STATUS_MODE)
       {
           dwTemp = fdwConversion & IME_CMODE_LANGUAGE;
   
  -        if ((fFullShape) && (dwTemp == IME_CMODE_NATIVE))
  -            return (fdwConversion & ~IME_CMODE_LANGUAGE) | IME_CMODE_KATAKANA | IME_CMODE_NATIVE;
  -
  -        if ((fFullShape) && (dwTemp == (IME_CMODE_KATAKANA | IME_CMODE_NATIVE)))
  -            return (fdwConversion & ~IME_CMODE_LANGUAGE);
  -
  -        if ((fFullShape) && (dwTemp == 0))
  +        if (fFullShape)
           {
               fdwConversion &= ~IME_CMODE_FULLSHAPE;
  -            return (fdwConversion & ~IME_CMODE_LANGUAGE) 
  -                           | IME_CMODE_KATAKANA | IME_CMODE_NATIVE;
           }
  -
  -        if ((!fFullShape) && (dwTemp == (IME_CMODE_KATAKANA | IME_CMODE_NATIVE)))
  -            return (fdwConversion & ~IME_CMODE_LANGUAGE);
  -
  -        if ((!fFullShape) && (!dwTemp))
  -        {
  +	else
  +	{
               fdwConversion |= IME_CMODE_FULLSHAPE;
  -            return (fdwConversion & ~IME_CMODE_LANGUAGE) | IME_CMODE_NATIVE;
  -        }
  -    }
  -    if (dwPushed == PUSHED_STATUS_ROMAN)
  -    {
  -         if (fdwConversion & IME_CMODE_ROMAN)
  -            return fdwConversion & ~IME_CMODE_ROMAN;
  -         else
  -            return fdwConversion | IME_CMODE_ROMAN;
  +	}
       }
       return fdwConversion;
   
  @@ -423,6 +389,8 @@
               {
                   int cmd;
                   POINT pt;
  +                LPINPUTCONTEXT lpIMC;
  +
                   HMENU hSubMenu = GetSubMenu(hMenu, 0);
   
                   pt.x = (int)LOWORD(lParam), 
  @@ -490,7 +458,10 @@
                       }
   
                       case IDM_ABOUT:
  -                        ImmConfigureIME(GetKeyboardLayout(0), NULL, IME_CONFIG_GENERAL, 0);
  +		        lpIMC = (LPINPUTCONTEXT)ImmLockIMC(hIMC);
  +		        (void) ImeConfigure (GetKeyboardLayout(0), lpIMC->hWnd, IME_CONFIG_GENERAL, NULL);
  +                        //ImmConfigureIME(GetKeyboardLayout(0), NULL, IME_CONFIG_GENERAL, 0);
  +			ImmUnlockIMC(hIMC);
                           break;
   
                       default:
  
  
  
  1.2       +2 -1      saenaru/src/vksub.h
  
  Index: vksub.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/vksub.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- vksub.h	26 Dec 2003 08:22:44 -0000	1.1
  +++ vksub.h	26 Dec 2003 08:28:43 -0000	1.2
  @@ -24,7 +24,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Perky: saenaru/src/vksub.h,v 1.2 2003/10/23 20:00:34 perky Exp $
  + * $Saenaru: saenaru/src/vksub.h,v 1.2 2003/12/26 08:28:43 perky Exp $
    */
   /*++
   
  @@ -79,4 +79,5 @@
   #define VK_OEM_0        0x0B9           //
   #define VK_OEM_9        0x0E0           // next available
   #define VK_OEM_BSLASH   0x0E2           // additional Back Slash key for AX.
  +
   
  
  
  


perky       03/12/26 17:43:21

  Added:       resource .cvsignore
  Log:
  Ignore Windows Explorer thumbnail database
  
  Revision  Changes    Path
  1.1                  saenaru/resource/.cvsignore
  
  Index: .cvsignore
  ===================================================================
  Thumbs.db
  
  
  


perky       03/12/26 17:43:22

  Added:       resource/button .cvsignore
  Log:
  Ignore Windows Explorer thumbnail database
  
  Revision  Changes    Path
  1.1                  saenaru/resource/button/.cvsignore
  
  Index: .cvsignore
  ===================================================================
  Thumbs.db
  
  
  


perky       03/12/26 17:43:22

  Added:       resource/text .cvsignore
  Log:
  Ignore Windows Explorer thumbnail database
  
  Revision  Changes    Path
  1.1                  saenaru/resource/text/.cvsignore
  
  Index: .cvsignore
  ===================================================================
  Thumbs.db
  
  
  


perky       03/12/26 18:26:48

  Modified:    src      btncmd.cpp btnext.cpp btnime.cpp config.c data.c
                        dic.c dic2.c fdebug.c hangul.c imm.c immsec.c
                        immsec.h indicml.h input.c process.c reg.c
                        regword.c resource.h saenaru.c saenaru.h subs.c
                        toascii.c tsf.cpp tsf.h ui.c uicand.c uicomp.c
                        uiguide.c uistate.c vksub.h
  Log:
  - Update copyrights
  - Normalize tab indentations
  - Add vi/ex tag
  - Convert cp932 codes to cp949
  
  Revision  Changes    Path
  1.2       +53 -20    saenaru/src/btncmd.cpp
  
  Index: btncmd.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btncmd.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- btncmd.cpp	26 Dec 2003 08:25:41 -0000	1.1
  +++ btncmd.cpp	26 Dec 2003 09:26:33 -0000	1.2
  @@ -1,6 +1,36 @@
  -/* imported from the skkime by wkpark */
  +/*
  + * This file is part of Saenaru.
  + *
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in the
  + *    documentation and/or other materials provided with the distribution.
  + *
  + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + *
  + * $Saenaru: saenaru/src/btncmd.cpp,v 1.2 2003/12/26 09:26:33 perky Exp $
  + */
  +
   #if !defined (NO_TSF)
  -/*	LanguageBar ́u̓?hv??iB
  +/*	LanguageBar Ρ?ɡ??ɪ롣
    */
   #include "windows.h"
   #include "tchar.h"
  @@ -11,9 +41,9 @@
   #include "saenaru.h"
   #include "resource.h"
   }
  -/*	Platform SDK Ɉˑ镔BPlatform SDK  include path
  - *	ʂ̂ǂ̂ۂBo DDK ɂ header 
  - *	nĂƗǂ̂B
  +/*	Platform SDK ݻ¡Platform SDK  include path
  + *	תΪުΪ? DDK ˪ header 
  + *	ԤƪުΪ
    */
   #include "c:\Program Files\Microsoft SDK\include\msctf.h"
   #include "c:\Program Files\Microsoft SDK\include\olectl.h"
  @@ -189,9 +219,9 @@
   	return	S_OK ;
   }
   
  -/*	Button  tooltip ԂBԂl SysAllocString ɂ
  - *	mۂ̈ɏKvB SysFreeString 
  - *	̂́AĂяo̐ӔCłB
  +/*	Button  tooltip  SysAllocString ˪ê
  + *	洪驪롣 SysFreeString 
  + *	Ϊϡ󪷪Ǫ롣
    */
   STDAPI
   CLangBarItemCModeButton::GetTooltipString (
  @@ -206,13 +236,13 @@
   
   /*	ITfLangBarItemButton::OnClick
    *
  - *	 method ̓?Uo? TF_LBI_STYLE_BTN_BUTTON ܂
  - *	 TF_LBI_STYLE_BTN_TOGGLE X?CĂ??̏?
  - *	EXNbNɌĂяoB
  - *	?? item  TF_LBI_STYLE_BTN_BUTTON X?CȂ
  - *	̂ȂA method gȂB
  + *	 method ϫ?ޫ? TF_LBI_STYLE_BTN_BUTTON ު
  + *	 TF_LBI_STYLE_BTN_TOGGLE ?êƪ??߾?
  + *	򫯫ë󪵪롣
  + *	⪷?? item  TF_LBI_STYLE_BTN_BUTTON ?򥪿ʪ
  + *	Ϊʪ顢 method Ūʪ
    *(*)
  - *	̏󋵂ł͓ɉKv͂Ȃ̂ŁAS_OK 𑦕ԂB
  + *	Ѫ?ϪǪ⪹驪ϪʪΪǡS_OK ?
    */
   STDAPI
   CLangBarItemCModeButton::OnClick (
  @@ -225,9 +255,9 @@
   
   /*	ITfLangBarItemButton::InitMenu
    *
  - *	 method  TF_LBI_STYLE_BTN_MENU X?Co???
  - *	o???ɑ΂? menu item ǉėLɂ邽
  - *	ɌĂяoB
  + *	 method  TF_LBI_STYLE_BTN_MENU ?êޫ???
  + *	ޫ?????ƪ menu item ʥ?˪몿
  + *	󪵪롣
    */
   STDAPI
   CLangBarItemCModeButton::InitMenu (
  @@ -246,8 +276,8 @@
   
   	hIMC	= _GetCurrentHIMC () ;
   	if (hIMC != NULL) {
  -		/*	Ƃ킯??ꂽ?郁j?
  -		 *	o?sB
  +		/*	Ȫ缾??㪵쪿?ƪ˫?
  +		 *	?
   		 */
   		nCMode	= _GetConversionMode (hIMC) ;
   		for (i = 0 ; i < ARRAYSIZE (c_rgMenuItems) ; i ++) {
  @@ -272,7 +302,7 @@
   	if (wID >= ARRAYSIZE (c_rgMenuItems))
   		return	E_FAIL ;
   
  -	/*	NULL ̏ꍇ Cancel ƎvƂɂB*/
  +	/*	NULL  Cancel ֪Ȫ˪롣*/
   	if (c_rgMenuItems [wID].pfnHandler != NULL) {
   		c_rgMenuItems [wID].pfnHandler () ;
   		UpdateLanguageBar () ;
  @@ -465,3 +495,6 @@
   
   #endif
   
  +/*
  + * ex: ts=8 sts=8 sw=8 noet
  + */
  
  
  
  1.2       +53 -20    saenaru/src/btnext.cpp
  
  Index: btnext.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btnext.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- btnext.cpp	26 Dec 2003 08:25:41 -0000	1.1
  +++ btnext.cpp	26 Dec 2003 09:26:33 -0000	1.2
  @@ -1,6 +1,36 @@
  -/* imported from skkime by wkpark */
  +/*
  + * This file is part of Saenaru.
  + *
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in the
  + *    documentation and/or other materials provided with the distribution.
  + *
  + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + *
  + * $Saenaru: saenaru/src/btnext.cpp,v 1.2 2003/12/26 09:26:33 perky Exp $
  + */
  +
   #if !defined (NO_TSF)
  -/*	LanguageBar ́u̓?hv??iB
  +/*	LanguageBar Ρ?ɡ??ɪ롣
    */
   #include "windows.h"
   #include "tchar.h"
  @@ -11,9 +41,9 @@
   #include "saenaru.h"
   #include "resource.h"
   }
  -/*	Platform SDK Ɉˑ镔BPlatform SDK  include path
  - *	ʂ̂ǂ̂ۂBo DDK ɂ header 
  - *	nĂƗǂ̂B
  +/*	Platform SDK ݻ¡Platform SDK  include path
  + *	תΪުΪ? DDK ˪ header 
  + *	ԤƪުΪ
    */
   #include "c:\Program Files\Microsoft SDK\include\msctf.h"
   #include "olectl.h"
  @@ -188,9 +218,9 @@
   	return	S_OK ;
   }
   
  -/*	Button  tooltip ԂBԂl SysAllocString ɂ
  - *	mۂ̈ɏKvB SysFreeString 
  - *	̂́AĂяo̐ӔCłB
  +/*	Button  tooltip  SysAllocString ˪ê
  + *	洪驪롣 SysFreeString 
  + *	Ϊϡ󪷪Ǫ롣
    */
   STDAPI
   CLangBarItemShapeButton::GetTooltipString (
  @@ -205,13 +235,13 @@
   
   /*	ITfLangBarItemButton::OnClick
    *
  - *	 method ̓?Uo? TF_LBI_STYLE_BTN_BUTTON ܂
  - *	 TF_LBI_STYLE_BTN_TOGGLE X?CĂ??̏?
  - *	EXNbNɌĂяoB
  - *	?? item  TF_LBI_STYLE_BTN_BUTTON X?CȂ
  - *	̂ȂA method gȂB
  + *	 method ϫ?ޫ? TF_LBI_STYLE_BTN_BUTTON ު
  + *	 TF_LBI_STYLE_BTN_TOGGLE ?êƪ??߾?
  + *	򫯫ë󪵪롣
  + *	⪷?? item  TF_LBI_STYLE_BTN_BUTTON ?򥪿ʪ
  + *	Ϊʪ顢 method Ūʪ
    *(*)
  - *	̏󋵂ł͓ɉKv͂Ȃ̂ŁAS_OK 𑦕ԂB
  + *	Ѫ?ϪǪ⪹驪ϪʪΪǡS_OK ?
    */
   STDAPI
   CLangBarItemShapeButton::OnClick (
  @@ -244,9 +274,9 @@
   
   /*	ITfLangBarItemButton::InitMenu
    *
  - *	 method  TF_LBI_STYLE_BTN_MENU X?Co???
  - *	o???ɑ΂? menu item ǉėLɂ邽
  - *	ɌĂяoB
  + *	 method  TF_LBI_STYLE_BTN_MENU ?êޫ???
  + *	ޫ?????ƪ menu item ʥ?˪몿
  + *	󪵪롣
    */
   STDAPI
   CLangBarItemShapeButton::InitMenu (
  @@ -265,8 +295,8 @@
   #if 0
   	hIMC	= _GetCurrentHIMC () ;
   	if (hIMC != NULL) {
  -		/*	Ƃ킯??ꂽ?郁j?
  -		 *	o?sB
  +		/*	Ȫ缾??㪵쪿?ƪ˫?
  +		 *	?
   		 */
   		nCMode	= _GetConversionMode (hIMC) ;
   		for (i = 0 ; i < ARRAYSIZE (c_rgMenuItems) ; i ++) {
  @@ -293,7 +323,7 @@
   	if (wID >= ARRAYSIZE (c_rgMenuItems))
   		return	E_FAIL ;
   
  -	/*	NULL ̏ꍇ Cancel ƎvƂɂB*/
  +	/*	NULL  Cancel ֪Ȫ˪롣*/
   	if (c_rgMenuItems [wID].pfnHandler != NULL) {
   		c_rgMenuItems [wID].pfnHandler () ;
   		UpdateLanguageBar () ;
  @@ -480,3 +510,6 @@
   
   #endif
   
  +/*
  + * ex: ts=8 sts=8 sw=8 noet
  + */
  
  
  
  1.2       +55 -21    saenaru/src/btnime.cpp
  
  Index: btnime.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btnime.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- btnime.cpp	26 Dec 2003 08:25:42 -0000	1.1
  +++ btnime.cpp	26 Dec 2003 09:26:33 -0000	1.2
  @@ -1,6 +1,36 @@
  -/* imported from the skkime and modified by wkpark */
  +/*
  + * This file is part of Saenaru.
  + *
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in the
  + *    documentation and/or other materials provided with the distribution.
  + *
  + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + *
  + * $Saenaru: saenaru/src/btnime.cpp,v 1.2 2003/12/26 09:26:33 perky Exp $
  + */
  +
   #if !defined (NO_TSF)
  -/*    LanguageBar ́u͕Hv??iB
  +/*    LanguageBar Ρ۰ң??ɪ롣
    */
   #include "windows.h"
   #include "tchar.h"
  @@ -10,9 +40,9 @@
   #include "saenaru.h"
   #include "resource.h"
   }
  -/*    Platform SDK Ɉˑ镔BPlatform SDK  include path
  - *    ʂ̂ǂ̂ۂBo DDK ɂ header 
  - *    nĂƗǂ̂B
  +/*    Platform SDK ݻ¡Platform SDK  include path
  + *    תΪުΪ? DDK ˪ header 
  + *    ԤƪުΪ
    */
   #include "c:\Program Files\Microsoft SDK\include\msctf.h"
   #include "olectl.h"
  @@ -83,8 +113,8 @@
       MENU_ITEM_INDEX_3FIN,
   };
   
  -/*    c??̐ class Kvƍl̂ǂB
  - *    ォǉȂƂȂȁB
  +/*    ??? class 驪ŪΪު
  + *    ʥʪȪʪʡ
    */
   class CLangBarItemImeButton : public ITfLangBarItemButton,
                                public ITfSource
  @@ -221,9 +251,9 @@
       return S_OK;
   }
   
  -/*    Button  tooltip ԂBԂl SysAllocString ɂ
  - *    mۂ̈ɏKvB SysFreeString 
  - *    ̂́AĂяo̐ӔCłB
  +/*    Button  tooltip  SysAllocString ˪ê
  + *    洪驪롣 SysFreeString 
  + *    Ϊϡ󪷪Ǫ롣
    */
   STDAPI
   CLangBarItemImeButton::GetTooltipString (
  @@ -238,13 +268,13 @@
   
   /*    ITfLangBarItemButton::OnClick
    *
  - *     method ̓?Uo? TF_LBI_STYLE_BTN_BUTTON ܂
  - *     TF_LBI_STYLE_BTN_TOGGLE X?CĂ??̏?
  - *    EXNbNɌĂяoB
  - *    ?? item  TF_LBI_STYLE_BTN_BUTTON X?CȂ
  - *    ̂ȂA method gȂB
  + *     method ϫ?ޫ? TF_LBI_STYLE_BTN_BUTTON ު
  + *     TF_LBI_STYLE_BTN_TOGGLE ?êƪ??߾?
  + *    򫯫ë󪵪롣
  + *    ⪷?? item  TF_LBI_STYLE_BTN_BUTTON ?򥪿ʪ
  + *    Ϊʪ顢 method Ūʪ
    *(*)
  - *    ̏󋵂ł͓ɉKv͂Ȃ̂ŁAS_OK 𑦕ԂB
  + *    Ѫ?ϪǪ⪹驪ϪʪΪǡS_OK ?
    */
   STDAPI
   CLangBarItemImeButton::OnClick (
  @@ -257,9 +287,9 @@
   
   /*    ITfLangBarItemButton::InitMenu
    *
  - *     method  TF_LBI_STYLE_BTN_MENU X?Co???
  - *    o???ɑ΂? menu item ǉėLɂ邽
  - *    ɌĂяoB
  + *     method  TF_LBI_STYLE_BTN_MENU ?êޫ???
  + *    ޫ?????ƪ menu item ʥ?˪몿
  + *    󪵪롣
    */
   STDAPI
   CLangBarItemImeButton::InitMenu (
  @@ -482,7 +512,7 @@
   void
   _Menu_Help (UINT wID)
   {
  -    /*    ?AHELP ͍ĂȂcB*/
  +    /*    ?HELP ªêƪʪ*/
       return;
   }
   
  @@ -525,7 +555,7 @@
               if (ImmGetIMCCSize (lpIMC->hCompStr) < sizeof (MYCOMPSTR))
                   goto    pass_1;
   
  -            /*    ϊ?hIɉ̓?hɐݒ肷B*/
  +            /*    ??ɪ?ܪ?٣?ɪҪ롣*/
               lpCompStr    = (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr);
               if (lpCompStr != NULL) {
                   //SKKSetReconvertStr (hIMC, lpIMC, lpCompStr, lpRS, TRUE); // ?
  @@ -665,3 +695,7 @@
   }
   
   #endif
  +
  +/*
  + * ex: ts=8 sts=8 sw=8 noet
  + */
  
  
  
  1.3       +89 -91    saenaru/src/config.c
  
  Index: config.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/config.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- config.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ config.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,9 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/config.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/config.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
   
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    CONFIG.c
  -    
  -++*/
   #include "windows.h"
   #include "immdev.h"
   #include "saenaru.h"
  @@ -217,31 +212,31 @@
   
                       SetDwordToSetting(TEXT("OptionFlag"), dwOptionFlag);
   
  -		    dwTemp = 0;
  -		    if (dwLayoutFlag == 0)
  -			dwLayoutFlag = LAYOUT_OLD2BUL;
  -		    if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_OLD2BUL))
  +                    dwTemp = 0;
  +                    if (dwLayoutFlag == 0)
  +                        dwLayoutFlag = LAYOUT_OLD2BUL;
  +                    if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_OLD2BUL))
                           dwTemp = LAYOUT_OLD2BUL;
  -		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_3FIN))
  +                    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_3FIN))
                           dwTemp = LAYOUT_3FIN;
  -		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_390))
  +                    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_390))
                           dwTemp = LAYOUT_390;
  -		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_NEW2BUL))
  +                    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_NEW2BUL))
                           dwTemp = LAYOUT_NEW2BUL;
  -		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_NEW3BUL))
  +                    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_NEW3BUL))
                           dwTemp = LAYOUT_NEW3BUL;
  -		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_AHNMATAE))
  +                    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_AHNMATAE))
                           dwTemp = LAYOUT_AHNMATAE;
  -		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_3SUN))
  +                    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_3SUN))
                           dwTemp = LAYOUT_3SUN;
  -		    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_USER))
  +                    else if (IsDlgButtonChecked(hDlg, IDC_LAYOUT_USER))
                           dwTemp = LAYOUT_USER;
                       dwLayoutFlag = dwTemp;
   
                       SetDwordToSetting(TEXT("LayoutFlag"), dwLayoutFlag);
   
  -		    set_keyboard(dwLayoutFlag);
  -		    
  +                    set_keyboard(dwLayoutFlag);
  +                    
                       break;
   
                   case PSN_RESET:
  @@ -260,18 +255,18 @@
               lpPropSheet = (LPPROPSHEETPAGE)lParam;
   
   #if 0
  -	    if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_NEW2BUL) )
  -	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  -	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_NEW3BUL) )
  -	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  -	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_OLD2BUL) )
  -	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  -	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_3BULFINAL) )
  -	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  -	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_390) )
  -	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  -	    else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_AHNMATAE) )
  -	        SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +            if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_NEW2BUL) )
  +                SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +            else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_NEW3BUL) )
  +                SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +            else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_OLD2BUL) )
  +                SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +            else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_3BULFINAL) )
  +                SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +            else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_390) )
  +                SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
  +            else if (hwndRadio = GetDlgItem (hDlg, IDC_LAYOUT_AHNMATAE) )
  +                SendMessage (hwndRadio, BM_SETCHECK, BST_CHECKED, 0) ;
   #endif
               /* Global options */
               CheckDlgButton(hDlg, IDC_CONCURRENT_TYPING, 
  @@ -292,8 +287,8 @@
                                   (dwOptionFlag & USE_SHIFT_SPACE) ? 1 : 0);
   
               /* Layout */
  -	    if (dwLayoutFlag == 0)
  -		dwLayoutFlag = LAYOUT_OLD2BUL;
  +            if (dwLayoutFlag == 0)
  +                dwLayoutFlag = LAYOUT_OLD2BUL;
               CheckDlgButton(hDlg, IDC_LAYOUT_OLD2BUL, 
                                   (dwLayoutFlag == LAYOUT_OLD2BUL) ? 1 : 0);
               CheckDlgButton(hDlg, IDC_LAYOUT_3FIN, 
  @@ -440,20 +435,20 @@
       UINT remain = 0;
   
       if (*p == 'U')
  -	p++;
  +        p++;
   
       while (*p != '\0') {
  -	if (*p >= '0' && *p <= '9')
  -	    remain = *p - '0';
  -	else if (*p >= 'a' && *p <= 'f')
  -	    remain = *p - 'a' + 10;
  -	else if (*p >= 'A' && *p <= 'F')
  -	    remain = *p - 'A' + 10;
  -	else
  -	    return 0;
  +        if (*p >= '0' && *p <= '9')
  +            remain = *p - '0';
  +        else if (*p >= 'a' && *p <= 'f')
  +            remain = *p - 'a' + 10;
  +        else if (*p >= 'A' && *p <= 'F')
  +            remain = *p - 'A' + 10;
  +        else
  +            return 0;
   
  -	ret = ret * 16 + remain;
  -	p++;
  +        ret = ret * 16 + remain;
  +        p++;
       }
       return ret;
   }
  @@ -481,7 +476,7 @@
       {
           DWORD cchValue = 256;
           DWORD retCode;
  -	HKEY hKey;
  +        HKEY hKey;
   
           if (!GetRegKeyHandle(TEXT("\\Keyboard"), &hKey))
               return 0;
  @@ -500,21 +495,21 @@
               MyDebugPrint((TEXT("(%d) %s\n"), nKeyboard, achValue));
               return 0;
           }
  -	lpszKeyboard = (LPCTSTR) &achValue;
  +        lpszKeyboard = (LPCTSTR) &achValue;
       }
   
       sz= GetRegMultiStringValue(TEXT("\\Keyboard"),lpszKeyboard,NULL);
       if (sz <= 0) {
  -    	MyDebugPrint((TEXT("Saenaru: Keyboard not found\n")));
  -    	return 0;
  +            MyDebugPrint((TEXT("Saenaru: Keyboard not found\n")));
  +            return 0;
       }
   
       MyDebugPrint((TEXT("Saenaru: reg size %d\n"), sz));
       kbuf=(LPTSTR) malloc(sz);
       //
       if (kbuf == (LPTSTR)NULL) {
  -    	MyDebugPrint((TEXT("Saenaru: Can't read keyboard registry\n")));
  -    	return 0;
  +            MyDebugPrint((TEXT("Saenaru: Can't read keyboard registry\n")));
  +            return 0;
       }
   
       GetRegMultiStringValue(TEXT("\\Keyboard"),lpszKeyboard,kbuf);
  @@ -527,61 +522,64 @@
       //MyDebugPrint((TEXT("Saenaru: %s\n"),kbuf));
   
       for (i = 0; i < 94; i++)
  -    	_map[i] = i + '!';
  -    	//_map[i] = 0;
  +            _map[i] = i + '!';
  +            //_map[i] = 0;
   
       for (line = Mystrtok(kbuf, TEXT("\0"));
  -	 ;
  -	 line = Mystrtok(saved_position, TEXT("\0"))) {
  -	len=Mylstrlen(line);
  +         ;
  +         line = Mystrtok(saved_position, TEXT("\0"))) {
  +        len=Mylstrlen(line);
           saved_position=line+len+1;
   
           //MyDebugPrint((TEXT("Saenaru: %s:%d\n"),line,len));
  -	if (len==0) break;
  +        if (len==0) break;
   
  -	p = Mystrtok(line, TEXT(" \t\0"));
  +        p = Mystrtok(line, TEXT(" \t\0"));
           MyDebugPrint((TEXT("tok: %s\n"),p));
  -	/* comment */
  -	if (p == NULL || p[0] == '#')
  -	    continue;
  -
  -	if (Mylstrcmp(p, TEXT("Name:")) == 0) {
  -	    p = Mystrtok(NULL, TEXT("\0"));
  -	    if (p == NULL)
  -		continue;
  -	    //name = g_strdup(p);
  -	    continue;
  -	} else if (Mylstrcmp(p, TEXT("Type2")) == 0) {
  -	    type = SAENARU_KEYBOARD_2SET;
  -	} else {
  -	    key = string_to_hex(p);
  -	    if (key == 0)
  -		continue;
  -
  -	    p = Mystrtok(NULL, TEXT(" \t"));
  -	    if (p == NULL)
  -		continue;
  -	    value = string_to_hex(p);
  -	    if (value == 0)
  -		continue;
  +        /* comment */
  +        if (p == NULL || p[0] == '#')
  +            continue;
  +
  +        if (Mylstrcmp(p, TEXT("Name:")) == 0) {
  +            p = Mystrtok(NULL, TEXT("\0"));
  +            if (p == NULL)
  +                continue;
  +            //name = g_strdup(p);
  +            continue;
  +        } else if (Mylstrcmp(p, TEXT("Type2")) == 0) {
  +            type = SAENARU_KEYBOARD_2SET;
  +        } else {
  +            key = string_to_hex(p);
  +            if (key == 0)
  +                continue;
  +
  +            p = Mystrtok(NULL, TEXT(" \t"));
  +            if (p == NULL)
  +                continue;
  +            value = string_to_hex(p);
  +            if (value == 0)
  +                continue;
   
  -	    if (key < '!' || key > '~')
  -		continue;
  +            if (key < '!' || key > '~')
  +                continue;
   
  -	    MyDebugPrint((TEXT("REG %x=%x\n"),(DWORD)key,(DWORD)value));
  +            MyDebugPrint((TEXT("REG %x=%x\n"),(DWORD)key,(DWORD)value));
   
  -	    _map[key - '!'] = (WCHAR)value;
  -	}
  +            _map[key - '!'] = (WCHAR)value;
  +        }
       }
       free(kbuf);
   
       if (keyboard_map != NULL)
  -	for (i=0;i<94;i++) keyboard_map[i]=_map[i];	
  +        for (i=0;i<94;i++) keyboard_map[i]=_map[i];        
   
       //if (name == NULL)
  -    //	name = g_path_get_basename(keyboard_map->filename);
  +    //        name = g_path_get_basename(keyboard_map->filename);
   
       return type;
   }
   #endif
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +11 -13    saenaru/src/data.c
  
  Index: data.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/data.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- data.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ data.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/data.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/data.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    DATA.C
  -    
  -++*/
   
   #include "windows.h"
   #include "immdev.h"
  @@ -48,8 +42,8 @@
   
   /* for Translat */
   LPTRANSMSGLIST lpCurTransKey= NULL;
  -UINT    uNumTransKey;
  -BOOL    fOverTransKey = FALSE;
  +UINT     uNumTransKey;
  +BOOL     fOverTransKey = FALSE;
   
   /* for UI */
   TCHAR    szUIClassName[]      = TEXT("SAENARUUI");
  @@ -80,3 +74,7 @@
   /* local flags */
   DWORD dwImeFlag = SAENARU_ONTHESPOT;
   #pragma data_seg()
  +
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +193 -196  saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- dic.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ dic.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,9 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
   
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    DIC.C
  -    
  -++*/
   #include <windows.h>
   #include <immdev.h>
   #include "saenaru.h"
  @@ -152,9 +147,9 @@
       {
           lpstr = GETLPCOMPSTR(lpCompStr);
           lpread = GETLPCOMPREADSTR(lpCompStr);
  -	/*
  +        /*
           lHanToZen(lpstr,lpread,lpIMC->fdwConversion);
  -	*/
  +        */
   
           //
           // make attribute
  @@ -312,8 +307,8 @@
                   // Set the composition string to the structure.
                   //
                   Mylstrcpy(GETLPCOMPSTR(lpCompStr),lpstr);
  -		if ((dwImeFlag & SAENARU_ONTHESPOT)&& Mylstrlen(lpstr) == 1)
  -		   cs = *lpstr;
  +                if ((dwImeFlag & SAENARU_ONTHESPOT)&& Mylstrlen(lpstr) == 1)
  +                   cs = *lpstr;
   
                   lpstr = GETLPCOMPSTR(lpCompStr);
   
  @@ -329,9 +324,9 @@
                   // make attribute
                   //
                   lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),
  -				ATTR_TARGET_CONVERTED, Mylstrlen(lpstr));
  +                                ATTR_TARGET_CONVERTED, Mylstrlen(lpstr));
                   lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),
  -				ATTR_TARGET_CONVERTED,
  +                                ATTR_TARGET_CONVERTED,
                                   Mylstrlen(GETLPCOMPREADSTR(lpCompStr)));
   
                   //
  @@ -348,8 +343,8 @@
                   GnMsg.message = WM_IME_COMPOSITION;
                   GnMsg.wParam = cs;
                   GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -		if (dwImeFlag & SAENARU_ONTHESPOT)
  -	            GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
  +                if (dwImeFlag & SAENARU_ONTHESPOT)
  +                    GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
                   GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
   
                   bRc = TRUE;
  @@ -365,7 +360,7 @@
           // String is converted, so that open candidate.
           //
           int i = 0;
  -	int pages = 0;
  +        int pages = 0;
           LPDWORD lpdw;
   
           //
  @@ -405,51 +400,51 @@
               lpCandList->dwPageSize  = i;
           else
               lpCandList->dwPageSize  = MAXCANDPAGESIZE;
  -	// Total pages
  -	pages = i / lpCandList->dwPageSize + i % lpCandList->dwPageSize;
  +        // Total pages
  +        pages = i / lpCandList->dwPageSize + i % lpCandList->dwPageSize;
   
  -	if (select)
  -	{
  -	    int sel = lpCandList->dwSelection / lpCandList->dwPageSize;
  -	    sel *= lpCandList->dwPageSize;
  -	    sel +=select - 1;
  -	    if (sel >= i)
  -	        sel = i - 1;
  -	    lpCandList->dwSelection = sel;
  -	    offset = 0;
  -	}
  -	else if (offset > 2)
  -	{
  -	    // last (END)
  +        if (select)
  +        {
  +            int sel = lpCandList->dwSelection / lpCandList->dwPageSize;
  +            sel *= lpCandList->dwPageSize;
  +            sel +=select - 1;
  +            if (sel >= i)
  +                sel = i - 1;
  +            lpCandList->dwSelection = sel;
  +            offset = 0;
  +        }
  +        else if (offset > 2)
  +        {
  +            // last (END)
               lpCandList->dwSelection = i - 1;
  -	    offset = 0; // reset
  -	} else if (offset < -2)
  -	{
  -	    // first (HOME)
  +            offset = 0; // reset
  +        } else if (offset < -2)
  +        {
  +            // first (HOME)
               lpCandList->dwSelection = 0;
  -	    offset = 0; // reset
  -	}
  +            offset = 0; // reset
  +        }
   
  -	// PgUp/PgDn
  +        // PgUp/PgDn
           if (offset ==2) offset = lpCandList->dwPageSize;
  -	else if (offset ==-2) offset = -(int)lpCandList->dwPageSize;
  +        else if (offset ==-2) offset = -(int)lpCandList->dwPageSize;
   
  -	if (offset < 0 && (int)(lpCandList->dwSelection + offset) < 0)
  -	{
  -	    int select = lpCandList->dwSelection + offset;
  -	    //if (select < 0) select= pages * lpCandList->dwPageSize - offset;
  -	    if (select < 0) select= 0;
  -	    if (select >= i)
  -		select = i - 1;    
  +        if (offset < 0 && (int)(lpCandList->dwSelection + offset) < 0)
  +        {
  +            int select = lpCandList->dwSelection + offset;
  +            //if (select < 0) select= pages * lpCandList->dwPageSize - offset;
  +            if (select < 0) select= 0;
  +            if (select >= i)
  +                select = i - 1;    
               lpCandList->dwSelection = (DWORD)select;
  -	} else {
  +        } else {
               lpCandList->dwSelection += offset;
  -	    if (offset > 1 && lpCandList->dwSelection >= (DWORD)i)
  -		lpCandList->dwSelection = i - 1;
  -	}
  +            if (offset > 1 && lpCandList->dwSelection >= (DWORD)i)
  +                lpCandList->dwSelection = i - 1;
  +        }
   
  -	//   + 1̸  ó
  -	if (lpCandList->dwSelection >= (DWORD)i)
  +        //   + 1̸  ó
  +        if (lpCandList->dwSelection >= (DWORD)i)
           {
               lpCandList->dwPageStart = 0;
               lpCandList->dwSelection = 0;
  @@ -536,19 +531,19 @@
   
           lpptr = MyCharPrev( lpstr, lpstr+dwCurPos );
   
  -	if ( ic.len && (dwOptionFlag & BACKSPACE_BY_JAMO)) {
  -	    // Delete jamos
  +        if ( ic.len && (dwOptionFlag & BACKSPACE_BY_JAMO)) {
  +            // Delete jamos
               if (--ic.len > 0) {
  -		ic.laststate--;    
  +                ic.laststate--;    
                   *lpptr = cs = hangul_ic_get(&ic,0);
  -	    } else {
  -		hangul_ic_init(&ic);
  +            } else {
  +                hangul_ic_init(&ic);
                   Mylstrcpy( lpptr, lpstr+dwCurPos );
  -		if (dwCurPos > 0)
  -		    cs = *(lpptr-1);
  -		dwCurPos--;
  -	    }
  -	} else {
  +                if (dwCurPos > 0)
  +                    cs = *(lpptr-1);
  +                dwCurPos--;
  +            }
  +        } else {
               nChar = 1;
               if( lpstr == lpptr && Mylstrlen(lpstr) == nChar )
               {
  @@ -559,9 +554,9 @@
               {
                   Mylstrcpy( lpptr, lpstr+dwCurPos );
                   dwCurPos -= nChar;
  -	        cs = *(lpptr-1);
  +                cs = *(lpptr-1);
               }
  -	}
  +        }
   
           fDone = TRUE;
       }
  @@ -582,7 +577,7 @@
           lpstr = GETLPCOMPSTR(lpCompStr);
           lpread = GETLPCOMPREADSTR(lpCompStr);
           /*lZenToHan (lpread,lpstr);
  -	 */
  +         */
   
           lmemset(GETLPCOMPATTR(lpCompStr),ATTR_INPUT,Mylstrlen(lpstr));
           lmemset(GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT,Mylstrlen(lpread));
  @@ -612,8 +607,8 @@
               GnMsg.message = WM_IME_COMPOSITION;
               GnMsg.wParam = cs;
               GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -	    if (dwImeFlag & SAENARU_ONTHESPOT)
  -	        GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
  +            if (dwImeFlag & SAENARU_ONTHESPOT)
  +                GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
           }
           else
  @@ -634,8 +629,8 @@
               GnMsg.message = WM_IME_COMPOSITION;
               GnMsg.wParam = 0;
               GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -	    if (dwImeFlag & SAENARU_ONTHESPOT)
  -	        GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
  +            if (dwImeFlag & SAENARU_ONTHESPOT)
  +                GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
   
               GnMsg.message = WM_IME_ENDCOMPOSITION;
  @@ -697,7 +692,7 @@
   
       if (!dwStrLen)
       {
  -	//  ʱȭ
  +        //  ʱȭ
           InitCompStr(lpCompStr,CLR_RESULT_AND_UNDET);
   
           GnMsg.message = WM_IME_STARTCOMPOSITION;
  @@ -914,7 +909,7 @@
           {
               lHanToZen(lpread,lpstr,fdwConversion);
           }
  -	*/
  +        */
       }
       else
       {
  @@ -995,45 +990,45 @@
       // Candidate 
       if (IsConvertedCompStr(hIMC))
       {
  -	switch( wParam )
  -	{
  -	    case VK_UP:
  -		next=-1;
  -		break;
  -	    case VK_DOWN:
  -		next=1;
  -		break;
  -	    case VK_NEXT:
  -		next=2;
  -		break;
  -	    case VK_PRIOR:
  -		next=-2;
  -		break;
  -	    case VK_HOME:
  -		next=-100;
  -	        break;
  -	    case VK_END:
  -		next=100;
  -	        break;
  -	    case VK_1:
  -	    case VK_2:
  -	    case VK_3:
  -	    case VK_4:
  -	    case VK_5:
  -	    case VK_6:
  -	    case VK_7:
  -	    case VK_8:
  -	    case VK_9:
  -		select= wParam - VK_1 + 1;
  -		break;
  -	    default:
  -		break;
  -	}
  -	if (next || select)
  -	{
  -	    ConvHanja(hIMC,next,select);
  +        switch( wParam )
  +        {
  +            case VK_UP:
  +                next=-1;
  +                break;
  +            case VK_DOWN:
  +                next=1;
  +                break;
  +            case VK_NEXT:
  +                next=2;
  +                break;
  +            case VK_PRIOR:
  +                next=-2;
  +                break;
  +            case VK_HOME:
  +                next=-100;
  +                break;
  +            case VK_END:
  +                next=100;
  +                break;
  +            case VK_1:
  +            case VK_2:
  +            case VK_3:
  +            case VK_4:
  +            case VK_5:
  +            case VK_6:
  +            case VK_7:
  +            case VK_8:
  +            case VK_9:
  +                select= wParam - VK_1 + 1;
  +                break;
  +            default:
  +                break;
  +        }
  +        if (next || select)
  +        {
  +            ConvHanja(hIMC,next,select);
               return TRUE;
  -	}
  +        }
       }
   
       switch( wParam )
  @@ -1041,38 +1036,38 @@
           case VK_DELETE:
           case VK_BACK:
               if (IsConvertedCompStr(hIMC))
  -	    {
  +            {
                   FlushText(hIMC);
  -	        return TRUE;
  -	    } else if (IsCompStr(hIMC))
  -	    {
  +                return TRUE;
  +            } else if (IsCompStr(hIMC))
  +            {
                   DeleteChar(hIMC,wParam);
  -	        return TRUE;
  -	    }
  +                return TRUE;
  +            }
               break;
   
           case VK_HANJA:
           case VK_F9:
  -	    hangul_ic_init(&ic);
  -	    ConvHanja(hIMC,1,0);
  -	    return TRUE;
  -	    break;
  -
  -	case VK_SPACE:
  -	    lpIMC = ImmLockIMC(hIMC);
  -	    // Get ConvMode from IMC.
  -	    fdwConversion = lpIMC->fdwConversion;
  +            hangul_ic_init(&ic);
  +            ConvHanja(hIMC,1,0);
  +            return TRUE;
  +            break;
  +
  +        case VK_SPACE:
  +            lpIMC = ImmLockIMC(hIMC);
  +            // Get ConvMode from IMC.
  +            fdwConversion = lpIMC->fdwConversion;
               ImmUnlockIMC(hIMC);
   
  -	    if (IsCompStr(hIMC) &&
  -		    (fdwConversion & IME_CMODE_FULLSHAPE) &&
  -		    (fdwConversion & IME_CMODE_NATIVE)) {
  -		hangul_ic_init(&ic);
  -		ConvHanja(hIMC,1,0);
  -		return TRUE;
  -	    }
  +            if (IsCompStr(hIMC) &&
  +                    (fdwConversion & IME_CMODE_FULLSHAPE) &&
  +                    (fdwConversion & IME_CMODE_NATIVE)) {
  +                hangul_ic_init(&ic);
  +                ConvHanja(hIMC,1,0);
  +                return TRUE;
  +            }
   
  -	    if (IsCompStr(hIMC))
  +            if (IsCompStr(hIMC))
               {
                   MakeResultString(hIMC,TRUE);
   #if 0
  @@ -1087,31 +1082,31 @@
   
                   // Simulate a key release
                   //keybd_event( (BYTE)wParam, 0x0, KEYEVENTF_KEYUP, 0);
  -		return TRUE;
  -	    }
  +                return TRUE;
  +            }
   #if 0
  -	    // ̽   ѱ Ű Ѵ.
  -	    // ɼ Ѱ ų  ְ.
  +            // ̽   ѱ Ű Ѵ.
  +            // ɼ Ѱ ų  ְ.
               if (IsConvertedCompStr(hIMC))
  -	    {
  -	        ConvHanja(hIMC,1);
  -	        return TRUE;
  -	    }
  +            {
  +                ConvHanja(hIMC,1);
  +                return TRUE;
  +            }
   #endif
  -	    break;
  +            break;
   
  -	case VK_LEFT:
  -	case VK_RIGHT:
  -	case VK_UP:
  -	case VK_DOWN:
  -	case VK_HOME:
  -	case VK_END:
  -	case VK_NEXT:
  -	case VK_PRIOR:
  -
  -	case VK_TAB:
  -	case VK_ESCAPE:
  -	    if (IsCompStr(hIMC))
  +        case VK_LEFT:
  +        case VK_RIGHT:
  +        case VK_UP:
  +        case VK_DOWN:
  +        case VK_HOME:
  +        case VK_END:
  +        case VK_NEXT:
  +        case VK_PRIOR:
  +
  +        case VK_TAB:
  +        case VK_ESCAPE:
  +            if (IsCompStr(hIMC))
               {
                   MakeResultString(hIMC,TRUE);
                   // Simulate a key press
  @@ -1119,24 +1114,24 @@
   
                   // Simulate a key release
                   //keybd_event( (BYTE)wParam, 0x0, KEYEVENTF_KEYUP, 0);
  -		return TRUE;
  -	    }
  -	    break;
  +                return TRUE;
  +            }
  +            break;
   
           case VK_RETURN:
               if (IsConvertedCompStr(hIMC))
  -		cf = TRUE;
  +                cf = TRUE;
               MakeResultString(hIMC,TRUE);
   
               lpIMC = ImmLockIMC(hIMC);
   
  -	    if (!cf)
  -	    {
  +            if (!cf)
  +            {
   #if 0
                   if (IsWindow(lpIMC->hWnd))
                   {
                      //PostMessage(lpIMC->hWnd,WM_IME_KEYDOWN,wParam,lParam);
  -		}
  +                }
   #endif
                   TRANSMSG GnMsg;
                   GnMsg.message = WM_IME_KEYDOWN;
  @@ -1148,39 +1143,39 @@
   
                   // Simulate a key release
                   // keybd_event( VK_RETURN, 0x0d, KEYEVENTF_KEYUP, 0);
  -	    }
  +            }
               ImmUnlockIMC(hIMC);
  -	    // spy++ ѱ IME2002 ൿ 캻 ,
  -	    // CompStr   RETURN ġ ó ̺Ʈ   ѹ
  -	    // ׸, CompStr commit Ŀ ٽ ѹ Ű̺Ʈ .
  -	    // strings imekr61.ime 캻  keybd_event()  ־
  -	    // saenaru   .
  -	    //
  -	    // Ÿڸ  мغ, WM_IME_KEYDOWN  .
  -	    // ׷ ó GenerateMessage() ̿غ keybd_event 
  -	    // ʾƵ Ǿ.
  -	    //
  +            // spy++ ѱ IME2002 ൿ 캻 ,
  +            // CompStr   RETURN ġ ó ̺Ʈ   ѹ
  +            // ׸, CompStr commit Ŀ ٽ ѹ Ű̺Ʈ .
  +            // strings imekr61.ime 캻  keybd_event()  ־
  +            // saenaru   .
  +            //
  +            // Ÿڸ  мغ, WM_IME_KEYDOWN  .
  +            // ׷ ó GenerateMessage() ̿غ keybd_event 
  +            // ʾƵ Ǿ.
  +            //
               hangul_ic_init(&ic);
  -	    return TRUE;
  +            return TRUE;
   #if 0
               lpIMC = ImmLockIMC(hIMC);
               if (IsCandidate(lpIMC))
  -	    {
  +            {
                   MakeResultString(hIMC,TRUE);
  -		cf = TRUE;
  -	    }
  +                cf = TRUE;
  +            }
               ImmUnlockIMC(hIMC);
  -	    if (cf) return TRUE;
  +            if (cf) return TRUE;
   #endif
  -	    break;
  +            break;
   
  -	    /*
  +            /*
           case VK_HANGUL:
  -	    // Toggle HANGUL
  +            // Toggle HANGUL
               ChangeMode(hIMC,TO_CMODE_HANGUL);
  -	    return TRUE;
  +            return TRUE;
               break;
  -	    */
  +            */
   
   #ifdef DEBUG
           case VK_G:
  @@ -1206,12 +1201,12 @@
           ( VK_OEM_1 <= wParam && VK_OEM_9 >= wParam ) ||
           ( VK_MULTIPLY <= wParam && VK_DIVIDE >= wParam ))
       {
  -	// RETURN  ʰ, ٷ κп ó .
  -	//     ʴ´ٸ RETURNŰ ó  ִ.
  +        // RETURN  ʰ, ٷ κп ó .
  +        //     ʴ´ٸ RETURNŰ ó  ִ.
           return( FALSE );
       }
       else {
  -	TCHAR szDev[80];
  +        TCHAR szDev[80];
   
           wsprintf(szDev, TEXT("code: %x\r\n"), wParam);
           OutputDebugString(szDev);
  @@ -1272,9 +1267,9 @@
       if (fFlag)
       {
   #if 1
  -	// ѱ IME 2002 ̻ϰԵ,  WM_IME_ENDCOMPOSITION 
  -	//   WM_IME_COMPOSITION ´.
  -	// ̷ ؾ߸ Ÿڿ  ۵ Ѵ.
  +        // ѱ IME 2002 ̻ϰԵ,  WM_IME_ENDCOMPOSITION 
  +        //   WM_IME_COMPOSITION ´.
  +        // ̷ ؾ߸ Ÿڿ  ۵ Ѵ.
           GnMsg.message = WM_IME_ENDCOMPOSITION;
           GnMsg.wParam = 0;
           GnMsg.lParam = 0;
  @@ -1284,18 +1279,18 @@
           GnMsg.message = WM_IME_COMPOSITION;
           GnMsg.wParam = 0;
           GnMsg.lParam = GCS_RESULTALL;
  -	if (dwImeFlag & SAENARU_ONTHESPOT)
  -	{
  +        if (dwImeFlag & SAENARU_ONTHESPOT)
  +        {
               LPMYSTR lpptr;
               LPMYSTR lpstr;
               DWORD dwCurPos;
  -	
  +        
               dwCurPos = lpCompStr->dwCursorPos;
               lpstr = GETLPCOMPSTR(lpCompStr);
               lpptr = MyCharPrev( lpstr, lpstr+dwCurPos );
   
  -	    GnMsg.wParam = *lpptr;
  -	}
  +            GnMsg.wParam = *lpptr;
  +        }
           GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
   #if 0
           GnMsg.message = WM_IME_ENDCOMPOSITION;
  @@ -1601,4 +1596,6 @@
       return nSize;
   }
   
  -
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +8 -10     saenaru/src/dic2.c
  
  Index: dic2.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic2.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- dic2.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ dic2.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,9 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic2.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/dic2.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
   
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    DICT2.C
  -    
  -++*/
   #include "windows.h"
   #include "immdev.h"
   #include "saenaru.h"
  @@ -455,3 +450,6 @@
       *lpDst = MYTEXT('\0');
   }
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +8 -11     saenaru/src/fdebug.c
  
  Index: fdebug.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/fdebug.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- fdebug.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ fdebug.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/fdebug.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/fdebug.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    DEBUG.C
  -    
  -++*/
   
   #include <windows.h>
   #include "immdev.h"
  @@ -115,3 +109,6 @@
   
   #endif //DEBUG
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.2       +34 -4     saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- hangul.c	26 Dec 2003 08:25:45 -0000	1.1
  +++ hangul.c	26 Dec 2003 09:26:33 -0000	1.2
  @@ -1,7 +1,33 @@
  -/* 
  - * imported from the Nabi 0.10 (http://nabi.kldp.net) and the imhangul 0.9.7
  - * by Won-Kyu Park <wkpark@kldp.org>
  - * The Nabi and the imhangul are mabe by Hwan Jin Choi <krisna@kldp.org>
  +/*
  + * This file is part of Saenaru.
  + *
  + * Copyright (c) 2002, 2003 Choe Hwan-Jin <krisna@kldp.org>
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in the
  + *    documentation and/or other materials provided with the distribution.
  + *
  + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + *
  + * $Saenaru: saenaru/src/hangul.c,v 1.2 2003/12/26 09:26:33 perky Exp $
    */
   
   #include <windows.h>
  @@ -2443,3 +2469,7 @@
       // free storage for UI settings
       GlobalFree(hsSoftKbdData);
   }
  +
  +/*
  + * ex: ts=8 sts=4 sw=4 noet
  + */
  
  
  
  1.3       +67 -69    saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- imm.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ imm.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,9 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
   
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    IMM.C
  -    
  -++*/
   #include "windows.h"
   #include "immdev.h"
   #include "saenaru.h"
  @@ -63,8 +58,8 @@
                                   IME_CMODE_CHARCODE;
       lpIMEInfo->fdwSentenceCaps = 0L;
       lpIMEInfo->fdwUICaps = UI_CAP_2700
  -	                   | UI_CAP_SOFTKBD
  -			   ;
  +                           | UI_CAP_SOFTKBD
  +                           ;
   
       lpIMEInfo->fdwSCSCaps = SCS_CAP_COMPSTR |
                               SCS_CAP_MAKEREAD |
  @@ -175,7 +170,7 @@
       ImeLog(LOGF_KEY | LOGF_API, TEXT("ImeProcessKey"));
   
       {
  -	WORD ch;
  +        WORD ch;
           MyDebugPrint((TEXT("\t** vKey is 0x%x\r\n"),vKey));
       }
   
  @@ -194,49 +189,49 @@
       {
           //SHORT ShiftState = (GetKeyState(VK_SHIFT) >> 31) & 1;
           SHORT ShiftState = lpbKeyState[VK_SHIFT] & 0x80;
  -	if (ShiftState)
  -	    vKey = VK_HANGUL;
  +        if (ShiftState)
  +            vKey = VK_HANGUL;
       }
   
       switch ( ( LOWORD(vKey) & 0x00FF ) ){
           case VK_HANGUL:
               // Toggle Hangul composition state
  -	    //
  -	    if (IsCompStr(hIMC))
  +            //
  +            if (IsCompStr(hIMC))
                    MakeResultString(hIMC,TRUE);
   
               fOpen = ImmGetOpenStatus(hIMC);
  -	    if (!fOpen)
  +            if (!fOpen)
                   ImmSetOpenStatus(hIMC,TRUE);
   
               if (ImmGetConversionStatus (hIMC, &dwConversion, &dwSentense))
               {
                   if (fOpen)
  -		{
  +                {
                       dwConversion &= ~IME_CMODE_NATIVE;
                       dwConversion &= ~IME_CMODE_FULLSHAPE;
                       MyDebugPrint((TEXT("O Hangul key\n")));
  -		    fOpen=FALSE;
  -		}
  +                    fOpen=FALSE;
  +                }
                   else
  -		{
  +                {
                       dwConversion &= ~IME_CMODE_FULLSHAPE;
                       dwConversion |= IME_CMODE_NATIVE;
                       MyDebugPrint((TEXT("O Hangul key\n")));
  -		    fOpen=TRUE;
  -		}
  +                    fOpen=TRUE;
  +                }
                   ImmSetConversionStatus (hIMC, dwConversion, 0) ;
               }
  -	    if (!fOpen)
  +            if (!fOpen)
                   ImmSetOpenStatus(hIMC,FALSE);
   
  -	    return FALSE;
  -	    break;
  -	case VK_SHIFT:
  -	    return FALSE;
  -	    break;
  +            return FALSE;
  +            break;
  +        case VK_SHIFT:
  +            return FALSE;
  +            break;
           default:
  -	    break;
  +            break;
       }
   
       fOpen = lpIMC->fOpen;
  @@ -702,7 +697,7 @@
               if (lpRead)
                   DumpRS((LPRECONVERTSTRING)lpRead);
   #endif
  -	    return TRUE;
  +            return TRUE;
               break;
   
           case SCS_SETRECONVERTSTRING:
  @@ -713,44 +708,44 @@
               if (lpRead)
                   DumpRS((LPRECONVERTSTRING)lpRead);
   #endif
  -	    return TRUE;
  +            return TRUE;
  +            break;
  +        case SCS_CHANGEATTR:
  +            MyDebugPrint((TEXT("SCS_CHANGEATTR\n")));
  +            break;
  +        case SCS_SETSTR:
  +            MyDebugPrint((TEXT("*** SCS_SETSTR start\n")));
  +            lpIMC = ImmLockIMC (hIMC) ;
  +            if (!lpIMC)
  +                break ;
  +
  +            lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr) ;
  +            if (lpCompStr != NULL) {
  +                if (lpComp != NULL && dwComp > 0) {
  +                    //InitCompStr (lpCompStr, CLR_RESULT_AND_UNDET);
  +                    MyDebugPrint((TEXT(" * LPCOMP %s:%d\n"),lpComp,dwComp / sizeof(TCHAR)));
  +                    Mylstrcpyn(GETLPCOMPSTR(lpCompStr),lpComp,dwComp);
  +                } else if (lpRead != NULL && dwRead >0) {
  +                    MyDebugPrint((TEXT(" * LPREAD %s:%d\n"),lpRead,dwRead));
  +                    Mylstrcpyn(GETLPCOMPREADSTR(lpCompStr),lpRead,dwRead / sizeof(TCHAR));
  +                    if (!Mylstrlen(lpRead)) {
  +                        // Ÿ ൿ мؼ  :
  +                        // lpRead  ٽ տ .
  +                        // ImeSetCompostionString()    ʾƼ
  +                        //  ൿ ùٸ ൿ    ;p
  +                        hangul_ic_init(&ic);
  +                        InitCompStr (lpCompStr, CLR_RESULT_AND_UNDET);
  +                    }
  +                }
  +                ImmUnlockIMCC (lpIMC->hCompStr);
  +            }
  +            ImmUnlockIMC (hIMC) ;
  +            MyDebugPrint((TEXT("*** SCS_SETSTR end\n")));
  +            return TRUE ;
  +            break;
  +        case SCS_CHANGECLAUSE:
  +            MyDebugPrint((TEXT("SCS_CHANGECLAUSE\n")));
               break;
  -	case SCS_CHANGEATTR:
  -	    MyDebugPrint((TEXT("SCS_CHANGEATTR\n")));
  -	    break;
  -	case SCS_SETSTR:
  -	    MyDebugPrint((TEXT("*** SCS_SETSTR start\n")));
  -	    lpIMC = ImmLockIMC (hIMC) ;
  -	    if (!lpIMC)
  -		break ;
  -
  -	    lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr) ;
  -	    if (lpCompStr != NULL) {
  -	        if (lpComp != NULL && dwComp > 0) {
  -		    //InitCompStr (lpCompStr, CLR_RESULT_AND_UNDET);
  -		    MyDebugPrint((TEXT(" * LPCOMP %s:%d\n"),lpComp,dwComp / sizeof(TCHAR)));
  -		    Mylstrcpyn(GETLPCOMPSTR(lpCompStr),lpComp,dwComp);
  -		} else if (lpRead != NULL && dwRead >0) {
  -		    MyDebugPrint((TEXT(" * LPREAD %s:%d\n"),lpRead,dwRead));
  -		    Mylstrcpyn(GETLPCOMPREADSTR(lpCompStr),lpRead,dwRead / sizeof(TCHAR));
  -		    if (!Mylstrlen(lpRead)) {
  -			// Ÿ ൿ мؼ  :
  -			// lpRead  ٽ տ .
  -			// ImeSetCompostionString()    ʾƼ
  -			//  ൿ ùٸ ൿ    ;p
  -			hangul_ic_init(&ic);
  -		        InitCompStr (lpCompStr, CLR_RESULT_AND_UNDET);
  -		    }
  -		}
  -		ImmUnlockIMCC (lpIMC->hCompStr);
  -	    }
  -	    ImmUnlockIMC (hIMC) ;
  -	    MyDebugPrint((TEXT("*** SCS_SETSTR end\n")));
  -	    return TRUE ;
  -	    break;
  -	case SCS_CHANGECLAUSE:
  -	    MyDebugPrint((TEXT("SCS_CHANGECLAUSE\n")));
  -	    break;
       }
   
       return FALSE;
  @@ -907,3 +902,6 @@
       return 0;
   }
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +8 -21     saenaru/src/immsec.c
  
  Index: immsec.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/immsec.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- immsec.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ immsec.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,27 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/immsec.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/immsec.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    IMMSEC.C
  -    
  -Abstract:
  -
  -    security code called by IMEs 
  -
  -Author:
  -
  -    Takao Kitano [takaok] 01-May-1996
  -
  -Revision History:
  -
  -++*/
   
   #include <windows.h>
   #include <stdio.h>
  @@ -360,3 +344,6 @@
       return &os;
   }
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +8 -12     saenaru/src/immsec.h
  
  Index: immsec.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/immsec.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- immsec.h	26 Dec 2003 08:28:43 -0000	1.2
  +++ immsec.h	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,20 +27,13 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/immsec.h,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/immsec.h,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    IMMSEC.H
  -    
  -++*/
   
   PSECURITY_ATTRIBUTES CreateSecurityAttributes( );
   VOID FreeSecurityAttributes( PSECURITY_ATTRIBUTES psa);
   BOOL IsNT();
   
  -
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +8 -7      saenaru/src/indicml.h
  
  Index: indicml.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/indicml.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- indicml.h	26 Dec 2003 08:28:43 -0000	1.2
  +++ indicml.h	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1993-1997  Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,13 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/indicml.h,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/indicml.h,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/**********************************************************************/
  -/*      INDICML.H - Indicator Service Manager definitions             */
  -/*                                                                    */
  -/*      Copyright (c) 1993-1997  Microsoft Corporation                */
  -/**********************************************************************/
   
   #ifndef _INDICML_
   #define _INDICML_        // defined if INDICML.H has been included
  @@ -83,3 +81,6 @@
   
   #endif  // _INDICML_
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +15 -17    saenaru/src/input.c
  
  Index: input.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/input.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- input.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ input.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/input.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/input.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    INPUT.C
  -    
  -++*/
   
   /**********************************************************************/
   #include "windows.h"
  @@ -62,12 +56,12 @@
           case VK_CONTROL:
               //goto not_proccessed;
               break;
  -	    /*
  -	case VK_ESCAPE:
  -	case VK_LEFT:
  -	case VK_RIGHT:
  -	    break;
  -	    */
  +            /*
  +        case VK_ESCAPE:
  +        case VK_LEFT:
  +        case VK_RIGHT:
  +            break;
  +            */
   
           default:
               if( !DicKeydownHandler( hIMC, wVKey, lParam, lpbKeyState ) ) {
  @@ -100,3 +94,7 @@
   {
       return FALSE;
   }
  +
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +10 -12    saenaru/src/process.c
  
  Index: process.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/process.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- process.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ process.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/process.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/process.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    PROCESS.C
  -    
  -++*/
   
   /**********************************************************************/
   /* These tables are for ImeProcessKey(). And IMEProcessKey function   */
  @@ -119,7 +113,7 @@
   
   BYTE bComp[] = {        0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,        // 00-0F
                           0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,        // 10-0F
  -			// 0x19 == VK_HANJA
  +                        // 0x19 == VK_HANJA
                           //0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,        // 10-0F
                           1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,        // 20-0F
                           1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,        // 30-0F
  @@ -193,3 +187,7 @@
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 00-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 00-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};        // 00-0F
  +
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +8 -11     saenaru/src/reg.c
  
  Index: reg.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/reg.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- reg.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ reg.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/reg.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/reg.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    reg.c
  -    
  -++*/
   
   #include <windows.h>
   #include "immdev.h"
  @@ -310,3 +304,6 @@
   }
   #endif //DEBUG
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +8 -11     saenaru/src/regword.c
  
  Index: regword.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/regword.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- regword.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ regword.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/regword.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/regword.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    REGWORD.C
  -    
  -++*/
   
   /**********************************************************************/
   #include "windows.h"
  @@ -123,3 +117,6 @@
       return uRet;
   }
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +5 -11     saenaru/src/resource.h
  
  Index: resource.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/resource.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- resource.h	26 Dec 2003 08:28:43 -0000	1.2
  +++ resource.h	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/resource.h,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/resource.h,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    RESOURCE.H
  -    
  -++*/
   
   //{{NO_DEPENDENCIES}}
   // Microsoft Developer Studio generated include file.
  
  
  
  1.3       +11 -13    saenaru/src/saenaru.c
  
  Index: saenaru.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- saenaru.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ saenaru.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/saenaru.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    SAENARU.C
  -    
  -++*/
   
   #include <windows.h>
   #include "immdev.h"
  @@ -92,10 +86,10 @@
                   *lpDicFileName++ = TEXT('\\');
               LoadString( hInst, IDS_DICFILENAME, lpDicFileName, 128);
   
  -	    // read registry
  +            // read registry
               SetGlobalFlags();
               // set keyboard layout
  -	    set_keyboard(dwLayoutFlag);
  +            set_keyboard(dwLayoutFlag);
   
   #ifdef DEBUG
               wsprintf(szDev,TEXT("DLLEntry Process Attach hInst is %lx"),hInst);
  @@ -132,3 +126,7 @@
       }
       return TRUE;
   }
  +
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +40 -42    saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- saenaru.h	26 Dec 2003 08:28:43 -0000	1.2
  +++ saenaru.h	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    SAENARU.H
  -    
  -++*/
   
   #include <indicml.h>
   /**********************************************************************/
  @@ -42,22 +36,22 @@
   /*      DebugOptions                                                  */
   /*                                                                    */
   /**********************************************************************/
  -#define DEBF_THREADID        0x00000001
  -#define DEBF_GUIDELINE       0x00000002
  +#define DEBF_THREADID       0x00000001
  +#define DEBF_GUIDELINE      0x00000002
   
  -#define LOGF_ENTRY           0x00000001
  -#define LOGF_API             0x00000002
  -#define LOGF_APIOUT          0x00000004
  -#define LOGF_KEY             0x00000008
  -
  -#define LAYOUT_OLD2BUL	     0x00000001
  -#define LAYOUT_3FIN          0x00000002
  -#define LAYOUT_390	     0x00000003
  -#define LAYOUT_NEW2BUL	     0x00000004
  -#define LAYOUT_NEW3BUL	     0x00000005
  -#define LAYOUT_AHNMATAE	     0x00000006
  -#define LAYOUT_3SUN	     0x00000007
  -#define LAYOUT_USER	     0x00000008
  +#define LOGF_ENTRY          0x00000001
  +#define LOGF_API            0x00000002
  +#define LOGF_APIOUT         0x00000004
  +#define LOGF_KEY            0x00000008
  +
  +#define LAYOUT_OLD2BUL      0x00000001
  +#define LAYOUT_3FIN         0x00000002
  +#define LAYOUT_390	    0x00000003
  +#define LAYOUT_NEW2BUL	    0x00000004
  +#define LAYOUT_NEW3BUL	    0x00000005
  +#define LAYOUT_AHNMATAE	    0x00000006
  +#define LAYOUT_3SUN	    0x00000007
  +#define LAYOUT_USER         0x00000008
   
   
   #define SAENARU_ONTHESPOT      0x00020000
  @@ -321,10 +315,10 @@
       DWORD dwPrivateID;
   } MYGUIDELINE, NEAR *PMYGUIDELINE, FAR *LPMYGUIDELINE;
   
  -#define MAXICREADSIZE	10+2
  -#define MAXICCOMPSIZE	2
  +#define MAXICREADSIZE   10+2
  +#define MAXICCOMPSIZE   2
   typedef struct _tagHangulIC {
  -    //WCHAR 	read[10]; // L{1,3}V{1,3}T{0,3}
  +    //WCHAR read[10]; // L{1,3}V{1,3}T{0,3}
       WCHAR read[MAXICREADSIZE];
       WCHAR comp[MAXICCOMPSIZE];
       WCHAR cho;
  @@ -525,13 +519,13 @@
   #ifdef DEBUG
   
   //#include "debug.h"
  -#define	DEBUGPRINTF(arg)	DebugPrint##arg
  -#define	DEBUGPRINTFW(arg)	DebugPrintW##arg
  +#define DEBUGPRINTF(arg)	DebugPrint##arg
  +#define DEBUGPRINTFW(arg)       DebugPrintW##arg
   
   #if !defined (DEBUG_LV)
  -#define	DEBUG_LV	1
  +#define DEBUG_LV                1
   #endif
  -#define	DEBUGPRINTFEX(level,arg)	if((level) >= DEBUG_LV) DebugPrint##arg
  +#define DEBUGPRINTFEX(level,arg)    if((level) >= DEBUG_LV) DebugPrint##arg
   
   #define MyDebugPrint(x) DebugPrint x
   int DebugPrint(LPCTSTR lpszFormat, ...);
  @@ -539,19 +533,23 @@
   #define MyDebugPrint(x)
   #define ImeLog(dwFlag, lpStr) FALSE
   
  -#define	DEBUGPRINTF(arg)	/*arg*/
  -#define	DEBUGPRINTFW(arg)	/*arg*/
  +#define DEBUGPRINTF(arg)        /*arg*/
  +#define DEBUGPRINTFW(arg)       /*arg*/
   
  -#define	DEBUGPRINTFEX(level,arg)	/*if((level) >= DEBUG_LV) DebugPrintfToFile##arg*/
  +#define DEBUGPRINTFEX(level,arg)    /*if((level) >= DEBUG_LV) DebugPrintfToFile##arg*/
   
   #endif
   
   /* tsf.cpp */
   #if !defined (NO_TSF)
  -BOOL	PASCAL	InitLanguageBar (void) ;
  -void	PASCAL	UninitLanguageBar (void) ;
  -BOOL	PASCAL	UpdateLanguageBarIfSelected (void) ;
  -BOOL	PASCAL	UpdateLanguageBar (void) ;
  -void	PASCAL	ActivateLanguageBar (BOOL) ;
  -BOOL	PASCAL	IsTSFEnabled (void) ;
  +BOOL PASCAL InitLanguageBar(void);
  +void PASCAL UninitLanguageBar(void);
  +BOOL PASCAL UpdateLanguageBarIfSelected(void);
  +BOOL PASCAL UpdateLanguageBar(void);
  +void PASCAL ActivateLanguageBar(BOOL);
  +BOOL PASCAL IsTSFEnabled(void);
   #endif
  +
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +8 -11     saenaru/src/subs.c
  
  Index: subs.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/subs.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- subs.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ subs.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/subs.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/subs.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    SUBS.C
  -    
  -++*/
   
   /**********************************************************************/
   
  @@ -633,3 +627,6 @@
       return hOldFont;
   }
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +8 -12     saenaru/src/toascii.c
  
  Index: toascii.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/toascii.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- toascii.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ toascii.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/toascii.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/toascii.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    TOASCII.C
  -    
  -++*/
   
   /**********************************************************************/
   #include "windows.h"
  @@ -124,4 +118,6 @@
       return TRUE;
   }
   
  -
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.2       +53 -20    saenaru/src/tsf.cpp
  
  Index: tsf.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- tsf.cpp	26 Dec 2003 08:25:48 -0000	1.1
  +++ tsf.cpp	26 Dec 2003 09:26:33 -0000	1.2
  @@ -1,4 +1,34 @@
  -/* imported from the skkime by wkpark */
  +/*
  + * This file is part of Saenaru.
  + *
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in the
  + *    documentation and/or other materials provided with the distribution.
  + *
  + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + *
  + * $Saenaru: saenaru/src/tsf.cpp,v 1.2 2003/12/26 09:26:33 perky Exp $
  + */
  +
   #if !defined (NO_TSF)
   #include "windows.h"
   #include "tchar.h"
  @@ -42,8 +72,8 @@
   
   // {830DE831-E04D-40bb-8683-1E179A5F1A4F}
   /*
  - *     class id  skimic.dll ̗pĂ̂AgĂ͂Ȃ
  - *    悤BۂɎg class id ɂẮc
  + *     class id  skimic.dll ĪƪΪŪêƪϪʪ
  + *    誦?Ū class id ˪Īƪϡ
    *
    */
   #if 0
  @@ -51,8 +81,8 @@
       0x830de831, 0xe04d, 0x40bb, { 0x86, 0x83, 0x1e, 0x17, 0x9a, 0x5f, 0x1a, 0x4f }
   };
   #endif
  -/*     IME Ƃ??Ɠ CLSID ɐݒ肷Kv悤BMS-IME2002 
  - *    QƂɁB
  +/*     IME Ȫ??Ҫ CLSID Ҫ驪誦MS-IME2002 
  + *    ?Ѫ?Ϊˡ
    */
   #if 1
   const CLSID c_clsidSaenaruTextService    = {
  @@ -83,8 +113,8 @@
       0xd97b240b, 0x2c61, 0x4b9b, { 0xae, 0xcf, 0xd5, 0xc3, 0xcf, 0xdd, 0xfc, 0xbb }
   };
   
  -/*     button Ɍ邪Askimic.dll Ɠ̂ĝ͔Ȃ΂Ȃ
  - *    悤BɂĂ̂ƂςscB
  +/*    Ҫ button ̸몬skimic.dll ҪΪŪΪʪЪʪ
  + *    誦Ҫ˪ƪΪȪ?ê
    */
   #if 0
   const GUID    c_guidItemButtonCMode = {
  @@ -97,7 +127,7 @@
   };
   #endif
   
  -/*    L???h?? GUIDB炭͂̒lňӂɌ肷锤B
  +/*    ????? GUID骯Ϫ̽Ҫ?
    */
   #if 1
   const GUID c_guidKeyboardItemButton    = {
  @@ -119,7 +149,7 @@
           
       DEBUGPRINTF ((TEXT ("Enter::InitLanguageBar\n")));
   
  -    /* Logon ɂ TSF ͌ĂяoȂB*/
  +    /* Logon ˪ TSF 󪵪ʪ*/
   #if 0
       if (gfSaenaruSecure) {
           DEBUGPRINTF ((TEXT ("Leave::InitLanguageBar - security\n")));
  @@ -154,7 +184,7 @@
       {
           DEBUGPRINTFEX (99, (TEXT ("InitLanguageBar failed.\n")));
           if (shMSCTF != NULL)
  -	{
  +        {
               FreeLibrary (shMSCTF);
               shMSCTF = NULL;
           }
  @@ -231,7 +261,7 @@
   
       DEBUGPRINTFEX (100, (TEXT ("UpdateLanguageBar ()\n")));
   
  -    /*    񃌃WXgQƂ̂͐̂낤H */
  +    /*    ?ޫ쫸ȫ?ΪΪ᪷Ϊ */
       fShowKeyboardIcon = fShowIMEIcon = fShowInputModeIcon = fShowShapeIcon = TRUE;
   #if 0
   #if !defined (NO_TOUCH_REGISTRY)
  @@ -297,7 +327,7 @@
       return    fRetval;
   }
   
  -/*    o?ɃACe?ǉ/폜B
  +/*    ޫ?˫?ʥ/𶪹롣
    */
   void    PASCAL
   ActivateLanguageBar (
  @@ -332,7 +362,7 @@
   
       DEBUGPRINTFEX (100, (TEXT ("ActivateLanguageBar (Select:%d)\n"), fSelect));
   
  -    /*    񃌃WXgQƂ̂͐̂낤H */
  +    /*    ?ޫ쫸ȫ?ΪΪ᪷Ϊ */
       fShowKeyboardIcon = fShowIMEIcon = fShowInputModeIcon = fShowShapeIcon = TRUE;
       if (fSelect) {
   #if 0
  @@ -489,10 +519,10 @@
       return    hIMC;
   }
   
  -/*    L???hACR(o?)?/?؂ւ֐B
  - *
  - *    Text Service Framework ƓĂꍇɂ̓L???h̃ACR
  - *    ?邪AłȂꍇɂ IME ICON p悤łB
  +/*    ???ɫ(ޫ?)?/ު?ƪ﷪𪨪??
  + *
  + *    Text Service Framework ꪵƪ˪ϫ???ɪΫ
  + *    ?ƪ몬Ǫʪ˪ IME ICON Ī誦Ǫ롣
    */
   BOOL
   _ShowKeyboardIcon (
  @@ -515,9 +545,9 @@
                   pSysDevItem->Release ();
               }
   
  -            /*    Text Service Framework  IME ĂȂꍇɂ́A
  -             *    IME Icon ?Ă܂Aꂪ Button 1ƏdȂ
  -             *    ߂ɁAL???hACRύXB
  +            /*    Text Service Framework  IME ꪵƪʪ˪ϡ
  +             *    IME Icon ?ƪƪު쪬 Button 1Īʪ
  +             *    ˡ???ɫ?ڪ롣
                */
   #if defined (not_integrate_tsf) || 0
               if (SUCCEEDED (pItem->QueryInterface (IID_ITfSystemLangBarItem, (void**)&pSysItem)) && pSysItem != NULL) {
  @@ -539,3 +569,6 @@
   
   #endif
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.2       +53 -20    saenaru/src/tsf.h
  
  Index: tsf.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- tsf.h	26 Dec 2003 08:25:48 -0000	1.1
  +++ tsf.h	26 Dec 2003 09:26:33 -0000	1.2
  @@ -1,8 +1,38 @@
  -/* imported from the skkime */
  +/*
  + * This file is part of Saenaru.
  + *
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in the
  + *    documentation and/or other materials provided with the distribution.
  + *
  + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + *
  + * $Saenaru: saenaru/src/tsf.h,v 1.2 2003/12/26 09:26:33 perky Exp $
  + */
  +
   #if !defined (tsf_h)
  -#define	tsf_h
  +#define tsf_h
   
  -#define	ARRAYSIZE(array)	(sizeof (array) / sizeof (array[0]))
  +#define ARRAYSIZE(array)    (sizeof (array) / sizeof (array[0]))
   
   inline void SafeStringCopy (WCHAR *pchDst, ULONG cchMax, const WCHAR *pchSrc)
   {
  @@ -16,26 +46,29 @@
   typedef HRESULT (WINAPI *PTF_CREATETHREADMGR)(ITfThreadMgr**) ;
   typedef HRESULT (WINAPI *PTF_CREATELANGBARITEMMGR)(ITfLangBarItemMgr**);
   typedef struct {
  -	const WCHAR*	pchDesc ;
  -	void	(*pfnHandler)(void) ;
  -}	TSFLBMENUINFO ;
  -
  -extern const CLSID	c_clsidSaenaruTextService ;
  -extern const GUID	c_guidSaenaruProfile ;
  -extern const GUID	c_guidItemButtonCMode ;
  -extern const GUID	c_guidItemButtonIME ;
  -extern const GUID	c_guidItemButtonShape ;
  -extern const GUID	c_guidKeyboardItemButton ;
  -
  -/*	prototypes */
  -HIMC	_GetCurrentHIMC		(void) ;
  -BOOL	CreateItemButtonCMode	(ITfLangBarItem** ppLangBarItem) ;
  -BOOL	CreateItemButtonIME	(ITfLangBarItem** ppLangBarItem) ;
  -BOOL	CreateItemButtonShape	(ITfLangBarItem** ppLangBarItem) ;
  -BOOL	_ShowKeyboardIcon	(BOOL fShow) ;
  +    const WCHAR*    pchDesc ;
  +    void    (*pfnHandler)(void) ;
  +} TSFLBMENUINFO ;
  +
  +extern const CLSID c_clsidSaenaruTextService ;
  +extern const GUID c_guidSaenaruProfile ;
  +extern const GUID c_guidItemButtonCMode ;
  +extern const GUID c_guidItemButtonIME ;
  +extern const GUID c_guidItemButtonShape ;
  +extern const GUID c_guidKeyboardItemButton ;
  +
  +/* prototypes */
  +HIMC _GetCurrentHIMC(void);
  +BOOL CreateItemButtonCMode(ITfLangBarItem** ppLangBarItem);
  +BOOL CreateItemButtonIME(ITfLangBarItem** ppLangBarItem);
  +BOOL CreateItemButtonShape(ITfLangBarItem** ppLangBarItem);
  +BOOL _ShowKeyboardIcon(BOOL fShow) ;
   
   LONG DllAddRef(void);
   LONG DllRelease(void);
   
   #endif
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +45 -47    saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ui.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ ui.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    UI.C
  -    
  -++*/
   
   /**********************************************************************/
   #include <windows.h>
  @@ -404,7 +398,7 @@
               hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
               lpUIExtra = (LPUIEXTRA)GlobalLock(hUIExtra);
   
  -	    //hangul_ic_init(&ic);
  +            //hangul_ic_init(&ic);
   
               HideCompWindow(lpUIExtra);
               GlobalUnlock(hUIExtra);
  @@ -509,7 +503,7 @@
               lpUIExtra->uiCand.pt.x = (long)LOWORD(lParam);
               lpUIExtra->uiCand.pt.y = (long)HIWORD(lParam);
   
  -	    MyDebugPrint((TEXT(" * CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
  +            MyDebugPrint((TEXT(" * CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
               //MoveCandWindow(hWnd,lpIMC,lpUIExtra,FALSE);
   
               ImmUnlockIMC(hUICurIMC);
  @@ -921,7 +915,7 @@
                   SetWindowLong(hWnd,FIGWL_MOUSE,FIM_CAPUTURED);
               }
   #if (WINVER >= 0x0500)
  -	      else
  +              else
                   SetCursor(LoadCursor(NULL,IDC_HAND));
   #endif
               break;
  @@ -1184,18 +1178,18 @@
           return CallNextHookEx(hHookWnd, code, wParam, lParam);
   
       if (dwOptionFlag & DVORAK_SUPPORT) {
  -	HIMC hIMC = NULL;
  -	HWND hwnd = GetFocus ();
  -	LPINPUTCONTEXT lpIMC;
  -
  -	if (hwnd != NULL) {
  -	    hIMC = ImmGetContext (hwnd);
  -	    lpIMC = ImmLockIMC(hIMC);
  +        HIMC hIMC = NULL;
  +        HWND hwnd = GetFocus ();
  +        LPINPUTCONTEXT lpIMC;
  +
  +        if (hwnd != NULL) {
  +            hIMC = ImmGetContext (hwnd);
  +            lpIMC = ImmLockIMC(hIMC);
               if (lpIMC) {
  -	        dvorak = !(lpIMC->fdwConversion & IME_CMODE_NATIVE);
  -	    }
  -	    ImmUnlockIMC(hIMC);
  -	}
  +                dvorak = !(lpIMC->fdwConversion & IME_CMODE_NATIVE);
  +            }
  +            ImmUnlockIMC(hIMC);
  +        }
       }
   
       lpmsg = (LPMSG)lParam;
  @@ -1222,9 +1216,9 @@
               {
                  // SHORT ShiftState = (GetAsyncKeyState(VK_LSHIFT) >> 31) & 1;
                   TCHAR szDev[80];
  -		SHORT ShiftState;
  +                SHORT ShiftState;
                   GetKeyboardState((LPBYTE)&pbKeyState);
  -		ShiftState = pbKeyState[VK_LSHIFT] & 0x80;
  +                ShiftState = pbKeyState[VK_LSHIFT] & 0x80;
   
                   wsprintf((LPTSTR)szDev,TEXT("ShiftState is %x\r\n"),ShiftState);
                   OutputDebugString((LPTSTR)szDev);
  @@ -1246,24 +1240,24 @@
               {
                   WORD dv;
                   SHORT sc;
  -		UINT caps = 0;
  +                UINT caps = 0;
   
                   GetKeyboardState((LPBYTE)&pbKeyState);
   
  -		caps = pbKeyState[VK_CAPITAL];
  -		if (caps) {
  -		    if (vKey >= 'A' && vKey <= 'Z')
  -			vKey += 'a' - 'A';
  -		    else if (vKey >= 'a' && vKey <= 'z')
  -			vKey -= 'a' - 'A';
  -		    dv = qwerty2dvorak_table[vKey - '!'];
  -		    if (dv >= 'A' && dv <= 'Z')
  -			dv += 'a' - 'A';
  -		    else if (dv >= 'a' && dv <= 'z')
  -			dv -= 'a' - 'A';
  -		} else
  -		    dv = qwerty2dvorak_table[vKey - '!'];
  -		 
  +                caps = pbKeyState[VK_CAPITAL];
  +                if (caps) {
  +                    if (vKey >= 'A' && vKey <= 'Z')
  +                        vKey += 'a' - 'A';
  +                    else if (vKey >= 'a' && vKey <= 'z')
  +                        vKey -= 'a' - 'A';
  +                    dv = qwerty2dvorak_table[vKey - '!'];
  +                    if (dv >= 'A' && dv <= 'Z')
  +                        dv += 'a' - 'A';
  +                    else if (dv >= 'a' && dv <= 'z')
  +                        dv -= 'a' - 'A';
  +                } else
  +                    dv = qwerty2dvorak_table[vKey - '!'];
  +                 
                   lpmsg->wParam = dv;
                   sc = VkKeyScan(dv);
                   lpmsg->lParam &= ~0x00ff0000;
  @@ -1280,10 +1274,10 @@
               GetKeyboardState((LPBYTE)&pbKeyState);
               if ( pbKeyState[VK_RMENU] & 0x80 && !(lpmsg->lParam & 0x01000000))
               {
  -		WORD ch;
  +                WORD ch;
   
                   ToAscii(vKey,(lpmsg->lParam | 0xff0000)>>16,pbKeyState,&ch,0);
  -		ch = 0xff & ch;
  +                ch = 0xff & ch;
                   if (ch < '!' || ch > '~')
                        break;
                   MyDebugPrint((TEXT("RALT + %x\n"), ch));
  @@ -1292,14 +1286,14 @@
                   MyDebugPrint((TEXT("RALT %x\n"), lpmsg->lParam));
   
                   if (dvorak)
  -	 	{
  -		    WORD dv;
  +                 {
  +                    WORD dv;
                       SHORT sc;
   
                       dv = qwerty2dvorak_table[ch - '!'];
                       sc = VkKeyScan(dv);
                       lpmsg->wParam = sc;
  -		}
  +                }
   #endif
               }
               break;
  @@ -1349,3 +1343,7 @@
       }
   }
   #endif
  +
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +45 -48    saenaru/src/uicand.c
  
  Index: uicand.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicand.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- uicand.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ uicand.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicand.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/uicand.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    UICAND.C
  -    
  -++*/
   
   /**********************************************************************/
   #include "windows.h"
  @@ -126,7 +120,7 @@
                   {
                       lpIMC = ImmLockIMC(hIMC);
                       ConvHanja(hIMC,offset,select);
  -	            ImmUnlockIMC(hIMC);
  +                    ImmUnlockIMC(hIMC);
                       break;
                   }
               }
  @@ -135,15 +129,15 @@
           case WM_RBUTTONUP:
               DragUI(hWnd,message,wParam,lParam);
               if ((message == WM_LBUTTONUP) || (message == WM_RBUTTONUP)) {
  -	        MyDebugPrint((TEXT(" $ CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
  +                MyDebugPrint((TEXT(" $ CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
                   SetWindowLong(hWnd,FIGWL_MOUSE,0L);
  -	    }
  +            }
               break;
   
           case WM_MOVE:
               hUIWnd = (HWND)GetWindowLongPtr(hWnd,FIGWL_SVRWND);
   
  -	    MyDebugPrint((TEXT(" x CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
  +            MyDebugPrint((TEXT(" x CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
               if (IsWindow(hUIWnd))
                   SendMessage(hUIWnd,WM_UI_CANDMOVE,wParam,lParam);
               break;
  @@ -201,26 +195,26 @@
           {
               if (!lpUIExtra->bVertical)
               {
  -		UINT dy = GetCompFontHeight(lpUIExtra);
  -		UINT hy = GetSystemMetrics(SM_CYFULLSCREEN);
  -		POINT pt;
  +                UINT dy = GetCompFontHeight(lpUIExtra);
  +                UINT hy = GetSystemMetrics(SM_CYFULLSCREEN);
  +                POINT pt;
   
                   lppt->x = lpIMC->cfCompForm.ptCurrentPos.x;
                   lppt->y = lpIMC->cfCompForm.ptCurrentPos.y + dy;
                                        //GetCompFontHeight(lpUIExtra);
  -				     //
  -		pt.x = lppt->x;
  -		pt.y = lppt->y;
  -		
  -		ClientToScreen(lpIMC->hWnd,&pt);
  -		if ((pt.y + 9 * dy) > hy) {
  -		    pt.x += dy + 2;
  -		    pt.y = hy - 10 * dy;
  -		    ScreenToClient(lpIMC->hWnd,&pt);
  -		    lppt->x = pt.x;
  -		    lppt->y = pt.y;
  -		}
  -		MyDebugPrint((TEXT("XXX #1\n")));
  +                                     //
  +                pt.x = lppt->x;
  +                pt.y = lppt->y;
  +                
  +                ClientToScreen(lpIMC->hWnd,&pt);
  +                if ((pt.y + 9 * dy) > hy) {
  +                    pt.x += dy + 2;
  +                    pt.y = hy - 10 * dy;
  +                    ScreenToClient(lpIMC->hWnd,&pt);
  +                    lppt->x = pt.x;
  +                    lppt->y = pt.y;
  +                }
  +                MyDebugPrint((TEXT("XXX #1\n")));
               }
               else
               {
  @@ -331,12 +325,12 @@
               for (i = lpCandList->dwPageStart; 
                    i < (lpCandList->dwPageStart + lpCandList->dwPageSize); i++)
               {
  -		TCHAR num[3];
  +                TCHAR num[3];
                   wsprintf(num, TEXT("%d "), i % lpCandList->dwPageSize + 1);
   
  -		if (i >= lpCandList->dwCount) 
  -		    lpstr=(LPMYSTR)(LPSTR)" ";
  -		else
  +                if (i >= lpCandList->dwCount) 
  +                    lpstr=(LPMYSTR)(LPSTR)" ";
  +                else
                       lpstr=(LPMYSTR)((LPSTR)lpCandList +lpCandList->dwOffset[i]);
   
                   MyGetTextExtentPoint(hDC,lpstr,Mylstrlen(lpstr),&sz);
  @@ -354,7 +348,7 @@
                       SelectObject(hDC,hbr);
                       SetTextColor(hDC,RGB(0,0,0));
                   }
  -		if (i < lpCandList->dwCount)
  +                if (i < lpCandList->dwCount)
                       MyTextOut(hDC,GetSystemMetrics(SM_CXEDGE),height,num,Mylstrlen(num));
                   MyTextOut(hDC,10 + GetSystemMetrics(SM_CXEDGE),height,lpstr,Mylstrlen(lpstr));
                   height += sz.cy;
  @@ -421,7 +415,7 @@
                          rc.left,
                          rc.top,
                          width+ 10 + 4 * GetSystemMetrics(SM_CXEDGE),
  -		       /* 10 is a left margin */
  +                       /* 10 is a left margin */
                          height+ 4 * GetSystemMetrics(SM_CYEDGE),
                          TRUE);
       }
  @@ -468,17 +462,17 @@
               caf.ptCurrentPos.y = pt.y;
   #if 0
               GetWindowRect(lpUIExtra->uiCand.hWnd,&rc);
  -	    if ((int)rc.left != -1 && (int)rc.left < 4096 ) {
  -		POINT spt;
  -		spt.x = (int)rc.left;
  -		spt.y = (int)rc.top;
  -		MyDebugPrint((TEXT("S X,Y:%d,%d\n"),spt.x,spt.y));
  -		ScreenToClient(lpIMC->hWnd, &spt);
  -		MyDebugPrint((TEXT("C X,Y:%d,%d\n"),spt.x,spt.y));
  -
  -		caf.ptCurrentPos.x = spt.x;
  -		caf.ptCurrentPos.y = spt.y;
  -	    }
  +            if ((int)rc.left != -1 && (int)rc.left < 4096 ) {
  +                POINT spt;
  +                spt.x = (int)rc.left;
  +                spt.y = (int)rc.top;
  +                MyDebugPrint((TEXT("S X,Y:%d,%d\n"),spt.x,spt.y));
  +                ScreenToClient(lpIMC->hWnd, &spt);
  +                MyDebugPrint((TEXT("C X,Y:%d,%d\n"),spt.x,spt.y));
  +
  +                caf.ptCurrentPos.x = spt.x;
  +                caf.ptCurrentPos.y = spt.y;
  +            }
   #endif
               ImmSetCandidateWindow(lpUIExtra->hIMC,&caf);
           }
  @@ -567,3 +561,6 @@
       }
   }
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +16 -19    saenaru/src/uicomp.c
  
  Index: uicomp.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicomp.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- uicomp.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ uicomp.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicomp.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/uicomp.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    UICOMP.C
  -    
  -++*/
   
   /**********************************************************************/
   #include "windows.h"
  @@ -67,7 +61,7 @@
           case WM_LBUTTONUP:
           case WM_RBUTTONUP:
   #if 1
  -//	Compâ  ʿ䰡  â̴. 
  +//        Compâ  ʿ䰡  â̴. 
               DragUI(hWnd,message,wParam,lParam);
               if ((message == WM_SETCURSOR) &&
                   (HIWORD(lParam) != WM_LBUTTONDOWN) &&
  @@ -535,8 +529,8 @@
               case ATTR_INPUT:
                   SetTextColor(hDC,RGB(0,0,0));
                   //SetBkMode(hDC,TRANSPARENT);
  -		MoveToEx(hDC, rc.right, rc.top, NULL);
  -		LineTo  (hDC, rc.right, rc.bottom);
  +                MoveToEx(hDC, rc.right, rc.top, NULL);
  +                LineTo  (hDC, rc.right, rc.bottom);
                   break;
   
               case ATTR_TARGET_CONVERTED:
  @@ -566,11 +560,11 @@
           TextOut(hDC,x,y,lpstr,cnt);
           GetTextExtentPoint(hDC,lpstr,cnt,&sz);
           lpstr += cnt;
  -	if (bAttr == ATTR_INPUT)
  -	{
  -		MoveToEx(hDC, rc.right, rc.top, NULL);
  -		LineTo  (hDC, rc.right, rc.bottom);
  -	}
  +        if (bAttr == ATTR_INPUT)
  +        {
  +                MoveToEx(hDC, rc.right, rc.top, NULL);
  +                LineTo  (hDC, rc.right, rc.bottom);
  +        }
   
           if (!fVert)
               x += sz.cx;
  @@ -703,3 +697,6 @@
   
   }
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +10 -14    saenaru/src/uiguide.c
  
  Index: uiguide.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uiguide.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- uiguide.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ uiguide.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uiguide.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/uiguide.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    UIGUIDE.C
  -    
  -++*/
   
   /**********************************************************************/
   #include "windows.h"
  @@ -77,10 +71,10 @@
   
           case WM_MOUSEMOVE:
           case WM_SETCURSOR:
  -	    MyDebugPrint((TEXT("UIGuide\n")));
  +            MyDebugPrint((TEXT("UIGuide\n")));
           case WM_LBUTTONUP:
           case WM_RBUTTONUP:
  -	    MyDebugPrint((TEXT("UIGuide BUTTON\n")));
  +            MyDebugPrint((TEXT("UIGuide BUTTON\n")));
               ButtonGuide(hWnd,message,wParam,lParam);
               if ((message == WM_SETCURSOR) &&
                   (HIWORD(lParam) != WM_LBUTTONDOWN) &&
  @@ -361,4 +355,6 @@
           SendMessage(lpUIExtra->uiGuide.hWnd,WM_UI_UPDATE,0,0L);
   }
   
  -
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +14 -17    saenaru/src/uistate.c
  
  Index: uistate.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uistate.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- uistate.c	26 Dec 2003 08:28:43 -0000	1.2
  +++ uistate.c	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uistate.c,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/uistate.c,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    UISTATE.C
  -    
  -++*/
   
   /**********************************************************************/
   #include "windows.h"
  @@ -283,10 +277,10 @@
           {
               fdwConversion &= ~IME_CMODE_FULLSHAPE;
           }
  -	else
  -	{
  +        else
  +        {
               fdwConversion |= IME_CMODE_FULLSHAPE;
  -	}
  +        }
       }
       return fdwConversion;
   
  @@ -458,10 +452,10 @@
                       }
   
                       case IDM_ABOUT:
  -		        lpIMC = (LPINPUTCONTEXT)ImmLockIMC(hIMC);
  -		        (void) ImeConfigure (GetKeyboardLayout(0), lpIMC->hWnd, IME_CONFIG_GENERAL, NULL);
  +                        lpIMC = (LPINPUTCONTEXT)ImmLockIMC(hIMC);
  +                        (void) ImeConfigure (GetKeyboardLayout(0), lpIMC->hWnd, IME_CONFIG_GENERAL, NULL);
                           //ImmConfigureIME(GetKeyboardLayout(0), NULL, IME_CONFIG_GENERAL, 0);
  -			ImmUnlockIMC(hIMC);
  +                        ImmUnlockIMC(hIMC);
                           break;
   
                       default:
  @@ -527,3 +521,6 @@
           SendMessage(lpUIExtra->uiStatus.hWnd,WM_UI_UPDATE,0,0L);
   }
   
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  
  1.3       +8 -12     saenaru/src/vksub.h
  
  Index: vksub.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/vksub.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- vksub.h	26 Dec 2003 08:28:43 -0000	1.2
  +++ vksub.h	26 Dec 2003 09:26:33 -0000	1.3
  @@ -1,7 +1,10 @@
   /*
    * This file is part of Saenaru.
    *
  - * Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  + * Copyright (c) 1990-1998 Microsoft Corporation.
  + * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
  + * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
  + * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -24,17 +27,8 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/vksub.h,v 1.2 2003/12/26 08:28:43 perky Exp $
  + * $Saenaru: saenaru/src/vksub.h,v 1.3 2003/12/26 09:26:33 perky Exp $
    */
  -/*++
  -
  -Copyright (c) 1990-1998 Microsoft Corporation, All Rights Reserved
  -
  -Module Name:
  -
  -    VKSUB.H
  -
  -++*/
   
   #define VK_0    0x030
   #define VK_1    0x031
  @@ -80,4 +74,6 @@
   #define VK_OEM_9        0x0E0           // next available
   #define VK_OEM_BSLASH   0x0E2           // additional Back Slash key for AX.
   
  -
  +/*
  + * ex: ts=8 sts=4 sw=4 et
  + */
  
  
  


perky       03/12/26 18:30:10

  Modified:    .        LICENSE
  Log:
  Update copyright
  
  Revision  Changes    Path
  1.3       +4 -2      saenaru/LICENSE
  
  Index: LICENSE
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/LICENSE,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LICENSE	26 Dec 2003 08:28:42 -0000	1.2
  +++ LICENSE	26 Dec 2003 09:30:10 -0000	1.3
  @@ -1,6 +1,8 @@
  -$Saenaru: saenaru/LICENSE,v 1.2 2003/12/26 08:28:42 perky Exp $
  +$Saenaru: saenaru/LICENSE,v 1.3 2003/12/26 09:30:10 perky Exp $
   
  -Copyright (C) 2003 Hye-Shik Chang. All rights reserved.
  +Copyright (C) 2003 Hye-Shik Chang <perky@i18n.org>
  +Copyright (C) 2003 Won-Kyu Park <wkpark@kldp.org>
  +All rights reserved.
   
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions
  
  
  


perky       03/12/26 18:30:11

  Modified:    resource saenaru.rcv
  Log:
  Update copyright
  
  Revision  Changes    Path
  1.2       +1 -1      saenaru/resource/saenaru.rcv
  
  Index: saenaru.rcv
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/resource/saenaru.rcv,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- saenaru.rcv	26 Dec 2003 08:22:37 -0000	1.1
  +++ saenaru.rcv	26 Dec 2003 09:30:10 -0000	1.2
  @@ -47,7 +47,7 @@
   #define VER_PRODUCTNAME_STR             "SAENARU"
   #define VER_INTERNALNAME_STR            "Saenaru Hangul Input Method"
   #define VER_LEGALCOPYRIGHT_YEARS        "2003"
  -#define VER_LEGALCOPYRIGHT_STR          "Copyright (C) Hye-Shik Chang. ", VER_LEGALCOPYRIGHT_YEARS, "\0"
  +#define VER_LEGALCOPYRIGHT_STR          "Copyright (C) Hye-Shik Chang, Won-Kyu Park. ", VER_LEGALCOPYRIGHT_YEARS, "\0"
   #define VER_ORIGINALFILENAME_STR        "SAENARU.IME"
   
   VS_VERSION_INFO VERSIONINFO
  
  
  


perky       03/12/26 18:32:50

  Modified:    resource 2set3set.reg saenaru.rcv
  Log:
  Change vendor name to Open Hangul Project
  
  Revision  Changes    Path
  1.2       +1 -1      saenaru/resource/2set3set.reg
  
  Index: 2set3set.reg
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/resource/2set3set.reg,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 2set3set.reg	26 Dec 2003 08:25:38 -0000	1.1
  +++ 2set3set.reg	26 Dec 2003 09:32:49 -0000	1.2
  @@ -1,6 +1,6 @@
   REGEDIT4
   
  -[HKEY_LOCAL_MACHINE\SOFTWARE\OpenLook\Saenaru\Keyboard]
  +[HKEY_LOCAL_MACHINE\SOFTWARE\OpenHangulProject\Saenaru\Keyboard]
   "ι"=hex(7):23,20,74,68,69,73,20,66,69,6c,65,20,69,73,20,74,68,65,20,6e,65,77,\
     2d,32,73,65,74,20,6b,65,79,62,6f,61,72,64,20,6d,61,70,20,66,69,6c,65,20,66,\
     6f,72,20,4e,61,62,69,00,4e,61,6d,65,3a,20,c8,50,8c,dd,00,54,79,70,65,32,00,\
  
  
  
  1.3       +1 -1      saenaru/resource/saenaru.rcv
  
  Index: saenaru.rcv
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/resource/saenaru.rcv,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- saenaru.rcv	26 Dec 2003 09:30:10 -0000	1.2
  +++ saenaru.rcv	26 Dec 2003 09:32:49 -0000	1.3
  @@ -42,7 +42,7 @@
   #define VER_FILETYPE                    VFT_DRV
   #define VER_FILESUBTYPE                 VFT2_DRV_INPUTMETHOD
   
  -#define VER_COMPANYNAME_STR             "OpenLook Initiatives\0"
  +#define VER_COMPANYNAME_STR             "Open Hangul Project\0"
   #define VER_FILEDESCRIPTION_STR         "SAENARU 1.0"
   #define VER_PRODUCTNAME_STR             "SAENARU"
   #define VER_INTERNALNAME_STR            "Saenaru Hangul Input Method"
  
  
  


perky       03/12/26 18:32:51

  Modified:    setup    saenaru.inf
  Log:
  Change vendor name to Open Hangul Project
  
  Revision  Changes    Path
  1.2       +11 -11    saenaru/setup/saenaru.inf
  
  Index: saenaru.inf
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/saenaru.inf,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- saenaru.inf	26 Dec 2003 08:22:37 -0000	1.1
  +++ saenaru.inf	26 Dec 2003 09:32:50 -0000	1.2
  @@ -18,22 +18,22 @@
   
   
   [DestinationDirs]
  -SaeNaru.sys.install=11 ; to System (Memphis) or System32 (NT)
  +SaeNaru.sys.install=11 ; to System (Windows 98) or System32 (NT)
   SaeNaru.win.install=25 ; to Windows
   
   [SaeNaru_Reg]
  -HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","layout file",,kbdkr.kbd
  -HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","layout text",," ѱ Է±"
  -HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","layout display name",,"ѱ Է± ()"
  -HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","IME file",,"SAENARU.IME"
  -HKLM,"software\OpenLook\Saenaru"
  +HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","Layout file",,kbdus.kbd
  +HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","Layout text",," ѱ Է±"
  +HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","Layout display name",,"ѱ Է± ()"
  +HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","IME File",,"SAENARU.IME"
  +HKLM,"software\OpenHangulProject\Saenaru"
   
   [SaeNaru_Reg_NT]
  -HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","layout file",,kbdkor.dll
  -HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","layout text",," ѱ Է±"
  -HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","layout display name",,"ѱ Է± ()"
  -HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","IME file",,"SAENARU.IME"
  -HKLM,"software\OpenLook\Saenaru"
  +HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","Layout file",,kbdkor.dll
  +HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","Layout text",," ѱ Է±"
  +HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","Layout display name",,"ѱ Է± ()"
  +HKLM,"system\currentcontrolset\control\keyboard layouts\E0120412","IME File",,"SAENARU.IME"
  +HKLM,"software\OpenHangulProject\Saenaru"
   
   [SourceDisksNames]
   55="SaeNaru Install Disk 1.0.","",1
  
  
  


perky       03/12/26 18:32:54

  Modified:    src      fdebug.c reg.c saenaru.rc
  Log:
  Change vendor name to Open Hangul Project
  
  Revision  Changes    Path
  1.4       +3 -3      saenaru/src/fdebug.c
  
  Index: fdebug.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/fdebug.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- fdebug.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ fdebug.c	26 Dec 2003 09:32:51 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/fdebug.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/fdebug.c,v 1.4 2003/12/26 09:32:51 perky Exp $
    */
   
   #include <windows.h>
  @@ -37,9 +37,9 @@
   #ifdef DEBUG
   
   #if   UNICODE
  -const LPTSTR g_szRegInfoPath = TEXT("software\\OpenLook\\Saenaru");
  +const LPTSTR g_szRegInfoPath = TEXT("software\\OpenHangulProject\\Saenaru");
   #else
  -const LPTSTR g_szRegInfoPath = TEXT("software\\OpenLook\\Saenaru");
  +const LPTSTR g_szRegInfoPath = TEXT("software\\OpenHangulProject\\Saenaru");
   #endif
   
   int DebugPrint(LPCTSTR lpszFormat, ...)
  
  
  
  1.4       +3 -3      saenaru/src/reg.c
  
  Index: reg.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/reg.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- reg.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ reg.c	26 Dec 2003 09:32:51 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/reg.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/reg.c,v 1.4 2003/12/26 09:32:51 perky Exp $
    */
   
   #include <windows.h>
  @@ -35,9 +35,9 @@
   #include "saenaru.h"
   
   #if   UNICODE
  -const LPTSTR g_szRegInfoPath = TEXT("software\\OpenLook\\Saenaru");
  +const LPTSTR g_szRegInfoPath = TEXT("software\\OpenHangulProject\\Saenaru");
   #else
  -const LPTSTR g_szRegInfoPath = TEXT("software\\OpenLook\\Saenaru");
  +const LPTSTR g_szRegInfoPath = TEXT("software\\OpenHangulProject\\Saenaru");
   #endif
   
   #ifdef DEBUG
  
  
  
  1.2       +51 -23    saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- saenaru.rc	26 Dec 2003 08:22:41 -0000	1.1
  +++ saenaru.rc	26 Dec 2003 09:32:51 -0000	1.2
  @@ -32,6 +32,15 @@
   INDICOPENICON           ICON    DISCARDABLE     "..\\resource\\penindic.ico"
   IDI_ABOUT               ICON    DISCARDABLE     "..\\resource\\about.ico"
   
  +IMEICON 	ICON    DISCARDABLE		"..\\resource\\penindic.ico"
  +INDIC_PEN	ICON    DISCARDABLE		"..\\resource\\penindic.ico"
  +INDIC_HAN	ICON    DISCARDABLE		"..\\resource\\text\\hankey.ico"
  +INDIC_ENG	ICON	DISCARDABLE		"..\\resource\\text\\engkey.ico"
  +INDIC_HANJA	ICON	DISCARDABLE		"..\\resource\\text\\hanjakey.ico"
  +INDIC_KEY	ICON    DISCARDABLE		"..\\resource\\keyboard.ico"
  +INDIC_HALF	ICON    DISCARDABLE		"..\\resource\\half.ico"
  +INDIC_FULL	ICON    DISCARDABLE		"..\\resource\\full.ico"
  +
   /////////////////////////////////////////////////////////////////////////////
   //
   // Bitmap
  @@ -43,47 +52,62 @@
   UNCHECKBMP              BITMAP  DISCARDABLE     "..\\resource\\uncheck.bmp"
   FACEBMP                 BITMAP  DISCARDABLE     "..\\resource\\face.bmp"
   
  +
   /////////////////////////////////////////////////////////////////////////////
   //
   // Dialog
   //
   
  -DLG_GENERAL DIALOG DISCARDABLE  30, 65, 215, 135
  +//DLG_GENERAL DIALOG DISCARDABLE  30, 65, 215, 135
  +DLG_GENERAL DIALOG DISCARDABLE  30, 65, 212, 158
   STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION
   CAPTION " Ϲ "
   FONT 9, ""
  +LANGUAGE 0x12, 0x1
   BEGIN
  -    ICON            IDI_GENERAL,IDC_STATIC,2,5,20,20
  -    GROUPBOX        " ",IDC_STATIC,26,2,181,59
  -    CONTROL         "ι  (&2)",IDC_LAYOUT_NEW2BUL,"Button",
  +    ICON            IDI_GENERAL,IDC_STATIC,4,5,18,21
  +    GROUPBOX        " ",IDC_STATIC,26,2,181,72
  +    CONTROL         "ι  (&2)",IDC_LAYOUT_OLD2BUL,"Button",
                       BS_AUTORADIOBUTTON,33,15,70,11
  -    CONTROL         "  (&3)",IDC_LAYOUT_NEW3BUL,"Button",
  +    CONTROL         "  (&3)",IDC_LAYOUT_3FIN,"Button",
                       BS_AUTORADIOBUTTON,33,29,70,11
  -    CONTROL         "ȸ  (&A)",IDC_LAYOUT_AHNMATAE,"Button",
  +    CONTROL         " 390 (&9)",IDC_LAYOUT_390,"Button",
                       BS_AUTORADIOBUTTON,33,43,70,11
  -    CONTROL         "ǥ ι  (&D)",IDC_LAYOUT_OLD2BUL,"Button",
  +    CONTROL         " Ʒ (&N)",IDC_LAYOUT_3SUN,"Button",
  +                    BS_AUTORADIOBUTTON,33,57,70,11
  +    CONTROL         "ι  (&D)",IDC_LAYOUT_NEW2BUL,"Button",
                       BS_AUTORADIOBUTTON,115,15,77,11
  -    CONTROL         " 390  (&9)",IDC_LAYOUT_390,"Button",
  +    CONTROL         "  (&S)",IDC_LAYOUT_NEW3BUL,"Button",
                       BS_AUTORADIOBUTTON,115,29,77,11
  -    CONTROL         "   (&F)",IDC_LAYOUT_3BULFINAL,"Button",
  +    CONTROL         "ȸ  (&A)",IDC_LAYOUT_AHNMATAE,"Button",
                       BS_AUTORADIOBUTTON,115,43,77,11
  -    CONTROL         "ġ  (&C)",IDC_CONCURRENT_TYPING,"Button",
  -                    BS_AUTOCHECKBOX | WS_TABSTOP,26,70,156,10
  +    CONTROL         "   (&U)",IDC_LAYOUT_USER,"Button",
  +                    BS_AUTORADIOBUTTON,115,57,77,11
  +
  +    CONTROL         "ġ (&M)",IDC_COMPOSITE_TYPING,"Button",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP,26,79,53,10
  +    CONTROL         "ġ (&C)",IDC_CONCURRENT_TYPING,"Button",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP,83,79,53,10
  +    CONTROL         "庸  (&V)",IDC_DVORAK_SUPPORT,"Button",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP,138,79,60,10
       CONTROL         "ڼ   (&J)",IDC_BACKSPACE_BY_JAMO,"Button",
  -                    BS_AUTOCHECKBOX | WS_TABSTOP,26,82,156,10
  -    CONTROL         "KS X 1002 Ȯ  (&X)",IDC_KSX1002_SUPPORT,
  -                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,26,94,156,10
  -    CONTROL         "KS X 1001 ѱ   (&K)",IDC_KSX1001_SUPPORT,
  -                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,26,106,156,10
  -    CONTROL         " ڸ  ü ڸ   (&O)",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP,26, 91,90,10
  +    CONTROL         "<Shift>-<SPACE> / ȯ (&H)",IDC_USE_SHIFT_SPACE,"Button",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP,26,103,124,10
  +    CONTROL         "Ȯ(KS X 1002)  (&X)",IDC_KSX1002_SUPPORT,
  +                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,26,115,156,10
  +    CONTROL         "ϼ(KS X 1001) ѱ   (&K)",IDC_KSX1001_SUPPORT,
  +                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,26,127,156,10
  +    CONTROL         "ù ڸ  ü ڸ  (&O)",
                       IDC_FULL_MULTIJOMO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
  -                    26,118,156,10
  +                    26,139,156,10
   END
   
   DLG_ABOUT DIALOG DISCARDABLE  30, 65, 215, 135
   STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION
   CAPTION "翡 ..."
   FONT 9, ""
  +LANGUAGE 0x12, 0x1
   BEGIN
       LTEXT           " ѱ Է±  1.0",IDC_STATIC,63,36,88,8
       ICON            IDI_ABOUT,IDC_STATIC,98,4,20,20
  @@ -100,6 +124,7 @@
   STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION
   CAPTION "DebugOptions"
   FONT 9, ""
  +LANGUAGE 0x12, 0x1
   BEGIN
       CONTROL         "LOGF_ENTRY",IDC_LOGF_ENTRY,"Button",BS_AUTOCHECKBOX | 
                       WS_TABSTOP,5,9,98,14
  @@ -137,18 +162,18 @@
       BEGIN
           BLOCK "041203b5"
           BEGIN
  -            VALUE "Comments", "\0"
  -            VALUE "CompanyName", "OpenLook Initiatives\0"
  +            VALUE "Comments", " ѱ Է±\0"
  +            VALUE "CompanyName", "Open Hangul Project\0"
               VALUE "FileDescription", " 1.0\0"
               VALUE "FileVersion", "1.0\0"
  -            VALUE "InternalName", " ѱ Է±\0"
  +            VALUE "InternalName", "SAENARU\0"
               VALUE "LegalCopyright", "Copyright (C) 2003 .\0"
               VALUE "LegalTrademarks", "\0"
               VALUE "OriginalFilename", "SAENARU.IME\0"
  -            VALUE "PrivateBuild", "\0"
  +//            VALUE "PrivateBuild", "\0"
               VALUE "ProductName", "\0"
               VALUE "ProductVersion", "1.00\0"
  -            VALUE "SpecialBuild", "\0"
  +//            VALUE "SpecialBuild", "\0"
           END
       END
       BLOCK "VarFileInfo"
  @@ -196,6 +221,7 @@
   //
   
   RIGHTCLKMENU MENU DISCARDABLE 
  +LANGUAGE 0x12, 0x1
   BEGIN
       POPUP ""
       BEGIN
  @@ -228,12 +254,14 @@
   //
   
   STRINGTABLE DISCARDABLE 
  +LANGUAGE 0x12, 0x1
   BEGIN
       IDS_DICFILENAME         "SAENARU.DIC"
       IDS_CONFIGNAME          " ѱ Է±"
   END
   
   STRINGTABLE DISCARDABLE 
  +LANGUAGE 0x12, 0x1
   BEGIN
       IDS_GL_NODICTIONARY     "Can not find dictionary"
       IDS_GL_TYPINGERROR      "Typing Error No Roman"
  
  
  


perky       03/12/27 07:03:08

  Added:       .        Makefile
  Log:
  Add basic install scripts. (it doesn't work yet)
  
  Revision  Changes    Path
  1.1                  saenaru/Makefile
  
  Index: Makefile
  ===================================================================
  #
  # Maintainer Buildtool for nmake
  #
  # $Saenaru: saenaru/Makefile,v 1.1 2003/12/26 22:03:07 perky Exp $
  #
  
  RELVERSION=	031226
  SETUPEXE=	Saenaru-$(RELVERSION).exe
  IMEBUILDDIR=	src\objfre\i386
  NSISDIR=	"C:\Program Files\NSIS"
  
  all: $(SETUPEXE)
  
  clean:
  	del $(SETUPEXE)
  	cd $(IMEBUILDDIR) && del /F /Q *.*
  
  $(SETUPEXE): $(IMEBUILDDIR)\saenaru.ime
  	echo "MERONG"
  
  $(IMEBUILDDIR)\saenaru.ime:
  	cd src && build -c
  
  # ex: ts=8 sts=8 sw=8 noet
  
  
  


perky       03/12/27 07:03:16

  Added:       setup    LICENSE.txt httplink-hangul.url
                        httplink-saenaru.url saenaru.nsi
  Log:
  Add basic install scripts. (it doesn't work yet)
  
  Revision  Changes    Path
  1.1                  saenaru/setup/LICENSE.txt
  
  Index: LICENSE.txt
  ===================================================================
  硻  ѱ Ʈ(http://kldp.net/projects/hangul)  
  Ʈ(http://saenaru.i18n.org)   ߵǰ ֽϴ.
  
   ѱ Ʈ/  --
    ڿ wkpark@chem.skku.ac.kr
     perky@i18n.org
    ȯ krisna@kldp.org
  
  硻  ҽ ۹̸, ۱ǹ ؼ   ࿡ 
  ô 쿡 Ͻ  ֽϴ. (2 BSD ̼ ¿ Ǿϴ.)
  
   (C) 2002-2003 ڿ, , ȯ.
   (C) 1990-1998 Microsoft Corporation.
   Ʈ  ۱ ȣ.
  
  ҽ ¶Ǵ  ·    ο   
     ˴ϴ:
  
  1. ҽ · ÿ ݵ  ۱ ǥ Ǵ ϵ ȿ ǥ
     Ǿִ ۱  Ʒ Ǽ ؾ մϴ.
  2.  · ÿ ݵ  ۱ ǥ    ,
     ׸ Ʒ Ǽ   Ǵ ڷῡ ؾ մϴ.
  
   ѱ Ʈ Ʈ ڵ  Ʈ "ִ ״" 
  ,  ǥ̳    Ư   Ÿź̳ ո 
   ʽϴ.  ѱ Ʈ Ʈ ڵ  , 
  , μ, Ư, , ʿ ջ,  ǰ̳  ü, 
   ս,  ս, ̵,  ߴ   װ  ο 
   ̳,  åӷп ϰų, ࿡ ϰų  å, λ 
   ǿ ϰų ׷ ƴϰų  Ʈ ߿ ߻ 
   ؼ  װ ̹  ̶  å ϴ.
  
   Ʈ Ϻδ ߱  Microsoft Corporation( Microsoft)
   ϰ ϴ Windows Driver Development Kit ( DDK) ԵǾ
  ִ ۹ ϰ ֽϴ. DDK Microsoft ϴ Windows 
  ü 󿡼 ۵ϴ Ʈ ؼ Ļ ۹ ϰ ֽϴ.
    Ʈ Բ Ǵ  ϵ Microsoft Windows ü
     , ٸ ü Ͽ ߻ϴ , ,
      ׿ ؼ  ѱ Ʈ Ʈ ڵ
  å ϴ.
  
  $Saenaru: saenaru/setup/LICENSE.txt,v 1.1 2003/12/26 22:03:08 perky Exp $
  
  
  
  1.1                  saenaru/setup/httplink-hangul.url
  
  Index: httplink-hangul.url
  ===================================================================
  [DEFAULT]
  BASEURL=http://kldp.net/projects/hangul
  [InternetShortcut]
  URL=http://kldp.net/projects/hangul
  Modified=D0462585F3CBC30142
  
  
  
  1.1                  saenaru/setup/httplink-saenaru.url
  
  Index: httplink-saenaru.url
  ===================================================================
  [DEFAULT]
  BASEURL=http://saenaru.i18n.org/
  [InternetShortcut]
  URL=http://saenaru.i18n.org/
  Modified=60EFCA79F3CBC30114
  
  
  
  1.1                  saenaru/setup/saenaru.nsi
  
  Index: saenaru.nsi
  ===================================================================
  ; Saenaru Installation Script
  ; Written by Hye-Shik Chang <perky@i18n.org>
  ; $Saenaru: saenaru/setup/saenaru.nsi,v 1.1 2003/12/26 22:03:08 perky Exp $
  
  !define RELVERSION      "031226"
  !define REGISTRY_PATH   "Software\OpenHangulProject\Saenaru"
  !define DDKBUILDDIR     "..\src\objfre\i386"
  !define RESOURCEDIR     "..\resource"
  !define SRCROOTDIR      ".."
  !define SMPATH          "$SMPROGRAMS\"
  
  ;---------------------
  ;Include Modern UI
  
    !include "MUI.nsh"
  
  ;--------------------------------
  ;Configuration
  
    ;General
    Name "  ${RELVERSION}"
    OutFile "Saenaru-${RELVERSION}.exe"
  
    ;Folder selection page
    InstallDir "$WINDIR\IME\Saenaru"
    
    ;Get install folder from registry if available
    InstallDirRegKey HKLM "${REGISTRY_PATH}" ""
  
  ;--------------------------------
  ;Pages
  
    !insertmacro MUI_PAGE_LICENSE "LICENSE.txt"
    !insertmacro MUI_PAGE_COMPONENTS
    !insertmacro MUI_PAGE_INSTFILES
    
    !insertmacro MUI_UNPAGE_CONFIRM
    !insertmacro MUI_UNPAGE_INSTFILES
    
  ;--------------------------------
  ;Interface Settings
  
    !define MUI_ABORTWARNING
    
  ;--------------------------------
  ;Languages
   
    !insertmacro MUI_LANGUAGE "Korean"
  
  ;--------------------------------
  ;Installer Sections
  
  Section " Է±" SecBody
  
    SectionIn RO
  
    SetOutPath "$SYSDIR"
    File "${DDKBUILDDIR}\saenaru.ime"
    SetOutPath "$WINDIR"
    File "${RESOURCEDIR}\saenaru.dic"
    ; XXX ߿ saenaru.dic WINDIR\ime\Saenaru Űܾ.
    SetOutPath "$INSTDIR"
    File /oname=saenaru.ico "${RESOURCEDIR}\about.ico"
    
    ;Store install folder
    WriteRegStr HKLM "${REGISTRY_PATH}" "" $INSTDIR
  
    ;IME keys
    WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "Layout file" "kbdkor.kbd"
    WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "Layout text" " ѱ Է±"
    WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "Layout display name" "ѱ Է± ()"
    WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "IME file" "SAENARU.IME"
    
    ;Create uninstaller
    WriteUninstaller "$INSTDIR\Uninstall.exe"
  
    ;Write uninstallation info
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Saenaru" "DisplayName" " ѱ Է±"
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Saenaru" "UninstallString" "$INSTDIR\Uninstall.exe"
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Saenaru" "InstallLocation" "$INSTDIR"
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Saenaru" "DisplayIcon" "$INSTDIR\saenaru.ico,-0"
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Saenaru" "DisplayVersion" "${RELVERSION}"
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Saenaru" "Publisher" "Open Hangul Project"
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Saenaru" "HelpLink" "http://saenaru.i18n.org"
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Saenaru" "URLInfoAbout" "http://kldp.net/projects/saenaru"
  
    ;Create short cuts
    CreateDirectory "${SMPATH}"
    SetOutPath "${SMPATH}"
    File "/oname= Ʈ.url" "httplink-saenaru.url"
    File "/oname= ѱ Ʈ.url" "httplink-hangul.url"
    CreateShortCut "${SMPATH}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
  
  SectionEnd
  
  
  Section /o " ҽ ڵ" SecSource
  
    SetOutPath "$INSTDIR\Source"
    File ${SRCROOTDIR}\DIRS
    File ${SRCROOTDIR}\LICENSE
    File ${SRCROOTDIR}\LICENSE.MICROSOFT
    File ${SRCROOTDIR}\Makefile
  
    SetOutPath "$INSTDIR\Source\doc"
    File ${SRCROOTDIR}\doc\saenaru.htm
  
    SetOutPath "$INSTDIR\Source\resource"
    File ${SRCROOTDIR}\resource\*.reg
    File ${SRCROOTDIR}\resource\*.bmp
    File ${SRCROOTDIR}\resource\*.ico
    File ${SRCROOTDIR}\resource\*.dlg
    File ${SRCROOTDIR}\resource\*.rcv
    File ${SRCROOTDIR}\resource\*.dic
  
    SetOutPath "$INSTDIR\Source\resource\button"
    File ${SRCROOTDIR}\resource\button\*.ico
  
    SetOutPath "$INSTDIR\Source\resource\text"
    File ${SRCROOTDIR}\resource\text\*.ico
  
    SetOutPath "$INSTDIR\Source\setup"
    File ${SRCROOTDIR}\setup\LICENSE.txt
    File ${SRCROOTDIR}\setup\saenaru.nsi
    File ${SRCROOTDIR}\setup\saenaru.inf
    File ${SRCROOTDIR}\setup\*.url
  
    SetOutPath "$INSTDIR\Source\src"
    File ${SRCROOTDIR}\src\*.rc
    File ${SRCROOTDIR}\src\makefile
    File ${SRCROOTDIR}\src\makefile.inc
    File ${SRCROOTDIR}\src\saenaru.def
    File ${SRCROOTDIR}\src\sources
    File ${SRCROOTDIR}\src\*.c
    File ${SRCROOTDIR}\src\*.h
    File ${SRCROOTDIR}\src\*.cpp
    File ${SRCROOTDIR}\src\*.def
  
  SectionEnd
  
  ;--------------------------------
  ;Descriptions
  
    LangString DESC_SecBody ${LANG_KOREAN} " Է±⸦  ⺻  ġմϴ."
  
    !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
      !insertmacro MUI_DESCRIPTION_TEXT ${SecBody} $(DESC_SecBody)
    !insertmacro MUI_FUNCTION_DESCRIPTION_END
  
  ;--------------------------------
  ;Uninstaller Section
  
  Section "Uninstall"
  
    Delete "$SYSDIR\saenaru.ime"
    Delete "$WINDIR\saenaru.dic"
  
    Delete "$INSTDIR\Source\DIRS"
    Delete "$INSTDIR\Source\LICENSE"
    Delete "$INSTDIR\Source\LICENSE.MICROSOFT"
    Delete "$INSTDIR\Source\Makefile"
    Delete "$INSTDIR\Source\doc\saenaru.htm"
    Delete "$INSTDIR\Source\resource\2set3set.reg"
    Delete "$INSTDIR\Source\resource\ARWDWN.ico"
    Delete "$INSTDIR\Source\resource\ARWUP.ico"
    Delete "$INSTDIR\Source\resource\about.ico"
    Delete "$INSTDIR\Source\resource\button\engkey.ico"
    Delete "$INSTDIR\Source\resource\button\hanjakey.ico"
    Delete "$INSTDIR\Source\resource\button\hankey.ico"
    Delete "$INSTDIR\Source\resource\check.bmp"
    Delete "$INSTDIR\Source\resource\close.bmp"
    Delete "$INSTDIR\Source\resource\face.bmp"
    Delete "$INSTDIR\Source\resource\full.ico"
    Delete "$INSTDIR\Source\resource\full_old.ico"
    Delete "$INSTDIR\Source\resource\general.ico"
    Delete "$INSTDIR\Source\resource\half.ico"
    Delete "$INSTDIR\Source\resource\half_old.ico"
    Delete "$INSTDIR\Source\resource\keyboard.ico"
    Delete "$INSTDIR\Source\resource\penindic.ico"
    Delete "$INSTDIR\Source\resource\saenaru.dic"
    Delete "$INSTDIR\Source\resource\saenaru.dlg"
    Delete "$INSTDIR\Source\resource\saenaru.ico"
    Delete "$INSTDIR\Source\resource\saenaru.rcv"
    Delete "$INSTDIR\Source\resource\saenaru0.dic"
    Delete "$INSTDIR\Source\resource\status.bmp"
    Delete "$INSTDIR\Source\resource\status_old.bmp"
    Delete "$INSTDIR\Source\resource\text\engkey.ico"
    Delete "$INSTDIR\Source\resource\text\hanjakey.ico"
    Delete "$INSTDIR\Source\resource\text\hankey.ico"
    Delete "$INSTDIR\Source\resource\uncheck.bmp"
    Delete "$INSTDIR\Source\setup\LICENSE.txt"
    Delete "$INSTDIR\Source\setup\httplink-hangul.url"
    Delete "$INSTDIR\Source\setup\httplink-saenaru.url"
    Delete "$INSTDIR\Source\setup\saenaru.inf"
    Delete "$INSTDIR\Source\setup\saenaru.nsi"
    Delete "$INSTDIR\Source\src\btncmd.cpp"
    Delete "$INSTDIR\Source\src\btnext.cpp"
    Delete "$INSTDIR\Source\src\btnime.cpp"
    Delete "$INSTDIR\Source\src\config.c"
    Delete "$INSTDIR\Source\src\data.c"
    Delete "$INSTDIR\Source\src\dic.c"
    Delete "$INSTDIR\Source\src\dic2.c"
    Delete "$INSTDIR\Source\src\fdebug.c"
    Delete "$INSTDIR\Source\src\hangul.c"
    Delete "$INSTDIR\Source\src\imm.c"
    Delete "$INSTDIR\Source\src\immsec.c"
    Delete "$INSTDIR\Source\src\immsec.h"
    Delete "$INSTDIR\Source\src\indicml.h"
    Delete "$INSTDIR\Source\src\input.c"
    Delete "$INSTDIR\Source\src\makefile"
    Delete "$INSTDIR\Source\src\makefile.inc"
    Delete "$INSTDIR\Source\src\process.c"
    Delete "$INSTDIR\Source\src\reg.c"
    Delete "$INSTDIR\Source\src\regword.c"
    Delete "$INSTDIR\Source\src\resource.h"
    Delete "$INSTDIR\Source\src\saenaru.c"
    Delete "$INSTDIR\Source\src\saenaru.def"
    Delete "$INSTDIR\Source\src\saenaru.h"
    Delete "$INSTDIR\Source\src\saenaru.rc"
    Delete "$INSTDIR\Source\src\sources"
    Delete "$INSTDIR\Source\src\subs.c"
    Delete "$INSTDIR\Source\src\toascii.c"
    Delete "$INSTDIR\Source\src\tsf.cpp"
    Delete "$INSTDIR\Source\src\tsf.h"
    Delete "$INSTDIR\Source\src\ui.c"
    Delete "$INSTDIR\Source\src\uicand.c"
    Delete "$INSTDIR\Source\src\uicomp.c"
    Delete "$INSTDIR\Source\src\uiguide.c"
    Delete "$INSTDIR\Source\src\uistate.c"
    Delete "$INSTDIR\Source\src\vksub.h"
    Delete "$INSTDIR\saenaru.ico"
    Delete "$INSTDIR\Uninstall.exe"
    RMDir "$INSTDIR\Source\src"
    RMDir "$INSTDIR\Source\setup"
    RMDir "$INSTDIR\Source\resource\text"
    RMDir "$INSTDIR\Source\resource\button"
    RMDir "$INSTDIR\Source\resource"
    RMDir "$INSTDIR\Source\doc"
    RMDir "$INSTDIR\Source"
    RMDir "$INSTDIR"
  
    Delete "${SMPATH}\*.*"
    RMDir "${SMPATH}"
  
    DeleteRegKey HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412"
    DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Saenaru"
    DeleteRegKey /ifempty HKLM "${REGISTRY_PATH}"
  
  SectionEnd
  
  ; ex: ts=8 sts=2 sw=2 et
  
  
  


perky       03/12/27 23:02:57

  Modified:    setup    saenaru.nsi
  Log:
  Fix kbddll name
  
  Revision  Changes    Path
  1.2       +2 -2      saenaru/setup/saenaru.nsi
  
  Index: saenaru.nsi
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/saenaru.nsi,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- saenaru.nsi	26 Dec 2003 22:03:08 -0000	1.1
  +++ saenaru.nsi	27 Dec 2003 14:02:57 -0000	1.2
  @@ -1,6 +1,6 @@
   ; Saenaru Installation Script
   ; Written by Hye-Shik Chang <perky@i18n.org>
  -; $Saenaru: saenaru/setup/saenaru.nsi,v 1.1 2003/12/26 22:03:08 perky Exp $
  +; $Saenaru: saenaru/setup/saenaru.nsi,v 1.2 2003/12/27 14:02:57 perky Exp $
   
   !define RELVERSION      "031226"
   !define REGISTRY_PATH   "Software\OpenHangulProject\Saenaru"
  @@ -66,7 +66,7 @@
     WriteRegStr HKLM "${REGISTRY_PATH}" "" $INSTDIR
   
     ;IME keys
  -  WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "Layout file" "kbdkor.kbd"
  +  WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "Layout file" "kbdkor.dll"
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "Layout text" " ѱ Է±"
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "Layout display name" "ѱ Է± ()"
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "IME file" "SAENARU.IME"
  
  
  


perky       03/12/28 00:20:43

  Modified:    .        Makefile
  Log:
  Install dictionary files into $INSTDIR.
  
  Revision  Changes    Path
  1.2       +5 -4      saenaru/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/Makefile,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Makefile	26 Dec 2003 22:03:07 -0000	1.1
  +++ Makefile	27 Dec 2003 15:20:42 -0000	1.2
  @@ -1,13 +1,13 @@
   #
   # Maintainer Buildtool for nmake
   #
  -# $Saenaru: saenaru/Makefile,v 1.1 2003/12/26 22:03:07 perky Exp $
  +# $Saenaru: saenaru/Makefile,v 1.2 2003/12/27 15:20:42 perky Exp $
   #
   
   RELVERSION=	031226
  -SETUPEXE=	Saenaru-$(RELVERSION).exe
  +SETUPEXE=	setup\Saenaru-$(RELVERSION).exe
   IMEBUILDDIR=	src\objfre\i386
  -NSISDIR=	"C:\Program Files\NSIS"
  +NSISDIR=	C:\Program Files\NSIS
   
   all: $(SETUPEXE)
   
  @@ -16,7 +16,8 @@
   	cd $(IMEBUILDDIR) && del /F /Q *.*
   
   $(SETUPEXE): $(IMEBUILDDIR)\saenaru.ime
  -	echo "MERONG"
  +	cd setup
  +	"$(NSISDIR)\makensis.exe" saenaru.nsi
   
   $(IMEBUILDDIR)\saenaru.ime:
   	cd src && build -c
  
  
  


perky       03/12/28 00:20:44

  Modified:    setup    saenaru.nsi
  Log:
  Install dictionary files into $INSTDIR.
  
  Revision  Changes    Path
  1.3       +3 -5      saenaru/setup/saenaru.nsi
  
  Index: saenaru.nsi
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/saenaru.nsi,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- saenaru.nsi	27 Dec 2003 14:02:57 -0000	1.2
  +++ saenaru.nsi	27 Dec 2003 15:20:43 -0000	1.3
  @@ -1,6 +1,6 @@
   ; Saenaru Installation Script
   ; Written by Hye-Shik Chang <perky@i18n.org>
  -; $Saenaru: saenaru/setup/saenaru.nsi,v 1.2 2003/12/27 14:02:57 perky Exp $
  +; $Saenaru: saenaru/setup/saenaru.nsi,v 1.3 2003/12/27 15:20:43 perky Exp $
   
   !define RELVERSION      "031226"
   !define REGISTRY_PATH   "Software\OpenHangulProject\Saenaru"
  @@ -56,10 +56,8 @@
   
     SetOutPath "$SYSDIR"
     File "${DDKBUILDDIR}\saenaru.ime"
  -  SetOutPath "$WINDIR"
  -  File "${RESOURCEDIR}\saenaru.dic"
  -  ; XXX ߿ saenaru.dic WINDIR\ime\Saenaru Űܾ.
     SetOutPath "$INSTDIR"
  +  File "${RESOURCEDIR}\saenaru.dic"
     File /oname=saenaru.ico "${RESOURCEDIR}\about.ico"
     
     ;Store install folder
  @@ -153,7 +151,7 @@
   Section "Uninstall"
   
     Delete "$SYSDIR\saenaru.ime"
  -  Delete "$WINDIR\saenaru.dic"
  +  Delete "$INSTDIR\saenaru.dic"
   
     Delete "$INSTDIR\Source\DIRS"
     Delete "$INSTDIR\Source\LICENSE"
  
  
  


perky       03/12/28 00:20:44

  Modified:    src      saenaru.c
  Log:
  Install dictionary files into $INSTDIR.
  
  Revision  Changes    Path
  1.4       +16 -2     saenaru/src/saenaru.c
  
  Index: saenaru.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- saenaru.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ saenaru.c	27 Dec 2003 15:20:44 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/saenaru.c,v 1.4 2003/12/27 15:20:44 perky Exp $
    */
   
   #include <windows.h>
  @@ -37,6 +37,20 @@
   #include "immsec.h"
   
   extern HANDLE hMutex;
  +
  +static int
  +GetSaenaruDirectory(LPTSTR lpDest, int max)
  +{
  +    static const TCHAR szIMEDir[] = TEXT("\\IME\\Saenaru");
  +    LPTSTR lpDestOrig = lpDest;
  +
  +    lpDest += GetWindowsDirectory(lpDest, 256);
  +    memcpy(lpDest, szIMEDir, sizeof(szIMEDir) - sizeof(TCHAR));
  +    lpDest += sizeof(szIMEDir) / sizeof(TCHAR) - 1;
  +
  +    return lpDest - lpDestOrig;
  +}
  +
   /**********************************************************************/
   /*    DLLEntry()                                                      */
   /**********************************************************************/
  @@ -81,7 +95,7 @@
   
               // Initialize for SAENARU.
               lpDicFileName = (LPTSTR)&szDicFileName;
  -            lpDicFileName += GetWindowsDirectory(lpDicFileName,256);
  +            lpDicFileName += GetSaenaruDirectory(lpDicFileName,256);
               if (*(lpDicFileName-1) != TEXT('\\'))
                   *lpDicFileName++ = TEXT('\\');
               LoadString( hInst, IDS_DICFILENAME, lpDicFileName, 128);
  
  
  


wkpark      03/12/30 09:24:18

  Modified:    resource saenaru.dic
  Log:
  fixed format
  
  Revision  Changes    Path
  1.2       +36 -21    saenaru/resource/saenaru.dic
  
  	<<Binary file>>
  
  


wkpark      03/12/30 09:34:31

  Removed:     resource saenaru.dic saenaru0.dic
  Log:
  remove *.dic


wkpark      03/12/30 09:38:32

  Added:       resource saenaru.dic
  Log:
  update as a binary
  
  Revision  Changes    Path
  1.4       +6330 -1   saenaru/resource/saenaru.dic
  
  	<<Binary file>>
  
  


wkpark      03/12/30 10:40:54

  Modified:    setup    LICENSE.txt
  Log:
  fixed email address
  
  Revision  Changes    Path
  1.2       +2 -2      saenaru/setup/LICENSE.txt
  
  Index: LICENSE.txt
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/LICENSE.txt,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LICENSE.txt	26 Dec 2003 22:03:08 -0000	1.1
  +++ LICENSE.txt	30 Dec 2003 01:40:54 -0000	1.2
  @@ -2,7 +2,7 @@
   Ʈ(http://saenaru.i18n.org)   ߵǰ ֽϴ.
   
    ѱ Ʈ/  --
  -  ڿ wkpark@chem.skku.ac.kr
  +  ڿ wkpark@kldp.org
      perky@i18n.org
     ȯ krisna@kldp.org
   
  @@ -39,4 +39,4 @@
       ׿ ؼ  ѱ Ʈ Ʈ ڵ
   å ϴ.
   
  -$Saenaru: saenaru/setup/LICENSE.txt,v 1.1 2003/12/26 22:03:08 perky Exp $
  +$Saenaru: saenaru/setup/LICENSE.txt,v 1.2 2003/12/30 01:40:54 wkpark Exp $
  
  
  


wkpark      03/12/30 10:43:58

  Modified:    src      ui.c
  Log:
  fixed dvorak bug #300138
  
  Revision  Changes    Path
  1.4       +7 -5      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ui.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ ui.c	30 Dec 2003 01:43:57 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.4 2003/12/30 01:43:57 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -1178,16 +1178,18 @@
           return CallNextHookEx(hHookWnd, code, wParam, lParam);
   
       if (dwOptionFlag & DVORAK_SUPPORT) {
  -        HIMC hIMC = NULL;
           HWND hwnd = GetFocus ();
  -        LPINPUTCONTEXT lpIMC;
  +        
  +        dvorak = TRUE;
   
           if (hwnd != NULL) {
  +            HIMC hIMC = NULL;
  +            LPINPUTCONTEXT lpIMC;
  +
               hIMC = ImmGetContext (hwnd);
               lpIMC = ImmLockIMC(hIMC);
  -            if (lpIMC) {
  +            if (lpIMC)
                   dvorak = !(lpIMC->fdwConversion & IME_CMODE_NATIVE);
  -            }
               ImmUnlockIMC(hIMC);
           }
       }
  
  
  


wkpark      04/10/07 03:18:58

  Modified:    src      hangul.c imm.c
  Log:
  fixed vim bug
  
  Revision  Changes    Path
  1.3       +5 -8      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- hangul.c	26 Dec 2003 09:26:33 -0000	1.2
  +++ hangul.c	6 Oct 2004 18:18:52 -0000	1.3
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.2 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.3 2004/10/06 18:18:52 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1383,7 +1383,7 @@
       TRANSMSG GnMsg;
       DWORD dwGCR = 0L;
   
  -    DWORD hkey;
  +    DWORD hkey= code;
       WCHAR cs = 0;
       register BOOL fModeInit = FALSE;
       BOOL capital = lpbKeyState[VK_CAPITAL];
  @@ -1400,7 +1400,8 @@
   	    code += 'a' - 'A';
       }
   
  -    hkey = keyToHangulKey( code );
  +    if (fdwConversion & IME_CMODE_NATIVE)
  +	hkey = keyToHangulKey( code );
   #if 1
       if ( (!hkey || (hkey >= TEXT('!') && hkey <= TEXT('~')) )
   	    && !IsCompStr(hIMC)) {
  @@ -1917,8 +1918,6 @@
                   comb = hangul_compose(ic->jong, jong);
                   if ( hangul_is_jongseong(comb) )
                   {
  -                    // CP949ΰ ?
  -                    // TODO KS X 1001 ԷµǴ ɼǵ 
                       if (hangul_jamo_to_syllable(ic->cho,ic->jung,comb))
                       {
                           ic->jong=comb;
  @@ -1966,8 +1965,6 @@
                   comb = hangul_compose(ic->jong, jamo);
                   if ( comb )
                   {
  -                    // CP949ΰ ?
  -                    // TODO KS X 1001 ԷµǴ ɼǵ 
                       if (hangul_jamo_to_syllable(ic->cho,ic->jung,comb))
                       {
                           ic->jong=comb;
  @@ -2169,7 +2166,7 @@
                   }
                   break;
               default: // ߼ + 
  -#if 1
  +#if 0
                   if (ic->cho && !ic->jong && ctyping) {
   		    // ߼   ä ְ
   		    //  Էµ ̸, ߼   ִ 
  
  
  
  1.4       +3 -3      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- imm.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ imm.c	6 Oct 2004 18:18:52 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.4 2004/10/06 18:18:52 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -206,11 +206,11 @@
   
               if (ImmGetConversionStatus (hIMC, &dwConversion, &dwSentense))
               {
  -                if (fOpen)
  +                if (fOpen && dwConversion & IME_CMODE_NATIVE)
                   {
                       dwConversion &= ~IME_CMODE_NATIVE;
                       dwConversion &= ~IME_CMODE_FULLSHAPE;
  -                    MyDebugPrint((TEXT("O Hangul key\n")));
  +                    MyDebugPrint((TEXT("x Hangul key\n")));
                       fOpen=FALSE;
                   }
                   else
  
  
  


wkpark      04/10/08 00:40:36

  Modified:    src      hangul.c
  Log:
  fixed ahnmatae compose table
  
  Revision  Changes    Path
  1.4       +2 -2      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- hangul.c	6 Oct 2004 18:18:52 -0000	1.3
  +++ hangul.c	7 Oct 2004 15:40:34 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.3 2004/10/06 18:18:52 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.4 2004/10/07 15:40:34 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1011,7 +1011,7 @@
     { 0x11731175, 0x1174 }, /* jungseong eu     + i	= yi		*/
     { 0x11a811a8, 0x11a9 }, /* jongseong kiyeok + kiyeok	= ssangekiyeok	*/
     { 0x11a811ba, 0x11aa }, /* jongseong kiyeok + sios	= kiyeok-sois	*/
  -  { 0x11a811bc, 0x11aa }, /* jongseong kiyeok + sios	= ssangekiyeok	*/
  +  { 0x11a811bc, 0x11a9 }, /* jongseong kiyeok + ieung	= ssangekiyeok	*/
   
     { 0x11ab11bd, 0x11ac }, /* jongseong nieun  + cieuc	= nieun-cieuc	*/
     { 0x11ab11c2, 0x11ad }, /* jongseong nieun  + hieuh	= nieun-hieuh	*/
  
  
  


wkpark      04/10/08 02:15:47

  Modified:    resource 2set3set.reg
  Added:       resource ahnmatae.reg
  Log:
  add a ahnmatae key map
  fix encoding
  
  Revision  Changes    Path
  1.3       +174 -173  saenaru/resource/2set3set.reg
  
  	<<Binary file>>
  
  
  1.1                  saenaru/resource/ahnmatae.reg
  
  	<<Binary file>>
  
  


wkpark      04/10/08 02:20:31

  Modified:    resource 2set3set.reg ahnmatae.reg
  Log:
  oops! fix encoding
  
  Revision  Changes    Path
  1.4       +173 -174  saenaru/resource/2set3set.reg
  
  Index: 2set3set.reg
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/resource/2set3set.reg,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  Binary files /tmp/cvs9NrxcV and /tmp/cvsyPqilG differ
  
  
  
  1.2       +127 -128  saenaru/resource/ahnmatae.reg
  
  Index: ahnmatae.reg
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/resource/ahnmatae.reg,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  Binary files /tmp/cvsO5mj6H and /tmp/cvs4wspsi differ
  
  
  


wkpark      04/10/08 03:45:46

  Modified:    resource 2set3set.reg ahnmatae.reg
  Log:
  fix keyboard names and add the keyboard type
  
  Revision  Changes    Path
  1.5       +339 -170  saenaru/resource/2set3set.reg
  
  Index: 2set3set.reg
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/resource/2set3set.reg,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- 2set3set.reg	7 Oct 2004 17:20:24 -0000	1.4
  +++ 2set3set.reg	7 Oct 2004 18:45:45 -0000	1.5
  @@ -1,173 +1,342 @@
  -REGEDIT4
  +Windows Registry Editor Version 5.00
   
   [HKEY_LOCAL_MACHINE\SOFTWARE\OpenHangulProject\Saenaru\Keyboard]
  -"ι"=hex(7):23,20,74,68,69,73,20,66,69,6c,65,20,69,73,20,74,68,65,20,6e,65,77,\
  -  2d,32,73,65,74,20,6b,65,79,62,6f,61,72,64,20,6d,61,70,20,66,69,6c,65,20,66,\
  -  6f,72,20,4e,61,62,69,00,4e,61,6d,65,3a,20,c8,50,8c,dd,00,54,79,70,65,32,00,\
  -  55,30,30,33,42,09,55,31,31,36,32,09,23,20,58,4b,5f,6f,3a,20,6a,75,6e,67,73,\
  -  65,6f,6e,67,20,61,65,00,55,30,30,34,31,09,55,31,31,31,32,09,23,20,58,4b,5f,\
  -  41,3a,20,63,68,6f,73,65,6f,6e,67,20,68,69,65,75,68,00,55,30,30,34,32,09,55,\
  -  31,31,30,65,09,23,20,58,4b,5f,42,3a,20,63,68,6f,73,65,6f,6e,67,20,63,68,69,\
  -  65,75,63,68,00,55,30,30,34,33,09,55,31,31,31,30,09,23,20,58,4b,5f,43,3a,20,\
  -  63,68,6f,73,65,6f,6e,67,20,74,68,69,65,75,74,68,00,55,30,30,34,34,09,55,31,\
  -  31,30,62,09,23,20,58,4b,5f,44,3a,20,63,68,6f,73,65,6f,6e,67,20,69,65,75,6e,\
  -  67,00,55,30,30,34,35,09,55,31,31,30,34,09,23,20,58,4b,5f,45,3a,20,63,68,6f,\
  -  73,65,6f,6e,67,20,73,73,61,6e,67,74,69,6b,65,75,74,00,55,30,30,34,36,09,55,\
  -  31,31,30,31,09,23,20,58,4b,5f,46,3a,20,63,68,6f,73,65,6f,6e,67,20,73,73,61,\
  -  6e,67,6b,69,79,65,6f,6b,00,55,30,30,34,37,09,55,31,31,30,61,09,23,20,58,4b,\
  -  5f,47,3a,20,63,68,6f,73,65,6f,6e,67,20,73,73,61,6e,67,73,69,6f,73,00,55,30,\
  -  30,34,38,09,55,31,31,36,39,09,23,20,58,4b,5f,48,3a,20,6a,75,6e,67,73,65,6f,\
  -  6e,67,20,6f,00,55,30,30,34,39,09,55,31,31,36,35,09,23,20,58,4b,5f,49,3a,20,\
  -  6a,75,6e,67,73,65,6f,6e,67,20,65,6f,00,55,30,30,34,61,09,55,31,31,37,35,09,\
  -  23,20,58,4b,5f,4a,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,69,00,55,30,30,34,62,\
  -  09,55,31,31,36,34,09,23,20,58,4b,5f,4b,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,\
  -  79,61,65,00,55,30,30,34,63,09,55,31,31,36,38,09,23,20,58,4b,5f,4c,3a,20,6a,\
  -  75,6e,67,73,65,6f,6e,67,20,79,65,00,55,30,30,34,64,09,55,31,31,36,33,09,23,\
  -  20,58,4b,5f,4d,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,79,61,00,55,30,30,34,65,\
  -  09,55,31,31,37,32,09,23,20,58,4b,5f,4e,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,\
  -  79,75,00,55,30,30,34,66,09,55,31,31,36,36,09,23,20,58,4b,5f,4f,3a,20,6a,75,\
  -  6e,67,73,65,6f,6e,67,20,65,00,55,30,30,35,30,09,55,31,31,36,64,09,23,20,58,\
  -  4b,5f,50,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,79,6f,00,55,30,30,35,31,09,55,\
  -  31,31,30,38,09,23,20,58,4b,5f,51,3a,20,63,68,6f,73,65,6f,6e,67,20,73,73,61,\
  -  6e,67,70,69,65,75,70,00,55,30,30,35,32,09,55,31,31,30,35,09,23,20,58,4b,5f,\
  -  52,3a,20,63,68,6f,73,65,6f,6e,67,20,72,69,65,75,6c,00,55,30,30,35,33,09,55,\
  -  31,31,30,32,09,23,20,58,4b,5f,53,3a,20,63,68,6f,73,65,6f,6e,67,20,6e,69,65,\
  -  75,6e,00,55,30,30,35,34,09,55,31,31,30,64,09,23,20,58,4b,5f,54,3a,20,63,68,\
  -  6f,73,65,6f,6e,67,20,73,73,61,6e,67,63,69,65,75,63,00,55,30,30,35,35,09,55,\
  -  31,31,36,65,09,23,20,58,4b,5f,55,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,75,00,\
  -  55,30,30,35,36,09,55,31,31,31,31,09,23,20,58,4b,5f,56,3a,20,63,68,6f,73,65,\
  -  6f,6e,67,20,70,68,69,65,75,70,68,00,55,30,30,35,37,09,55,31,31,30,36,09,23,\
  -  20,58,4b,5f,57,3a,20,63,68,6f,73,65,6f,6e,67,20,6d,69,65,75,6d,00,55,30,30,\
  -  35,38,09,55,31,31,30,66,09,23,20,58,4b,5f,58,3a,20,63,68,6f,73,65,6f,6e,67,\
  -  20,6b,68,69,65,75,6b,68,00,55,30,30,35,39,09,55,31,31,36,37,09,23,20,58,4b,\
  -  5f,59,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,79,65,6f,00,55,30,30,35,61,09,55,\
  -  30,30,33,62,09,23,20,58,4b,5f,5a,3a,20,3b,00,55,30,30,36,31,09,55,31,31,31,\
  -  32,09,23,20,58,4b,5f,61,3a,20,63,68,6f,73,65,6f,6e,67,20,68,69,65,75,68,00,\
  -  55,30,30,36,32,09,55,31,31,30,65,09,23,20,58,4b,5f,62,3a,20,63,68,6f,73,65,\
  -  6f,6e,67,20,63,68,69,65,75,63,68,00,55,30,30,36,33,09,55,31,31,31,30,09,23,\
  -  20,58,4b,5f,63,3a,20,63,68,6f,73,65,6f,6e,67,20,74,68,69,65,75,74,68,00,55,\
  -  30,30,36,34,09,55,31,31,30,62,09,23,20,58,4b,5f,64,3a,20,63,68,6f,73,65,6f,\
  -  6e,67,20,69,65,75,6e,67,00,55,30,30,36,35,09,55,31,31,30,33,09,23,20,58,4b,\
  -  5f,65,3a,20,63,68,6f,73,65,6f,6e,67,20,74,69,6b,65,75,74,00,55,30,30,36,36,\
  -  09,55,31,31,30,30,09,23,20,58,4b,5f,66,3a,20,63,68,6f,73,65,6f,6e,67,20,6b,\
  -  69,79,65,6f,6b,00,55,30,30,36,37,09,55,31,31,30,39,09,23,20,58,4b,5f,67,3a,\
  -  20,63,68,6f,73,65,6f,6e,67,20,73,69,6f,73,00,55,30,30,36,38,09,55,31,31,36,\
  -  39,09,23,20,58,4b,5f,68,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,6f,00,55,30,30,\
  -  36,39,09,55,31,31,36,35,09,23,20,58,4b,5f,69,3a,20,6a,75,6e,67,73,65,6f,6e,\
  -  67,20,65,6f,00,55,30,30,36,61,09,55,31,31,37,35,09,23,20,58,4b,5f,6a,3a,20,\
  -  6a,75,6e,67,73,65,6f,6e,67,20,69,00,55,30,30,36,62,09,55,31,31,36,31,09,23,\
  -  20,58,4b,5f,6b,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,61,00,55,30,30,36,63,09,\
  -  55,31,31,37,33,09,23,20,58,4b,5f,6c,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,65,\
  -  75,00,55,30,30,36,64,09,55,31,31,36,33,09,23,20,58,4b,5f,6d,3a,20,6a,75,6e,\
  -  67,73,65,6f,6e,67,20,79,61,00,55,30,30,36,65,09,55,31,31,37,32,09,23,20,58,\
  -  4b,5f,6e,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,79,75,00,55,30,30,36,66,09,55,\
  -  31,31,36,36,09,23,20,58,4b,5f,6f,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,65,00,\
  -  55,30,30,37,30,09,55,31,31,36,64,09,23,20,58,4b,5f,70,3a,20,6a,75,6e,67,73,\
  -  65,6f,6e,67,20,79,6f,00,55,30,30,37,31,09,55,31,31,30,37,09,23,20,58,4b,5f,\
  -  71,3a,20,63,68,6f,73,65,6f,6e,67,20,70,69,65,75,70,00,55,30,30,37,32,09,55,\
  -  31,31,30,35,09,23,20,58,4b,5f,72,3a,20,63,68,6f,73,65,6f,6e,67,20,72,69,65,\
  -  75,6c,00,55,30,30,37,33,09,55,31,31,30,32,09,23,20,58,4b,5f,73,3a,20,63,68,\
  -  6f,73,65,6f,6e,67,20,6e,69,65,75,6e,00,55,30,30,37,34,09,55,31,31,30,63,09,\
  -  23,20,58,4b,5f,74,3a,20,63,68,6f,73,65,6f,6e,67,20,63,69,65,75,63,00,55,30,\
  -  30,37,35,09,55,31,31,36,65,09,23,20,58,4b,5f,75,3a,20,6a,75,6e,67,73,65,6f,\
  -  6e,67,20,75,00,55,30,30,37,36,09,55,31,31,31,31,09,23,20,58,4b,5f,76,3a,20,\
  -  63,68,6f,73,65,6f,6e,67,20,70,68,69,65,75,70,68,00,55,30,30,37,37,09,55,31,\
  -  31,30,36,09,23,20,58,4b,5f,77,3a,20,63,68,6f,73,65,6f,6e,67,20,6d,69,65,75,\
  -  6d,00,55,30,30,37,38,09,55,31,31,30,66,09,23,20,58,4b,5f,78,3a,20,63,68,6f,\
  -  73,65,6f,6e,67,20,6b,68,69,65,75,6b,68,00,55,30,30,37,39,09,55,31,31,36,37,\
  -  09,23,20,58,4b,5f,79,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,79,65,6f,00,55,30,\
  -  30,37,61,09,55,30,30,33,62,09,23,20,58,4b,5f,7a,3a,20,3b,00,00
  -""=hex(7):23,20,74,68,69,73,20,66,69,6c,65,20,69,73,20,74,68,65,20,6e,65,77,\
  -  2d,33,73,65,74,20,6b,65,79,62,6f,61,72,64,20,6d,61,70,20,66,69,6c,65,20,66,\
  -  6f,72,20,4e,61,62,69,00,4e,61,6d,65,3a,20,c8,38,8c,dd,00,54,79,70,65,33,00,\
  -  55,30,30,32,63,09,55,31,31,43,32,09,23,20,58,4b,5f,2c,3a,09,6a,6f,6e,67,73,\
  -  65,6f,6e,67,20,68,69,65,75,68,09,09,09,00,55,30,30,32,65,09,55,31,31,43,30,\
  -  09,23,20,58,4b,5f,2e,3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,74,68,69,6b,65,75,\
  -  74,68,00,55,30,30,33,31,09,55,30,30,32,63,09,23,20,58,4b,5f,31,3a,20,63,6f,\
  -  6d,6d,61,00,55,30,30,33,32,09,55,30,30,32,65,09,23,20,58,4b,5f,32,3a,20,70,\
  -  65,72,69,6f,64,00,55,30,30,33,33,09,55,31,31,30,66,09,23,20,58,4b,5f,33,3a,\
  -  20,63,68,6f,73,65,6f,6e,67,20,6b,68,69,65,75,6b,68,00,55,30,30,33,34,09,55,\
  -  31,31,31,30,09,23,20,58,4b,5f,34,3a,20,63,68,6f,73,65,6f,6e,67,20,74,68,69,\
  -  65,75,74,68,00,55,30,30,33,35,09,55,31,31,31,31,09,23,20,58,4b,5f,35,3a,20,\
  -  63,68,6f,73,65,6f,6e,67,20,70,68,69,65,75,70,68,00,55,30,30,33,36,09,55,31,\
  -  31,30,65,09,23,20,58,4b,5f,36,3a,20,63,68,6f,73,65,6f,6e,67,20,63,68,69,65,\
  -  75,63,68,00,55,30,30,33,41,09,55,30,30,33,34,09,23,20,58,4b,5f,63,6f,6c,6f,\
  -  6e,3a,20,34,00,55,30,30,33,42,09,55,31,31,36,32,09,23,20,58,4b,5f,6f,3a,20,\
  -  6a,75,6e,67,73,65,6f,6e,67,20,61,65,00,55,30,30,34,31,09,55,31,31,31,65,09,\
  -  23,20,58,4b,5f,41,3a,20,63,68,6f,73,65,6f,6e,67,20,68,69,65,75,68,00,55,30,\
  -  30,34,32,09,55,31,31,42,44,09,23,20,58,4b,5f,42,3a,09,6a,6f,67,6e,73,65,6f,\
  -  6e,67,20,63,69,65,75,63,20,09,09,00,55,30,30,34,33,09,55,31,31,42,46,09,23,\
  -  20,58,4b,5f,43,3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,6b,68,69,65,75,6b,68,09,\
  -  09,00,55,30,30,34,34,09,55,31,31,30,62,09,23,20,58,4b,5f,44,3a,20,63,68,6f,\
  -  73,65,6f,6e,67,20,69,65,75,6e,67,00,55,30,30,34,35,09,55,31,31,30,42,09,23,\
  -  20,58,4b,5f,45,3a,20,63,68,6f,73,65,6f,6e,67,20,73,73,61,6e,67,74,69,6b,65,\
  -  75,74,00,55,30,30,34,36,09,55,31,31,30,31,09,23,20,58,4b,5f,46,3a,20,63,68,\
  -  6f,73,65,6f,6e,67,20,73,73,61,6e,67,6b,69,79,65,6f,6b,00,55,30,30,34,37,09,\
  -  55,31,31,30,41,09,23,20,58,4b,5f,47,3a,20,63,68,6f,73,65,6f,6e,67,20,73,73,\
  -  61,6e,67,73,69,6f,73,00,55,30,30,34,38,09,55,31,31,36,39,09,23,20,58,4b,5f,\
  -  48,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,6f,00,55,30,30,34,39,09,55,31,31,36,\
  -  35,09,23,20,58,4b,5f,49,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,65,6f,00,55,30,\
  -  30,34,61,09,55,31,31,37,35,09,23,20,58,4b,5f,4a,3a,20,6a,75,6e,67,73,65,6f,\
  -  6e,67,20,69,00,55,30,30,34,62,09,55,31,31,36,34,09,23,20,58,4b,5f,4b,3a,20,\
  -  6a,75,6e,67,73,65,6f,6e,67,20,79,61,65,00,55,30,30,34,63,09,55,31,31,36,38,\
  -  09,23,20,58,4b,5f,4c,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,79,65,00,55,30,30,\
  -  34,64,09,55,31,31,42,43,09,23,20,58,4b,5f,4d,3a,09,6a,6f,6e,67,73,65,6f,6e,\
  -  67,20,69,65,75,6e,67,00,55,30,30,34,65,09,55,31,31,42,41,09,23,20,58,4b,5f,\
  -  6e,3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,73,69,6f,73,09,09,09,00,55,30,30,34,\
  -  66,09,55,31,31,36,36,09,23,20,58,4b,5f,4f,3a,20,6a,75,6e,67,73,65,6f,6e,67,\
  -  20,65,00,55,30,30,35,30,09,55,31,31,36,64,09,23,20,58,4b,5f,50,3a,20,6a,75,\
  -  6e,67,73,65,6f,6e,67,20,79,6f,00,55,30,30,35,31,09,55,31,31,30,38,09,23,20,\
  -  58,4b,5f,51,3a,20,63,68,6f,73,65,6f,6e,67,20,73,73,61,6e,67,70,69,65,75,70,\
  -  00,55,30,30,35,32,09,55,31,31,30,35,09,23,20,58,4b,5f,52,3a,20,63,68,6f,73,\
  -  65,6f,6e,67,20,72,69,65,75,6c,00,55,30,30,35,33,09,55,31,31,30,32,09,23,20,\
  -  58,4b,5f,53,3a,20,63,68,6f,73,65,6f,6e,67,20,6e,69,65,75,6e,00,55,30,30,35,\
  -  34,09,55,31,31,30,44,09,23,20,58,4b,5f,54,3a,20,63,68,6f,73,65,6f,6e,67,20,\
  -  73,73,61,6e,67,63,69,65,75,63,00,55,30,30,35,35,09,55,31,31,36,45,09,23,20,\
  -  58,4b,5f,55,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,75,00,55,30,30,35,36,09,55,\
  -  31,31,41,45,09,23,20,58,4b,5f,56,3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,74,69,\
  -  6b,65,75,74,09,09,00,55,30,30,35,37,09,55,31,31,30,36,09,23,20,58,4b,5f,57,\
  -  3a,20,63,68,6f,73,65,6f,6e,67,20,6d,69,65,75,6d,00,55,30,30,35,38,09,55,31,\
  -  31,43,31,09,23,20,58,4b,5f,58,3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,70,68,69,\
  -  65,75,70,68,09,09,00,55,30,30,35,39,09,55,31,31,36,37,09,23,20,58,4b,5f,59,\
  -  3a,20,6a,75,6e,67,73,65,6f,6e,67,20,79,65,6f,00,55,30,30,35,61,09,55,31,31,\
  -  42,45,09,23,20,58,4b,5f,5a,3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,63,68,69,65,\
  -  75,63,68,09,09,00,55,30,30,35,62,09,55,31,31,37,32,09,23,20,58,4b,5f,5b,3a,\
  -  20,6a,75,6e,67,73,65,6f,6e,67,20,79,75,00,55,30,30,35,64,09,55,31,31,36,33,\
  -  09,23,20,58,4b,5f,5d,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,79,61,00,55,30,30,\
  -  36,31,09,55,31,31,31,32,09,23,20,58,4b,5f,61,3a,20,63,68,6f,73,65,6f,6e,67,\
  -  20,68,69,65,75,68,00,55,30,30,36,32,09,55,31,31,41,42,09,23,20,58,4b,5f,62,\
  -  3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,6e,69,65,75,6e,00,55,30,30,36,33,09,55,\
  -  31,31,41,38,09,23,20,58,4b,5f,63,3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,6b,69,\
  -  79,65,6f,6b,00,55,30,30,36,34,09,55,31,31,30,42,09,23,20,58,4b,5f,64,3a,20,\
  -  63,68,6f,73,65,6f,6e,67,20,69,65,75,6e,67,00,55,30,30,36,35,09,55,31,31,30,\
  -  33,09,23,20,58,4b,5f,65,3a,20,63,68,6f,73,65,6f,6e,67,20,74,69,6b,65,75,74,\
  -  00,55,30,30,36,36,09,55,31,31,30,30,09,23,20,58,4b,5f,66,3a,20,63,68,6f,73,\
  -  65,6f,6e,67,20,6b,69,79,65,6f,6b,00,55,30,30,36,37,09,55,31,31,30,39,09,23,\
  -  20,58,4b,5f,67,3a,20,63,68,6f,73,65,6f,6e,67,20,73,69,6f,73,00,55,30,30,36,\
  -  38,09,55,31,31,36,39,09,23,20,58,4b,5f,68,3a,20,6a,75,6e,67,73,65,6f,6e,67,\
  -  20,6f,00,55,30,30,36,39,09,55,31,31,36,35,09,23,20,58,4b,5f,69,3a,20,6a,75,\
  -  6e,67,73,65,6f,6e,67,20,65,6f,00,55,30,30,36,61,09,55,31,31,37,35,09,23,20,\
  -  58,4b,5f,6a,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,69,00,55,30,30,36,62,09,55,\
  -  31,31,36,31,09,23,20,58,4b,5f,6b,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,61,00,\
  -  55,30,30,36,63,09,55,31,31,37,33,09,23,20,58,4b,5f,6c,3a,20,6a,75,6e,67,73,\
  -  65,6f,6e,67,20,65,75,00,55,30,30,36,64,09,55,31,31,42,43,09,23,20,58,4b,5f,\
  -  6d,3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,69,65,75,6e,67,00,55,30,30,36,65,09,\
  -  55,31,31,42,41,09,23,20,58,4b,5f,6e,3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,73,\
  -  69,6f,73,00,55,30,30,36,66,09,55,31,31,36,36,09,23,20,58,4b,5f,6f,3a,20,6a,\
  -  75,6e,67,73,65,6f,6e,67,20,65,00,55,30,30,37,30,09,55,31,31,36,44,09,23,20,\
  -  58,4b,5f,70,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,79,6f,00,55,30,30,37,31,09,\
  -  55,31,31,30,37,09,23,20,58,4b,5f,71,3a,20,63,68,6f,73,65,6f,6e,67,20,70,69,\
  -  65,75,70,00,55,30,30,37,32,09,55,31,31,30,35,09,23,20,58,4b,5f,72,3a,20,63,\
  -  68,6f,73,65,6f,6e,67,20,72,69,65,75,6c,00,55,30,30,37,33,09,55,31,31,30,32,\
  -  09,23,20,58,4b,5f,73,3a,20,63,68,6f,73,65,6f,6e,67,20,6e,69,65,75,6e,00,55,\
  -  30,30,37,34,09,55,31,31,30,43,09,23,20,58,4b,5f,74,3a,20,63,68,6f,73,65,6f,\
  -  6e,67,20,63,69,65,75,63,00,55,30,30,37,35,09,55,31,31,36,45,09,23,20,58,4b,\
  -  5f,75,3a,20,6a,75,6e,67,73,65,6f,6e,67,20,75,00,55,30,30,37,36,09,55,31,31,\
  -  41,46,09,23,20,58,4b,5f,76,3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,72,69,65,75,\
  -  6c,00,55,30,30,37,37,09,55,31,31,30,36,09,23,20,58,4b,5f,77,3a,20,63,68,6f,\
  -  73,65,6f,6e,67,20,6d,69,65,75,6d,00,55,30,30,37,38,09,55,31,31,42,37,09,23,\
  -  20,58,4b,5f,78,3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,6d,69,65,75,6d,00,55,30,\
  -  30,37,39,09,55,31,31,36,37,09,23,20,58,4b,5f,79,3a,20,6a,75,6e,67,73,65,6f,\
  -  6e,67,20,79,65,6f,00,55,30,30,37,61,09,55,31,31,42,38,09,23,20,58,4b,5f,7a,\
  -  3a,09,6a,6f,6e,67,73,65,6f,6e,67,20,70,69,65,75,70,00,00
  +"ι"=hex(7):23,00,20,00,74,00,68,00,69,00,73,00,20,00,66,00,69,00,6c,00,65,00,\
  +  20,00,69,00,73,00,20,00,74,00,68,00,65,00,20,00,6e,00,65,00,77,00,2d,00,32,\
  +  00,73,00,65,00,74,00,20,00,6b,00,65,00,79,00,62,00,6f,00,61,00,72,00,64,00,\
  +  20,00,6d,00,61,00,70,00,20,00,66,00,69,00,6c,00,65,00,20,00,66,00,6f,00,72,\
  +  00,20,00,4e,00,61,00,62,00,69,00,00,00,4e,00,61,00,6d,00,65,00,3a,00,20,00,\
  +  c8,c0,50,b4,8c,bc,00,00,54,00,79,00,70,00,65,00,32,00,00,00,55,00,30,00,30,\
  +  00,33,00,42,00,09,00,55,00,31,00,31,00,36,00,32,00,09,00,23,00,20,00,58,00,\
  +  4b,00,5f,00,6f,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,\
  +  00,67,00,20,00,61,00,65,00,00,00,55,00,30,00,30,00,34,00,31,00,09,00,55,00,\
  +  31,00,31,00,31,00,32,00,09,00,23,00,20,00,58,00,4b,00,5f,00,41,00,3a,00,20,\
  +  00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,68,00,69,00,65,00,\
  +  75,00,68,00,00,00,55,00,30,00,30,00,34,00,32,00,09,00,55,00,31,00,31,00,30,\
  +  00,65,00,09,00,23,00,20,00,58,00,4b,00,5f,00,42,00,3a,00,20,00,63,00,68,00,\
  +  6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,63,00,68,00,69,00,65,00,75,00,63,\
  +  00,68,00,00,00,55,00,30,00,30,00,34,00,33,00,09,00,55,00,31,00,31,00,31,00,\
  +  30,00,09,00,23,00,20,00,58,00,4b,00,5f,00,43,00,3a,00,20,00,63,00,68,00,6f,\
  +  00,73,00,65,00,6f,00,6e,00,67,00,20,00,74,00,68,00,69,00,65,00,75,00,74,00,\
  +  68,00,00,00,55,00,30,00,30,00,34,00,34,00,09,00,55,00,31,00,31,00,30,00,62,\
  +  00,09,00,23,00,20,00,58,00,4b,00,5f,00,44,00,3a,00,20,00,63,00,68,00,6f,00,\
  +  73,00,65,00,6f,00,6e,00,67,00,20,00,69,00,65,00,75,00,6e,00,67,00,00,00,55,\
  +  00,30,00,30,00,34,00,35,00,09,00,55,00,31,00,31,00,30,00,34,00,09,00,23,00,\
  +  20,00,58,00,4b,00,5f,00,45,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,\
  +  00,6e,00,67,00,20,00,73,00,73,00,61,00,6e,00,67,00,74,00,69,00,6b,00,65,00,\
  +  75,00,74,00,00,00,55,00,30,00,30,00,34,00,36,00,09,00,55,00,31,00,31,00,30,\
  +  00,31,00,09,00,23,00,20,00,58,00,4b,00,5f,00,46,00,3a,00,20,00,63,00,68,00,\
  +  6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,73,00,73,00,61,00,6e,00,67,00,6b,\
  +  00,69,00,79,00,65,00,6f,00,6b,00,00,00,55,00,30,00,30,00,34,00,37,00,09,00,\
  +  55,00,31,00,31,00,30,00,61,00,09,00,23,00,20,00,58,00,4b,00,5f,00,47,00,3a,\
  +  00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,73,00,73,00,\
  +  61,00,6e,00,67,00,73,00,69,00,6f,00,73,00,00,00,55,00,30,00,30,00,34,00,38,\
  +  00,09,00,55,00,31,00,31,00,36,00,39,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  +  48,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,\
  +  00,6f,00,00,00,55,00,30,00,30,00,34,00,39,00,09,00,55,00,31,00,31,00,36,00,\
  +  35,00,09,00,23,00,20,00,58,00,4b,00,5f,00,49,00,3a,00,20,00,6a,00,75,00,6e,\
  +  00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,65,00,6f,00,00,00,55,00,30,00,\
  +  30,00,34,00,61,00,09,00,55,00,31,00,31,00,37,00,35,00,09,00,23,00,20,00,58,\
  +  00,4b,00,5f,00,4a,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,\
  +  6e,00,67,00,20,00,69,00,00,00,55,00,30,00,30,00,34,00,62,00,09,00,55,00,31,\
  +  00,31,00,36,00,34,00,09,00,23,00,20,00,58,00,4b,00,5f,00,4b,00,3a,00,20,00,\
  +  6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,61,00,65,\
  +  00,00,00,55,00,30,00,30,00,34,00,63,00,09,00,55,00,31,00,31,00,36,00,38,00,\
  +  09,00,23,00,20,00,58,00,4b,00,5f,00,4c,00,3a,00,20,00,6a,00,75,00,6e,00,67,\
  +  00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,65,00,00,00,55,00,30,00,30,00,\
  +  34,00,64,00,09,00,55,00,31,00,31,00,36,00,33,00,09,00,23,00,20,00,58,00,4b,\
  +  00,5f,00,4d,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,\
  +  67,00,20,00,79,00,61,00,00,00,55,00,30,00,30,00,34,00,65,00,09,00,55,00,31,\
  +  00,31,00,37,00,32,00,09,00,23,00,20,00,58,00,4b,00,5f,00,4e,00,3a,00,20,00,\
  +  6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,75,00,00,\
  +  00,55,00,30,00,30,00,34,00,66,00,09,00,55,00,31,00,31,00,36,00,36,00,09,00,\
  +  23,00,20,00,58,00,4b,00,5f,00,4f,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,\
  +  00,65,00,6f,00,6e,00,67,00,20,00,65,00,00,00,55,00,30,00,30,00,35,00,30,00,\
  +  09,00,55,00,31,00,31,00,36,00,64,00,09,00,23,00,20,00,58,00,4b,00,5f,00,50,\
  +  00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,\
  +  79,00,6f,00,00,00,55,00,30,00,30,00,35,00,31,00,09,00,55,00,31,00,31,00,30,\
  +  00,38,00,09,00,23,00,20,00,58,00,4b,00,5f,00,51,00,3a,00,20,00,63,00,68,00,\
  +  6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,73,00,73,00,61,00,6e,00,67,00,70,\
  +  00,69,00,65,00,75,00,70,00,00,00,55,00,30,00,30,00,35,00,32,00,09,00,55,00,\
  +  31,00,31,00,30,00,35,00,09,00,23,00,20,00,58,00,4b,00,5f,00,52,00,3a,00,20,\
  +  00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,72,00,69,00,65,00,\
  +  75,00,6c,00,00,00,55,00,30,00,30,00,35,00,33,00,09,00,55,00,31,00,31,00,30,\
  +  00,32,00,09,00,23,00,20,00,58,00,4b,00,5f,00,53,00,3a,00,20,00,63,00,68,00,\
  +  6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6e,00,69,00,65,00,75,00,6e,00,00,\
  +  00,55,00,30,00,30,00,35,00,34,00,09,00,55,00,31,00,31,00,30,00,64,00,09,00,\
  +  23,00,20,00,58,00,4b,00,5f,00,54,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,\
  +  00,6f,00,6e,00,67,00,20,00,73,00,73,00,61,00,6e,00,67,00,63,00,69,00,65,00,\
  +  75,00,63,00,00,00,55,00,30,00,30,00,35,00,35,00,09,00,55,00,31,00,31,00,36,\
  +  00,65,00,09,00,23,00,20,00,58,00,4b,00,5f,00,55,00,3a,00,20,00,6a,00,75,00,\
  +  6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,75,00,00,00,55,00,30,00,30,\
  +  00,35,00,36,00,09,00,55,00,31,00,31,00,31,00,31,00,09,00,23,00,20,00,58,00,\
  +  4b,00,5f,00,56,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,\
  +  00,20,00,70,00,68,00,69,00,65,00,75,00,70,00,68,00,00,00,55,00,30,00,30,00,\
  +  35,00,37,00,09,00,55,00,31,00,31,00,30,00,36,00,09,00,23,00,20,00,58,00,4b,\
  +  00,5f,00,57,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,\
  +  20,00,6d,00,69,00,65,00,75,00,6d,00,00,00,55,00,30,00,30,00,35,00,38,00,09,\
  +  00,55,00,31,00,31,00,30,00,66,00,09,00,23,00,20,00,58,00,4b,00,5f,00,58,00,\
  +  3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6b,00,68,\
  +  00,69,00,65,00,75,00,6b,00,68,00,00,00,55,00,30,00,30,00,35,00,39,00,09,00,\
  +  55,00,31,00,31,00,36,00,37,00,09,00,23,00,20,00,58,00,4b,00,5f,00,59,00,3a,\
  +  00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,\
  +  65,00,6f,00,00,00,55,00,30,00,30,00,35,00,61,00,09,00,55,00,30,00,30,00,33,\
  +  00,62,00,09,00,23,00,20,00,58,00,4b,00,5f,00,5a,00,3a,00,20,00,3b,00,00,00,\
  +  55,00,30,00,30,00,36,00,31,00,09,00,55,00,31,00,31,00,31,00,32,00,09,00,23,\
  +  00,20,00,58,00,4b,00,5f,00,61,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,\
  +  6f,00,6e,00,67,00,20,00,68,00,69,00,65,00,75,00,68,00,00,00,55,00,30,00,30,\
  +  00,36,00,32,00,09,00,55,00,31,00,31,00,30,00,65,00,09,00,23,00,20,00,58,00,\
  +  4b,00,5f,00,62,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,\
  +  00,20,00,63,00,68,00,69,00,65,00,75,00,63,00,68,00,00,00,55,00,30,00,30,00,\
  +  36,00,33,00,09,00,55,00,31,00,31,00,31,00,30,00,09,00,23,00,20,00,58,00,4b,\
  +  00,5f,00,63,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,\
  +  20,00,74,00,68,00,69,00,65,00,75,00,74,00,68,00,00,00,55,00,30,00,30,00,36,\
  +  00,34,00,09,00,55,00,31,00,31,00,30,00,62,00,09,00,23,00,20,00,58,00,4b,00,\
  +  5f,00,64,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,\
  +  00,69,00,65,00,75,00,6e,00,67,00,00,00,55,00,30,00,30,00,36,00,35,00,09,00,\
  +  55,00,31,00,31,00,30,00,33,00,09,00,23,00,20,00,58,00,4b,00,5f,00,65,00,3a,\
  +  00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,74,00,69,00,\
  +  6b,00,65,00,75,00,74,00,00,00,55,00,30,00,30,00,36,00,36,00,09,00,55,00,31,\
  +  00,31,00,30,00,30,00,09,00,23,00,20,00,58,00,4b,00,5f,00,66,00,3a,00,20,00,\
  +  63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6b,00,69,00,79,00,65,\
  +  00,6f,00,6b,00,00,00,55,00,30,00,30,00,36,00,37,00,09,00,55,00,31,00,31,00,\
  +  30,00,39,00,09,00,23,00,20,00,58,00,4b,00,5f,00,67,00,3a,00,20,00,63,00,68,\
  +  00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,73,00,69,00,6f,00,73,00,00,00,\
  +  55,00,30,00,30,00,36,00,38,00,09,00,55,00,31,00,31,00,36,00,39,00,09,00,23,\
  +  00,20,00,58,00,4b,00,5f,00,68,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,\
  +  65,00,6f,00,6e,00,67,00,20,00,6f,00,00,00,55,00,30,00,30,00,36,00,39,00,09,\
  +  00,55,00,31,00,31,00,36,00,35,00,09,00,23,00,20,00,58,00,4b,00,5f,00,69,00,\
  +  3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,65,\
  +  00,6f,00,00,00,55,00,30,00,30,00,36,00,61,00,09,00,55,00,31,00,31,00,37,00,\
  +  35,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6a,00,3a,00,20,00,6a,00,75,00,6e,\
  +  00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,69,00,00,00,55,00,30,00,30,00,\
  +  36,00,62,00,09,00,55,00,31,00,31,00,36,00,31,00,09,00,23,00,20,00,58,00,4b,\
  +  00,5f,00,6b,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,\
  +  67,00,20,00,61,00,00,00,55,00,30,00,30,00,36,00,63,00,09,00,55,00,31,00,31,\
  +  00,37,00,33,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6c,00,3a,00,20,00,6a,00,\
  +  75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,65,00,75,00,00,00,55,\
  +  00,30,00,30,00,36,00,64,00,09,00,55,00,31,00,31,00,36,00,33,00,09,00,23,00,\
  +  20,00,58,00,4b,00,5f,00,6d,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,\
  +  00,6f,00,6e,00,67,00,20,00,79,00,61,00,00,00,55,00,30,00,30,00,36,00,65,00,\
  +  09,00,55,00,31,00,31,00,37,00,32,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6e,\
  +  00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,\
  +  79,00,75,00,00,00,55,00,30,00,30,00,36,00,66,00,09,00,55,00,31,00,31,00,36,\
  +  00,36,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6f,00,3a,00,20,00,6a,00,75,00,\
  +  6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,65,00,00,00,55,00,30,00,30,\
  +  00,37,00,30,00,09,00,55,00,31,00,31,00,36,00,64,00,09,00,23,00,20,00,58,00,\
  +  4b,00,5f,00,70,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,\
  +  00,67,00,20,00,79,00,6f,00,00,00,55,00,30,00,30,00,37,00,31,00,09,00,55,00,\
  +  31,00,31,00,30,00,37,00,09,00,23,00,20,00,58,00,4b,00,5f,00,71,00,3a,00,20,\
  +  00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,70,00,69,00,65,00,\
  +  75,00,70,00,00,00,55,00,30,00,30,00,37,00,32,00,09,00,55,00,31,00,31,00,30,\
  +  00,35,00,09,00,23,00,20,00,58,00,4b,00,5f,00,72,00,3a,00,20,00,63,00,68,00,\
  +  6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,72,00,69,00,65,00,75,00,6c,00,00,\
  +  00,55,00,30,00,30,00,37,00,33,00,09,00,55,00,31,00,31,00,30,00,32,00,09,00,\
  +  23,00,20,00,58,00,4b,00,5f,00,73,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,\
  +  00,6f,00,6e,00,67,00,20,00,6e,00,69,00,65,00,75,00,6e,00,00,00,55,00,30,00,\
  +  30,00,37,00,34,00,09,00,55,00,31,00,31,00,30,00,63,00,09,00,23,00,20,00,58,\
  +  00,4b,00,5f,00,74,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,\
  +  67,00,20,00,63,00,69,00,65,00,75,00,63,00,00,00,55,00,30,00,30,00,37,00,35,\
  +  00,09,00,55,00,31,00,31,00,36,00,65,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  +  75,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,\
  +  00,75,00,00,00,55,00,30,00,30,00,37,00,36,00,09,00,55,00,31,00,31,00,31,00,\
  +  31,00,09,00,23,00,20,00,58,00,4b,00,5f,00,76,00,3a,00,20,00,63,00,68,00,6f,\
  +  00,73,00,65,00,6f,00,6e,00,67,00,20,00,70,00,68,00,69,00,65,00,75,00,70,00,\
  +  68,00,00,00,55,00,30,00,30,00,37,00,37,00,09,00,55,00,31,00,31,00,30,00,36,\
  +  00,09,00,23,00,20,00,58,00,4b,00,5f,00,77,00,3a,00,20,00,63,00,68,00,6f,00,\
  +  73,00,65,00,6f,00,6e,00,67,00,20,00,6d,00,69,00,65,00,75,00,6d,00,00,00,55,\
  +  00,30,00,30,00,37,00,38,00,09,00,55,00,31,00,31,00,30,00,66,00,09,00,23,00,\
  +  20,00,58,00,4b,00,5f,00,78,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,\
  +  00,6e,00,67,00,20,00,6b,00,68,00,69,00,65,00,75,00,6b,00,68,00,00,00,55,00,\
  +  30,00,30,00,37,00,39,00,09,00,55,00,31,00,31,00,36,00,37,00,09,00,23,00,20,\
  +  00,58,00,4b,00,5f,00,79,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,\
  +  6f,00,6e,00,67,00,20,00,79,00,65,00,6f,00,00,00,55,00,30,00,30,00,37,00,61,\
  +  00,09,00,55,00,30,00,30,00,33,00,62,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  +  7a,00,3a,00,20,00,3b,00,00,00,00,00
  +""=hex(7):23,00,20,00,74,00,68,00,69,00,73,00,20,00,66,00,69,00,6c,00,65,00,\
  +  20,00,69,00,73,00,20,00,74,00,68,00,65,00,20,00,6e,00,65,00,77,00,2d,00,33,\
  +  00,73,00,65,00,74,00,20,00,6b,00,65,00,79,00,62,00,6f,00,61,00,72,00,64,00,\
  +  20,00,6d,00,61,00,70,00,20,00,66,00,69,00,6c,00,65,00,20,00,66,00,6f,00,72,\
  +  00,20,00,4e,00,61,00,62,00,69,00,00,00,4e,00,61,00,6d,00,65,00,3a,00,20,00,\
  +  c8,c0,38,c1,8c,bc,00,00,54,00,79,00,70,00,65,00,33,00,00,00,55,00,30,00,30,\
  +  00,32,00,63,00,09,00,55,00,31,00,31,00,43,00,32,00,09,00,23,00,20,00,58,00,\
  +  4b,00,5f,00,2c,00,3a,00,09,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,\
  +  00,67,00,20,00,68,00,69,00,65,00,75,00,68,00,09,00,09,00,09,00,00,00,55,00,\
  +  30,00,30,00,32,00,65,00,09,00,55,00,31,00,31,00,43,00,30,00,09,00,23,00,20,\
  +  00,58,00,4b,00,5f,00,2e,00,3a,00,09,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,\
  +  6f,00,6e,00,67,00,20,00,74,00,68,00,69,00,6b,00,65,00,75,00,74,00,68,00,00,\
  +  00,55,00,30,00,30,00,33,00,31,00,09,00,55,00,30,00,30,00,32,00,63,00,09,00,\
  +  23,00,20,00,58,00,4b,00,5f,00,31,00,3a,00,20,00,63,00,6f,00,6d,00,6d,00,61,\
  +  00,00,00,55,00,30,00,30,00,33,00,32,00,09,00,55,00,30,00,30,00,32,00,65,00,\
  +  09,00,23,00,20,00,58,00,4b,00,5f,00,32,00,3a,00,20,00,70,00,65,00,72,00,69,\
  +  00,6f,00,64,00,00,00,55,00,30,00,30,00,33,00,33,00,09,00,55,00,31,00,31,00,\
  +  30,00,66,00,09,00,23,00,20,00,58,00,4b,00,5f,00,33,00,3a,00,20,00,63,00,68,\
  +  00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6b,00,68,00,69,00,65,00,75,00,\
  +  6b,00,68,00,00,00,55,00,30,00,30,00,33,00,34,00,09,00,55,00,31,00,31,00,31,\
  +  00,30,00,09,00,23,00,20,00,58,00,4b,00,5f,00,34,00,3a,00,20,00,63,00,68,00,\
  +  6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,74,00,68,00,69,00,65,00,75,00,74,\
  +  00,68,00,00,00,55,00,30,00,30,00,33,00,35,00,09,00,55,00,31,00,31,00,31,00,\
  +  31,00,09,00,23,00,20,00,58,00,4b,00,5f,00,35,00,3a,00,20,00,63,00,68,00,6f,\
  +  00,73,00,65,00,6f,00,6e,00,67,00,20,00,70,00,68,00,69,00,65,00,75,00,70,00,\
  +  68,00,00,00,55,00,30,00,30,00,33,00,36,00,09,00,55,00,31,00,31,00,30,00,65,\
  +  00,09,00,23,00,20,00,58,00,4b,00,5f,00,36,00,3a,00,20,00,63,00,68,00,6f,00,\
  +  73,00,65,00,6f,00,6e,00,67,00,20,00,63,00,68,00,69,00,65,00,75,00,63,00,68,\
  +  00,00,00,55,00,30,00,30,00,33,00,41,00,09,00,55,00,30,00,30,00,33,00,34,00,\
  +  09,00,23,00,20,00,58,00,4b,00,5f,00,63,00,6f,00,6c,00,6f,00,6e,00,3a,00,20,\
  +  00,34,00,00,00,55,00,30,00,30,00,33,00,42,00,09,00,55,00,31,00,31,00,36,00,\
  +  32,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6f,00,3a,00,20,00,6a,00,75,00,6e,\
  +  00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,61,00,65,00,00,00,55,00,30,00,\
  +  30,00,34,00,31,00,09,00,55,00,31,00,31,00,31,00,65,00,09,00,23,00,20,00,58,\
  +  00,4b,00,5f,00,41,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,\
  +  67,00,20,00,68,00,69,00,65,00,75,00,68,00,00,00,55,00,30,00,30,00,34,00,32,\
  +  00,09,00,55,00,31,00,31,00,42,00,44,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  +  42,00,3a,00,09,00,6a,00,6f,00,67,00,6e,00,73,00,65,00,6f,00,6e,00,67,00,20,\
  +  00,63,00,69,00,65,00,75,00,63,00,20,00,09,00,09,00,00,00,55,00,30,00,30,00,\
  +  34,00,33,00,09,00,55,00,31,00,31,00,42,00,46,00,09,00,23,00,20,00,58,00,4b,\
  +  00,5f,00,43,00,3a,00,09,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,\
  +  67,00,20,00,6b,00,68,00,69,00,65,00,75,00,6b,00,68,00,09,00,09,00,00,00,55,\
  +  00,30,00,30,00,34,00,34,00,09,00,55,00,31,00,31,00,30,00,62,00,09,00,23,00,\
  +  20,00,58,00,4b,00,5f,00,44,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,\
  +  00,6e,00,67,00,20,00,69,00,65,00,75,00,6e,00,67,00,00,00,55,00,30,00,30,00,\
  +  34,00,35,00,09,00,55,00,31,00,31,00,30,00,42,00,09,00,23,00,20,00,58,00,4b,\
  +  00,5f,00,45,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,\
  +  20,00,73,00,73,00,61,00,6e,00,67,00,74,00,69,00,6b,00,65,00,75,00,74,00,00,\
  +  00,55,00,30,00,30,00,34,00,36,00,09,00,55,00,31,00,31,00,30,00,31,00,09,00,\
  +  23,00,20,00,58,00,4b,00,5f,00,46,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,\
  +  00,6f,00,6e,00,67,00,20,00,73,00,73,00,61,00,6e,00,67,00,6b,00,69,00,79,00,\
  +  65,00,6f,00,6b,00,00,00,55,00,30,00,30,00,34,00,37,00,09,00,55,00,31,00,31,\
  +  00,30,00,41,00,09,00,23,00,20,00,58,00,4b,00,5f,00,47,00,3a,00,20,00,63,00,\
  +  68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,73,00,73,00,61,00,6e,00,67,\
  +  00,73,00,69,00,6f,00,73,00,00,00,55,00,30,00,30,00,34,00,38,00,09,00,55,00,\
  +  31,00,31,00,36,00,39,00,09,00,23,00,20,00,58,00,4b,00,5f,00,48,00,3a,00,20,\
  +  00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6f,00,00,00,\
  +  55,00,30,00,30,00,34,00,39,00,09,00,55,00,31,00,31,00,36,00,35,00,09,00,23,\
  +  00,20,00,58,00,4b,00,5f,00,49,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,\
  +  65,00,6f,00,6e,00,67,00,20,00,65,00,6f,00,00,00,55,00,30,00,30,00,34,00,61,\
  +  00,09,00,55,00,31,00,31,00,37,00,35,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  +  4a,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,\
  +  00,69,00,00,00,55,00,30,00,30,00,34,00,62,00,09,00,55,00,31,00,31,00,36,00,\
  +  34,00,09,00,23,00,20,00,58,00,4b,00,5f,00,4b,00,3a,00,20,00,6a,00,75,00,6e,\
  +  00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,61,00,65,00,00,00,55,00,\
  +  30,00,30,00,34,00,63,00,09,00,55,00,31,00,31,00,36,00,38,00,09,00,23,00,20,\
  +  00,58,00,4b,00,5f,00,4c,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,\
  +  6f,00,6e,00,67,00,20,00,79,00,65,00,00,00,55,00,30,00,30,00,34,00,64,00,09,\
  +  00,55,00,31,00,31,00,42,00,43,00,09,00,23,00,20,00,58,00,4b,00,5f,00,4d,00,\
  +  3a,00,09,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,69,\
  +  00,65,00,75,00,6e,00,67,00,00,00,55,00,30,00,30,00,34,00,65,00,09,00,55,00,\
  +  31,00,31,00,42,00,41,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6e,00,3a,00,09,\
  +  00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,73,00,69,00,\
  +  6f,00,73,00,09,00,09,00,09,00,00,00,55,00,30,00,30,00,34,00,66,00,09,00,55,\
  +  00,31,00,31,00,36,00,36,00,09,00,23,00,20,00,58,00,4b,00,5f,00,4f,00,3a,00,\
  +  20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,65,00,00,\
  +  00,55,00,30,00,30,00,35,00,30,00,09,00,55,00,31,00,31,00,36,00,64,00,09,00,\
  +  23,00,20,00,58,00,4b,00,5f,00,50,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,\
  +  00,65,00,6f,00,6e,00,67,00,20,00,79,00,6f,00,00,00,55,00,30,00,30,00,35,00,\
  +  31,00,09,00,55,00,31,00,31,00,30,00,38,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  +  00,51,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,\
  +  73,00,73,00,61,00,6e,00,67,00,70,00,69,00,65,00,75,00,70,00,00,00,55,00,30,\
  +  00,30,00,35,00,32,00,09,00,55,00,31,00,31,00,30,00,35,00,09,00,23,00,20,00,\
  +  58,00,4b,00,5f,00,52,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,\
  +  00,67,00,20,00,72,00,69,00,65,00,75,00,6c,00,00,00,55,00,30,00,30,00,35,00,\
  +  33,00,09,00,55,00,31,00,31,00,30,00,32,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  +  00,53,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,\
  +  6e,00,69,00,65,00,75,00,6e,00,00,00,55,00,30,00,30,00,35,00,34,00,09,00,55,\
  +  00,31,00,31,00,30,00,44,00,09,00,23,00,20,00,58,00,4b,00,5f,00,54,00,3a,00,\
  +  20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,73,00,73,00,61,\
  +  00,6e,00,67,00,63,00,69,00,65,00,75,00,63,00,00,00,55,00,30,00,30,00,35,00,\
  +  35,00,09,00,55,00,31,00,31,00,36,00,45,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  +  00,55,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,\
  +  20,00,75,00,00,00,55,00,30,00,30,00,35,00,36,00,09,00,55,00,31,00,31,00,41,\
  +  00,45,00,09,00,23,00,20,00,58,00,4b,00,5f,00,56,00,3a,00,09,00,6a,00,6f,00,\
  +  6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,74,00,69,00,6b,00,65,00,75,\
  +  00,74,00,09,00,09,00,00,00,55,00,30,00,30,00,35,00,37,00,09,00,55,00,31,00,\
  +  31,00,30,00,36,00,09,00,23,00,20,00,58,00,4b,00,5f,00,57,00,3a,00,20,00,63,\
  +  00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6d,00,69,00,65,00,75,00,\
  +  6d,00,00,00,55,00,30,00,30,00,35,00,38,00,09,00,55,00,31,00,31,00,43,00,31,\
  +  00,09,00,23,00,20,00,58,00,4b,00,5f,00,58,00,3a,00,09,00,6a,00,6f,00,6e,00,\
  +  67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,70,00,68,00,69,00,65,00,75,00,70,\
  +  00,68,00,09,00,09,00,00,00,55,00,30,00,30,00,35,00,39,00,09,00,55,00,31,00,\
  +  31,00,36,00,37,00,09,00,23,00,20,00,58,00,4b,00,5f,00,59,00,3a,00,20,00,6a,\
  +  00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,65,00,6f,00,\
  +  00,00,55,00,30,00,30,00,35,00,61,00,09,00,55,00,31,00,31,00,42,00,45,00,09,\
  +  00,23,00,20,00,58,00,4b,00,5f,00,5a,00,3a,00,09,00,6a,00,6f,00,6e,00,67,00,\
  +  73,00,65,00,6f,00,6e,00,67,00,20,00,63,00,68,00,69,00,65,00,75,00,63,00,68,\
  +  00,09,00,09,00,00,00,55,00,30,00,30,00,35,00,62,00,09,00,55,00,31,00,31,00,\
  +  37,00,32,00,09,00,23,00,20,00,58,00,4b,00,5f,00,5b,00,3a,00,20,00,6a,00,75,\
  +  00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,75,00,00,00,55,00,\
  +  30,00,30,00,35,00,64,00,09,00,55,00,31,00,31,00,36,00,33,00,09,00,23,00,20,\
  +  00,58,00,4b,00,5f,00,5d,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,\
  +  6f,00,6e,00,67,00,20,00,79,00,61,00,00,00,55,00,30,00,30,00,36,00,31,00,09,\
  +  00,55,00,31,00,31,00,31,00,32,00,09,00,23,00,20,00,58,00,4b,00,5f,00,61,00,\
  +  3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,68,00,69,\
  +  00,65,00,75,00,68,00,00,00,55,00,30,00,30,00,36,00,32,00,09,00,55,00,31,00,\
  +  31,00,41,00,42,00,09,00,23,00,20,00,58,00,4b,00,5f,00,62,00,3a,00,09,00,6a,\
  +  00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6e,00,69,00,65,00,\
  +  75,00,6e,00,00,00,55,00,30,00,30,00,36,00,33,00,09,00,55,00,31,00,31,00,41,\
  +  00,38,00,09,00,23,00,20,00,58,00,4b,00,5f,00,63,00,3a,00,09,00,6a,00,6f,00,\
  +  6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6b,00,69,00,79,00,65,00,6f,\
  +  00,6b,00,00,00,55,00,30,00,30,00,36,00,34,00,09,00,55,00,31,00,31,00,30,00,\
  +  42,00,09,00,23,00,20,00,58,00,4b,00,5f,00,64,00,3a,00,20,00,63,00,68,00,6f,\
  +  00,73,00,65,00,6f,00,6e,00,67,00,20,00,69,00,65,00,75,00,6e,00,67,00,00,00,\
  +  55,00,30,00,30,00,36,00,35,00,09,00,55,00,31,00,31,00,30,00,33,00,09,00,23,\
  +  00,20,00,58,00,4b,00,5f,00,65,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,\
  +  6f,00,6e,00,67,00,20,00,74,00,69,00,6b,00,65,00,75,00,74,00,00,00,55,00,30,\
  +  00,30,00,36,00,36,00,09,00,55,00,31,00,31,00,30,00,30,00,09,00,23,00,20,00,\
  +  58,00,4b,00,5f,00,66,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,\
  +  00,67,00,20,00,6b,00,69,00,79,00,65,00,6f,00,6b,00,00,00,55,00,30,00,30,00,\
  +  36,00,37,00,09,00,55,00,31,00,31,00,30,00,39,00,09,00,23,00,20,00,58,00,4b,\
  +  00,5f,00,67,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,\
  +  20,00,73,00,69,00,6f,00,73,00,00,00,55,00,30,00,30,00,36,00,38,00,09,00,55,\
  +  00,31,00,31,00,36,00,39,00,09,00,23,00,20,00,58,00,4b,00,5f,00,68,00,3a,00,\
  +  20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6f,00,00,\
  +  00,55,00,30,00,30,00,36,00,39,00,09,00,55,00,31,00,31,00,36,00,35,00,09,00,\
  +  23,00,20,00,58,00,4b,00,5f,00,69,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,\
  +  00,65,00,6f,00,6e,00,67,00,20,00,65,00,6f,00,00,00,55,00,30,00,30,00,36,00,\
  +  61,00,09,00,55,00,31,00,31,00,37,00,35,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  +  00,6a,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,\
  +  20,00,69,00,00,00,55,00,30,00,30,00,36,00,62,00,09,00,55,00,31,00,31,00,36,\
  +  00,31,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6b,00,3a,00,20,00,6a,00,75,00,\
  +  6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,61,00,00,00,55,00,30,00,30,\
  +  00,36,00,63,00,09,00,55,00,31,00,31,00,37,00,33,00,09,00,23,00,20,00,58,00,\
  +  4b,00,5f,00,6c,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,\
  +  00,67,00,20,00,65,00,75,00,00,00,55,00,30,00,30,00,36,00,64,00,09,00,55,00,\
  +  31,00,31,00,42,00,43,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6d,00,3a,00,09,\
  +  00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,69,00,65,00,\
  +  75,00,6e,00,67,00,00,00,55,00,30,00,30,00,36,00,65,00,09,00,55,00,31,00,31,\
  +  00,42,00,41,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6e,00,3a,00,09,00,6a,00,\
  +  6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,73,00,69,00,6f,00,73,\
  +  00,00,00,55,00,30,00,30,00,36,00,66,00,09,00,55,00,31,00,31,00,36,00,36,00,\
  +  09,00,23,00,20,00,58,00,4b,00,5f,00,6f,00,3a,00,20,00,6a,00,75,00,6e,00,67,\
  +  00,73,00,65,00,6f,00,6e,00,67,00,20,00,65,00,00,00,55,00,30,00,30,00,37,00,\
  +  30,00,09,00,55,00,31,00,31,00,36,00,44,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  +  00,70,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,\
  +  20,00,79,00,6f,00,00,00,55,00,30,00,30,00,37,00,31,00,09,00,55,00,31,00,31,\
  +  00,30,00,37,00,09,00,23,00,20,00,58,00,4b,00,5f,00,71,00,3a,00,20,00,63,00,\
  +  68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,70,00,69,00,65,00,75,00,70,\
  +  00,00,00,55,00,30,00,30,00,37,00,32,00,09,00,55,00,31,00,31,00,30,00,35,00,\
  +  09,00,23,00,20,00,58,00,4b,00,5f,00,72,00,3a,00,20,00,63,00,68,00,6f,00,73,\
  +  00,65,00,6f,00,6e,00,67,00,20,00,72,00,69,00,65,00,75,00,6c,00,00,00,55,00,\
  +  30,00,30,00,37,00,33,00,09,00,55,00,31,00,31,00,30,00,32,00,09,00,23,00,20,\
  +  00,58,00,4b,00,5f,00,73,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,\
  +  6e,00,67,00,20,00,6e,00,69,00,65,00,75,00,6e,00,00,00,55,00,30,00,30,00,37,\
  +  00,34,00,09,00,55,00,31,00,31,00,30,00,43,00,09,00,23,00,20,00,58,00,4b,00,\
  +  5f,00,74,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,\
  +  00,63,00,69,00,65,00,75,00,63,00,00,00,55,00,30,00,30,00,37,00,35,00,09,00,\
  +  55,00,31,00,31,00,36,00,45,00,09,00,23,00,20,00,58,00,4b,00,5f,00,75,00,3a,\
  +  00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,75,00,\
  +  00,00,55,00,30,00,30,00,37,00,36,00,09,00,55,00,31,00,31,00,41,00,46,00,09,\
  +  00,23,00,20,00,58,00,4b,00,5f,00,76,00,3a,00,09,00,6a,00,6f,00,6e,00,67,00,\
  +  73,00,65,00,6f,00,6e,00,67,00,20,00,72,00,69,00,65,00,75,00,6c,00,00,00,55,\
  +  00,30,00,30,00,37,00,37,00,09,00,55,00,31,00,31,00,30,00,36,00,09,00,23,00,\
  +  20,00,58,00,4b,00,5f,00,77,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,\
  +  00,6e,00,67,00,20,00,6d,00,69,00,65,00,75,00,6d,00,00,00,55,00,30,00,30,00,\
  +  37,00,38,00,09,00,55,00,31,00,31,00,42,00,37,00,09,00,23,00,20,00,58,00,4b,\
  +  00,5f,00,78,00,3a,00,09,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,\
  +  67,00,20,00,6d,00,69,00,65,00,75,00,6d,00,00,00,55,00,30,00,30,00,37,00,39,\
  +  00,09,00,55,00,31,00,31,00,36,00,37,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  +  79,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,\
  +  00,79,00,65,00,6f,00,00,00,55,00,30,00,30,00,37,00,61,00,09,00,55,00,31,00,\
  +  31,00,42,00,38,00,09,00,23,00,20,00,58,00,4b,00,5f,00,7a,00,3a,00,09,00,6a,\
  +  00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,70,00,69,00,65,00,\
  +  75,00,70,00,00,00,00,00
   
  
  
  
  1.3       +118 -119  saenaru/resource/ahnmatae.reg
  
  Index: ahnmatae.reg
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/resource/ahnmatae.reg,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ahnmatae.reg	7 Oct 2004 17:20:24 -0000	1.2
  +++ ahnmatae.reg	7 Oct 2004 18:45:45 -0000	1.3
  @@ -5,123 +5,122 @@
     74,00,61,00,65,00,20,00,6b,00,65,00,79,00,62,00,6f,00,61,00,72,00,64,00,20,\
     00,6d,00,61,00,70,00,20,00,66,00,69,00,6c,00,65,00,20,00,66,00,6f,00,72,00,\
     20,00,4e,00,61,00,62,00,69,00,00,00,4e,00,61,00,6d,00,65,00,3a,00,20,00,48,\
  -  c5,c8,b9,dc,d0,00,00,55,00,30,00,30,00,32,00,37,00,09,00,55,00,31,00,30,00,\
  -  30,00,32,00,65,00,09,00,23,00,20,00,58,00,4b,00,5f,00,27,00,3a,00,20,00,2e,\
  -  00,00,00,55,00,30,00,30,00,32,00,63,00,09,00,55,00,31,00,31,00,42,00,37,00,\
  -  09,00,23,00,20,00,58,00,4b,00,5f,00,2c,00,3a,00,20,00,6a,00,6f,00,6e,00,67,\
  -  00,73,00,65,00,6f,00,6e,00,67,00,20,00,6d,00,69,00,65,00,75,00,6d,00,00,00,\
  -  55,00,30,00,30,00,32,00,65,00,09,00,55,00,31,00,31,00,41,00,46,00,09,00,23,\
  -  00,20,00,58,00,4b,00,5f,00,2e,00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,\
  -  65,00,6f,00,6e,00,67,00,20,00,72,00,69,00,65,00,75,00,6c,00,00,00,55,00,30,\
  -  00,30,00,32,00,66,00,09,00,55,00,31,00,31,00,63,00,32,00,09,00,23,00,20,00,\
  -  58,00,4b,00,5f,00,2f,00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,\
  -  00,6e,00,67,00,20,00,68,00,69,00,65,00,75,00,68,00,00,00,55,00,30,00,30,00,\
  -  33,00,42,00,09,00,55,00,31,00,31,00,36,00,65,00,09,00,23,00,20,00,58,00,4b,\
  -  00,5f,00,3b,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,\
  -  67,00,20,00,75,00,00,00,55,00,30,00,30,00,33,00,66,00,09,00,55,00,31,00,31,\
  -  00,46,00,39,00,09,00,23,00,20,00,58,00,4b,00,5f,00,3f,00,3a,00,20,00,6a,00,\
  -  6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,65,00,6f,00,72,\
  -  00,69,00,6e,00,68,00,69,00,65,00,75,00,68,00,00,00,55,00,30,00,30,00,34,00,\
  -  32,00,09,00,55,00,31,00,31,00,66,00,30,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  -  00,42,00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,\
  -  20,00,00,00,55,00,30,00,30,00,34,00,37,00,09,00,55,00,31,00,31,00,34,00,63,\
  -  00,09,00,23,00,20,00,58,00,4b,00,5f,00,47,00,3a,00,20,00,63,00,68,00,6f,00,\
  -  73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,65,00,73,00,69,00,65,00,75,00,6e,\
  -  00,67,00,00,00,55,00,30,00,30,00,34,00,39,00,09,00,55,00,30,00,30,00,32,00,\
  -  66,00,09,00,23,00,20,00,58,00,4b,00,5f,00,49,00,3a,00,20,00,2f,00,00,00,55,\
  -  00,30,00,30,00,34,00,65,00,09,00,55,00,31,00,31,00,65,00,62,00,09,00,23,00,\
  -  20,00,58,00,4b,00,5f,00,4e,00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,\
  -  00,6f,00,6e,00,67,00,20,00,70,00,61,00,6e,00,73,00,69,00,6f,00,73,00,00,00,\
  -  55,00,30,00,30,00,34,00,61,00,09,00,55,00,30,00,30,00,62,00,37,00,09,00,23,\
  -  00,20,00,58,00,4b,00,5f,00,4a,00,3a,00,20,00,6d,00,69,00,64,00,64,00,6c,00,\
  -  65,00,20,00,64,00,6f,00,74,00,20,00,3f,00,00,00,55,00,30,00,30,00,34,00,66,\
  -  00,09,00,55,00,30,00,30,00,35,00,62,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  -  4f,00,3a,00,20,00,5b,00,00,00,55,00,30,00,30,00,35,00,30,00,09,00,55,00,30,\
  -  00,30,00,35,00,64,00,09,00,23,00,20,00,58,00,4b,00,5f,00,50,00,3a,00,20,00,\
  -  5d,00,00,00,55,00,30,00,30,00,35,00,34,00,09,00,55,00,31,00,31,00,35,00,39,\
  -  00,09,00,23,00,20,00,58,00,4b,00,5f,00,54,00,3a,00,20,00,63,00,68,00,6f,00,\
  -  73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,65,00,6f,00,72,00,69,00,6e,00,68,\
  -  00,69,00,65,00,75,00,68,00,00,00,55,00,30,00,30,00,35,00,35,00,09,00,55,00,\
  -  30,00,30,00,32,00,37,00,09,00,23,00,20,00,58,00,4b,00,5f,00,55,00,3a,00,20,\
  -  00,27,00,00,00,55,00,30,00,30,00,35,00,37,00,09,00,55,00,31,00,31,00,34,00,\
  -  30,00,09,00,23,00,20,00,58,00,4b,00,5f,00,57,00,3a,00,20,00,63,00,68,00,6f,\
  -  00,73,00,65,00,6f,00,6e,00,67,00,20,00,70,00,61,00,6e,00,73,00,69,00,6f,00,\
  -  73,00,00,00,55,00,30,00,30,00,35,00,39,00,09,00,55,00,30,00,30,00,33,00,62,\
  -  00,09,00,23,00,20,00,58,00,4b,00,5f,00,59,00,3a,00,20,00,3b,00,00,00,55,00,\
  -  30,00,30,00,35,00,62,00,09,00,55,00,30,00,30,00,32,00,63,00,09,00,23,00,20,\
  -  00,58,00,4b,00,5f,00,5b,00,3a,00,20,00,2c,00,00,00,55,00,30,00,30,00,35,00,\
  -  64,00,09,00,55,00,30,00,30,00,33,00,66,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  -  00,5d,00,3a,00,20,00,3f,00,00,00,55,00,30,00,30,00,36,00,31,00,09,00,55,00,\
  -  31,00,31,00,30,00,37,00,09,00,23,00,20,00,58,00,4b,00,5f,00,61,00,3a,00,20,\
  -  00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,70,00,69,00,65,00,\
  -  75,00,70,00,00,00,55,00,30,00,30,00,36,00,32,00,09,00,55,00,31,00,31,00,42,\
  -  00,43,00,09,00,23,00,20,00,58,00,4b,00,5f,00,62,00,3a,00,20,00,6a,00,6f,00,\
  -  6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,69,00,65,00,75,00,6e,00,67,\
  -  00,00,00,55,00,30,00,30,00,36,00,33,00,09,00,55,00,31,00,31,00,42,00,38,00,\
  -  09,00,23,00,20,00,58,00,4b,00,5f,00,63,00,3a,00,20,00,6a,00,6f,00,6e,00,67,\
  -  00,73,00,65,00,6f,00,6e,00,67,00,20,00,70,00,69,00,65,00,75,00,70,00,00,00,\
  -  55,00,30,00,30,00,36,00,34,00,09,00,55,00,31,00,31,00,30,00,33,00,09,00,23,\
  -  00,20,00,58,00,4b,00,5f,00,64,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,\
  -  6f,00,6e,00,67,00,20,00,74,00,69,00,6b,00,65,00,75,00,74,00,00,00,55,00,30,\
  -  00,30,00,36,00,35,00,09,00,55,00,31,00,31,00,30,00,32,00,09,00,23,00,20,00,\
  -  58,00,4b,00,5f,00,65,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,\
  +  c5,c8,b9,dc,d0,00,00,54,00,79,00,70,00,65,00,32,00,00,00,55,00,30,00,30,00,\
  +  32,00,37,00,09,00,55,00,31,00,30,00,30,00,32,00,65,00,09,00,23,00,20,00,58,\
  +  00,4b,00,5f,00,27,00,3a,00,20,00,2e,00,00,00,55,00,30,00,30,00,32,00,63,00,\
  +  09,00,55,00,31,00,31,00,42,00,37,00,09,00,23,00,20,00,58,00,4b,00,5f,00,2c,\
  +  00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,\
  +  6d,00,69,00,65,00,75,00,6d,00,00,00,55,00,30,00,30,00,32,00,65,00,09,00,55,\
  +  00,31,00,31,00,41,00,46,00,09,00,23,00,20,00,58,00,4b,00,5f,00,2e,00,3a,00,\
  +  20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,72,00,69,\
  +  00,65,00,75,00,6c,00,00,00,55,00,30,00,30,00,32,00,66,00,09,00,55,00,31,00,\
  +  31,00,63,00,32,00,09,00,23,00,20,00,58,00,4b,00,5f,00,2f,00,3a,00,20,00,6a,\
  +  00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,68,00,69,00,65,00,\
  +  75,00,68,00,00,00,55,00,30,00,30,00,33,00,42,00,09,00,55,00,31,00,31,00,36,\
  +  00,65,00,09,00,23,00,20,00,58,00,4b,00,5f,00,3b,00,3a,00,20,00,6a,00,75,00,\
  +  6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,75,00,00,00,55,00,30,00,30,\
  +  00,33,00,66,00,09,00,55,00,31,00,31,00,46,00,39,00,09,00,23,00,20,00,58,00,\
  +  4b,00,5f,00,3f,00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,\
  +  00,67,00,20,00,79,00,65,00,6f,00,72,00,69,00,6e,00,68,00,69,00,65,00,75,00,\
  +  68,00,00,00,55,00,30,00,30,00,34,00,32,00,09,00,55,00,31,00,31,00,66,00,30,\
  +  00,09,00,23,00,20,00,58,00,4b,00,5f,00,42,00,3a,00,20,00,6a,00,6f,00,6e,00,\
  +  67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,00,00,55,00,30,00,30,00,34,00,37,\
  +  00,09,00,55,00,31,00,31,00,34,00,63,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  +  47,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,\
  +  00,65,00,73,00,69,00,65,00,75,00,6e,00,67,00,00,00,55,00,30,00,30,00,34,00,\
  +  39,00,09,00,55,00,30,00,30,00,32,00,66,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  +  00,49,00,3a,00,20,00,2f,00,00,00,55,00,30,00,30,00,34,00,65,00,09,00,55,00,\
  +  31,00,31,00,65,00,62,00,09,00,23,00,20,00,58,00,4b,00,5f,00,4e,00,3a,00,20,\
  +  00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,70,00,61,00,\
  +  6e,00,73,00,69,00,6f,00,73,00,00,00,55,00,30,00,30,00,34,00,61,00,09,00,55,\
  +  00,30,00,30,00,62,00,37,00,09,00,23,00,20,00,58,00,4b,00,5f,00,4a,00,3a,00,\
  +  20,00,6d,00,69,00,64,00,64,00,6c,00,65,00,20,00,64,00,6f,00,74,00,20,00,3f,\
  +  00,00,00,55,00,30,00,30,00,34,00,66,00,09,00,55,00,30,00,30,00,35,00,62,00,\
  +  09,00,23,00,20,00,58,00,4b,00,5f,00,4f,00,3a,00,20,00,5b,00,00,00,55,00,30,\
  +  00,30,00,35,00,30,00,09,00,55,00,30,00,30,00,35,00,64,00,09,00,23,00,20,00,\
  +  58,00,4b,00,5f,00,50,00,3a,00,20,00,5d,00,00,00,55,00,30,00,30,00,35,00,34,\
  +  00,09,00,55,00,31,00,31,00,35,00,39,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  +  54,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,\
  +  00,65,00,6f,00,72,00,69,00,6e,00,68,00,69,00,65,00,75,00,68,00,00,00,55,00,\
  +  30,00,30,00,35,00,35,00,09,00,55,00,30,00,30,00,32,00,37,00,09,00,23,00,20,\
  +  00,58,00,4b,00,5f,00,55,00,3a,00,20,00,27,00,00,00,55,00,30,00,30,00,35,00,\
  +  37,00,09,00,55,00,31,00,31,00,34,00,30,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  +  00,57,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,\
  +  70,00,61,00,6e,00,73,00,69,00,6f,00,73,00,00,00,55,00,30,00,30,00,35,00,39,\
  +  00,09,00,55,00,30,00,30,00,33,00,62,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  +  59,00,3a,00,20,00,3b,00,00,00,55,00,30,00,30,00,35,00,62,00,09,00,55,00,30,\
  +  00,30,00,32,00,63,00,09,00,23,00,20,00,58,00,4b,00,5f,00,5b,00,3a,00,20,00,\
  +  2c,00,00,00,55,00,30,00,30,00,35,00,64,00,09,00,55,00,30,00,30,00,33,00,66,\
  +  00,09,00,23,00,20,00,58,00,4b,00,5f,00,5d,00,3a,00,20,00,3f,00,00,00,55,00,\
  +  30,00,30,00,36,00,31,00,09,00,55,00,31,00,31,00,30,00,37,00,09,00,23,00,20,\
  +  00,58,00,4b,00,5f,00,61,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,\
  +  6e,00,67,00,20,00,70,00,69,00,65,00,75,00,70,00,00,00,55,00,30,00,30,00,36,\
  +  00,32,00,09,00,55,00,31,00,31,00,42,00,43,00,09,00,23,00,20,00,58,00,4b,00,\
  +  5f,00,62,00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,\
  +  00,20,00,69,00,65,00,75,00,6e,00,67,00,00,00,55,00,30,00,30,00,36,00,33,00,\
  +  09,00,55,00,31,00,31,00,42,00,38,00,09,00,23,00,20,00,58,00,4b,00,5f,00,63,\
  +  00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,\
  +  70,00,69,00,65,00,75,00,70,00,00,00,55,00,30,00,30,00,36,00,34,00,09,00,55,\
  +  00,31,00,31,00,30,00,33,00,09,00,23,00,20,00,58,00,4b,00,5f,00,64,00,3a,00,\
  +  20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,74,00,69,00,6b,\
  +  00,65,00,75,00,74,00,00,00,55,00,30,00,30,00,36,00,35,00,09,00,55,00,31,00,\
  +  31,00,30,00,32,00,09,00,23,00,20,00,58,00,4b,00,5f,00,65,00,3a,00,20,00,63,\
  +  00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6e,00,69,00,65,00,75,00,\
  +  6e,00,00,00,55,00,30,00,30,00,36,00,36,00,09,00,55,00,31,00,31,00,30,00,30,\
  +  00,09,00,23,00,20,00,58,00,4b,00,5f,00,66,00,3a,00,20,00,63,00,68,00,6f,00,\
  +  73,00,65,00,6f,00,6e,00,67,00,20,00,6b,00,69,00,79,00,65,00,6f,00,6b,00,00,\
  +  00,55,00,30,00,30,00,36,00,37,00,09,00,55,00,31,00,31,00,30,00,62,00,09,00,\
  +  23,00,20,00,58,00,4b,00,5f,00,67,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,\
  +  00,6f,00,6e,00,67,00,20,00,69,00,65,00,75,00,6e,00,67,00,00,00,55,00,30,00,\
  +  30,00,36,00,38,00,09,00,55,00,31,00,31,00,36,00,35,00,09,00,23,00,20,00,58,\
  +  00,4b,00,5f,00,68,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,\
  +  6e,00,67,00,20,00,65,00,6f,00,00,00,55,00,30,00,30,00,36,00,39,00,09,00,55,\
  +  00,31,00,31,00,37,00,33,00,09,00,23,00,20,00,58,00,4b,00,5f,00,69,00,3a,00,\
  +  20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,65,00,75,\
  +  00,00,00,55,00,30,00,30,00,36,00,61,00,09,00,55,00,31,00,31,00,36,00,31,00,\
  +  09,00,23,00,20,00,58,00,4b,00,5f,00,6a,00,3a,00,20,00,6a,00,75,00,6e,00,67,\
  +  00,73,00,65,00,6f,00,6e,00,67,00,20,00,61,00,00,00,55,00,30,00,30,00,36,00,\
  +  62,00,09,00,55,00,31,00,31,00,37,00,35,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  +  00,6b,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,\
  +  20,00,69,00,00,00,55,00,30,00,30,00,36,00,63,00,09,00,55,00,31,00,31,00,36,\
  +  00,39,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6c,00,3a,00,20,00,6a,00,75,00,\
  +  6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6f,00,00,00,55,00,30,00,30,\
  +  00,36,00,64,00,09,00,55,00,31,00,31,00,61,00,62,00,09,00,23,00,20,00,58,00,\
  +  4b,00,5f,00,6d,00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,\
     00,67,00,20,00,6e,00,69,00,65,00,75,00,6e,00,00,00,55,00,30,00,30,00,36,00,\
  -  36,00,09,00,55,00,31,00,31,00,30,00,30,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  -  00,66,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,\
  -  6b,00,69,00,79,00,65,00,6f,00,6b,00,00,00,55,00,30,00,30,00,36,00,37,00,09,\
  -  00,55,00,31,00,31,00,30,00,62,00,09,00,23,00,20,00,58,00,4b,00,5f,00,67,00,\
  -  3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,69,00,65,\
  -  00,75,00,6e,00,67,00,00,00,55,00,30,00,30,00,36,00,38,00,09,00,55,00,31,00,\
  -  31,00,36,00,35,00,09,00,23,00,20,00,58,00,4b,00,5f,00,68,00,3a,00,20,00,6a,\
  -  00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,65,00,6f,00,00,00,\
  -  55,00,30,00,30,00,36,00,39,00,09,00,55,00,31,00,31,00,37,00,33,00,09,00,23,\
  -  00,20,00,58,00,4b,00,5f,00,69,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,\
  -  65,00,6f,00,6e,00,67,00,20,00,65,00,75,00,00,00,55,00,30,00,30,00,36,00,61,\
  -  00,09,00,55,00,31,00,31,00,36,00,31,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  -  6a,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,\
  -  00,61,00,00,00,55,00,30,00,30,00,36,00,62,00,09,00,55,00,31,00,31,00,37,00,\
  -  35,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6b,00,3a,00,20,00,6a,00,75,00,6e,\
  -  00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,69,00,00,00,55,00,30,00,30,00,\
  -  36,00,63,00,09,00,55,00,31,00,31,00,36,00,39,00,09,00,23,00,20,00,58,00,4b,\
  -  00,5f,00,6c,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,\
  -  67,00,20,00,6f,00,00,00,55,00,30,00,30,00,36,00,64,00,09,00,55,00,31,00,31,\
  -  00,61,00,62,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6d,00,3a,00,20,00,6a,00,\
  -  6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6e,00,69,00,65,00,75,\
  -  00,6e,00,00,00,55,00,30,00,30,00,36,00,65,00,09,00,55,00,31,00,31,00,30,00,\
  -  39,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6e,00,3a,00,20,00,6a,00,6f,00,6e,\
  -  00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,73,00,69,00,6f,00,73,00,09,00,\
  -  09,00,09,00,00,00,55,00,30,00,30,00,36,00,66,00,09,00,55,00,31,00,31,00,36,\
  -  00,64,00,09,00,23,00,20,00,58,00,4b,00,5f,00,6f,00,3a,00,20,00,6a,00,75,00,\
  -  6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,6f,00,00,00,55,00,30,\
  -  00,30,00,37,00,30,00,09,00,55,00,31,00,31,00,37,00,32,00,09,00,23,00,20,00,\
  -  58,00,4b,00,5f,00,70,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,\
  -  00,6e,00,67,00,20,00,79,00,75,00,00,00,55,00,30,00,30,00,37,00,31,00,09,00,\
  -  55,00,31,00,31,00,30,00,36,00,09,00,23,00,20,00,58,00,4b,00,5f,00,71,00,3a,\
  -  00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6d,00,69,00,\
  -  65,00,75,00,6d,00,00,00,55,00,30,00,30,00,37,00,32,00,09,00,55,00,31,00,31,\
  -  00,30,00,35,00,09,00,23,00,20,00,58,00,4b,00,5f,00,72,00,3a,00,20,00,63,00,\
  -  68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,72,00,69,00,65,00,75,00,6c,\
  -  00,00,00,55,00,30,00,30,00,37,00,33,00,09,00,55,00,31,00,31,00,30,00,63,00,\
  -  09,00,23,00,20,00,58,00,4b,00,5f,00,73,00,3a,00,20,00,63,00,68,00,6f,00,73,\
  -  00,65,00,6f,00,6e,00,67,00,20,00,63,00,69,00,65,00,75,00,63,00,00,00,55,00,\
  -  30,00,30,00,37,00,34,00,09,00,55,00,31,00,31,00,31,00,32,00,09,00,23,00,20,\
  -  00,58,00,4b,00,5f,00,74,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,\
  -  6e,00,67,00,20,00,68,00,69,00,65,00,75,00,68,00,00,00,55,00,30,00,30,00,37,\
  -  00,35,00,09,00,55,00,31,00,31,00,36,00,33,00,09,00,23,00,20,00,58,00,4b,00,\
  -  5f,00,75,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,\
  -  00,20,00,79,00,61,00,00,00,55,00,30,00,30,00,37,00,36,00,09,00,55,00,31,00,\
  -  31,00,41,00,38,00,09,00,23,00,20,00,58,00,4b,00,5f,00,76,00,3a,00,20,00,6a,\
  -  00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6b,00,69,00,79,00,\
  -  6f,00,6b,00,00,00,55,00,30,00,30,00,37,00,37,00,09,00,55,00,31,00,31,00,30,\
  -  00,39,00,09,00,23,00,20,00,58,00,4b,00,5f,00,77,00,3a,00,20,00,63,00,68,00,\
  -  6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,73,00,69,00,6f,00,73,00,00,00,55,\
  -  00,30,00,30,00,37,00,38,00,09,00,55,00,31,00,31,00,41,00,45,00,09,00,23,00,\
  -  20,00,58,00,4b,00,5f,00,78,00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,\
  -  00,6f,00,6e,00,67,00,20,00,74,00,69,00,6b,00,65,00,75,00,74,00,00,00,55,00,\
  -  30,00,30,00,37,00,39,00,09,00,55,00,31,00,31,00,36,00,37,00,09,00,23,00,20,\
  -  00,58,00,4b,00,5f,00,79,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,\
  -  6f,00,6e,00,67,00,20,00,79,00,65,00,6f,00,00,00,55,00,30,00,30,00,37,00,61,\
  -  00,09,00,55,00,31,00,31,00,42,00,44,00,09,00,23,00,20,00,58,00,4b,00,5f,00,\
  -  7a,00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,\
  -  00,00,00,00,00
  -
  +  65,00,09,00,55,00,31,00,31,00,30,00,39,00,09,00,23,00,20,00,58,00,4b,00,5f,\
  +  00,6e,00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,\
  +  20,00,73,00,69,00,6f,00,73,00,09,00,09,00,09,00,00,00,55,00,30,00,30,00,36,\
  +  00,66,00,09,00,55,00,31,00,31,00,36,00,64,00,09,00,23,00,20,00,58,00,4b,00,\
  +  5f,00,6f,00,3a,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,\
  +  00,20,00,79,00,6f,00,00,00,55,00,30,00,30,00,37,00,30,00,09,00,55,00,31,00,\
  +  31,00,37,00,32,00,09,00,23,00,20,00,58,00,4b,00,5f,00,70,00,3a,00,20,00,6a,\
  +  00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,75,00,00,00,\
  +  55,00,30,00,30,00,37,00,31,00,09,00,55,00,31,00,31,00,30,00,36,00,09,00,23,\
  +  00,20,00,58,00,4b,00,5f,00,71,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,\
  +  6f,00,6e,00,67,00,20,00,6d,00,69,00,65,00,75,00,6d,00,00,00,55,00,30,00,30,\
  +  00,37,00,32,00,09,00,55,00,31,00,31,00,30,00,35,00,09,00,23,00,20,00,58,00,\
  +  4b,00,5f,00,72,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,\
  +  00,20,00,72,00,69,00,65,00,75,00,6c,00,00,00,55,00,30,00,30,00,37,00,33,00,\
  +  09,00,55,00,31,00,31,00,30,00,63,00,09,00,23,00,20,00,58,00,4b,00,5f,00,73,\
  +  00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,63,00,\
  +  69,00,65,00,75,00,63,00,00,00,55,00,30,00,30,00,37,00,34,00,09,00,55,00,31,\
  +  00,31,00,31,00,32,00,09,00,23,00,20,00,58,00,4b,00,5f,00,74,00,3a,00,20,00,\
  +  63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,68,00,69,00,65,00,75,\
  +  00,68,00,00,00,55,00,30,00,30,00,37,00,35,00,09,00,55,00,31,00,31,00,36,00,\
  +  33,00,09,00,23,00,20,00,58,00,4b,00,5f,00,75,00,3a,00,20,00,6a,00,75,00,6e,\
  +  00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,61,00,00,00,55,00,30,00,\
  +  30,00,37,00,36,00,09,00,55,00,31,00,31,00,41,00,38,00,09,00,23,00,20,00,58,\
  +  00,4b,00,5f,00,76,00,3a,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,\
  +  6e,00,67,00,20,00,6b,00,69,00,79,00,6f,00,6b,00,00,00,55,00,30,00,30,00,37,\
  +  00,37,00,09,00,55,00,31,00,31,00,30,00,39,00,09,00,23,00,20,00,58,00,4b,00,\
  +  5f,00,77,00,3a,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,\
  +  00,73,00,69,00,6f,00,73,00,00,00,55,00,30,00,30,00,37,00,38,00,09,00,55,00,\
  +  31,00,31,00,41,00,45,00,09,00,23,00,20,00,58,00,4b,00,5f,00,78,00,3a,00,20,\
  +  00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,74,00,69,00,\
  +  6b,00,65,00,75,00,74,00,00,00,55,00,30,00,30,00,37,00,39,00,09,00,55,00,31,\
  +  00,31,00,36,00,37,00,09,00,23,00,20,00,58,00,4b,00,5f,00,79,00,3a,00,20,00,\
  +  6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,79,00,65,00,6f,\
  +  00,00,00,55,00,30,00,30,00,37,00,61,00,09,00,55,00,31,00,31,00,42,00,44,00,\
  +  09,00,23,00,20,00,58,00,4b,00,5f,00,7a,00,3a,00,20,00,6a,00,6f,00,6e,00,67,\
  +  00,73,00,65,00,6f,00,6e,00,67,00,20,00,00,00,00,00
  
  
  


wkpark      04/10/08 23:48:24

  Modified:    src      imm.c
  Log:
  fixed imeSelect(): #300129 gvim bug and dvorak bug
  
  Revision  Changes    Path
  1.5       +7 -2      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- imm.c	6 Oct 2004 18:18:52 -0000	1.4
  +++ imm.c	8 Oct 2004 14:48:18 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.4 2004/10/06 18:18:52 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.5 2004/10/08 14:48:18 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -615,7 +615,12 @@
   
               if (!(lpIMC->fdwInit & INIT_CONVERSION))
               {
  -                lpIMC->fdwConversion = IME_CMODE_ROMAN | IME_CMODE_FULLSHAPE | IME_CMODE_NATIVE;
  +                //  
  +                //lpIMC->fdwConversion = IME_CMODE_ROMAN | IME_CMODE_FULLSHAPE | IME_CMODE_NATIVE;
  +                // ۺ ѱ ??
  +                //lpIMC->fdwConversion = IME_CMODE_ROMAN | IME_CMODE_NATIVE;
  +                lpIMC->fdwConversion = IME_CMODE_ROMAN;
  +                lpIMC->fdwConversion &= ~IME_CMODE_NATIVE;
                   lpIMC->fdwInit |= INIT_CONVERSION;
               }
   
  
  
  


wkpark      04/10/09 11:43:57

  Modified:    src      ui.c uicomp.c
  Log:
  fixed null compstr with uiComp bug.
  
  Revision  Changes    Path
  1.5       +15 -5     saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ui.c	30 Dec 2003 01:43:57 -0000	1.4
  +++ ui.c	9 Oct 2004 02:43:56 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.4 2003/12/30 01:43:57 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.5 2004/10/09 02:43:56 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -98,7 +98,8 @@
       wc.hIcon          = NULL;
       wc.lpszMenuName   = (LPTSTR)NULL;
       wc.lpszClassName  = (LPTSTR)szCompStrClassName;
  -    wc.hbrBackground  = NULL;
  +    //wc.hbrBackground  = NULL;
  +    wc.hbrBackground  = (HBRUSH)(COLOR_BTNFACE + 1);
       wc.hIconSm        = NULL;
   
       if( !RegisterClassEx( (LPWNDCLASSEX)&wc ) )
  @@ -144,7 +145,7 @@
   
       if( !RegisterClassEx( (LPWNDCLASSEX)&wc ) )
           return FALSE;
  -
  +#if 1
       //
       // register class of guideline window.
       //
  @@ -164,6 +165,7 @@
   
       if( !RegisterClassEx( (LPWNDCLASSEX)&wc ) )
           return FALSE;
  +#endif
   
       return TRUE;
   }
  @@ -244,8 +246,10 @@
               lpUIExtra->uiDefComp.pt.y = -1;
               lpUIExtra->uiCand.pt.x = -1;
               lpUIExtra->uiCand.pt.y = -1;
  +#if 1
               lpUIExtra->uiGuide.pt.x = -1;
               lpUIExtra->uiGuide.pt.y = -1;
  +#endif
   #if 1
               lpUIExtra->uiSoftKbd.pt.x = -1;
               lpUIExtra->uiSoftKbd.pt.y = -1;
  @@ -451,8 +455,10 @@
                       DestroyWindow(lpUIExtra->uiComp[i].hWnd);
               }
   
  +#if 1
               if (IsWindow(lpUIExtra->uiGuide.hWnd))
                   DestroyWindow(lpUIExtra->uiGuide.hWnd);
  +#endif
   
               if (lpUIExtra->hFont)
                   DeleteObject(lpUIExtra->hFont);
  @@ -509,7 +515,7 @@
               ImmUnlockIMC(hUICurIMC);
               GlobalUnlock(hUIExtra);
               break;
  -
  +#if 1
           case WM_UI_GUIDEMOVE:
               //
               // Set the position of the status window to UIExtra.
  @@ -521,6 +527,7 @@
               lpUIExtra->uiGuide.pt.y = (long)HIWORD(lParam);
               GlobalUnlock(hUIExtra);
               break;
  +#endif
   
           default:
               if (HIWORD(lParam) == WM_LBUTTONDOWN)
  @@ -716,6 +723,7 @@
               HideCandWindow(lpUIExtra);
               break;
   
  +#if 1
           case IMN_GUIDELINE:
               if (ImmGetGuideLine(hUICurIMC,GGL_LEVEL,NULL,0))
               {
  @@ -757,6 +765,7 @@
                   UpdateGuideWindow(lpUIExtra);
               }
               break;
  +#endif
   
           case IMN_SETCANDIDATEPOS:
               // SAENARU supports only one candidate list.
  @@ -1020,12 +1029,13 @@
           ShowWindow(lpUIExtra->uiDefComp.hWnd,nsw);
           lpUIExtra->uiDefComp.bShow = fFlag;
       }
  -
  +#if 1
       if (IsWindow(lpUIExtra->uiGuide.hWnd))
       {
           ShowWindow(lpUIExtra->uiGuide.hWnd,nsw);
           lpUIExtra->uiGuide.bShow = fFlag;
       }
  +#endif 
   
       GlobalUnlock(hUIExtra);
   
  
  
  
  1.4       +23 -10    saenaru/src/uicomp.c
  
  Index: uicomp.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicomp.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- uicomp.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ uicomp.c	9 Oct 2004 02:43:56 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicomp.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/uicomp.c,v 1.4 2004/10/09 02:43:56 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -129,10 +129,8 @@
       }
   
       // Root window style XXX
  -    // skkime ̰ rootwindow style̶ ִ. ׷
  -    // Ʒ  ̻ϰ  ܻ   
  -    //  . ׷ ƿ  ȴ. 2003/11/15
  -    if (1 && !IsWindow(lpUIExtra->uiDefComp.hWnd))
  +    // skkime ̰ rootwindow style̶ ִ.
  +    if (!IsWindow(lpUIExtra->uiDefComp.hWnd))
       {
           lpUIExtra->uiDefComp.hWnd = 
               CreateWindowEx( WS_EX_WINDOWEDGE,
  @@ -144,10 +142,13 @@
                            hUIWnd,NULL,hInst,NULL);
       }
   
  +    if (IsWindow(lpUIExtra->uiDefComp.hWnd))
  +    {
       SetWindowLongPtr(lpUIExtra->uiDefComp.hWnd,FIGWL_FONT,(LONG_PTR)lpUIExtra->hFont);
       SetWindowLongPtr(lpUIExtra->uiDefComp.hWnd,FIGWL_SVRWND,(LONG_PTR)hUIWnd);
       ShowWindow(lpUIExtra->uiDefComp.hWnd,SW_HIDE);
       lpUIExtra->uiDefComp.bShow = FALSE;
  +    }
   
       return;
   }
  @@ -437,6 +438,7 @@
           //
           // When the style is DEFAULT, show the default composition window.
           //
  +        // root window style XXX
           if (IsWindow(lpUIExtra->uiDefComp.hWnd))
           {
               for (i = 0; i < MAXCOMPWND; i++)
  @@ -466,6 +468,7 @@
               ReleaseDC(lpUIExtra->uiDefComp.hWnd,hDC);
           
               GetWindowRect(lpUIExtra->uiDefComp.hWnd,&rc);
  +
               lpUIExtra->uiDefComp.pt.x = rc.left;
               lpUIExtra->uiDefComp.pt.y = rc.top;
               MoveWindow(lpUIExtra->uiDefComp.hWnd,
  @@ -474,10 +477,16 @@
                          width+ 2 * GetSystemMetrics(SM_CXEDGE),
                          height+ 2 * GetSystemMetrics(SM_CYEDGE),
                          TRUE);
  -
  -            ShowWindow(lpUIExtra->uiDefComp.hWnd, SW_SHOWNOACTIVATE);
  -            lpUIExtra->uiDefComp.bShow = TRUE;
  -            InvalidateRect(lpUIExtra->uiDefComp.hWnd,NULL,FALSE);
  +            if (lpCompStr->dwCompStrLen > 0) {
  +                // comp str   .
  +                //   ܻ   ذ XXX
  +                ShowWindow(lpUIExtra->uiDefComp.hWnd, SW_SHOWNOACTIVATE);
  +                lpUIExtra->uiDefComp.bShow = TRUE;
  +                InvalidateRect(lpUIExtra->uiDefComp.hWnd,NULL,FALSE);
  +            } else {
  +                ShowWindow(lpUIExtra->uiDefComp.hWnd, SW_HIDE);
  +                lpUIExtra->uiDefComp.bShow = FALSE;
  +            }
           }
       }
   
  @@ -617,14 +626,18 @@
   
                   lpstr = GETLPCOMPSTR(lpCompStr);
                   lpattr = GETLPCOMPATTR(lpCompStr);
  -                SetBkMode(hDC,TRANSPARENT);
  +                //SetBkMode(hDC,TRANSPARENT);
                   if (lpIMC->cfCompForm.dwStyle)
                   {
  +                    // ̰  ϸ
  +                    // ѱ   ʴ ÿ
  +                    //    ѱ     ̴.
                       HDC hPDC;
   
                       hPDC = GetDC(GetParent(hCompWnd));
                       GetClientRect (hCompWnd,&rc);
                       SetBkColor(hDC,GetBkColor(hPDC));
  +                    //SetTextColor(hDC,RGB(127,127,127));
                       SetBkMode(hDC,OPAQUE);
   
                       lstart = GetWindowLong(hCompWnd,FIGWL_COMPSTARTSTR);
  
  
  


wkpark      04/10/09 15:50:47

  Modified:    src      imm.c
  Log:
  check only a left shift-space
  
  Revision  Changes    Path
  1.6       +7 -2      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- imm.c	8 Oct 2004 14:48:18 -0000	1.5
  +++ imm.c	9 Oct 2004 06:50:47 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.5 2004/10/08 14:48:18 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.6 2004/10/09 06:50:47 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -188,7 +188,12 @@
       if ( (LOWORD(vKey) & 0x00FF) == VK_SPACE && dwOptionFlag & USE_SHIFT_SPACE)
       {
           //SHORT ShiftState = (GetKeyState(VK_SHIFT) >> 31) & 1;
  -        SHORT ShiftState = lpbKeyState[VK_SHIFT] & 0x80;
  +        //SHORT ShiftState = lpbKeyState[VK_SHIFT] & 0x80;
  +        BYTE pbKeyState [256];
  +        SHORT ShiftState;
  +
  +        GetKeyboardState((LPBYTE)&pbKeyState);
  +        ShiftState = pbKeyState[VK_LSHIFT] & 0x80;
           if (ShiftState)
               vKey = VK_HANGUL;
       }
  
  
  


wkpark      04/10/09 15:52:12

  Modified:    src      hangul.c
  Log:
  fix the cho+cho decompose algorithm for the Ahnmatae keyboard
  
  Revision  Changes    Path
  1.5       +14 -5     saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- hangul.c	7 Oct 2004 15:40:34 -0000	1.4
  +++ hangul.c	9 Oct 2004 06:52:12 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.4 2004/10/07 15:40:34 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.5 2004/10/09 06:52:12 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1787,7 +1787,7 @@
   int hangul_automata2( HangulIC *ic, WCHAR jamo, WCHAR *cs )
   {
       int kind;
  -    WCHAR comb=0, cho=0, jong=0;
  +    WCHAR comb=0, cho=0, jong=0, last=0;
       BOOL ctyping=0;
   
       *cs = 0;
  @@ -1810,13 +1810,17 @@
                   // ʼ+ʼ ι 丶Ÿ   ʴ´.
                   // ׷,  ϹǷ Ѵ :)
                   comb = hangul_compose(ic->cho, jamo);
  +		// ġ   ٲ㼭 + 
  +		if ( !hangul_is_choseong(comb) && ctyping)
  +		    comb = hangul_compose(jamo,ic->cho);
  +
                   if ( hangul_is_choseong(comb) ) {
                       ic->cho=comb;
                       hangul_ic_pop(ic);
                       hangul_ic_push(ic,comb);
                       ic->last=jamo;
                       return 0;
  -                } else {
  +		} else {
                       *cs = hangul_ic_commit(ic);
                       // ʼ compose  .
                       ic->cho=jamo;
  @@ -1938,8 +1942,10 @@
                   }
                   break;
               case 2: //  + ߼
  -                if (ic->jong != ic->last)
  +                if (ic->jong != ic->last) {
                       hangul_jongseong_dicompose(ic->jong, &jong, &cho);
  +		}
  +		last = hangul_jongseong_to_choseong(ic->last);
   
                   if (jong && cho)
                       ic->jong = jong;
  @@ -1951,7 +1957,10 @@
   
                   *cs = hangul_ic_commit(ic);
                   // XXX
  -                ic->cho = cho;
  +		if (last != cho)
  +		    ic->cho = last;
  +		else
  +		    ic->cho = cho;
                   ic->jung = jamo;
                   hangul_ic_push(ic,cho);
                   hangul_ic_push(ic,jamo);
  
  
  


wkpark      04/10/09 15:53:18

  Modified:    src      process.c
  Log:
  do not use(?) control-F3
  
  Revision  Changes    Path
  1.4       +4 -2      saenaru/src/process.c
  
  Index: process.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/process.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- process.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ process.c	9 Oct 2004 06:53:18 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/process.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/process.c,v 1.4 2004/10/09 06:53:18 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -141,7 +141,9 @@
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 40-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 50-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 60-0F
  -                        0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,        // 70-0F
  +                        //0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,        // 70-0F
  +                        0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,        // 70-0F
  +                        // VK_F3 == 114 == 0x72
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 80-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 90-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // A0-0F
  
  
  


wkpark      04/10/09 16:10:34

  Modified:    src      hangul.c
  Log:
  fix the jung+jung compose algorithm for the Ahnmatae keyboard
  
  Revision  Changes    Path
  1.6       +5 -2      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- hangul.c	9 Oct 2004 06:52:12 -0000	1.5
  +++ hangul.c	9 Oct 2004 07:10:32 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.5 2004/10/09 06:52:12 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.6 2004/10/09 07:10:32 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1811,7 +1811,7 @@
                   // ׷,  ϹǷ Ѵ :)
                   comb = hangul_compose(ic->cho, jamo);
   		// ġ   ٲ㼭 + 
  -		if ( !hangul_is_choseong(comb) && ctyping)
  +		if ( ctyping && !hangul_is_choseong(comb))
   		    comb = hangul_compose(jamo,ic->cho);
   
                   if ( hangul_is_choseong(comb) ) {
  @@ -1874,6 +1874,9 @@
                   break;
               case 2: // ߼ + ߼
                   comb = hangul_compose(ic->jung, jamo);
  +		// ġ   ٲ㼭 + 
  +		if ( ctyping && !hangul_is_jungseong(comb))
  +		    comb = hangul_compose(jamo,ic->jung);
                   if ( hangul_is_jungseong(comb) ) {
                       ic->jung=comb;
                       hangul_ic_pop(ic);
  
  
  


wkpark      04/10/10 19:55:12

  Modified:    src      saenaru.c
  Log:
  get the user defined dictionary
  
  Revision  Changes    Path
  1.5       +14 -2     saenaru/src/saenaru.c
  
  Index: saenaru.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- saenaru.c	27 Dec 2003 15:20:44 -0000	1.4
  +++ saenaru.c	10 Oct 2004 10:55:12 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.c,v 1.4 2003/12/27 15:20:44 perky Exp $
  + * $Saenaru: saenaru/src/saenaru.c,v 1.5 2004/10/10 10:55:12 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -98,7 +98,19 @@
               lpDicFileName += GetSaenaruDirectory(lpDicFileName,256);
               if (*(lpDicFileName-1) != TEXT('\\'))
                   *lpDicFileName++ = TEXT('\\');
  -            LoadString( hInst, IDS_DICFILENAME, lpDicFileName, 128);
  +            {
  +#if 1
  +                INT sz;
  +                sz= GetRegStringValue(TEXT("\\Dictionary"),TEXT("default"),NULL);
  +                if (sz <= 0) {
  +                    LoadString( hInst, IDS_DICFILENAME, lpDicFileName, 128);
  +                } else
  +                    GetRegStringValue(TEXT("\\Dictionary"),TEXT("default"),lpDicFileName);
  +                MyDebugPrint((TEXT("Saenaru: dicfile %s:%d\n"), lpDicFileName,sz));
  +#else
  +                LoadString( hInst, IDS_DICFILENAME, lpDicFileName, 128);
  +#endif
  +            }
   
               // read registry
               SetGlobalFlags();
  
  
  


wkpark      04/10/10 19:58:44

  Modified:    src      dic.c
  Log:
  increase the size of dictionary
  support the nabi style dictionary
  
  Revision  Changes    Path
  1.4       +55 -17    saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- dic.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ dic.c	10 Oct 2004 10:58:44 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.4 2004/10/10 10:58:44 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -201,7 +201,7 @@
       LPCOMPOSITIONSTRING lpCompStr;
       LPCANDIDATEINFO lpCandInfo;
       LPCANDIDATELIST lpCandList;
  -    MYCHAR szBuf[256+2];
  +    MYCHAR szBuf[1024+2];
       int nBufLen;
       LPMYSTR lpstr;
       TRANSMSG GnMsg;
  @@ -210,8 +210,11 @@
       LPMYSTR lpT, lpT2;
       int cnt;
       BOOL bRc = FALSE;
  -
       WCHAR cs=0;
  +    LPMYSTR lpmystr, lpTemp;
  +    MYCHAR myBuf[128];
  +
  +    lpmystr = (LPMYSTR)myBuf;
   
       if ((GetFileAttributes(szDicFileName) == 0xFFFFFFFF) ||
           (GetFileAttributes(szDicFileName) == FILE_ATTRIBUTE_DIRECTORY)) {
  @@ -240,13 +243,13 @@
       //
       // Get the candidate strings from dic file.
       //
  -    szBuf[256] = 0;    // Double NULL-terminate
  -    szBuf[257] = 0;    // Double NULL-terminate
  +    szBuf[1024] = 0;    // Double NULL-terminate
  +    szBuf[1025] = 0;    // Double NULL-terminate
   
       Mylstrcpy(szBuf,lpT2); // add Hangul
       szBuf[Mylstrlen(lpT2)] = 0;
   
  -    nBufLen = GetCandidateStringsFromDictionary(lpT2, szBuf+Mylstrlen(lpT2)+1, 256, (LPTSTR)szDicFileName);
  +    nBufLen = GetCandidateStringsFromDictionary(lpT2, szBuf+Mylstrlen(lpT2)+1, 1024, (LPTSTR)szDicFileName);
       //
       // Check the result of dic. Because my candidate list has only MAXCANDSTRNUM
       // candidate strings.
  @@ -306,16 +309,21 @@
                   //
                   // Set the composition string to the structure.
                   //
  -                Mylstrcpy(GETLPCOMPSTR(lpCompStr),lpstr);
  -                if ((dwImeFlag & SAENARU_ONTHESPOT)&& Mylstrlen(lpstr) == 1)
  -                   cs = *lpstr;
  +
  +                Mylstrcpy(lpmystr,lpstr);
  +                if (NULL != (lpTemp = Mystrchr(lpmystr, MYTEXT(' '))))
  +                    *lpTemp = MYTEXT('\0');
  +
  +                Mylstrcpy(GETLPCOMPSTR(lpCompStr),lpmystr);
  +                if ((dwImeFlag & SAENARU_ONTHESPOT)&& Mylstrlen(lpmystr) == 1)
  +                   cs = *lpmystr;
   
                   lpstr = GETLPCOMPSTR(lpCompStr);
   
                   //
                   // Set the length and cursor position to the structure.
                   //
  -                lpCompStr->dwCompStrLen = Mylstrlen(lpstr);
  +                lpCompStr->dwCompStrLen = Mylstrlen(lpmystr);
                   lpCompStr->dwCursorPos = 0;
                   // Because SAENARU does not support clause, DeltaStart is 0 anytime.
                   lpCompStr->dwDeltaStart = 0;
  @@ -324,7 +332,7 @@
                   // make attribute
                   //
                   lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),
  -                                ATTR_TARGET_CONVERTED, Mylstrlen(lpstr));
  +                                ATTR_TARGET_CONVERTED, Mylstrlen(lpmystr));
                   lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),
                                   ATTR_TARGET_CONVERTED,
                                   Mylstrlen(GETLPCOMPREADSTR(lpCompStr)));
  @@ -332,7 +340,7 @@
                   //
                   // make clause info
                   //
  -                SetClause(GETLPCOMPCLAUSE(lpCompStr),Mylstrlen(lpstr));
  +                SetClause(GETLPCOMPCLAUSE(lpCompStr),Mylstrlen(lpmystr));
                   SetClause(GETLPCOMPREADCLAUSE(lpCompStr),Mylstrlen(GETLPCOMPREADSTR(lpCompStr)));
                   lpCompStr->dwCompClauseLen = 8;
                   lpCompStr->dwCompReadClauseLen = 8;
  @@ -387,7 +395,10 @@
           {
               lpCandList->dwOffset[i] =
                      (DWORD)((LPSTR)((LPMYCAND)lpCandInfo)->szCand[i] - (LPSTR)lpCandList);
  -            Mylstrcpy((LPMYSTR)((LPSTR)lpCandList+lpCandList->dwOffset[i]),lpstr);
  +            Mylstrcpy(lpmystr,lpstr);
  +            if (NULL != (lpTemp = Mystrchr(lpmystr, MYTEXT(','))))
  +              *lpTemp = MYTEXT('\0');
  +            Mylstrcpy((LPMYSTR)((LPSTR)lpCandList+lpCandList->dwOffset[i]),lpmystr);
               lpstr += (Mylstrlen(lpstr) + 1);
               i++;
           }
  @@ -1027,7 +1038,8 @@
           if (next || select)
           {
               ConvHanja(hIMC,next,select);
  -            return TRUE;
  +            if (next) return TRUE;
  +            wParam=VK_RETURN;
           }
       }
   
  @@ -1506,8 +1518,9 @@
   int CopyCandidateStringsFromDictionary(LPMYSTR lpDic, LPMYSTR lpRead, LPMYSTR lpBuf, DWORD dwBufLen)
   {
       DWORD dwWritten = 0;
  -    LPMYSTR lpSection, lpTemp;
  -    const LPMYSTR szSep = MYTEXT(" \r\n\t");
  +    LPMYSTR lpSection, lpTemp, lpTemp2;
  +    //const LPMYSTR szSep = MYTEXT(" \r\n\t");
  +    const LPMYSTR szSep = MYTEXT("\r\n\t");
   
       LPMYSTR lpToken = Mystrtok(lpDic, szSep);
       while (NULL != lpToken)
  @@ -1529,14 +1542,39 @@
       {
           LPMYSTR lpWrite = lpBuf;
           DWORD dwW;
  +        DWORD len;
           while ((NULL != lpToken) &&
                  ((dwBufLen - dwWritten) > 1) &&
                  (MYTEXT('[') != *lpToken))
           {
               if (NULL != (lpTemp = Mystrchr(lpToken, MYTEXT('='))))
                   *lpTemp = MYTEXT('\0');
  +
  +            len = Mylstrlen(lpToken);
  +            //  ̸鼭 KSX1002  ƴϸ charset üũ
  +            if ( len == 1 && !(dwOptionFlag & KSX1002_SUPPORT))
  +            {
  +                WORD mb;
  +                WideCharToMultiByte(949, WC_COMPOSITECHECK,
  +                        lpToken, 1, (char *)&mb, 2, NULL, NULL);
  +
  +                if(LOBYTE(mb) < 0xa1 || LOBYTE(mb) > 0xfe 
  +                    || HIBYTE(mb) < 0xa1 || HIBYTE(mb) > 0xfe)
  +                {
  +                    lpToken = Mystrtok(NULL, szSep);
  +                    continue;
  +                }
  +            }
  +            //  
  +            if ( Mylstrlen(lpTemp+1) > 1) {
  +                *lpTemp = MYTEXT(' ');
  +                len = Mylstrlen(lpToken);
  +            }
  +            // XXX   ü ũⰡ Ŀ Է±Ⱑ ״´
  +            if ((dwBufLen - dwWritten -1) < len) break;
  +
               Mylstrcpyn(lpWrite, lpToken, dwBufLen - dwWritten - 1);
  -            dwW = Mylstrlen(lpToken) + 1;
  +            dwW = len + 1;
               lpWrite += dwW;
               dwWritten += dwW;
               lpToken = Mystrtok(NULL, szSep);
  
  
  


wkpark      04/10/10 19:59:18

  Modified:    src      reg.c
  Log:
  fixed GetRegString()
  
  Revision  Changes    Path
  1.5       +5 -2      saenaru/src/reg.c
  
  Index: reg.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/reg.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- reg.c	26 Dec 2003 09:32:51 -0000	1.4
  +++ reg.c	10 Oct 2004 10:59:18 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/reg.c,v 1.4 2003/12/26 09:32:51 perky Exp $
  + * $Saenaru: saenaru/src/reg.c,v 1.5 2004/10/10 10:59:18 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -228,7 +228,10 @@
       lstrcpy (szRegInfoPath, g_szRegInfoPath) ;
       if (lpszSubKey)
           lstrcat (szRegInfoPath, lpszSubKey) ;
  -    if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, g_szRegInfoPath, 0, KEY_READ, &hKey) != ERROR_SUCCESS)
  +
  +    MyDebugPrint((TEXT("GetRegString: %s: path=%s\n"), lpszKey, szRegInfoPath));
  +
  +    if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, szRegInfoPath, 0, KEY_READ, &hKey) != ERROR_SUCCESS)
           return    -1 ;
       dwRet    = RegQueryValueEx (hKey, lpszKey, NULL, &dwRegType, (LPBYTE)lpString, &dwDataSize) ;
       RegCloseKey (hKey) ;
  
  
  


wkpark      04/10/10 19:59:53

  Modified:    src      saenaru.h
  Log:
  increase the size of dictionary
  
  Revision  Changes    Path
  1.4       +3 -2      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- saenaru.h	26 Dec 2003 09:26:33 -0000	1.3
  +++ saenaru.h	10 Oct 2004 10:59:48 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.4 2004/10/10 10:59:48 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -103,7 +103,7 @@
   #define MAXCANDSTRSIZE          16
   #define MAXGLCHAR               32
   //#define MAXCANDSTRNUM           32
  -#define MAXCANDSTRNUM           128
  +#define MAXCANDSTRNUM           256
   
   
   /* for GlobalAlloc */
  @@ -512,6 +512,7 @@
   void SetDwordToSetting(LPCTSTR lpszFlag, DWORD dwFlag);
   long PASCAL GetRegMultiStringValue (LPCTSTR,LPCTSTR,LPTSTR);
   void SetRegMultiString(LPCTSTR lpszFlag, DWORD dwFlag);
  +long PASCAL GetRegStringValue (LPCTSTR,LPCTSTR,LPTSTR);
   void PASCAL SetGlobalFlags();
   void GetRegKeyList(LPCTSTR lpszSubDir);
   BOOL GetRegKeyHandle(LPCTSTR lpszSubKey, HKEY *hKey);
  
  
  


wkpark      04/10/11 23:37:59

  Modified:    src      dic.c
  Log:
  fix ESCAPE behavior at the cand list like the nabi
  
  Revision  Changes    Path
  1.5       +4 -1      saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- dic.c	10 Oct 2004 10:58:44 -0000	1.4
  +++ dic.c	11 Oct 2004 14:37:58 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.4 2004/10/10 10:58:44 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.5 2004/10/11 14:37:58 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1031,6 +1031,9 @@
               case VK_8:
               case VK_9:
                   select= wParam - VK_1 + 1;
  +                break;
  +            case VK_ESCAPE:
  +                select= 1;
                   break;
               default:
                   break;
  
  
  


wkpark      04/10/11 23:40:25

  Modified:    src      hangul.c
  Log:
  fixed 2set compose map to follow IME 2002 behavior
  fixed jong+jong compose algorithm in the automata2() and automata3()
  
  Revision  Changes    Path
  1.7       +98 -18    saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- hangul.c	9 Oct 2004 07:10:32 -0000	1.6
  +++ hangul.c	11 Oct 2004 14:40:24 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.6 2004/10/09 07:10:32 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.7 2004/10/11 14:40:24 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -946,6 +946,7 @@
   
   static const HangulCompose compose_table_default[] = {
     { 0x11001100, 0x1101 }, /* choseong  kiyeok + kiyeok	= ssangkiyeok	*/
  +  { 0x11001109, 0x11a9 }, /* choseong  kiyeok + sios	= kiyeok-sios	*/
     { 0x11031103, 0x1104 }, /* choseong  tikeut + tikeut	= ssangtikeut	*/
     { 0x11071107, 0x1108 }, /* choseong  pieup  + pieup	= ssangpieup	*/
     { 0x11091109, 0x110a }, /* choseong  sios   + sios	= ssangsios	*/
  @@ -959,8 +960,48 @@
     { 0x116e1166, 0x1170 }, /* jungseong u      + e	= we		*/
     { 0x116e1175, 0x1171 }, /* jungseong u      + i	= wi		*/
     { 0x11731175, 0x1174 }, /* jungseong eu     + i	= yi		*/
  -/*  { 0x11751163, 0x1164 }, /* jungseong i      + ya	= yae		*/
  -/*  { 0x11751167, 0x1168 }, /* jungseong i      + yeo	= ye		*/
  +  { 0x11a811a8, 0x11a9 }, /* jongseong kiyeok + kiyeok	= ssangekiyeok	*/
  +  { 0x11a811ba, 0x11aa }, /* jongseong kiyeok + sios	= kiyeok-sois	*/
  +  { 0x11ab11bd, 0x11ac }, /* jongseong nieun  + cieuc	= nieun-cieuc	*/
  +  { 0x11ab11c2, 0x11ad }, /* jongseong nieun  + hieuh	= nieun-hieuh	*/
  +  { 0x11af11a8, 0x11b0 }, /* jongseong rieul  + kiyeok	= rieul-kiyeok	*/
  +  { 0x11af11b7, 0x11b1 }, /* jongseong rieul  + mieum	= rieul-mieum	*/
  +  { 0x11af11b8, 0x11b2 }, /* jongseong rieul  + pieup	= rieul-pieup	*/
  +  { 0x11af11ba, 0x11b3 }, /* jongseong rieul  + sios	= rieul-sios	*/
  +  { 0x11af11c0, 0x11b4 }, /* jongseong rieul  + thieuth = rieul-thieuth	*/
  +  { 0x11af11c1, 0x11b5 }, /* jongseong rieul  + phieuph = rieul-phieuph	*/
  +  { 0x11af11c2, 0x11b6 }, /* jongseong rieul  + hieuh	= rieul-hieuh	*/
  +  { 0x11b811ba, 0x11b9 }, /* jongseong pieup  + sios	= pieup-sios	*/
  +  { 0x11ba11ba, 0x11bb }, /* jongseong sios   + sios	= ssangsios	*/
  +};
  +
  +static const HangulCompose compose_table_2set[] = {
  +  { 0x11001100, 0x1101 }, /* choseong  kiyeok + kiyeok	= ssangkiyeok	*/
  +  { 0x11001109, 0x11aa }, /* choseong  kiyeok + sios	= kiyeok-sios	*/
  +  { 0x1102110c, 0x11ac }, /* choseong  nieun  + cieuc	= nieun-cieuc	*/
  +  { 0x11021112, 0x11ad }, /* choseong  nieun  + hieuh	= nieun-hieuh	*/
  +  { 0x11031103, 0x1104 }, /* choseong  tikeut + tikeut	= ssangtikeut	*/
  +  { 0x11051100, 0x11b0 }, /* choseong  rieul  + kiyeok	= rieul-kiyeok	*/
  +  { 0x11051106, 0x11b1 }, /* choseong  rieul  + mieum	= rieul-mieum	*/
  +  { 0x11051107, 0x11b2 }, /* choseong  rieul  + pieup	= rieul-pieup	*/
  +  { 0x11051109, 0x11b3 }, /* choseong  rieul  + sios	= rieul-sios	*/
  +  { 0x11051110, 0x11b4 }, /* choseong  rieul  + thieuth = rieul-thieuth	*/
  +  { 0x11051111, 0x11b5 }, /* choseong  rieul  + phieuph = rieul-phieuph	*/
  +  { 0x11051112, 0x11b6 }, /* choseong  rieul  + hieuh	= rieul-hieuh	*/
  +  { 0x11071107, 0x1108 }, /* choseong  pieup  + pieup	= ssangpieup	*/
  +  { 0x11071109, 0x11b9 }, /* choseong  pieup  + sios	= pieup-sios	*/
  +  { 0x11091109, 0x110a }, /* choseong  sios   + sios	= ssangsios	*/
  +  { 0x110c110c, 0x110d }, /* choseong  cieuc  + cieuc	= ssangcieuc	*/
  +  { 0x11631175, 0x1164 }, /* jungseong ya     + i	= yae		*/
  +  { 0x11671175, 0x1168 }, /* jungseong yeo    + i	= ye		*/
  +  { 0x11691161, 0x116a }, /* jungseong o      + a	= wa		*/
  +  { 0x11691162, 0x116b }, /* jungseong o      + ae	= wae		*/
  +  { 0x11691175, 0x116c }, /* jungseong o      + i	= oe		*/
  +  { 0x116e1165, 0x116f }, /* jungseong u      + eo	= weo		*/
  +  { 0x116e1166, 0x1170 }, /* jungseong u      + e	= we		*/
  +  { 0x116e1175, 0x1171 }, /* jungseong u      + i	= wi		*/
  +  { 0x11731175, 0x1174 }, /* jungseong eu     + i	= yi		*/
  +
     { 0x11a811a8, 0x11a9 }, /* jongseong kiyeok + kiyeok	= ssangekiyeok	*/
     { 0x11a811ba, 0x11aa }, /* jongseong kiyeok + sios	= kiyeok-sois	*/
     { 0x11ab11bd, 0x11ac }, /* jongseong nieun  + cieuc	= nieun-cieuc	*/
  @@ -1218,13 +1259,18 @@
   };
   
   //#define compose_table compose_table_default
  -static HangulCompose *compose_table = (HangulCompose *) compose_table_default;
  -static int compose_table_size = sizeof(compose_table_default) / sizeof(HangulCompose);
  +static HangulCompose *compose_table = (HangulCompose *) compose_table_2set;
  +static int compose_table_size = sizeof(compose_table_2set) / sizeof(HangulCompose);
   
   int PASCAL set_compose(UINT type)
   {
       switch (type)
       {
  +	case 1:
  +           compose_table = (HangulCompose *) compose_table_2set;
  +           compose_table_size =
  +		   sizeof(compose_table_2set) / sizeof(HangulCompose);
  +           break;
           case 3:
              compose_table = (HangulCompose *) compose_table_ahnmatae;
              compose_table_size =
  @@ -1276,7 +1322,7 @@
           case LAYOUT_OLD2BUL:
               keyboard_table=(WCHAR *)keyboard_table_2;
   	    atype=2;
  -	    ctype=0;
  +	    ctype=1;
   	    break;
   	case LAYOUT_3FIN:
               keyboard_table=(WCHAR *)keyboard_table_3final;
  @@ -1298,7 +1344,7 @@
   	     load_keyboard_map_from_reg(TEXT("ι"),0,keyboard_table_user);
   	    if (atype)
   	        keyboard_table=keyboard_table_user;
  -	    ctype=0;
  +	    ctype=1;
   	    break;
   	case LAYOUT_NEW3BUL:
               atype=
  @@ -1811,7 +1857,7 @@
                   // ׷,  ϹǷ Ѵ :)
                   comb = hangul_compose(ic->cho, jamo);
   		// ġ   ٲ㼭 + 
  -		if ( ctyping && !hangul_is_choseong(comb))
  +		if ( ctyping && !comb)
   		    comb = hangul_compose(jamo,ic->cho);
   
                   if ( hangul_is_choseong(comb) ) {
  @@ -1820,14 +1866,23 @@
                       hangul_ic_push(ic,comb);
                       ic->last=jamo;
                       return 0;
  -		} else {
  -                    *cs = hangul_ic_commit(ic);
  -                    // ʼ compose  .
  -                    ic->cho=jamo;
  -                    hangul_ic_push(ic,jamo);
  -                    ic->laststate=1;
  +		} else if ( hangul_is_jongseong(comb) ) {
  +		    // + ->  Ǵ 
  +		    // IME 2002 ϹǷ
  +                    ic->jong=comb;
  +                    ic->cho=0;
  +                    hangul_ic_pop(ic);
  +                    hangul_ic_push(ic,comb);
  +                    ic->last=jamo;
  +                    ic->laststate=3;
                       return -1;
                   }
  +                // ʼ compose  .
  +                *cs = hangul_ic_commit(ic);
  +                ic->cho=jamo;
  +                hangul_ic_push(ic,jamo);
  +                ic->laststate=1;
  +                return -1;
                   break;
               case 2: // ʼ+߼
                   ic->jung=jamo;
  @@ -1874,7 +1929,7 @@
                   break;
               case 2: // ߼ + ߼
                   comb = hangul_compose(ic->jung, jamo);
  -		// ġ   ٲ㼭 + 
  +		// ġ   ٲ㼭 + 
   		if ( ctyping && !hangul_is_jungseong(comb))
   		    comb = hangul_compose(jamo,ic->jung);
                   if ( hangul_is_jungseong(comb) ) {
  @@ -1923,6 +1978,9 @@
               case 1: // ʼ  ٲ㼭
                   jong = hangul_choseong_to_jongseong(jamo);
                   comb = hangul_compose(ic->jong, jong);
  +		// ġ   ٲ㼭 + 
  +		if ( ctyping && !hangul_is_jongseong(comb))
  +		    comb = hangul_compose(jong,ic->jong);
                   if ( hangul_is_jongseong(comb) )
                   {
                       if (hangul_jamo_to_syllable(ic->cho,ic->jung,comb))
  @@ -1948,14 +2006,18 @@
                   if (ic->jong != ic->last) {
                       hangul_jongseong_dicompose(ic->jong, &jong, &cho);
   		}
  -		last = hangul_jongseong_to_choseong(ic->last);
  +		last=ic->last;
  +		if ( hangul_is_jongseong(ic->last) )
  +		    last = hangul_jongseong_to_choseong(ic->last);
   
                   if (jong && cho)
                       ic->jong = jong;
                   else {
  +		    // ص   
                       //  + ߼:   ʼ ٲٰ  
                       cho = hangul_jongseong_to_choseong(ic->jong);
  -		    ic->jong = 0; // .
  +		    if (cho)
  +			ic->jong = 0; // .
                   }
   
                   *cs = hangul_ic_commit(ic);
  @@ -1975,6 +2037,9 @@
                   // ׷, Ŀ ι 丶Ÿ 
                   // ؼ  ó ִ´.
                   comb = hangul_compose(ic->jong, jamo);
  +		// ġ   ٲ㼭 + 
  +		if ( ctyping && !comb)
  +		    comb = hangul_compose(jamo,ic->jong);
                   if ( comb )
                   {
                       if (hangul_jamo_to_syllable(ic->cho,ic->jung,comb))
  @@ -1986,7 +2051,15 @@
                           ic->laststate=3;
                           return 0;
                       }
  -                } else {
  +		    // +
  +                    ic->jong=comb;
  +                    hangul_ic_pop(ic);
  +                    hangul_ic_push(ic,comb);
  +                    ic->last=jamo;
  +                    ic->laststate=3;
  +                    return 0;
  +                }
  +		{
                       *cs = hangul_ic_commit(ic);
                       ic->jong=jamo;
                       hangul_ic_push(ic,jamo);
  @@ -2360,6 +2433,13 @@
                           ic->laststate=3;
                           return 0;
                       }
  +		    // XXX +
  +                    ic->jong=comb;
  +                    hangul_ic_pop(ic);
  +                    hangul_ic_push(ic,comb);
  +                    ic->last=jamo;
  +                    ic->laststate=3;
  +                    return 0;
   		}
   		{
                       *cs = hangul_ic_commit(ic);
  
  
  


wkpark      04/10/13 20:10:49

  Modified:    src      hangul.c
  Log:
  add new compose entries for yae(U+1164), ye(U+1168)
  fixed compose algorithm: automata3() for jung+jung
  enhanced no-jong + ssang cho algorithm: automata2()
  
  Revision  Changes    Path
  1.8       +21 -2     saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- hangul.c	11 Oct 2004 14:40:24 -0000	1.7
  +++ hangul.c	13 Oct 2004 11:10:46 -0000	1.8
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.7 2004/10/11 14:40:24 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.8 2004/10/13 11:10:46 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -960,6 +960,9 @@
     { 0x116e1166, 0x1170 }, /* jungseong u      + e	= we		*/
     { 0x116e1175, 0x1171 }, /* jungseong u      + i	= wi		*/
     { 0x11731175, 0x1174 }, /* jungseong eu     + i	= yi		*/
  +  { 0x11751162, 0x1164 }, /* jungseong i      + ae	= yae		*/
  +  { 0x11751166, 0x1168 }, /* jungseong i      + e	= ye		*/
  +
     { 0x11a811a8, 0x11a9 }, /* jongseong kiyeok + kiyeok	= ssangekiyeok	*/
     { 0x11a811ba, 0x11aa }, /* jongseong kiyeok + sios	= kiyeok-sois	*/
     { 0x11ab11bd, 0x11ac }, /* jongseong nieun  + cieuc	= nieun-cieuc	*/
  @@ -1001,6 +1004,8 @@
     { 0x116e1166, 0x1170 }, /* jungseong u      + e	= we		*/
     { 0x116e1175, 0x1171 }, /* jungseong u      + i	= wi		*/
     { 0x11731175, 0x1174 }, /* jungseong eu     + i	= yi		*/
  +  { 0x11751162, 0x1164 }, /* jungseong i      + ae	= yae		*/
  +  { 0x11751166, 0x1168 }, /* jungseong i      + e	= ye		*/
   
     { 0x11a811a8, 0x11a9 }, /* jongseong kiyeok + kiyeok	= ssangekiyeok	*/
     { 0x11a811ba, 0x11aa }, /* jongseong kiyeok + sios	= kiyeok-sois	*/
  @@ -1993,6 +1998,18 @@
                           return 0;
                       }
                   }
  +                hangul_jongseong_dicompose(ic->jong, &jong, &cho);
  +		if (jong && cho) {
  +		    last=ic->last;
  +		    if ( hangul_is_jongseong(ic->last) )
  +			last = hangul_jongseong_to_choseong(ic->last);
  +		    if (last == jamo && (jamo == 0x1100 || jamo == 0x1103 ||
  +			jamo == 0x1107 || jamo == 0x110c )) //    
  +		    {
  +			ic->jong=jong;
  +			jamo= hangul_compose(last,last); // make ssang cho
  +		    }
  +		}
                   {
                       // ʼ compose  .
                       *cs = hangul_ic_commit(ic);
  @@ -2226,7 +2243,9 @@
                   break;
               case 2: // ߼ + ߼
                   comb = hangul_compose(ic->jung, jamo);
  -                if ( hangul_is_jungseong(comb) ) {
  +		if (ctyping && !comb )
  +		    comb = hangul_compose(jamo,ic->jung);
  +                if ( comb ) {
                       ic->jung=comb;
                       hangul_ic_pop(ic);
                       hangul_ic_push(ic,comb);
  
  
  


wkpark      04/10/13 20:20:33

  Modified:    src      dic.c
  Log:
  fix candidate related bug: set CompRead attr
  fixed RETURN key behavior under Hanja mode
  
  Revision  Changes    Path
  1.6       +13 -1     saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- dic.c	11 Oct 2004 14:37:58 -0000	1.5
  +++ dic.c	13 Oct 2004 11:20:32 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.5 2004/10/11 14:37:58 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.6 2004/10/13 11:20:32 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -589,6 +589,7 @@
           lpread = GETLPCOMPREADSTR(lpCompStr);
           /*lZenToHan (lpread,lpstr);
            */
  +        Mylstrcpy(lpread,lpstr); // !!!
   
           lmemset(GETLPCOMPATTR(lpCompStr),ATTR_INPUT,Mylstrlen(lpstr));
           lmemset(GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT,Mylstrlen(lpread));
  @@ -1134,6 +1135,17 @@
               break;
   
           case VK_RETURN:
  +            lpIMC = ImmLockIMC(hIMC);
  +            // Get ConvMode from IMC.
  +            fdwConversion = lpIMC->fdwConversion;
  +            ImmUnlockIMC(hIMC);
  +            if (IsCompStr(hIMC) &&
  +                    (fdwConversion & IME_CMODE_FULLSHAPE) &&
  +                    (fdwConversion & IME_CMODE_NATIVE)) {
  +                MakeResultString(hIMC,TRUE);
  +                hangul_ic_init(&ic);
  +                return TRUE;
  +            }
               if (IsConvertedCompStr(hIMC))
                   cf = TRUE;
               MakeResultString(hIMC,TRUE);
  
  
  


wkpark      04/10/13 20:23:35

  Modified:    src      ui.c uicomp.c
  Log:
  fix for more fancy CompWnd
  
  Revision  Changes    Path
  1.6       +3 -4      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ui.c	9 Oct 2004 02:43:56 -0000	1.5
  +++ ui.c	13 Oct 2004 11:23:33 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.5 2004/10/09 02:43:56 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.6 2004/10/13 11:23:33 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -503,7 +503,7 @@
               // Set the position of the candidate window to UIExtra.
               // This message is sent by the candidate window.
               //
  -            lpIMC = ImmLockIMC(hUICurIMC);
  +            //lpIMC = ImmLockIMC(hUICurIMC);
               hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
               lpUIExtra = (LPUIEXTRA)GlobalLock(hUIExtra);
               lpUIExtra->uiCand.pt.x = (long)LOWORD(lParam);
  @@ -511,8 +511,7 @@
   
               MyDebugPrint((TEXT(" * CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
               //MoveCandWindow(hWnd,lpIMC,lpUIExtra,FALSE);
  -
  -            ImmUnlockIMC(hUICurIMC);
  +            //ImmUnlockIMC(hUICurIMC);
               GlobalUnlock(hUIExtra);
               break;
   #if 1
  
  
  
  1.5       +16 -6     saenaru/src/uicomp.c
  
  Index: uicomp.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicomp.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- uicomp.c	9 Oct 2004 02:43:56 -0000	1.4
  +++ uicomp.c	13 Oct 2004 11:23:33 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicomp.c,v 1.4 2004/10/09 02:43:56 wkpark Exp $
  + * $Saenaru: saenaru/src/uicomp.c,v 1.5 2004/10/13 11:23:33 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -135,7 +135,8 @@
           lpUIExtra->uiDefComp.hWnd = 
               CreateWindowEx( WS_EX_WINDOWEDGE,
                            (LPTSTR)szCompStrClassName,NULL,
  -                         WS_COMPDEFAULT | WS_DLGFRAME,
  +                         //WS_COMPDEFAULT | WS_DLGFRAME,
  +                         WS_COMPNODEFAULT,
                            lpUIExtra->uiDefComp.pt.x,
                            lpUIExtra->uiDefComp.pt.y,
                            1,1,
  @@ -536,7 +537,7 @@
           switch (bAttr)
           {
               case ATTR_INPUT:
  -                SetTextColor(hDC,RGB(0,0,0));
  +                // XXX SetTextColor(hDC,RGB(0,0,0));
                   //SetBkMode(hDC,TRANSPARENT);
                   MoveToEx(hDC, rc.right, rc.top, NULL);
                   LineTo  (hDC, rc.right, rc.bottom);
  @@ -600,7 +601,9 @@
       HFONT hOldFont = (HFONT)NULL;
       HWND hSvrWnd;
   
  +    GetClientRect(hCompWnd,&rc);
       hDC = BeginPaint(hCompWnd,&ps);
  +    //FillRect(hDC,&rc,(HBRUSH) (COLOR_BTNFACE + 1));
   
       if (hFont = (HFONT)GetWindowLongPtr(hCompWnd,FIGWL_FONT))
           hOldFont = SelectObject(hDC,hFont);
  @@ -626,19 +629,25 @@
   
                   lpstr = GETLPCOMPSTR(lpCompStr);
                   lpattr = GETLPCOMPATTR(lpCompStr);
  -                //SetBkMode(hDC,TRANSPARENT);
  +                SetBkMode(hDC,TRANSPARENT);
                   if (lpIMC->cfCompForm.dwStyle)
                   {
                       // ̰  ϸ
                       // ѱ   ʴ ÿ
                       //    ѱ     ̴.
                       HDC hPDC;
  +                    //HBRUSH hBrush;
  +                    //hBrush=CreateSolidBrush(GetBkColor(hDC));
  +                    //FillRect(hDC,&rc,hBrush);
   
                       hPDC = GetDC(GetParent(hCompWnd));
                       GetClientRect (hCompWnd,&rc);
  -                    SetBkColor(hDC,GetBkColor(hPDC));
  +                    //SetBkColor(hDC,GetBkColor(hPDC));
  +                    SetBkColor(hDC,GetBkColor(hDC));
  +                    SetTextColor(hDC,GetTextColor(hDC));
                       //SetTextColor(hDC,RGB(127,127,127));
  -                    SetBkMode(hDC,OPAQUE);
  +                    //SetBkMode(hDC,OPAQUE);
  +                    FillRect(hDC,&rc,(HBRUSH) (COLOR_BTNFACE + 1));
   
                       lstart = GetWindowLong(hCompWnd,FIGWL_COMPSTARTSTR);
                       num = GetWindowLong(hCompWnd,FIGWL_COMPSTARTNUM);
  @@ -653,6 +662,7 @@
                   }
                   else
                   {
  +                    FillRect(hDC,&rc,(HBRUSH) (COLOR_BTNFACE + 1));
                       num = Mylstrlen(lpstr);
                       DrawTextOneLine(hCompWnd, hDC, lpstr, lpattr, num, fVert);
                   }
  
  
  


wkpark      04/11/30 02:01:50

  Modified:    src      btnime.cpp
  Log:
  support user defined compose maps.
  option added to change ime mode to english with <ESC>
  
  Revision  Changes    Path
  1.3       +99 -16    saenaru/src/btnime.cpp
  
  Index: btnime.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btnime.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- btnime.cpp	26 Dec 2003 09:26:33 -0000	1.2
  +++ btnime.cpp	29 Nov 2004 17:01:50 -0000	1.3
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btnime.cpp,v 1.2 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/btnime.cpp,v 1.3 2004/11/29 17:01:50 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -59,12 +59,17 @@
   static void  _Menu_Reconversion (UINT);
   static void  _Menu_ToggleShowKeyboard (UINT);
   static void  _Menu_ToggleDvorak (UINT);
  +static void  _Menu_ToggleEscEng (UINT);
   static void  _Menu_ToggleOnTheSpot (UINT);
   static void  _Menu_SelectKeyboard (UINT);
  +static void  _Menu_SelectCompose (UINT);
   static DWORD _MenuItem_GetNormalFlag (UINT);
   static DWORD _MenuItem_GetKeyboardFlag (UINT);
  +static DWORD _MenuItem_GetComposeFlag (UINT);
   static DWORD _MenuItem_GetToggleKeyboardFlag (UINT);
  +static DWORD _MenuItem_GetToggleComposeFlag (UINT);
   static DWORD _MenuItem_GetToggleDvorakFlag (UINT);
  +static DWORD _MenuItem_GetToggleEscEngFlag (UINT);
   static DWORD _MenuItem_GetToggleOnTheSpotFlag (UINT);
   static DWORD _UserKeyboardMenu_GetKeyboardFlag (UINT);
   
  @@ -80,6 +85,7 @@
   //  { L"缳(&C)",   _MenuItem_GetNormalFlag, _Menu_Reconversion },
       { NULL, NULL, NULL },
       { L"庸(&V)",   _MenuItem_GetToggleDvorakFlag,   _Menu_ToggleDvorak },
  +    { L"ESC ȯ(&E)", _MenuItem_GetToggleEscEngFlag, _Menu_ToggleEscEng },
       { L"ܾ (&W)", _MenuItem_GetToggleOnTheSpotFlag,_Menu_ToggleOnTheSpot },
       { NULL, NULL, NULL },
       { L"Ű ",  _MenuItem_GetToggleKeyboardFlag, _Menu_ToggleShowKeyboard },
  @@ -101,6 +107,7 @@
       { L"ȸ(&A)",        NULL },
       { L" Ʒ(&N)", NULL },
       { L" (&U)",   TF_LBMENUF_SUBMENU },
  +    { L" (&C)",   TF_LBMENUF_SUBMENU },
   };
   
   enum {
  @@ -302,6 +309,9 @@
       ITfMenu *pUserKeyboardMenu;
       int     idUserKeyboardMenu=0;
   
  +    ITfMenu *pUserComposeMenu;
  +    int     idUserComposeMenu=0;
  +
       DEBUGPRINTFEX (100, (TEXT ("CLangBarItemImeButton::InitMenu (ITfMenu:%p)\n"), pMenu));
   
       if (pMenu == NULL)
  @@ -325,6 +335,7 @@
   
       // Add default Keyboard lists
       pUserKeyboardMenu=NULL;
  +    pUserComposeMenu=NULL;
       for (i = 0; i < ARRAYSIZE (c_rgKeyboardItems); i++)
       {
           wstrDesc = c_rgKeyboardItems [i].pchDesc;
  @@ -335,10 +346,15 @@
               dwFlag = _MenuItem_GetKeyboardFlag(id);
               pMenu->AddMenuItem (id++,
                      dwFlag, NULL, NULL, wstrDesc, nstrDesc, NULL);
  -        } else {
  +        } else if (idUserKeyboardMenu == 0) {
               idUserKeyboardMenu = id;
               pMenu->AddMenuItem (id++,
                      dwFlag, NULL, NULL, wstrDesc, nstrDesc, &pUserKeyboardMenu);
  +        } else {
  +	    id=20;
  +            idUserComposeMenu = id;
  +            pMenu->AddMenuItem (id++,
  +                   dwFlag, NULL, NULL, wstrDesc, nstrDesc, &pUserComposeMenu);
           }
       }
       // add seperator
  @@ -347,7 +363,7 @@
                           TF_LBMENUF_SEPARATOR , NULL, NULL, NULL, 0, NULL);
   
       // add extra config menus
  -    id=20;
  +    id=30;
       for (i = 2; i < ARRAYSIZE (c_rgMenuItems); i++)
       {
           wstrDesc = c_rgMenuItems [i].pchDesc;
  @@ -361,7 +377,7 @@
           pMenu->AddMenuItem (id++, dwFlag, NULL, NULL, wstrDesc, nstrDesc, NULL);
       }
       
  -    // addd User defined Keyboads (SubMenu)
  +    // add User defined Keyboads (SubMenu)
       if (idUserKeyboardMenu) {
           HKEY hKey;
   
  @@ -398,6 +414,43 @@
           }
           pUserKeyboardMenu->Release();
       }
  +    // add User defined Composes (SubMenu)
  +    if (idUserComposeMenu) {
  +        HKEY hKey;
  +
  +        id = idUserComposeMenu;
  +
  +        if (!GetRegKeyHandle(TEXT("\\Compose"), &hKey))
  +            return S_OK;
  +        for (i=0;i<10;i++)
  +        {
  +            WCHAR achValue[256]; 
  +            DWORD cchValue = 256;
  +            DWORD retCode;
  +
  +            achValue[0] = '\0'; 
  +            retCode = RegEnumValue(hKey, i, 
  +                achValue, 
  +                &cchValue, 
  +                NULL, 
  +                NULL,
  +                NULL,
  +                NULL);
  + 
  +            if (retCode != ERROR_SUCCESS ) 
  +            { 
  +                break;
  +                MyDebugPrint((TEXT("(%d) %s\n"), i+1, achValue));
  +            }     
  +            wstrDesc = achValue;
  +            nstrDesc = wcslen (wstrDesc);
  +            dwFlag = _MenuItem_GetComposeFlag(id);
  +            pUserComposeMenu->AddMenuItem (id++,
  +            //pUserKeyboardMenu->AddMenuItem (idUserKeyboardMenu,
  +                            dwFlag, NULL, NULL, wstrDesc, nstrDesc, NULL);
  +        }
  +        pUserComposeMenu->Release();
  +    }
       return S_OK;
   }
   
  @@ -409,14 +462,16 @@
   //        return    E_FAIL;
       MyDebugPrint((TEXT("MenuSelect:%x\n"), wID));
   
  -    if (wID == 0 || wID >= 20 ){
  -        if (wID >= 20) wID-= 18;
  +    if (wID == 0 || wID >= 30 ){
  +        if (wID >= 30) wID-= 28;
           if (c_rgMenuItems [wID].pfnHandler != NULL) {
               c_rgMenuItems [wID].pfnHandler (wID);
               //UpdateLanguageBar ();
           }
  -    } else {
  +    } else if (wID < 20) {
           _Menu_SelectKeyboard (wID);
  +    } else {
  +        _Menu_SelectCompose (wID);
       }
       return    S_OK;
   }
  @@ -582,6 +637,17 @@
       return;
   }
   
  +void
  +_Menu_SelectCompose (UINT wID)
  +{
  +    wID-=16;
  +    //dwLayoutFlag &= 0xffff0000;
  +    //dwLayoutFlag |= wID;
  +    dwComposeFlag = wID;
  +    set_compose(wID);
  +    return;
  +}
  +
   DWORD
   _MenuItem_GetKeyboardFlag (UINT wID)
   {
  @@ -593,6 +659,17 @@
       return    0;
   }
   
  +DWORD
  +_MenuItem_GetComposeFlag (UINT wID)
  +{
  +    wID-=16;
  +    DEBUGPRINTFEX (100, (TEXT ("GetComposeFlag:%d)\n"), wID));
  +    //if ( flag & dwLayoutFlag)
  +    if ( wID == dwComposeFlag)
  +        return 1;
  +    return    0;
  +}
  +
   void
   _Menu_ToggleShowKeyboard (UINT wID)
   {
  @@ -625,19 +702,19 @@
   void
   _Menu_ToggleDvorak (UINT wID)
   {
  -    //static HKL hkl=NULL;
       if (dwOptionFlag & DVORAK_SUPPORT)
  -    {
           dwOptionFlag &= ~DVORAK_SUPPORT;
  -	//if (hkl)
  -	//    UnloadKeyboardLayout(hkl);
  -	//hkl=NULL;
  -    }
       else
  -    {
           dwOptionFlag |= DVORAK_SUPPORT;
  -	//hkl=LoadKeyboardLayout(TEXT("00010409"),KLF_ACTIVATE);
  -    }
  +    return;
  +}
  +void
  +_Menu_ToggleEscEng (UINT wID)
  +{
  +    if (dwOptionFlag & ESCENG_SUPPORT)
  +        dwOptionFlag &= ~ESCENG_SUPPORT;
  +    else
  +        dwOptionFlag |= ESCENG_SUPPORT;
       return;
   }
   
  @@ -664,6 +741,12 @@
   }
   
   DWORD
  +_MenuItem_GetToggleEscEngFlag (UINT wID)
  +{
  +    return (dwOptionFlag & ESCENG_SUPPORT) ? 1 : 0;
  +}
  +
  +DWORD
   _MenuItem_GetToggleOnTheSpotFlag (UINT wID)
   {
       return (dwImeFlag & SAENARU_ONTHESPOT) ? 0 : 1;
  
  
  


wkpark      04/11/30 02:06:14

  Modified:    src      config.c data.c hangul.c imm.c resource.h saenaru.h
                        saenaru.rc ui.c
  Log:
  support user defined compose maps.
  option added to change ime mode to english with <ESC>
  
  Revision  Changes    Path
  1.4       +151 -1    saenaru/src/config.c
  
  Index: config.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/config.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- config.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ config.c	29 Nov 2004 17:06:14 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/config.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/config.c,v 1.4 2004/11/29 17:06:14 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -208,6 +208,8 @@
                           dwTemp |= USE_SHIFT_SPACE;
                       if (IsDlgButtonChecked(hDlg, IDC_DVORAK_SUPPORT))
                           dwTemp |= DVORAK_SUPPORT;
  +                    if (IsDlgButtonChecked(hDlg, IDC_ESCENG_SUPPORT))
  +                        dwTemp |= ESCENG_SUPPORT;
                       dwOptionFlag = dwTemp;
   
                       SetDwordToSetting(TEXT("OptionFlag"), dwOptionFlag);
  @@ -283,6 +285,8 @@
                                   (dwOptionFlag & FULL_MULTIJOMO) ? 1 : 0);
               CheckDlgButton(hDlg, IDC_DVORAK_SUPPORT, 
                                   (dwOptionFlag & DVORAK_SUPPORT) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_ESCENG_SUPPORT, 
  +                                (dwOptionFlag & ESCENG_SUPPORT) ? 1 : 0);
               CheckDlgButton(hDlg, IDC_USE_SHIFT_SPACE, 
                                   (dwOptionFlag & USE_SHIFT_SPACE) ? 1 : 0);
   
  @@ -580,6 +584,152 @@
   }
   #endif
   
  +UINT
  +load_compose_map_from_reg(LPCTSTR lpszCompose, UINT nCompose, HangulCompose *compose_map)
  +{
  +    WCHAR *line, *p, *saved_position;
  +    TCHAR buf[256];
  +    //FILE* file;
  +    UINT key1, key2;
  +    DWORD value;
  +    //NabiComposeItem *citem;
  +    UINT map_size;
  +    //GSList *list = NULL;
  +    INT sz, len;
  +    WCHAR name[256];
  +    //LPTSTR kbuf=NULL;
  +    LPTSTR kbuf=NULL;
  +    UINT _key[256];
  +    WCHAR _code[256];
  +    UINT id=0,i;
  +
  +    WCHAR achValue[256];
  +
  +    if (lpszCompose == NULL && nCompose <10)
  +    {
  +        DWORD cchValue = 256;
  +        DWORD retCode;
  +        HKEY hKey;
  +
  +        if (!GetRegKeyHandle(TEXT("\\Compose"), &hKey))
  +            return 0;
  +
  +        achValue[0] = '\0'; 
  +        retCode = RegEnumValue(hKey, nCompose, 
  +            achValue, 
  +            &cchValue, 
  +            NULL, 
  +            NULL,
  +            NULL,
  +            NULL);
  +
  +        if (retCode != ERROR_SUCCESS ) 
  +        { 
  +            MyDebugPrint((TEXT("(%d) %s\n"), nCompose, achValue));
  +            return 0;
  +        }
  +        lpszCompose = (LPCTSTR) &achValue;
  +    }
  +
  +    sz= GetRegMultiStringValue(TEXT("\\Compose"),lpszCompose,NULL);
  +    if (sz <= 0) {
  +            MyDebugPrint((TEXT("Saenaru: ComposeMap not found\n")));
  +            return 0;
  +    }
  +
  +    MyDebugPrint((TEXT("Saenaru: reg size %d\n"), sz));
  +    kbuf=(LPTSTR) malloc(sz);
  +    //
  +    if (kbuf == (LPTSTR)NULL) {
  +            MyDebugPrint((TEXT("Saenaru: Can't read compose map registry\n")));
  +            return 0;
  +    }
  +
  +    GetRegMultiStringValue(TEXT("\\Compose"),lpszCompose,kbuf);
  +    /* init */
  +    //compose_map->name = NULL;
  +    //compose_map->map = NULL;
  +    //compose_map->size = 0;
  +
  +    for (line = Mystrtok(kbuf, TEXT("\0"));id<256
  +	 ;
  +	 line = Mystrtok(saved_position, TEXT("\0"))) {
  +        len=Mylstrlen(line);
  +        saved_position=line+len+1;
  +
  +        if (len==0) break;
  +
  +	p = Mystrtok(line, TEXT(" \t\0"));
  +        MyDebugPrint((TEXT("tok: %s\n"),p));
  +	/* comment */
  +	if (p == NULL || p[0] == '#')
  +	    continue;
  +
  +	if (Mylstrcmp(p, TEXT("Name:")) == 0) {
  +	    p = Mystrtok(NULL, TEXT("\0"));
  +	    if (p == NULL)
  +		continue;
  +	    //compose_map->name = g_strdup(p);
  +	    continue;
  +	} else {
  +	    key1 = string_to_hex(p);
  +	    if (key1 == 0)
  +		continue;
  +
  +	    p = Mystrtok(NULL, TEXT(" \t"));
  +	    if (p == NULL)
  +		continue;
  +	    key2 = string_to_hex(p);
  +	    if (key2 == 0)
  +		continue;
  +
  +	    p = Mystrtok(NULL, TEXT(" \t"));
  +	    if (p == NULL)
  +		continue;
  +	    value = string_to_hex(p);
  +	    if (value == 0)
  +		continue;
  +
  +	    _key[id] = key1 << 16 | key2;
  +	    _code[id] = (WCHAR)value;
  +            id++;
  +	}
  +    }
  +    free(kbuf);
  +    map_size=(UINT)id;
  +
  +    //if (compose_map == NULL) {
  +	/* on error free the list */
  +//	while (list != NULL) {
  +//	    g_free(list->data);
  +//	    list = list->next;
  +//	}
  +//	g_slist_free(list);
  +//
  +//	return FALSE;
  +//    }
  +
  +    /* sort compose map */
  +//    list = g_slist_reverse(list);
  +//    list = g_slist_sort(list, compose_item_compare);
  +
  +    /* move data to map */
  +//    map_size = g_slist_length(list);
  +//    compose_map->map = (NabiComposeItem**)
  +//		g_malloc(map_size * sizeof(NabiComposeItem*));
  +    for (i = 0; i < map_size; i++) {
  +	compose_map[i].key = _key[i];
  +	compose_map[i].code = _code[i];
  +    }
  +    compose_map[map_size].key=(UINT)-1;
  +
  +    /* free the list */
  +    //g_slist_free(list);
  +
  +    return TRUE;
  +}
  +
  +
   /*
    * ex: ts=8 sts=4 sw=4 et
    */
  
  
  
  1.4       +2 -1      saenaru/src/data.c
  
  Index: data.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/data.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- data.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ data.c	29 Nov 2004 17:06:14 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/data.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/data.c,v 1.4 2004/11/29 17:06:14 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -70,6 +70,7 @@
   DWORD dwDebugFlag = 0L;
   #endif
   DWORD dwLayoutFlag = 0L;
  +DWORD dwComposeFlag = 0L;
   DWORD dwOptionFlag = BACKSPACE_BY_JAMO;
   /* local flags */
   DWORD dwImeFlag = SAENARU_ONTHESPOT;
  
  
  
  1.9       +40 -11    saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- hangul.c	13 Oct 2004 11:10:46 -0000	1.8
  +++ hangul.c	29 Nov 2004 17:06:14 -0000	1.9
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.8 2004/10/13 11:10:46 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.9 2004/11/29 17:06:14 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -936,6 +936,7 @@
     0x11f0,	/* GDK_asciitilde:	jongseong yesieung		*/
   };
   
  +/*
   struct _HangulCompose 
   {
     UINT key;
  @@ -943,6 +944,7 @@
   };
   
   typedef struct _HangulCompose	HangulCompose;
  +*/
   
   static const HangulCompose compose_table_default[] = {
     { 0x11001100, 0x1101 }, /* choseong  kiyeok + kiyeok	= ssangkiyeok	*/
  @@ -1264,27 +1266,53 @@
   };
   
   //#define compose_table compose_table_default
  +static HangulCompose compose_table_user[256];
   static HangulCompose *compose_table = (HangulCompose *) compose_table_2set;
   static int compose_table_size = sizeof(compose_table_2set) / sizeof(HangulCompose);
   
   int PASCAL set_compose(UINT type)
   {
  +    INT atype,i;
       switch (type)
       {
   	case 1:
  +           compose_table = (HangulCompose *) compose_table_default;
  +           compose_table_size =
  +		   sizeof(compose_table_default) / sizeof(HangulCompose);
  +	   dwComposeFlag=1;
  +           break;
  +	case 2:
              compose_table = (HangulCompose *) compose_table_2set;
              compose_table_size =
   		   sizeof(compose_table_2set) / sizeof(HangulCompose);
  +	   dwComposeFlag=2;
              break;
           case 3:
              compose_table = (HangulCompose *) compose_table_ahnmatae;
              compose_table_size =
   		   sizeof(compose_table_ahnmatae) / sizeof(HangulCompose);
  +	   dwComposeFlag=3;
   	   break;
   	default:
  -           compose_table = (HangulCompose *) compose_table_default;
  -           compose_table_size =
  +	    // User defined compose map
  +#define USER_DEFINED_COMPOSE_OFFSET	4
  +	    type-=USER_DEFINED_COMPOSE_OFFSET;
  +            atype=
  +             load_compose_map_from_reg(NULL,type,compose_table_user);
  +	    if (atype) {
  +                compose_table=(HangulCompose *) compose_table_user;
  +	        for (i=0;i<256;i++) {
  +		    if (compose_table_user[i].key == (UINT)-1) break;
  +		}
  +		MyDebugPrint((TEXT("compose map size: %d\r\n"), i));
  +		compose_table_size = i;
  +	    } else {
  +                compose_table=(HangulCompose *) compose_table_default;
  +                compose_table_size =
   		   sizeof(compose_table_default) / sizeof(HangulCompose);
  +                break;
  +	    }
  +
              break;
       }
       return 0;
  @@ -1327,36 +1355,36 @@
           case LAYOUT_OLD2BUL:
               keyboard_table=(WCHAR *)keyboard_table_2;
   	    atype=2;
  -	    ctype=1;
  +	    ctype=2;
   	    break;
   	case LAYOUT_3FIN:
               keyboard_table=(WCHAR *)keyboard_table_3final;
   	    atype=3;
  -	    ctype=0;
  +	    ctype=1;
   	    break;
   	case LAYOUT_390:
               keyboard_table=(WCHAR *)keyboard_table_390;
   	    atype=3;
  -	    ctype=0;
  +	    ctype=1;
   	    break;
   	case LAYOUT_3SUN:
               keyboard_table=(WCHAR *)keyboard_table_3sun;
   	    atype=3;
  -	    ctype=0;
  +	    ctype=1;
   	    break;
   	case LAYOUT_NEW2BUL:
               atype=
   	     load_keyboard_map_from_reg(TEXT("ι"),0,keyboard_table_user);
   	    if (atype)
   	        keyboard_table=keyboard_table_user;
  -	    ctype=1;
  +	    ctype=2;
   	    break;
   	case LAYOUT_NEW3BUL:
               atype=
                load_keyboard_map_from_reg(TEXT(""),0,keyboard_table_user);
   	    if (atype)
                   keyboard_table=keyboard_table_user;
  -	    ctype=0;
  +	    ctype=1;
   	    break;
   	case LAYOUT_AHNMATAE:
               atype=
  @@ -2003,8 +2031,9 @@
   		    last=ic->last;
   		    if ( hangul_is_jongseong(ic->last) )
   			last = hangul_jongseong_to_choseong(ic->last);
  -		    if (last == jamo && (jamo == 0x1100 || jamo == 0x1103 ||
  -			jamo == 0x1107 || jamo == 0x110c )) //    
  +		    if (jong != 0x11af && last == jamo &&
  +			(jamo == 0x1100 || jamo == 0x1103 ||
  +			 jamo == 0x1107 || jamo == 0x110c )) //    
   		    {
   			ic->jong=jong;
   			jamo= hangul_compose(last,last); // make ssang cho
  
  
  
  1.7       +6 -1      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- imm.c	9 Oct 2004 06:50:47 -0000	1.6
  +++ imm.c	29 Nov 2004 17:06:14 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.6 2004/10/09 06:50:47 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.7 2004/11/29 17:06:14 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -232,6 +232,11 @@
   
               return FALSE;
               break;
  +        case VK_ESCAPE:
  +            if (dwOptionFlag & ESCENG_SUPPORT)
  +                ChangeMode(hIMC,TO_CMODE_ALPHANUMERIC);
  +            //ChangeMode(hIMC,TO_CMODE_ROMAN);
  +            break;
           case VK_SHIFT:
               return FALSE;
               break;
  
  
  
  1.4       +2 -1      saenaru/src/resource.h
  
  Index: resource.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/resource.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- resource.h	26 Dec 2003 09:26:33 -0000	1.3
  +++ resource.h	29 Nov 2004 17:06:14 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/resource.h,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/resource.h,v 1.4 2004/11/29 17:06:14 wkpark Exp $
    */
   
   //{{NO_DEPENDENCIES}}
  @@ -75,6 +75,7 @@
   #define IDC_BACKSPACE_BY_JAMO   2005
   #define IDC_FULL_MULTIJOMO      2006
   #define IDC_USE_SHIFT_SPACE     2007
  +#define IDC_ESCENG_SUPPORT      2008
   
   /* string tables */
   #define IDS_DICFILENAME             1000
  
  
  
  1.5       +13 -1     saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- saenaru.h	10 Oct 2004 10:59:48 -0000	1.4
  +++ saenaru.h	29 Nov 2004 17:06:14 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.4 2004/10/10 10:59:48 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.5 2004/11/29 17:06:14 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -66,6 +66,7 @@
   #define FULL_MULTIJOMO         0x00000040
   #define USE_SHIFT_SPACE        0x00000080
   #define DVORAK_SUPPORT         0x00000100
  +#define ESCENG_SUPPORT         0x00000200
   
   
   /**********************************************************************/
  @@ -331,6 +332,14 @@
       BOOL  syllable;
   } HangulIC;
   
  +struct _HangulCompose 
  +{
  +  UINT key;
  +  WCHAR code;
  +};
  +
  +typedef struct _HangulCompose	HangulCompose;
  +
   /**********************************************************************/
   /*                                                                    */
   /*      Externs                                                       */
  @@ -363,6 +372,7 @@
   #endif
   
   extern DWORD dwLayoutFlag;
  +extern DWORD dwComposeFlag;
   extern DWORD dwOptionFlag;
   
   extern DWORD dwImeFlag;
  @@ -460,6 +470,7 @@
   INT_PTR CALLBACK GeneralDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam);
   INT_PTR CALLBACK DebugOptionDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam);
   UINT load_keyboard_map_from_reg(LPCTSTR, UINT, WCHAR *);
  +UINT load_compose_map_from_reg(LPCTSTR, UINT, HangulCompose *);
   
   /* DIC.C         */
   BOOL PASCAL IsEat(WORD);
  @@ -483,6 +494,7 @@
   /* hangul.c       */
   void PASCAL hangulKeyHandler(HIMC,WPARAM,LPARAM,LPBYTE);
   int PASCAL set_keyboard(UINT);
  +int PASCAL set_compose(UINT);
   int PASCAL set_automata(UINT);
   
   /* DIC2.C        */
  
  
  
  1.3       +4 -2      saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- saenaru.rc	26 Dec 2003 09:32:51 -0000	1.2
  +++ saenaru.rc	29 Nov 2004 17:06:14 -0000	1.3
  @@ -90,8 +90,10 @@
                       BS_AUTOCHECKBOX | WS_TABSTOP,83,79,53,10
       CONTROL         "庸  (&V)",IDC_DVORAK_SUPPORT,"Button",
                       BS_AUTOCHECKBOX | WS_TABSTOP,138,79,60,10
  -    CONTROL         "ڼ   (&J)",IDC_BACKSPACE_BY_JAMO,"Button",
  -                    BS_AUTOCHECKBOX | WS_TABSTOP,26, 91,90,10
  +    CONTROL         "ڼ   (&J)",IDC_BACKSPACE_BY_JAMO,"Button",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP,26, 91,71,10
  +    CONTROL         "<ESC> ȯ (&E)",IDC_ESCENG_SUPPORT,"Button",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP,104, 91,83,10
       CONTROL         "<Shift>-<SPACE> / ȯ (&H)",IDC_USE_SHIFT_SPACE,"Button",
                       BS_AUTOCHECKBOX | WS_TABSTOP,26,103,124,10
       CONTROL         "Ȯ(KS X 1002)  (&X)",IDC_KSX1002_SUPPORT,
  
  
  
  1.7       +6 -1      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ui.c	13 Oct 2004 11:23:33 -0000	1.6
  +++ ui.c	29 Nov 2004 17:06:14 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.6 2004/10/13 11:23:33 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.7 2004/11/29 17:06:14 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -661,6 +661,7 @@
   
           case IMN_SETCONVERSIONMODE:
               UpdateStatusWindow(lpUIExtra);
  +            UpdateIndicIcon(hUICurIMC);
   
               UpdateSoftKeyboard(lpUIExtra,
               lpIMC->fdwConversion & IME_CMODE_SOFTKBD);
  @@ -1206,6 +1207,10 @@
       lpmsg = (LPMSG)lParam;
       vKey = lpmsg->wParam;
   
  +    if (vKey == VK_PROCESSKEY) {
  +        MyDebugPrint((TEXT("\t** VK_PROCESSKEY and 0x%x\r\n"),lpmsg->lParam));
  +    }
  +
       switch (lpmsg->message)
       {
           case WM_KEYUP:
  
  
  


wkpark      04/11/30 02:19:31

  Added:       resource comp_default.reg
  Log:
  add a regstry file for a sample compose map
  
  Revision  Changes    Path
  1.1                  saenaru/resource/comp_default.reg
  
  Index: comp_default.reg
  ===================================================================
  Windows Registry Editor Version 5.00
  
  [HKEY_LOCAL_MACHINE\SOFTWARE\OpenHangulProject\Saenaru\Compose]
  "⺻"=hex(7):23,00,20,00,63,00,6f,00,6d,00,70,00,6f,00,73,00,65,00,20,00,6d,00,\
    61,00,70,00,20,00,66,00,69,00,6c,00,65,00,20,00,66,00,6f,00,72,00,20,00,4e,\
    00,61,00,62,00,69,00,00,00,4e,00,61,00,6d,00,65,00,3a,00,20,00,64,00,65,00,\
    66,00,61,00,75,00,6c,00,74,00,00,00,31,00,31,00,30,00,30,00,09,00,31,00,31,\
    00,30,00,30,00,09,00,31,00,31,00,30,00,31,00,09,00,23,00,20,00,63,00,68,00,\
    6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,20,00,6b,00,69,00,79,00,65,00,6f,\
    00,6b,00,20,00,2b,00,20,00,6b,00,69,00,79,00,65,00,6f,00,6b,00,20,00,20,00,\
    3d,00,20,00,73,00,73,00,61,00,6e,00,67,00,6b,00,69,00,79,00,65,00,6f,00,6b,\
    00,00,00,31,00,31,00,30,00,33,00,09,00,31,00,31,00,30,00,33,00,09,00,31,00,\
    31,00,30,00,34,00,09,00,23,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,\
    00,67,00,20,00,20,00,74,00,69,00,6b,00,65,00,75,00,74,00,20,00,2b,00,20,00,\
    74,00,69,00,6b,00,65,00,75,00,74,00,20,00,20,00,3d,00,20,00,73,00,73,00,61,\
    00,6e,00,67,00,74,00,69,00,6b,00,65,00,75,00,74,00,00,00,31,00,31,00,30,00,\
    37,00,09,00,31,00,31,00,30,00,37,00,09,00,31,00,31,00,30,00,38,00,09,00,23,\
    00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,20,00,70,00,\
    69,00,65,00,75,00,70,00,20,00,20,00,2b,00,20,00,70,00,69,00,65,00,75,00,70,\
    00,20,00,20,00,20,00,3d,00,20,00,73,00,73,00,61,00,6e,00,67,00,70,00,69,00,\
    65,00,75,00,70,00,00,00,31,00,31,00,30,00,39,00,09,00,31,00,31,00,30,00,39,\
    00,09,00,31,00,31,00,30,00,61,00,09,00,23,00,20,00,63,00,68,00,6f,00,73,00,\
    65,00,6f,00,6e,00,67,00,20,00,20,00,73,00,69,00,6f,00,73,00,20,00,20,00,20,\
    00,2b,00,20,00,73,00,69,00,6f,00,73,00,20,00,20,00,20,00,20,00,3d,00,20,00,\
    73,00,73,00,61,00,6e,00,67,00,73,00,69,00,6f,00,73,00,00,00,31,00,31,00,30,\
    00,63,00,09,00,31,00,31,00,30,00,63,00,09,00,31,00,31,00,30,00,64,00,09,00,\
    23,00,20,00,63,00,68,00,6f,00,73,00,65,00,6f,00,6e,00,67,00,20,00,20,00,63,\
    00,69,00,65,00,75,00,63,00,20,00,20,00,2b,00,20,00,63,00,69,00,65,00,75,00,\
    63,00,20,00,20,00,20,00,3d,00,20,00,73,00,73,00,61,00,6e,00,67,00,63,00,69,\
    00,65,00,75,00,63,00,00,00,31,00,31,00,36,00,39,00,09,00,31,00,31,00,36,00,\
    31,00,09,00,31,00,31,00,36,00,61,00,09,00,23,00,20,00,6a,00,75,00,6e,00,67,\
    00,73,00,65,00,6f,00,6e,00,67,00,20,00,6f,00,20,00,20,00,20,00,20,00,20,00,\
    20,00,2b,00,20,00,61,00,20,00,20,00,20,00,20,00,20,00,20,00,20,00,3d,00,20,\
    00,77,00,61,00,00,00,31,00,31,00,36,00,39,00,09,00,31,00,31,00,36,00,32,00,\
    09,00,31,00,31,00,36,00,62,00,09,00,23,00,20,00,6a,00,75,00,6e,00,67,00,73,\
    00,65,00,6f,00,6e,00,67,00,20,00,6f,00,20,00,20,00,20,00,20,00,20,00,20,00,\
    2b,00,20,00,61,00,65,00,20,00,20,00,20,00,20,00,20,00,20,00,3d,00,20,00,77,\
    00,61,00,65,00,00,00,31,00,31,00,36,00,39,00,09,00,31,00,31,00,37,00,35,00,\
    09,00,31,00,31,00,36,00,63,00,09,00,23,00,20,00,6a,00,75,00,6e,00,67,00,73,\
    00,65,00,6f,00,6e,00,67,00,20,00,6f,00,20,00,20,00,20,00,20,00,20,00,20,00,\
    2b,00,20,00,69,00,20,00,20,00,20,00,20,00,20,00,20,00,20,00,3d,00,20,00,6f,\
    00,65,00,00,00,31,00,31,00,36,00,65,00,09,00,31,00,31,00,36,00,35,00,09,00,\
    31,00,31,00,36,00,66,00,09,00,23,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,\
    00,6f,00,6e,00,67,00,20,00,75,00,20,00,20,00,20,00,20,00,20,00,20,00,2b,00,\
    20,00,65,00,6f,00,20,00,20,00,20,00,20,00,20,00,20,00,3d,00,20,00,77,00,65,\
    00,6f,00,00,00,31,00,31,00,36,00,65,00,09,00,31,00,31,00,36,00,36,00,09,00,\
    31,00,31,00,37,00,30,00,09,00,23,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,\
    00,6f,00,6e,00,67,00,20,00,75,00,20,00,20,00,20,00,20,00,20,00,20,00,2b,00,\
    20,00,65,00,20,00,20,00,20,00,20,00,20,00,20,00,20,00,3d,00,20,00,77,00,65,\
    00,00,00,31,00,31,00,36,00,65,00,09,00,31,00,31,00,37,00,35,00,09,00,31,00,\
    31,00,37,00,31,00,09,00,23,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,\
    00,6e,00,67,00,20,00,75,00,20,00,20,00,20,00,20,00,20,00,20,00,2b,00,20,00,\
    69,00,20,00,20,00,20,00,20,00,20,00,20,00,20,00,3d,00,20,00,77,00,69,00,00,\
    00,31,00,31,00,37,00,33,00,09,00,31,00,31,00,37,00,35,00,09,00,31,00,31,00,\
    37,00,34,00,09,00,23,00,20,00,6a,00,75,00,6e,00,67,00,73,00,65,00,6f,00,6e,\
    00,67,00,20,00,65,00,75,00,20,00,20,00,20,00,20,00,20,00,2b,00,20,00,69,00,\
    20,00,20,00,20,00,20,00,20,00,20,00,20,00,3d,00,20,00,79,00,69,00,00,00,31,\
    00,31,00,61,00,38,00,09,00,31,00,31,00,61,00,38,00,09,00,31,00,31,00,61,00,\
    39,00,09,00,23,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,\
    00,20,00,6b,00,69,00,79,00,65,00,6f,00,6b,00,20,00,2b,00,20,00,6b,00,69,00,\
    79,00,65,00,6f,00,6b,00,20,00,20,00,3d,00,20,00,73,00,73,00,61,00,6e,00,67,\
    00,65,00,6b,00,69,00,79,00,65,00,6f,00,6b,00,00,00,31,00,31,00,61,00,38,00,\
    09,00,31,00,31,00,62,00,61,00,09,00,31,00,31,00,61,00,61,00,09,00,23,00,20,\
    00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,6b,00,69,00,\
    79,00,65,00,6f,00,6b,00,20,00,2b,00,20,00,73,00,69,00,6f,00,73,00,20,00,20,\
    00,20,00,20,00,3d,00,20,00,6b,00,69,00,79,00,65,00,6f,00,6b,00,2d,00,73,00,\
    6f,00,69,00,73,00,00,00,31,00,31,00,61,00,62,00,09,00,31,00,31,00,62,00,64,\
    00,09,00,31,00,31,00,61,00,63,00,09,00,23,00,20,00,6a,00,6f,00,6e,00,67,00,\
    73,00,65,00,6f,00,6e,00,67,00,20,00,6e,00,69,00,65,00,75,00,6e,00,20,00,20,\
    00,2b,00,20,00,63,00,69,00,65,00,75,00,63,00,20,00,20,00,20,00,3d,00,20,00,\
    6e,00,69,00,65,00,75,00,6e,00,2d,00,63,00,69,00,65,00,75,00,63,00,00,00,31,\
    00,31,00,61,00,62,00,09,00,31,00,31,00,63,00,32,00,09,00,31,00,31,00,61,00,\
    64,00,09,00,23,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,\
    00,20,00,6e,00,69,00,65,00,75,00,6e,00,20,00,20,00,2b,00,20,00,68,00,69,00,\
    65,00,75,00,68,00,20,00,20,00,20,00,3d,00,20,00,6e,00,69,00,65,00,75,00,6e,\
    00,2d,00,68,00,69,00,65,00,75,00,68,00,00,00,31,00,31,00,61,00,66,00,09,00,\
    31,00,31,00,61,00,38,00,09,00,31,00,31,00,62,00,30,00,09,00,23,00,20,00,6a,\
    00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,72,00,69,00,65,00,\
    75,00,6c,00,20,00,20,00,2b,00,20,00,6b,00,69,00,79,00,65,00,6f,00,6b,00,20,\
    00,20,00,3d,00,20,00,72,00,69,00,65,00,75,00,6c,00,2d,00,6b,00,69,00,79,00,\
    65,00,6f,00,6b,00,00,00,31,00,31,00,61,00,66,00,09,00,31,00,31,00,62,00,37,\
    00,09,00,31,00,31,00,62,00,31,00,09,00,23,00,20,00,6a,00,6f,00,6e,00,67,00,\
    73,00,65,00,6f,00,6e,00,67,00,20,00,72,00,69,00,65,00,75,00,6c,00,20,00,20,\
    00,2b,00,20,00,6d,00,69,00,65,00,75,00,6d,00,20,00,20,00,20,00,3d,00,20,00,\
    72,00,69,00,65,00,75,00,6c,00,2d,00,6d,00,69,00,65,00,75,00,6d,00,00,00,31,\
    00,31,00,61,00,66,00,09,00,31,00,31,00,62,00,38,00,09,00,31,00,31,00,62,00,\
    32,00,09,00,23,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,\
    00,20,00,72,00,69,00,65,00,75,00,6c,00,20,00,20,00,2b,00,20,00,70,00,69,00,\
    65,00,75,00,70,00,20,00,20,00,20,00,3d,00,20,00,72,00,69,00,65,00,75,00,6c,\
    00,2d,00,70,00,69,00,65,00,75,00,70,00,00,00,31,00,31,00,61,00,66,00,09,00,\
    31,00,31,00,62,00,61,00,09,00,31,00,31,00,62,00,33,00,09,00,23,00,20,00,6a,\
    00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,72,00,69,00,65,00,\
    75,00,6c,00,20,00,20,00,2b,00,20,00,73,00,69,00,6f,00,73,00,20,00,20,00,20,\
    00,20,00,3d,00,20,00,72,00,69,00,65,00,75,00,6c,00,2d,00,73,00,69,00,6f,00,\
    73,00,00,00,31,00,31,00,61,00,66,00,09,00,31,00,31,00,63,00,30,00,09,00,31,\
    00,31,00,62,00,34,00,09,00,23,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,\
    6f,00,6e,00,67,00,20,00,72,00,69,00,65,00,75,00,6c,00,20,00,20,00,2b,00,20,\
    00,74,00,68,00,69,00,65,00,75,00,74,00,68,00,20,00,3d,00,20,00,72,00,69,00,\
    65,00,75,00,6c,00,2d,00,74,00,68,00,69,00,65,00,75,00,74,00,68,00,00,00,31,\
    00,31,00,61,00,66,00,09,00,31,00,31,00,63,00,31,00,09,00,31,00,31,00,62,00,\
    35,00,09,00,23,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,\
    00,20,00,72,00,69,00,65,00,75,00,6c,00,20,00,20,00,2b,00,20,00,70,00,68,00,\
    69,00,65,00,75,00,70,00,68,00,20,00,3d,00,20,00,72,00,69,00,65,00,75,00,6c,\
    00,2d,00,70,00,68,00,69,00,65,00,75,00,70,00,68,00,00,00,31,00,31,00,61,00,\
    66,00,09,00,31,00,31,00,63,00,32,00,09,00,31,00,31,00,62,00,36,00,09,00,23,\
    00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,72,00,\
    69,00,65,00,75,00,6c,00,20,00,20,00,2b,00,20,00,68,00,69,00,65,00,75,00,68,\
    00,20,00,20,00,20,00,3d,00,20,00,72,00,69,00,65,00,75,00,6c,00,2d,00,68,00,\
    69,00,65,00,75,00,68,00,00,00,31,00,31,00,62,00,38,00,09,00,31,00,31,00,62,\
    00,61,00,09,00,31,00,31,00,62,00,39,00,09,00,23,00,20,00,6a,00,6f,00,6e,00,\
    67,00,73,00,65,00,6f,00,6e,00,67,00,20,00,70,00,69,00,65,00,75,00,70,00,20,\
    00,20,00,2b,00,20,00,73,00,69,00,6f,00,73,00,20,00,20,00,20,00,20,00,3d,00,\
    20,00,70,00,69,00,65,00,75,00,70,00,2d,00,73,00,69,00,6f,00,73,00,00,00,31,\
    00,31,00,62,00,61,00,09,00,31,00,31,00,62,00,61,00,09,00,31,00,31,00,62,00,\
    62,00,09,00,23,00,20,00,6a,00,6f,00,6e,00,67,00,73,00,65,00,6f,00,6e,00,67,\
    00,20,00,73,00,69,00,6f,00,73,00,20,00,20,00,20,00,2b,00,20,00,73,00,69,00,\
    6f,00,73,00,20,00,20,00,20,00,20,00,3d,00,20,00,73,00,73,00,61,00,6e,00,67,\
    00,73,00,69,00,6f,00,73,00,00,00,00,00
  
  


wkpark      04/12/02 21:18:08

  Modified:    setup    saenaru.nsi
  Log:
  fixed PR #300143: can be installed as a primary IME
  
  Revision  Changes    Path
  1.4       +47 -2     saenaru/setup/saenaru.nsi
  
  Index: saenaru.nsi
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/saenaru.nsi,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- saenaru.nsi	27 Dec 2003 15:20:43 -0000	1.3
  +++ saenaru.nsi	2 Dec 2004 12:18:08 -0000	1.4
  @@ -1,8 +1,8 @@
   ; Saenaru Installation Script
   ; Written by Hye-Shik Chang <perky@i18n.org>
  -; $Saenaru: saenaru/setup/saenaru.nsi,v 1.3 2003/12/27 15:20:43 perky Exp $
  +; $Saenaru: saenaru/setup/saenaru.nsi,v 1.4 2004/12/02 12:18:08 wkpark Exp $
   
  -!define RELVERSION      "031226"
  +!define RELVERSION      "041202"
   !define REGISTRY_PATH   "Software\OpenHangulProject\Saenaru"
   !define DDKBUILDDIR     "..\src\objfre\i386"
   !define RESOURCEDIR     "..\resource"
  @@ -13,6 +13,7 @@
   ;Include Modern UI
   
     !include "MUI.nsh"
  +BrandingText " ν緯" 
   
   ;--------------------------------
   ;Configuration
  @@ -55,9 +56,22 @@
     SectionIn RO
   
     SetOutPath "$SYSDIR"
  +  SetOverwrite try
     File "${DDKBUILDDIR}\saenaru.ime"
  +  IfErrors 0 SaenaruDone
  +
  +  # Can't copy saenaru.ime, create it under another name and rename it on
  +  # next reboot.
  +  GetTempFileName $3
  +  File /oname=$3 "${DDKBUILDDIR}\saenaru.ime"
  +  Rename /REBOOTOK $3 $SYSDIR\saenaru.ime
  +
  +  SaenaruDone:
  +  SetOverwrite lastused
     SetOutPath "$INSTDIR"
     File "${RESOURCEDIR}\saenaru.dic"
  +  File "${RESOURCEDIR}\2set3set.reg"
  +  File "${RESOURCEDIR}\ahnmatae.reg"
     File /oname=saenaru.ico "${RESOURCEDIR}\about.ico"
     
     ;Store install folder
  @@ -89,6 +103,9 @@
     File "/oname= ѱ Ʈ.url" "httplink-hangul.url"
     CreateShortCut "${SMPATH}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
   
  +  IfRebootFlag 0 noreboot
  +    MessageBox MB_OK|MB_ICONINFORMATION "簡 ̱  ġ/Ʈ Ϸ ߽ϴ.  ؾ ġ Ϸ˴ϴ."
  +  noreboot:
   SectionEnd
   
   
  @@ -136,15 +153,42 @@
   
   SectionEnd
   
  +Section "⺻ Է± " SecDefault
  +  ; save current IME
  +  ReadRegStr $0 HKCU "Keyboard Layout\Preload" "1"
  +  StrCmp $0 "e0120412" exit
  +  ; set as default IME
  +  WriteRegStr HKCU "Keyboard Layout\Preload" "1" "e0120412"
  +
  +  ; get last IME
  +  StrCpy $1 1
  +  StrCpy $3 2
  +  loop:
  +    IntOp $1 $1 + 1
  +    ReadRegStr $2 HKCU "Keyboard Layout\Preload" "$1"
  +    StrCmp $2 "e0120412" loop
  +    WriteRegStr HKCU "Keyboard Layout\Preload" "$3" "$0"
  +    StrCmp $2 "" exit
  +    IntOp $3 $3 + 1
  +    StrCpy $0 $2
  +    Goto loop
  +  exit:
  +SectionEnd
  +
   ;--------------------------------
   ;Descriptions
   
     LangString DESC_SecBody ${LANG_KOREAN} " Է±⸦  ⺻  ġմϴ."
  +  LangString DESC_SecSource ${LANG_KOREAN} " ҽ ġմϴ."
  +  LangString DESC_SecDefault ${LANG_KOREAN} "縦 ⺻ Է± մϴ.α׿Ŀ ٽ α ϰų  ϼž  ݿ˴ϴ."
   
     !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
       !insertmacro MUI_DESCRIPTION_TEXT ${SecBody} $(DESC_SecBody)
  +    !insertmacro MUI_DESCRIPTION_TEXT ${SecSource} $(DESC_SecSource)
  +    !insertmacro MUI_DESCRIPTION_TEXT ${SecDefault} $(DESC_SecDefault)
     !insertmacro MUI_FUNCTION_DESCRIPTION_END
   
  +
   ;--------------------------------
   ;Uninstaller Section
   
  @@ -159,6 +203,7 @@
     Delete "$INSTDIR\Source\Makefile"
     Delete "$INSTDIR\Source\doc\saenaru.htm"
     Delete "$INSTDIR\Source\resource\2set3set.reg"
  +  Delete "$INSTDIR\Source\resource\ahnmatae.reg"
     Delete "$INSTDIR\Source\resource\ARWDWN.ico"
     Delete "$INSTDIR\Source\resource\ARWUP.ico"
     Delete "$INSTDIR\Source\resource\about.ico"
  
  
  


wkpark      04/12/02 21:36:12

  Modified:    setup    LICENSE.txt
  Log:
  update license
  
  Revision  Changes    Path
  1.3       +2 -2      saenaru/setup/LICENSE.txt
  
  Index: LICENSE.txt
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/LICENSE.txt,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LICENSE.txt	30 Dec 2003 01:40:54 -0000	1.2
  +++ LICENSE.txt	2 Dec 2004 12:36:12 -0000	1.3
  @@ -9,7 +9,7 @@
   硻  ҽ ۹̸, ۱ǹ ؼ   ࿡ 
   ô 쿡 Ͻ  ֽϴ. (2 BSD ̼ ¿ Ǿϴ.)
   
  - (C) 2002-2003 ڿ, , ȯ.
  + (C) 2002-2004 ڿ, , ȯ.
    (C) 1990-1998 Microsoft Corporation.
    Ʈ  ۱ ȣ.
   
  @@ -39,4 +39,4 @@
       ׿ ؼ  ѱ Ʈ Ʈ ڵ
   å ϴ.
   
  -$Saenaru: saenaru/setup/LICENSE.txt,v 1.2 2003/12/30 01:40:54 wkpark Exp $
  +$Saenaru: saenaru/setup/LICENSE.txt,v 1.3 2004/12/02 12:36:12 wkpark Exp $
  
  
  


wkpark      04/12/03 10:42:17

  Modified:    src      imm.c
  Log:
  fixed PR #300525: fix ImeProcesskey() for IME2002 compatibility.
  
  Revision  Changes    Path
  1.8       +11 -2     saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- imm.c	29 Nov 2004 17:06:14 -0000	1.7
  +++ imm.c	3 Dec 2004 01:42:17 -0000	1.8
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.7 2004/11/29 17:06:14 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.8 2004/12/03 01:42:17 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -170,7 +170,6 @@
       ImeLog(LOGF_KEY | LOGF_API, TEXT("ImeProcessKey"));
   
       {
  -        WORD ch;
           MyDebugPrint((TEXT("\t** vKey is 0x%x\r\n"),vKey));
       }
   
  @@ -285,6 +284,16 @@
           if (lpCompStr)
               ImmUnlockIMCC(lpIMC->hCompStr);
       }
  +    // with some application WM_CHAR events with VK_PROCESSKEY
  +    // is not accepted. then we need to following hack for this appls.
  +    //ToAscii(vKey,(lpmsg->lParam | 0xff0000)>>16,pbKeyState,&ch,0);
  +    ToAscii(vKey,(lKeyData | 0xff0000)>>16,lpbKeyState,&ch,0);
  +    ch = 0xff & ch;
  +    ch=keyToHangulKey((WORD)ch);
  +    if ( !ch || (ch >= TEXT('!') && ch <= TEXT('~')) )
  +        fRet=FALSE;
  +    // XXX hack hack hack
  +    
       if (!fRet && IsCompStr(hIMC))
           MakeResultString(hIMC,TRUE);
   
  
  
  


wkpark      04/12/03 10:42:38

  Modified:    src      saenaru.h
  Log:
  fixed PR #300525: fix ImeProcesskey() for IME2002 compatibility.
  
  Revision  Changes    Path
  1.6       +2 -1      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- saenaru.h	29 Nov 2004 17:06:14 -0000	1.5
  +++ saenaru.h	3 Dec 2004 01:42:38 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.5 2004/11/29 17:06:14 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.6 2004/12/03 01:42:38 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -493,6 +493,7 @@
   
   /* hangul.c       */
   void PASCAL hangulKeyHandler(HIMC,WPARAM,LPARAM,LPBYTE);
  +WCHAR PASCAL keyToHangulKey(WCHAR);
   int PASCAL set_keyboard(UINT);
   int PASCAL set_compose(UINT);
   int PASCAL set_automata(UINT);
  
  
  


wkpark      04/12/03 23:24:43

  Modified:    src      imm.c
  Log:
  fixed PR #300525: more fixes
  
  Revision  Changes    Path
  1.9       +13 -10    saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- imm.c	3 Dec 2004 01:42:17 -0000	1.8
  +++ imm.c	3 Dec 2004 14:24:43 -0000	1.9
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.8 2004/12/03 01:42:17 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.9 2004/12/03 14:24:43 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -284,15 +284,18 @@
           if (lpCompStr)
               ImmUnlockIMCC(lpIMC->hCompStr);
       }
  -    // with some application WM_CHAR events with VK_PROCESSKEY
  -    // is not accepted. then we need to following hack for this appls.
  -    //ToAscii(vKey,(lpmsg->lParam | 0xff0000)>>16,pbKeyState,&ch,0);
  -    ToAscii(vKey,(lKeyData | 0xff0000)>>16,lpbKeyState,&ch,0);
  -    ch = 0xff & ch;
  -    ch=keyToHangulKey((WORD)ch);
  -    if ( !ch || (ch >= TEXT('!') && ch <= TEXT('~')) )
  -        fRet=FALSE;
  -    // XXX hack hack hack
  +    // Some application do not accept WM_CHAR events with VK_PROCESSKEY.
  +    // For this appls we need a following hack:
  +    if (fRet && !IsCompStr(hIMC)) {
  +        ToAscii(vKey,(lKeyData | 0xff0000)>>16,lpbKeyState,&ch,0);
  +        ch = 0xff & ch;
  +        if (ch) {
  +            WORD nch;
  +            nch=keyToHangulKey((WORD)ch);
  +            if ( ch==nch && (ch >= TEXT('!') && ch <= TEXT('~')) )
  +                fRet=FALSE;
  +        }
  +    }
       
       if (!fRet && IsCompStr(hIMC))
           MakeResultString(hIMC,TRUE);
  
  
  


wkpark      04/12/04 00:48:02

  Modified:    src      hangul.c
  Log:
  fixed PR #300525: do not use WM_CHAR
  
  Revision  Changes    Path
  1.10      +3 -2      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- hangul.c	29 Nov 2004 17:06:14 -0000	1.9
  +++ hangul.c	3 Dec 2004 15:48:02 -0000	1.10
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.9 2004/11/29 17:06:14 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.10 2004/12/03 15:48:02 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1481,11 +1481,12 @@
   
       if (fdwConversion & IME_CMODE_NATIVE)
   	hkey = keyToHangulKey( code );
  -#if 1
  +#ifdef USE_WM_CHAR
       if ( (!hkey || (hkey >= TEXT('!') && hkey <= TEXT('~')) )
   	    && !IsCompStr(hIMC)) {
   	//    Է¹ asciiڸ ״ ´.
   	PostMessage(lpIMC->hWnd,WM_CHAR,hkey,lParam);
  +
           ImmUnlockIMC(hIMC);
   	return;
       }
  
  
  


wkpark      04/12/22 07:52:46

  Modified:    src      hangul.c
  Log:
  add compose entries for continual vowel typing (suggested by cdpark)
  
  Revision  Changes    Path
  1.11      +9 -1      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- hangul.c	3 Dec 2004 15:48:02 -0000	1.10
  +++ hangul.c	21 Dec 2004 22:52:45 -0000	1.11
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.10 2004/12/03 15:48:02 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.11 2004/12/21 22:52:45 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -953,17 +953,21 @@
     { 0x11071107, 0x1108 }, /* choseong  pieup  + pieup	= ssangpieup	*/
     { 0x11091109, 0x110a }, /* choseong  sios   + sios	= ssangsios	*/
     { 0x110c110c, 0x110d }, /* choseong  cieuc  + cieuc	= ssangcieuc	*/
  +  { 0x11621162, 0x1164 }, /* jungseong ae      + ae	= yae		*/
     { 0x11631175, 0x1164 }, /* jungseong ya     + i	= yae		*/
  +  { 0x11661166, 0x1168 }, /* jungseong e      + e	= ye		*/
     { 0x11671175, 0x1168 }, /* jungseong yeo    + i	= ye		*/
     { 0x11691161, 0x116a }, /* jungseong o      + a	= wa		*/
     { 0x11691162, 0x116b }, /* jungseong o      + ae	= wae		*/
     { 0x11691175, 0x116c }, /* jungseong o      + i	= oe		*/
     { 0x116e1165, 0x116f }, /* jungseong u      + eo	= weo		*/
     { 0x116e1166, 0x1170 }, /* jungseong u      + e	= we		*/
  +  { 0x116e116e, 0x1172 }, /* jungseong u      + u	= yu		*/
     { 0x116e1175, 0x1171 }, /* jungseong u      + i	= wi		*/
     { 0x11731175, 0x1174 }, /* jungseong eu     + i	= yi		*/
     { 0x11751162, 0x1164 }, /* jungseong i      + ae	= yae		*/
     { 0x11751166, 0x1168 }, /* jungseong i      + e	= ye		*/
  +  { 0x11751175, 0x1174 }, /* jungseong i      + i	= yi		*/
   
     { 0x11a811a8, 0x11a9 }, /* jongseong kiyeok + kiyeok	= ssangekiyeok	*/
     { 0x11a811ba, 0x11aa }, /* jongseong kiyeok + sios	= kiyeok-sois	*/
  @@ -997,17 +1001,21 @@
     { 0x11071109, 0x11b9 }, /* choseong  pieup  + sios	= pieup-sios	*/
     { 0x11091109, 0x110a }, /* choseong  sios   + sios	= ssangsios	*/
     { 0x110c110c, 0x110d }, /* choseong  cieuc  + cieuc	= ssangcieuc	*/
  +  { 0x11621162, 0x1164 }, /* jungseong ae      + ae	= yae		*/
     { 0x11631175, 0x1164 }, /* jungseong ya     + i	= yae		*/
  +  { 0x11661166, 0x1168 }, /* jungseong e      + e	= ye		*/
     { 0x11671175, 0x1168 }, /* jungseong yeo    + i	= ye		*/
     { 0x11691161, 0x116a }, /* jungseong o      + a	= wa		*/
     { 0x11691162, 0x116b }, /* jungseong o      + ae	= wae		*/
     { 0x11691175, 0x116c }, /* jungseong o      + i	= oe		*/
     { 0x116e1165, 0x116f }, /* jungseong u      + eo	= weo		*/
     { 0x116e1166, 0x1170 }, /* jungseong u      + e	= we		*/
  +  { 0x116e116e, 0x1172 }, /* jungseong u      + u	= yu		*/
     { 0x116e1175, 0x1171 }, /* jungseong u      + i	= wi		*/
     { 0x11731175, 0x1174 }, /* jungseong eu     + i	= yi		*/
     { 0x11751162, 0x1164 }, /* jungseong i      + ae	= yae		*/
     { 0x11751166, 0x1168 }, /* jungseong i      + e	= ye		*/
  +  { 0x11751175, 0x1174 }, /* jungseong i      + i	= yi		*/
   
     { 0x11a811a8, 0x11a9 }, /* jongseong kiyeok + kiyeok	= ssangekiyeok	*/
     { 0x11a811ba, 0x11aa }, /* jongseong kiyeok + sios	= kiyeok-sois	*/
  
  
  


wkpark      04/12/22 07:54:07

  Modified:    src      process.c
  Log:
  add VK_HANJA entry in the compstr table
  
  Revision  Changes    Path
  1.5       +3 -2      saenaru/src/process.c
  
  Index: process.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/process.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- process.c	9 Oct 2004 06:53:18 -0000	1.4
  +++ process.c	21 Dec 2004 22:54:07 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/process.c,v 1.4 2004/10/09 06:53:18 wkpark Exp $
  + * $Saenaru: saenaru/src/process.c,v 1.5 2004/12/21 22:54:07 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -39,7 +39,8 @@
   
   
   BYTE bNoComp[] = {      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 00-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 10-1F
  +                        0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,        // 10-1F
  +                        // VK_HANJA = 0x19
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 20-2F
                           1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,        // 30-3F
                           0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,        // 40-4F
  
  
  


wkpark      04/12/22 07:55:01

  Modified:    src      ui.c
  Log:
  fix Mode_Switch behavior
  
  Revision  Changes    Path
  1.8       +10 -1     saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ui.c	29 Nov 2004 17:06:14 -0000	1.7
  +++ ui.c	21 Dec 2004 22:55:01 -0000	1.8
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.7 2004/11/29 17:06:14 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.8 2004/12/21 22:55:01 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -1297,6 +1297,15 @@
                   if (ch < '!' || ch > '~')
                        break;
                   MyDebugPrint((TEXT("RALT + %x\n"), ch));
  +                {
  +                    HWND hwnd = GetFocus ();
  +                    if (hwnd != NULL) {
  +                        HIMC hIMC = NULL;
  +                        hIMC = ImmGetContext (hwnd);
  +                        if (hIMC && IsCompStr(hIMC))
  +                            MakeResultString(hIMC,TRUE);
  +                    }
  +                }
   #if 1
                   lpmsg->message-=4; // WM_SYSKEYUP - WM_KEYUP = 4 See WINUSER.H
                   MyDebugPrint((TEXT("RALT %x\n"), lpmsg->lParam));
  
  
  


wkpark      04/12/22 19:51:08

  Modified:    src      ui.c
  Log:
  minor fix
  
  Revision  Changes    Path
  1.9       +3 -3      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ui.c	21 Dec 2004 22:55:01 -0000	1.8
  +++ ui.c	22 Dec 2004 10:51:08 -0000	1.9
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.8 2004/12/21 22:55:01 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.9 2004/12/22 10:51:08 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -302,15 +302,15 @@
                           if (IsWindow(lpUIExtra->uiDefComp.hWnd))
                               HideCompWindow(lpUIExtra);
   
  +#if 0
                           if (lParam & ISC_SHOWUICANDIDATEWINDOW)
                           {
  -                            if (0 && lpCompStr->dwCompStrLen)
  +                            if (lpCompStr->dwCompStrLen)
                               {
                                   CreateCompWindow(hWnd,lpUIExtra,lpIMC );
                                   MoveCompWindow(lpUIExtra,lpIMC);
                               }
                           }
  -#if 0
                           if (lParam & ISC_SHOWUIGUIDELINE) {
                               DWORD dwLevel, dwSize = 0;
                               if (ImmGetGuideLine (hUICurIMC, GGL_LEVEL, NULL, 0))
  
  
  


wkpark      04/12/22 19:52:34

  Modified:    src      imm.c
  Log:
  support the reconversion feature (temporary disabled)
  
  Revision  Changes    Path
  1.10      +145 -3    saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- imm.c	3 Dec 2004 14:24:43 -0000	1.9
  +++ imm.c	22 Dec 2004 10:52:34 -0000	1.10
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.9 2004/12/03 14:24:43 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.10 2004/12/22 10:52:34 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -48,11 +48,11 @@
       lpIMEInfo->dwPrivateDataSize = sizeof(UIEXTRA);
       lpIMEInfo->fdwProperty = IME_PROP_KBD_CHAR_FIRST |
                                IME_PROP_UNICODE |
  -//                             IME_PROP_COMPLETE_ON_UNSELECT |
  +                             IME_PROP_COMPLETE_ON_UNSELECT |
                                IME_PROP_AT_CARET;
       lpIMEInfo->fdwConversionCaps = IME_CMODE_LANGUAGE |
                                   IME_CMODE_FULLSHAPE |
  -                                IME_CMODE_NOCONVERSION |
  +//                                IME_CMODE_NOCONVERSION |
                                   IME_CMODE_ROMAN |
                                   IME_CMODE_SOFTKBD |
                                   IME_CMODE_CHARCODE;
  @@ -166,6 +166,7 @@
   
       DWORD dwConversion, dwSentense ;
       WORD ch;
  +    UINT vkey = LOWORD(vKey) & 0x00FF;
   
       ImeLog(LOGF_KEY | LOGF_API, TEXT("ImeProcessKey"));
   
  @@ -182,6 +183,122 @@
       if (!(lpIMC = ImmLockIMC(hIMC)))
           return FALSE;
   
  +#ifdef USE_RECONVERSION
  +    // regard the VK_F9 key as the ReConversion key
  +    if ( (vkey == VK_F9 || vkey == VK_HANJA) && !IsCompStr(hIMC)) {
  +        DWORD dwSize = (DWORD)MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, 0);
  +        if (dwSize) {
  +            LPRECONVERTSTRING lpRS;
  +
  +            lpRS = (LPRECONVERTSTRING)GlobalAlloc(GPTR, dwSize);
  +            lpRS->dwSize = dwSize;
  +
  +            if (dwSize = (DWORD) MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, (LPARAM)lpRS)) {
  +#if 1
  +                TCHAR szDev[80];
  +                LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset);
  +                *(LPMYSTR)(lpDump + lpRS->dwStrLen) = MYTEXT('\0');
  +
  +                OutputDebugString(TEXT("IMR_RECONVERTSTRING\r\n"));
  +                wsprintf(szDev, TEXT("dwSize       %x\r\n"), lpRS->dwSize);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwVersion    %x\r\n"), lpRS->dwVersion);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwStrLen     %x\r\n"), lpRS->dwStrLen);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwStrOffset  %x\r\n"), lpRS->dwStrOffset);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwCompStrOffset %x\r\n"), lpRS->dwCompStrOffset);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwTargetStrLen %x\r\n"), lpRS->dwTargetStrLen);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwTargetStrOffset %x\r\n"), lpRS->dwTargetStrOffset);
  +                OutputDebugString(szDev);
  +                MyOutputDebugString(lpDump);
  +                OutputDebugString(TEXT("\r\n"));
  +#endif
  +		{
  +		    LPCOMPOSITIONSTRING	lpCompStr;
  +
  +		    if (ImmGetIMCCSize (lpIMC->hCompStr) < sizeof (MYCOMPSTR))
  +                    {
  +                        DWORD dwSize = sizeof(MYCOMPSTR);
  +                        lpIMC->hCompStr = ImmReSizeIMCC(lpIMC->hCompStr,dwSize);
  +                        lpCompStr =
  +                            (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
  +                        lpCompStr->dwSize = dwSize;
  +                    } else
  +		        lpCompStr =
  +                            (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr) ;
  +                    {
  +                        LPMYSTR lpstr,lpread;
  +                        TRANSMSG GnMsg;
  +
  +		        if (lpCompStr != NULL) {
  +                            // XXX
  +                            InitCompStr(lpCompStr,CLR_RESULT_AND_UNDET);
  +                            //InitCompStr(lpCompStr,CLR_UNDET);
  +
  +                            lpstr = GETLPCOMPSTR(lpCompStr);
  +                            lpread = GETLPCOMPREADSTR(lpCompStr);
  +                            Mylstrcpy(lpread,lpDump);
  +                            Mylstrcpy(lpstr,lpDump);
  +
  +                            // delta start
  +                            //lpCompStr->dwDeltaStart =
  +	                    //    (DWORD)(MyCharPrev(lpstr, lpstr+Mylstrlen(lpstr)) - lpstr);
  +                            // cursor pos
  +                            //lpCompStr->dwCursorPos=lpRS->dwStrLen;
  +
  +                            //MakeAttrClause(lpCompStr);
  +                            lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),ATTR_INPUT, Mylstrlen(lpstr));
  +                            lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT, Mylstrlen(lpread));
  +
  +                            // make length
  +                            lpCompStr->dwCompStrLen = Mylstrlen(lpstr);
  +                            lpCompStr->dwCompReadStrLen = Mylstrlen(lpread);
  +                            lpCompStr->dwCompAttrLen = Mylstrlen(lpstr);
  +                            lpCompStr->dwCompReadAttrLen = Mylstrlen(lpread);
  +
  +                            //if (lpCompStr->dwCompReadStrLen > 0)
  +                            //    lpCompStr->dwCompReadStrLen--;
  +
  +                            //
  +                            // make clause info
  +                            //
  +                            SetClause(GETLPCOMPCLAUSE(lpCompStr),Mylstrlen(lpstr));
  +                            SetClause(GETLPCOMPREADCLAUSE(lpCompStr),Mylstrlen(lpread));
  +                            lpCompStr->dwCompClauseLen = 8;
  +                            lpCompStr->dwCompReadClauseLen = 8;
  +                            //
  +                            //
  +                            if (lpCompStr->dwCompStrLen)
  +                            {
  +                                GnMsg.message = WM_IME_SETCONTEXT;
  +                                GnMsg.wParam = 0;
  +                                GnMsg.lParam = ISC_SHOWUICANDIDATEWINDOW;
  +                                GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +                            }
  +                            //OutputDebugString(TEXT("** ReconvertStr\r\n"));
  +		    	    ImmUnlockIMCC (lpIMC->hCompStr);
  +		        }
  +                    }
  +		}
  +                MyImmRequestMessage(hIMC, IMR_CONFIRMRECONVERTSTRING, (LPARAM)lpRS);
  +            }
  +#ifdef DEBUG
  +            else
  +                OutputDebugString(TEXT("ImmRequestMessage returned 0\r\n"));
  +#endif
  +            GlobalFree((HANDLE)lpRS);
  +            ImmUnlockIMC(hIMC);
  +            return TRUE;
  +        }
  +    }
  +#endif
  +
       // SHIFT-SPACE
       // See ui.c how to hook the shift-space event.
       if ( (LOWORD(vKey) & 0x00FF) == VK_SPACE && dwOptionFlag & USE_SHIFT_SPACE)
  @@ -735,6 +852,31 @@
               if (lpRead)
                   DumpRS((LPRECONVERTSTRING)lpRead);
   #endif
  +            {
  +		LPRECONVERTSTRING	pRStr	= (LPRECONVERTSTRING)lpComp ;
  +
  +		if (!pRStr)
  +		    break ;
  +
  +		lpIMC	= ImmLockIMC (hIMC) ;
  +		if (!lpIMC) {
  +		    break ;
  +		}
  +		if (ImmGetIMCCSize (lpIMC->hCompStr) < sizeof (MYCOMPSTR)){
  +		    ImmUnlockIMC (hIMC) ;
  +		    break ;
  +		}
  +		//SKKChangeConversionMode (hIMC, IDM_CMODE_TO_ROMANHIRA) ;
  +		lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr) ;
  +		if (lpCompStr != NULL) {
  +		    //SKKSetReconvertStr (hIMC, lpIMC, lpCompStr, pRStr, TRUE) ;
  +		    ImmUnlockIMCC (lpIMC->hCompStr) ;
  +		}
  +		ImmUnlockIMC (hIMC) ;
  +		return	TRUE ;
  +            }
  +            break;
  +
               return TRUE;
               break;
           case SCS_CHANGEATTR:
  
  
  


wkpark      06/10/03 22:08:03

  Modified:    src      btncmd.cpp btnext.cpp btnime.cpp
  Log:
  remove path infos of the MS Platform SDK
  
  Revision  Changes    Path
  1.3       +6 -4      saenaru/src/btncmd.cpp
  
  Index: btncmd.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btncmd.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- btncmd.cpp	26 Dec 2003 09:26:33 -0000	1.2
  +++ btncmd.cpp	3 Oct 2006 13:08:03 -0000	1.3
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btncmd.cpp,v 1.2 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/btncmd.cpp,v 1.3 2006/10/03 13:08:03 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -45,10 +45,12 @@
    *	תΪުΪ? DDK ˪ header 
    *	ԤƪުΪ
    */
  -#include "c:\Program Files\Microsoft SDK\include\msctf.h"
  -#include "c:\Program Files\Microsoft SDK\include\olectl.h"
  +//#include "c:\Program Files\Microsoft SDK\include\msctf.h"
  +#include "msctf.h"
  +#include "olectl.h"
   #if !defined (TARGET_WIN2K)
  -#include "c:\Program Files\Microsoft SDK\include\uxtheme.h"
  +//#include "c:\Program Files\Microsoft SDK\include\uxtheme.h"
  +#include "uxtheme.h"
   #endif
   #include "tsf.h"
   
  
  
  
  1.3       +5 -3      saenaru/src/btnext.cpp
  
  Index: btnext.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btnext.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- btnext.cpp	26 Dec 2003 09:26:33 -0000	1.2
  +++ btnext.cpp	3 Oct 2006 13:08:03 -0000	1.3
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btnext.cpp,v 1.2 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/btnext.cpp,v 1.3 2006/10/03 13:08:03 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -45,10 +45,12 @@
    *	תΪުΪ? DDK ˪ header 
    *	ԤƪުΪ
    */
  -#include "c:\Program Files\Microsoft SDK\include\msctf.h"
  +//#include "c:\Program Files\Microsoft SDK\include\msctf.h"
  +#include "msctf.h"
   #include "olectl.h"
   #if !defined (TARGET_WIN2K)
  -#include "c:\Program Files\Microsoft SDK\include\uxtheme.h"
  +//#include "c:\Program Files\Microsoft SDK\include\uxtheme.h"
  +#include "uxtheme.h"
   #endif
   #include "tsf.h"
   
  
  
  
  1.4       +5 -3      saenaru/src/btnime.cpp
  
  Index: btnime.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btnime.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- btnime.cpp	29 Nov 2004 17:01:50 -0000	1.3
  +++ btnime.cpp	3 Oct 2006 13:08:03 -0000	1.4
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btnime.cpp,v 1.3 2004/11/29 17:01:50 wkpark Exp $
  + * $Saenaru: saenaru/src/btnime.cpp,v 1.4 2006/10/03 13:08:03 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -44,10 +44,12 @@
    *    תΪުΪ? DDK ˪ header 
    *    ԤƪުΪ
    */
  -#include "c:\Program Files\Microsoft SDK\include\msctf.h"
  +//#include "c:\Program Files\Microsoft SDK\include\msctf.h"
  +#include "msctf.h"
   #include "olectl.h"
   #if !defined (TARGET_WIN2K)
  -#include "c:\Program Files\Microsoft SDK\include\uxtheme.h"
  +//#include "c:\Program Files\Microsoft SDK\include\uxtheme.h"
  +#include "uxtheme.h"
   #endif
   #include "tsf.h"
   
  
  
  


wkpark      06/10/03 22:09:49

  Modified:    src      subs.c
  Log:
  make "New Gulim" as a default font in the candidate list
  
  Revision  Changes    Path
  1.4       +9 -1      saenaru/src/subs.c
  
  Index: subs.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/subs.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- subs.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ subs.c	3 Oct 2006 13:09:49 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/subs.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/subs.c,v 1.4 2006/10/03 13:09:49 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -614,6 +614,11 @@
       hOldFont = GetCurrentObject(hDC, OBJ_FONT);
       GetObject(hOldFont, sizeof(LOGFONT), &lfFont);
   
  +    lfFont.lfWeight = FW_NORMAL;
  +    lfFont.lfCharSet = NATIVE_CHARSET;
  +    /* ⺻  Ѵ */
  +    Mylstrcpy(lfFont.lfFaceName,TEXT("New Gulim"));
  +    SelectObject(hDC, CreateFontIndirect(&lfFont));
       /* ۲  ⺻  ´ */
       if (lfFont.lfCharSet != NATIVE_CHARSET) {
           bDiffCharSet = TRUE;
  @@ -624,6 +629,9 @@
       } else {
           hOldFont = NULL;
       }
  +#ifdef DEBUG
  +    MyDebugPrint((TEXT("Cand FONT: %s\n"),lfFont.lfFaceName));
  +#endif
       return hOldFont;
   }
   
  
  
  


wkpark      06/10/03 22:10:27

  Modified:    src      tsf.cpp
  Log:
  remove path infos of the MS Platform SDK
  
  Revision  Changes    Path
  1.3       +4 -3      saenaru/src/tsf.cpp
  
  Index: tsf.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- tsf.cpp	26 Dec 2003 09:26:33 -0000	1.2
  +++ tsf.cpp	3 Oct 2006 13:10:27 -0000	1.3
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/tsf.cpp,v 1.2 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/tsf.cpp,v 1.3 2006/10/03 13:10:27 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -37,8 +37,9 @@
   #include "saenaru.h"
   #include "resource.h"
   }
  -#include "c:\Program Files\Microsoft SDK\include\msctf.h"
  -#include "c:\Program Files\Microsoft SDK\include\olectl.h"
  +//#include "c:\Program Files\Microsoft SDK\include\msctf.h"
  +#include "msctf.h"
  +#include "olectl.h"
   #include "tsf.h"
   
   #define    NUM_LANGBAR_ITEM_BUTTON    (2)
  
  
  


wkpark      06/10/03 22:12:25

  Modified:    src      dic.c imm.c
  Log:
  enable the reconversion feature (experimental!) use F9 or Hanja_Key
  
  Revision  Changes    Path
  1.7       +17 -7     saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- dic.c	13 Oct 2004 11:20:32 -0000	1.6
  +++ dic.c	3 Oct 2006 13:12:25 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.6 2004/10/13 11:20:32 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.7 2006/10/03 13:12:25 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -348,12 +348,22 @@
                   //
                   // Generate messages.
                   //
  -                GnMsg.message = WM_IME_COMPOSITION;
  -                GnMsg.wParam = cs;
  -                GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -                if (dwImeFlag & SAENARU_ONTHESPOT)
  -                    GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
  -                GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +                if (lpCompStr->dwCompStrLen > 1) {
  +                    TCHAR szDev[80];
  +                    wsprintf(szDev, TEXT("dwCompStrLen %d\r\n"), lpCompStr->dwCompStrLen);
  +                    OutputDebugString(szDev);
  +                    GnMsg.message = WM_IME_SETCONTEXT;
  +                    GnMsg.wParam = 0;
  +                    GnMsg.lParam = ISC_SHOWUICANDIDATEWINDOW;
  +                    GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +                } else {
  +                    GnMsg.message = WM_IME_COMPOSITION;
  +                    GnMsg.wParam = cs;
  +                    GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +                    if (dwImeFlag & SAENARU_ONTHESPOT)
  +                        GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
  +                    GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +                }
   
                   bRc = TRUE;
                   goto cvk_exit40;
  
  
  
  1.11      +19 -3     saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- imm.c	22 Dec 2004 10:52:34 -0000	1.10
  +++ imm.c	3 Oct 2006 13:12:25 -0000	1.11
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.10 2004/12/22 10:52:34 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.11 2006/10/03 13:12:25 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -183,6 +183,7 @@
       if (!(lpIMC = ImmLockIMC(hIMC)))
           return FALSE;
   
  +#define USE_RECONVERSION
   #ifdef USE_RECONVERSION
       // regard the VK_F9 key as the ReConversion key
       if ( (vkey == VK_F9 || vkey == VK_HANJA) && !IsCompStr(hIMC)) {
  @@ -196,9 +197,24 @@
               if (dwSize = (DWORD) MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, (LPARAM)lpRS)) {
   #if 1
                   TCHAR szDev[80];
  -                LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset);
  -                *(LPMYSTR)(lpDump + lpRS->dwStrLen) = MYTEXT('\0');
  +#endif
  +                //LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset);
  +                //*(LPMYSTR)(lpDump + lpRS->dwStrLen) = MYTEXT('\0');
  +
  +                LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset + lpRS->dwCompStrOffset);
  +#define USE_RECONV_CLAUSE
  +#ifdef USE_RECONV_CLAUSE
  +                // XXX clause dictionary does not work properly.
  +                *(LPMYSTR)(lpDump + lpRS->dwCompStrLen) = MYTEXT('\0');
  +#else
  +                // only one char can be converted properly
  +                *(LPMYSTR)(lpDump + 1) = MYTEXT('\0');
  +                
  +                lpRS->dwCompStrLen=1;
  +                lpRS->dwTargetStrLen=1;
  +#endif
   
  +#ifdef DEBUG
                   OutputDebugString(TEXT("IMR_RECONVERTSTRING\r\n"));
                   wsprintf(szDev, TEXT("dwSize       %x\r\n"), lpRS->dwSize);
                   OutputDebugString(szDev);
  
  
  


wkpark      06/10/05 13:53:52

  Modified:    src      dic.c imm.c process.c saenaru.rc ui.c
  Log:
  more fixed reconversion code (hack hack)
  Reconversion work MS word, IE, Mozilla etc. now.
  
  Revision  Changes    Path
  1.8       +210 -8    saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- dic.c	3 Oct 2006 13:12:25 -0000	1.7
  +++ dic.c	5 Oct 2006 04:53:52 -0000	1.8
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.7 2006/10/03 13:12:25 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.8 2006/10/05 04:53:52 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -347,16 +347,23 @@
   
                   //
                   // Generate messages.
  -                //
  -                if (lpCompStr->dwCompStrLen > 1) {
  +                // XXX
  +#ifdef DEBUG
  +                {
                       TCHAR szDev[80];
  -                    wsprintf(szDev, TEXT("dwCompStrLen %d\r\n"), lpCompStr->dwCompStrLen);
  +                    wsprintf(szDev, TEXT(" *** HanjaConv: dwCompStrLen %d\r\n"), lpCompStr->dwCompStrLen);
                       OutputDebugString(szDev);
  -                    GnMsg.message = WM_IME_SETCONTEXT;
  +                }
  +#endif
  +#if 1
  +                if (lpCompStr->dwCompStrLen > 1) {
  +                    GnMsg.message = WM_IME_COMPOSITION;
                       GnMsg.wParam = 0;
  -                    GnMsg.lParam = ISC_SHOWUICANDIDATEWINDOW;
  +                    GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
                       GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  -                } else {
  +                } else
  +#endif
  +                {
                       GnMsg.message = WM_IME_COMPOSITION;
                       GnMsg.wParam = cs;
                       GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  @@ -1008,6 +1015,7 @@
       BOOL cf=FALSE;
       int next=0;
       UINT select=0;
  +    int candOk=FALSE;
   
       // Candidate 
       if (IsConvertedCompStr(hIMC))
  @@ -1075,7 +1083,199 @@
           case VK_HANJA:
           case VK_F9:
               hangul_ic_init(&ic);
  -            ConvHanja(hIMC,1,0);
  +
  +            lpIMC = ImmLockIMC(hIMC);
  +
  +#define USE_RECONVERSION
  +#ifdef USE_RECONVERSION
  +        // regard the VK_F9 key as the ReConversion key
  +    while (!IsCompStr(hIMC)) {
  +        DWORD dwSize = (DWORD)MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, 0);
  +        if (dwSize) {
  +            LPRECONVERTSTRING lpRS;
  +
  +            lpRS = (LPRECONVERTSTRING)GlobalAlloc(GPTR, dwSize);
  +            lpRS->dwSize = dwSize;
  +
  +            if (dwSize = (DWORD) MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, (LPARAM)lpRS)) {
  +                BOOL convOk= FALSE;
  +                TRANSMSG GnMsg;
  +#ifdef DEBUG
  +                TCHAR szDev[80];
  +#endif
  +                //LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset);
  +                //*(LPMYSTR)(lpDump + lpRS->dwStrLen) = MYTEXT('\0');
  +
  +                LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset + lpRS->dwCompStrOffset);
  +
  +#ifdef DEBUG
  +                OutputDebugString(TEXT("IMR_RECONVERTSTRING\r\n"));
  +                wsprintf(szDev, TEXT("dwSize       %x\r\n"), lpRS->dwSize);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwVersion    %x\r\n"), lpRS->dwVersion);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwStrLen     %x\r\n"), lpRS->dwStrLen);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwStrOffset  %x\r\n"), lpRS->dwStrOffset);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwCompStrOffset %x\r\n"), lpRS->dwCompStrOffset);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwTargetStrLen %x\r\n"), lpRS->dwTargetStrLen);
  +                OutputDebugString(szDev);
  +                wsprintf(szDev, TEXT("dwTargetStrOffset %x\r\n"), lpRS->dwTargetStrOffset);
  +                OutputDebugString(szDev);
  +#endif
  +                if ( (lpRS->dwStrOffset+lpRS->dwCompStrOffset) < lpRS->dwSize) {
  +                    if (lpRS->dwCompStrLen >1) {
  +                        // clause dictionary.
  +                        *(LPMYSTR)(lpDump + lpRS->dwCompStrLen) = MYTEXT('\0');
  +                    } else {
  +                        // one char reconversion.
  +                        *(LPMYSTR)(lpDump + 1) = MYTEXT('\0');
  +                
  +                        lpRS->dwCompStrLen=1;
  +                        lpRS->dwTargetStrLen=1;
  +                        // XXX 1. manage not convertable ascii chars.
  +                        // XXX 2. end of string.
  +                    }
  +                } else {
  +                    // XXX Mozilla bug.
  +                    OutputDebugString(TEXT(" Reconversion error\r\n"));
  +                    GlobalFree((HANDLE)lpRS);
  +                    //ImmUnlockIMC(hIMC);
  +                    break;
  +                }
  +#ifdef DEBUG
  +                MyOutputDebugString(lpDump);
  +                OutputDebugString(TEXT("\r\n"));
  +#endif
  +
  +		{
  +		    LPCOMPOSITIONSTRING	lpCompStr;
  +
  +		    if (ImmGetIMCCSize (lpIMC->hCompStr) < sizeof (MYCOMPSTR))
  +                    {
  +                        DWORD dwSize = sizeof(MYCOMPSTR);
  +                        lpIMC->hCompStr = ImmReSizeIMCC(lpIMC->hCompStr,dwSize);
  +                        lpCompStr =
  +                            (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
  +                        lpCompStr->dwSize = dwSize;
  +                    } else
  +		        lpCompStr =
  +                            (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr) ;
  +                    {
  +                        LPMYSTR lpstr,lpread;
  +
  +		        if (lpCompStr != NULL) {
  +                            // XXX
  +                            InitCompStr(lpCompStr,CLR_RESULT_AND_UNDET);
  +                            //InitCompStr(lpCompStr,CLR_UNDET);
  +
  +                            lpstr = GETLPCOMPSTR(lpCompStr);
  +                            lpread = GETLPCOMPREADSTR(lpCompStr);
  +                            Mylstrcpy(lpread,lpDump);
  +                            Mylstrcpy(lpstr,lpDump);
  +
  +                            // delta start
  +                            lpCompStr->dwDeltaStart =
  +	                        (DWORD)(MyCharPrev(lpstr, lpstr+Mylstrlen(lpstr)) - lpstr);
  +                            // cursor pos
  +                            //lpCompStr->dwCursorPos=lpRS->dwStrLen;
  +                            lpCompStr->dwCursorPos = Mylstrlen(lpstr);
  +
  +                            //MakeAttrClause(lpCompStr);
  +                            lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),ATTR_INPUT, Mylstrlen(lpstr));
  +                            lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT, Mylstrlen(lpread));
  +
  +                            // make length
  +                            lpCompStr->dwCompStrLen = Mylstrlen(lpstr);
  +                            lpCompStr->dwCompReadStrLen = Mylstrlen(lpread);
  +                            lpCompStr->dwCompAttrLen = Mylstrlen(lpstr);
  +                            lpCompStr->dwCompReadAttrLen = Mylstrlen(lpread);
  +
  +                            //if (lpCompStr->dwCompReadStrLen > 0)
  +                            //    lpCompStr->dwCompReadStrLen--;
  +
  +                            //
  +                            // make clause info
  +                            //
  +                            SetClause(GETLPCOMPCLAUSE(lpCompStr),Mylstrlen(lpstr));
  +                            SetClause(GETLPCOMPREADCLAUSE(lpCompStr),Mylstrlen(lpread));
  +                            lpCompStr->dwCompClauseLen = 8;
  +                            lpCompStr->dwCompReadClauseLen = 8;
  +                            //
  +                            //
  +		        }
  +                    }
  +                    convOk = (BOOL) MyImmRequestMessage(hIMC, IMR_CONFIRMRECONVERTSTRING, (LPARAM)lpRS);
  +#ifdef DEBUG
  +                    if (!convOk)
  +                    {
  +                        OutputDebugString(TEXT(" *** fail CONFIRM RECONVERT\r\n"));
  +                    } else {
  +                        OutputDebugString(TEXT(" *** success CONFIRM RECONVERT\r\n"));
  +                        wsprintf(szDev, TEXT(" *** result: dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  +                        OutputDebugString(szDev);
  +                    }
  +#endif
  +	            ImmUnlockIMCC (lpIMC->hCompStr);
  +		}
  +                break;
  +            }
  +#ifdef DEBUG
  +            else
  +                OutputDebugString(TEXT("ImmRequestMessage returned 0\r\n"));
  +#endif
  +            GlobalFree((HANDLE)lpRS);
  +            //ImmUnlockIMC(hIMC);
  +            break;
  +        }
  +        break;
  +    }
  +#endif
  +            // Check Candidate ability of the IME application
  +            if (IsCompStr(hIMC)) {
  +                CANDIDATEFORM lc;
  +
  +                // check the candidate list of the application supported
  +                // some applications like as M$ Word support its own candidate
  +                // suggest systems.
  +                candOk =
  +                    MyImmRequestMessage(hIMC, IMR_CANDIDATEWINDOW, (LPARAM)&lc);
  +#ifdef DEBUG
  +                if (candOk) {
  +                    TCHAR szDev[80];
  +                    wsprintf(szDev, TEXT("IMR_CandidateWindow: success\r\n"));
  +                    OutputDebugString(szDev);
  +                } else {
  +                    TCHAR szDev[80];
  +                    wsprintf(szDev, TEXT("IMR_CandidateWindow: fail\r\n"));
  +                    OutputDebugString(szDev);
  +                }
  +#endif
  +            }
  +
  +            // XXX hack hack !! IME 2003 TSF mode compatibility
  +            // M$ Word 簡  ʾƼ Spy++ ޽ غ
  +            // , Ű  Comp忡 VK_PROCESSKEY
  +            // , Reconversion忡 VK_PROCESSKEY Բ
  +            // WM_IME_KEYDOWN̺Ʈ . ׷  ̺Ʈ 
  +            // M$ Word  ۵Ͽ   .
  +            // * InternetExplorer Reconversion . IME 2003 ȵ
  +            //
  +
  +            if (candOk || !IsCompStr(hIMC)) {
  +                // for reconversion mode like as IME 2002
  +                TRANSMSG GnMsg;
  +                GnMsg.message = WM_IME_KEYDOWN;
  +                GnMsg.wParam = wParam;
  +                GnMsg.lParam = lParam;
  +                GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +            }
  +            if (!candOk) ConvHanja(hIMC,1,0);
  +            ImmUnlockIMC(hIMC);
               return TRUE;
               break;
   
  @@ -1243,10 +1443,12 @@
           return( FALSE );
       }
       else {
  +#ifdef DEBUG
           TCHAR szDev[80];
   
           wsprintf(szDev, TEXT("code: %x\r\n"), wParam);
           OutputDebugString(szDev);
  +#endif
           return( TRUE );
       }
   }
  
  
  
  1.12      +49 -30    saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- imm.c	3 Oct 2006 13:12:25 -0000	1.11
  +++ imm.c	5 Oct 2006 04:53:52 -0000	1.12
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.11 2006/10/03 13:12:25 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.12 2006/10/05 04:53:52 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -171,7 +171,7 @@
       ImeLog(LOGF_KEY | LOGF_API, TEXT("ImeProcessKey"));
   
       {
  -        MyDebugPrint((TEXT("\t** vKey is 0x%x\r\n"),vKey));
  +        MyDebugPrint((TEXT("\tImeProcessKey: vKey is 0x%x\r\n"),vKey));
       }
   
       if (lKeyData & 0x80000000)
  @@ -183,10 +183,11 @@
       if (!(lpIMC = ImmLockIMC(hIMC)))
           return FALSE;
   
  -#define USE_RECONVERSION
  +// only supported Win98 or above
  +//#define USE_RECONVERSION
   #ifdef USE_RECONVERSION
       // regard the VK_F9 key as the ReConversion key
  -    if ( (vkey == VK_F9 || vkey == VK_HANJA) && !IsCompStr(hIMC)) {
  +    while ( (vkey == VK_F9 || vkey == VK_HANJA) && !IsCompStr(hIMC)) {
           DWORD dwSize = (DWORD)MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, 0);
           if (dwSize) {
               LPRECONVERTSTRING lpRS;
  @@ -195,24 +196,15 @@
               lpRS->dwSize = dwSize;
   
               if (dwSize = (DWORD) MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, (LPARAM)lpRS)) {
  -#if 1
  +                BOOL convOk= FALSE;
  +                TRANSMSG GnMsg;
  +#ifdef DEBUG
                   TCHAR szDev[80];
   #endif
                   //LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset);
                   //*(LPMYSTR)(lpDump + lpRS->dwStrLen) = MYTEXT('\0');
   
                   LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset + lpRS->dwCompStrOffset);
  -#define USE_RECONV_CLAUSE
  -#ifdef USE_RECONV_CLAUSE
  -                // XXX clause dictionary does not work properly.
  -                *(LPMYSTR)(lpDump + lpRS->dwCompStrLen) = MYTEXT('\0');
  -#else
  -                // only one char can be converted properly
  -                *(LPMYSTR)(lpDump + 1) = MYTEXT('\0');
  -                
  -                lpRS->dwCompStrLen=1;
  -                lpRS->dwTargetStrLen=1;
  -#endif
   
   #ifdef DEBUG
                   OutputDebugString(TEXT("IMR_RECONVERTSTRING\r\n"));
  @@ -232,9 +224,32 @@
                   OutputDebugString(szDev);
                   wsprintf(szDev, TEXT("dwTargetStrOffset %x\r\n"), lpRS->dwTargetStrOffset);
                   OutputDebugString(szDev);
  +#endif
  +                if ( (lpRS->dwStrOffset+lpRS->dwCompStrOffset) < lpRS->dwSize) {
  +                    if (lpRS->dwCompStrLen >1) {
  +                        // clause dictionary.
  +                        *(LPMYSTR)(lpDump + lpRS->dwCompStrLen) = MYTEXT('\0');
  +                    } else {
  +                        // one char reconversion.
  +                        *(LPMYSTR)(lpDump + 1) = MYTEXT('\0');
  +                
  +                        lpRS->dwCompStrLen=1;
  +                        lpRS->dwTargetStrLen=1;
  +                        // XXX 1. manage not convertable ascii chars.
  +                        // XXX 2. end of string.
  +                    }
  +                } else {
  +                    // XXX Mozilla bug.
  +                    OutputDebugString(TEXT(" Reconversion error\r\n"));
  +                    GlobalFree((HANDLE)lpRS);
  +                    ImmUnlockIMC(hIMC);
  +                    break;
  +                }
  +#ifdef DEBUG
                   MyOutputDebugString(lpDump);
                   OutputDebugString(TEXT("\r\n"));
   #endif
  +
   		{
   		    LPCOMPOSITIONSTRING	lpCompStr;
   
  @@ -250,7 +265,6 @@
                               (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr) ;
                       {
                           LPMYSTR lpstr,lpread;
  -                        TRANSMSG GnMsg;
   
   		        if (lpCompStr != NULL) {
                               // XXX
  @@ -263,10 +277,11 @@
                               Mylstrcpy(lpstr,lpDump);
   
                               // delta start
  -                            //lpCompStr->dwDeltaStart =
  -	                    //    (DWORD)(MyCharPrev(lpstr, lpstr+Mylstrlen(lpstr)) - lpstr);
  +                            lpCompStr->dwDeltaStart =
  +	                        (DWORD)(MyCharPrev(lpstr, lpstr+Mylstrlen(lpstr)) - lpstr);
                               // cursor pos
                               //lpCompStr->dwCursorPos=lpRS->dwStrLen;
  +                            lpCompStr->dwCursorPos = Mylstrlen(lpstr);
   
                               //MakeAttrClause(lpCompStr);
                               lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),ATTR_INPUT, Mylstrlen(lpstr));
  @@ -290,19 +305,22 @@
                               lpCompStr->dwCompReadClauseLen = 8;
                               //
                               //
  -                            if (lpCompStr->dwCompStrLen)
  -                            {
  -                                GnMsg.message = WM_IME_SETCONTEXT;
  -                                GnMsg.wParam = 0;
  -                                GnMsg.lParam = ISC_SHOWUICANDIDATEWINDOW;
  -                                GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  -                            }
  -                            //OutputDebugString(TEXT("** ReconvertStr\r\n"));
  -		    	    ImmUnlockIMCC (lpIMC->hCompStr);
   		        }
                       }
  +                    convOk = (BOOL) MyImmRequestMessage(hIMC, IMR_CONFIRMRECONVERTSTRING, (LPARAM)lpRS);
  +#ifdef DEBUG
  +                    if (!convOk)
  +                    {
  +                        OutputDebugString(TEXT(" *** fail CONFIRM RECONVERT\r\n"));
  +                    } else {
  +                        OutputDebugString(TEXT(" *** success CONFIRM RECONVERT\r\n"));
  +                        wsprintf(szDev, TEXT(" *** result: dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  +                        OutputDebugString(szDev);
  +                    }
  +#endif
  +	            ImmUnlockIMCC (lpIMC->hCompStr);
   		}
  -                MyImmRequestMessage(hIMC, IMR_CONFIRMRECONVERTSTRING, (LPARAM)lpRS);
  +                break;
               }
   #ifdef DEBUG
               else
  @@ -310,8 +328,9 @@
   #endif
               GlobalFree((HANDLE)lpRS);
               ImmUnlockIMC(hIMC);
  -            return TRUE;
  +            break;
           }
  +        break;
       }
   #endif
   
  
  
  
  1.6       +2 -1      saenaru/src/process.c
  
  Index: process.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/process.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- process.c	21 Dec 2004 22:54:07 -0000	1.5
  +++ process.c	5 Oct 2006 04:53:52 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/process.c,v 1.5 2004/12/21 22:54:07 wkpark Exp $
  + * $Saenaru: saenaru/src/process.c,v 1.6 2006/10/05 04:53:52 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -78,6 +78,7 @@
   
   BYTE bNoCompSht[] = {   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 00-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 10-0F
  +                        // 0x19 == VK_HANJA
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 20-0F
                           1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,        // 30-0F
                           0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,        // 40-0F
  
  
  
  1.4       +1 -1      saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- saenaru.rc	29 Nov 2004 17:06:14 -0000	1.3
  +++ saenaru.rc	5 Oct 2006 04:53:52 -0000	1.4
  @@ -169,7 +169,7 @@
               VALUE "FileDescription", " 1.0\0"
               VALUE "FileVersion", "1.0\0"
               VALUE "InternalName", "SAENARU\0"
  -            VALUE "LegalCopyright", "Copyright (C) 2003 .\0"
  +            VALUE "LegalCopyright", "Copyright (C) 2003-2006 .\0"
               VALUE "LegalTrademarks", "\0"
               VALUE "OriginalFilename", "SAENARU.IME\0"
   //            VALUE "PrivateBuild", "\0"
  
  
  
  1.10      +2 -2      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ui.c	22 Dec 2004 10:51:08 -0000	1.9
  +++ ui.c	5 Oct 2006 04:53:52 -0000	1.10
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.9 2004/12/22 10:51:08 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.10 2006/10/05 04:53:52 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -1208,7 +1208,7 @@
       vKey = lpmsg->wParam;
   
       if (vKey == VK_PROCESSKEY) {
  -        MyDebugPrint((TEXT("\t** VK_PROCESSKEY and 0x%x\r\n"),lpmsg->lParam));
  +        MyDebugPrint((TEXT("\tMainProc: VK_PROCESSKEY and 0x%x\r\n"),lpmsg->lParam));
       }
   
       switch (lpmsg->message)
  
  
  


wkpark      06/10/05 14:08:01

  Modified:    resource penindic.ico
  Log:
  replace taeguk icon with sam-taeguk :)
  
  Revision  Changes    Path
  1.2       +10 -1     saenaru/resource/penindic.ico
  
  	<<Binary file>>
  
  


wkpark      06/10/06 19:18:19

  Modified:    src      hangul.c
  Log:
  add IME 2003 related comments
  
  Revision  Changes    Path
  1.12      +4 -4      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- hangul.c	21 Dec 2004 22:52:45 -0000	1.11
  +++ hangul.c	6 Oct 2006 10:18:19 -0000	1.12
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.11 2004/12/21 22:52:45 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.12 2006/10/06 10:18:19 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1680,7 +1680,7 @@
           GnMsg.message = WM_IME_COMPOSITION;
           GnMsg.wParam = cs;
           GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -        //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; //ѱ IME 2002
  +        //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; //ѱ IME 2002,2003
           if (dwImeFlag & SAENARU_ONTHESPOT)
               GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
           GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  @@ -1759,7 +1759,7 @@
   	    //    Է¹ asciiڸ ״ ´.
   	    //PostMessage(lpIMC->hWnd,WM_CHAR,code,lParam);
   	} else {
  -#if 0
  +#if 1
               // Ÿ, е忡  ϵ 
   	    //  κ   ۵Ѵ.
               GnMsg.message = WM_IME_STARTCOMPOSITION;
  @@ -1770,7 +1770,7 @@
               GnMsg.message = WM_IME_COMPOSITION;
               GnMsg.wParam = cs;
               GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -            //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002
  +            //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
               if (dwImeFlag & SAENARU_ONTHESPOT)
                   GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  
  
  


wkpark      06/10/06 19:20:44

  Modified:    src      uicand.c
  Log:
  support "without CompWnd applications" like as the WordPad.exe
  
  Revision  Changes    Path
  1.4       +77 -25    saenaru/src/uicand.c
  
  Index: uicand.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicand.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- uicand.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ uicand.c	6 Oct 2006 10:20:44 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicand.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/uicand.c,v 1.4 2006/10/06 10:20:44 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -143,6 +143,7 @@
               break;
   
           default:
  +            MyDebugPrint((TEXT("WM default message: %x\n"),message));
               if (!MyIsIMEMessage(message))
                   return DefWindowProc(hWnd,message,wParam,lParam);
               break;
  @@ -163,22 +164,29 @@
       {
           if (lpUIExtra->uiComp[0].bShow)
           {
  -            GetWindowRect(lpUIExtra->uiComp[0].hWnd,&rc);
  -            lppt->x = rc.left;
  -            lppt->y = rc.bottom+1;
  -            return TRUE;
  +            if (IsWindow(lpUIExtra->uiComp[0].hWnd)) {
  +                GetWindowRect(lpUIExtra->uiComp[0].hWnd,&rc);
  +                lppt->x = rc.left;
  +                lppt->y = rc.bottom+1;
  +                return TRUE;
  +            }
           }
       }
       else
       {
           if (lpUIExtra->uiDefComp.bShow)
           {
  -            GetWindowRect(lpUIExtra->uiDefComp.hWnd,&rc);
  -            lppt->x = rc.left;
  -            lppt->y = rc.bottom+1;
  -            return TRUE;
  +            if (IsWindow(lpUIExtra->uiDefComp.hWnd)) {
  +                GetWindowRect(lpUIExtra->uiDefComp.hWnd,&rc);
  +                lppt->x = rc.left;
  +                lppt->y = rc.bottom+1;
  +                return TRUE;
  +            }
           }
       }
  +    lppt->x=-1;
  +    lppt->y=-1;
  +    MyDebugPrint((TEXT(" *** GetCandPosFromCompWnd FALSE\n")));
       return FALSE;
   }
   
  @@ -227,11 +235,15 @@
       }
       else
       {
  -        if (GetCandPosFromCompWnd(lpUIExtra,lppt))
  +        if (!GetCandPosFromCompWnd(lpUIExtra,lppt))
           {
  -            ScreenToClient(lpIMC->hWnd,lppt);
  -            return TRUE;
  +            RECT rc;
  +            GetWindowRect(lpIMC->hWnd,&rc);
  +            lppt->x = rc.left;
  +            lppt->y = rc.bottom + 23;
           }
  +        ScreenToClient(lpIMC->hWnd,lppt);
  +        return TRUE;
       }
       return FALSE;
   }
  @@ -245,11 +257,22 @@
   {
       POINT pt;
   
  -    if (GetCandPosFromCompWnd(lpUIExtra,&pt))
  -    {
  -        lpUIExtra->uiCand.pt.x = pt.x;
  -        lpUIExtra->uiCand.pt.y = pt.y;
  -    }
  +    MyDebugPrint((TEXT("CreateCandWindow\n")));
  +    // CandWindow CompWindow ġ  ȴ.
  +    // ׷, CompWindow  쵵 ִ (е)
  +    //  , ü  ũ⸦ ˾Ƽ  ϴܿ ٿش.
  +    // ġ  Է» â ġ
  +    // skkime root  θ.
  +    if (!GetCandPosFromCompWnd(lpUIExtra,&pt))
  +    {
  +        RECT rc;
  +        GetWindowRect(lpIMC->hWnd,&rc);
  +        pt.x = rc.left;
  +        pt.y = rc.bottom + 1;
  +    }
  +    lpUIExtra->uiCand.pt.x = pt.x;
  +    lpUIExtra->uiCand.pt.y = pt.y;
  +    MyDebugPrint((TEXT("Cand Pos :%dx%d\n"),pt.x,pt.y));
   
       if (!IsWindow(lpUIExtra->uiCand.hWnd))
       {
  @@ -452,14 +475,16 @@
       POINT pt;
       CANDIDATEFORM caf;
   
  +    MyDebugPrint((TEXT("MoveCandWindow\r\n")));
       if (fForceComp)
       {
  -        if (GetCandPosFromCompForm(lpIMC, lpUIExtra, &pt))
  -        {
  +        if (GetCandPosFromCompForm(lpIMC, lpUIExtra, &pt)) {
               caf.dwIndex        = 0;
               caf.dwStyle        = CFS_CANDIDATEPOS;
               caf.ptCurrentPos.x = pt.x;
               caf.ptCurrentPos.y = pt.y;
  +
  +            MyDebugPrint((TEXT(" *** MoveCandWindow #1\r\n")));
   #if 0
               GetWindowRect(lpUIExtra->uiCand.hWnd,&rc);
               if ((int)rc.left != -1 && (int)rc.left < 4096 ) {
  @@ -482,17 +507,30 @@
       // Not initialized !!
       if (lpIMC->cfCandForm[0].dwIndex == -1)
       {
  -        if (GetCandPosFromCompWnd(lpUIExtra,&pt))
  +        MyDebugPrint((TEXT(" *** MoveCandWindow #2\r\n")));
  +        if (!GetCandPosFromCompWnd(lpUIExtra,&pt))
           {
  -            lpUIExtra->uiCand.pt.x = pt.x;
  -            lpUIExtra->uiCand.pt.y = pt.y;
  +            //  ø̼ CompWindow   ʴ.
  +            // е尡 ǥ ̽
  +            GetWindowRect(lpIMC->hWnd,&rc);
  +            lpUIExtra->uiCand.pt.x = rc.left;
  +            lpUIExtra->uiCand.pt.y = rc.bottom;
  +
  +            pt.x = rc.left;
  +            pt.y = rc.bottom + 24;
  +        }
  +        lpUIExtra->uiCand.pt.x = pt.x;
  +        lpUIExtra->uiCand.pt.y = pt.y;
  +
  +        {
  +            MyDebugPrint((TEXT(" *** pt %dx%d\r\n"),pt.x,pt.y));
               GetWindowRect(lpUIExtra->uiCand.hWnd,&rc);
               MoveWindow(lpUIExtra->uiCand.hWnd,pt.x,pt.y, rc.right - rc.left ,rc.bottom - rc.top ,TRUE);
               ShowWindow(lpUIExtra->uiCand.hWnd,SW_SHOWNOACTIVATE);
               lpUIExtra->uiCand.bShow = TRUE;
               InvalidateRect(lpUIExtra->uiCand.hWnd,NULL,FALSE);
   
  -            SendMessage(hUIWnd,WM_UI_CANDMOVE, 0,MAKELONG((WORD)pt.x,(WORD)pt.y));
  +            SendMessage(hUIWnd,WM_UI_CANDMOVE, 0,MAKELONG((WORD)pt.x,(WORD)pt.y-20));
           }
           return;
       }
  @@ -505,8 +543,14 @@
           RECT rcWork;
           RECT rcAppWnd;
   
  +        MyDebugPrint((TEXT(" *** MoveCandWindow #3\r\n")));
           SystemParametersInfo(SPI_GETWORKAREA,0,&rcWork,FALSE);
  -        GetClientRect(lpUIExtra->uiCand.hWnd,&rc);
  +        // patch from skkime
  +        if (IsWindow(lpUIExtra->uiCand.hWnd)) {
  +            GetClientRect(lpUIExtra->uiCand.hWnd,&rc);
  +        } else {
  +            rc.left = rc.right = rc.top = rc.bottom = 0;
  +        }
           GetWindowRect(lpIMC->hWnd,&rcAppWnd);
   
           if (!lpUIExtra->bVertical)
  @@ -533,6 +577,7 @@
           
           if (IsWindow(lpUIExtra->uiCand.hWnd))
           {
  +            MyDebugPrint((TEXT(" *** MoveCandWindow #4\r\n")));
               GetWindowRect(lpUIExtra->uiCand.hWnd,&rc);
               MoveWindow(lpUIExtra->uiCand.hWnd,pt.x,pt.y, rc.right - rc.left ,rc.bottom - rc.top ,TRUE);
               ShowWindow(lpUIExtra->uiCand.hWnd,SW_SHOWNOACTIVATE);
  @@ -542,7 +587,8 @@
           }
           SendMessage(hUIWnd,WM_UI_CANDMOVE, 0,MAKELONG((WORD)pt.x,(WORD)pt.y));
       } 
  -    else if (lpIMC->cfCandForm[0].dwStyle == CFS_CANDIDATEPOS)
  +    else
  +    //else if (lpIMC->cfCandForm[0].dwStyle == CFS_CANDIDATEPOS)
       {
           pt.x = lpIMC->cfCandForm[0].ptCurrentPos.x;
           pt.y = lpIMC->cfCandForm[0].ptCurrentPos.y;
  @@ -551,6 +597,7 @@
           if (IsWindow(lpUIExtra->uiCand.hWnd))
           {
               GetWindowRect(lpUIExtra->uiCand.hWnd,&rc);
  +            MyDebugPrint((TEXT(" *** MoveCandWindow #5\r\n")));
               MoveWindow(lpUIExtra->uiCand.hWnd,pt.x,pt.y, rc.right - rc.left ,rc.bottom - rc.top ,TRUE);
               ShowWindow(lpUIExtra->uiCand.hWnd,SW_SHOWNOACTIVATE);
               lpUIExtra->uiCand.bShow = TRUE;
  @@ -558,7 +605,12 @@
   
           }
           SendMessage(hUIWnd,WM_UI_CANDMOVE, 0,MAKELONG((WORD)pt.x,(WORD)pt.y));
  +        MyDebugPrint((TEXT(" *** MoveCandWindow: dwStyle: %x\r\n"),
  +                lpIMC->cfCandForm[0].dwStyle));
       }
  +    MyDebugPrint((TEXT(" *** MoveCandWindow Fail\r\n")));
  +    MyDebugPrint((TEXT(" *** MoveCandWindow: dwStyle: %x\r\n"),
  +                lpIMC->cfCandForm[0].dwStyle));
   }
   
   /*
  
  
  


wkpark      06/10/06 20:14:58

  Modified:    src      uicomp.c
  Log:
  add some comments about CompWnd styling
  
  Revision  Changes    Path
  1.6       +17 -7     saenaru/src/uicomp.c
  
  Index: uicomp.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicomp.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- uicomp.c	13 Oct 2004 11:23:33 -0000	1.5
  +++ uicomp.c	6 Oct 2006 11:14:58 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicomp.c,v 1.5 2004/10/13 11:23:33 wkpark Exp $
  + * $Saenaru: saenaru/src/uicomp.c,v 1.6 2006/10/06 11:14:58 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -121,6 +121,7 @@
           lpUIExtra->uiComp[i].bShow = FALSE;
       }
   
  +    // not created yet ?
       if (lpUIExtra->uiDefComp.pt.x == -1)
       {
           GetWindowRect(lpIMC->hWnd,&rc);
  @@ -238,6 +239,7 @@
       //
       // Save the composition form style into lpUIExtra.
       //
  +    MyDebugPrint((TEXT("MoveCompWindow\r\n")));
       lpUIExtra->dwCompStyle = lpIMC->cfCompForm.dwStyle;
   
       if (lpIMC->cfCompForm.dwStyle)  // Style is not DEFAULT.
  @@ -440,6 +442,7 @@
           // When the style is DEFAULT, show the default composition window.
           //
           // root window style XXX
  +        MyDebugPrint((TEXT("MoveCompWindow root window\r\n")));
           if (IsWindow(lpUIExtra->uiDefComp.hWnd))
           {
               for (i = 0; i < MAXCOMPWND; i++)
  @@ -636,18 +639,23 @@
                       // ѱ   ʴ ÿ
                       //    ѱ     ̴.
                       HDC hPDC;
  -                    //HBRUSH hBrush;
  -                    //hBrush=CreateSolidBrush(GetBkColor(hDC));
  -                    //FillRect(hDC,&rc,hBrush);
  -
  +#if 0
  +                    // normal white background color
  +                    HBRUSH hBrush;
  +                    hBrush=CreateSolidBrush(GetBkColor(hDC));
  +                    FillRect(hDC,&rc,hBrush);
  +#else
  +                    // BTNFACE background color like as IME 2002/2003.
  +                    FillRect(hDC,&rc,(HBRUSH) (COLOR_BTNFACE + 1));
  +#endif
                       hPDC = GetDC(GetParent(hCompWnd));
  +
                       GetClientRect (hCompWnd,&rc);
  -                    //SetBkColor(hDC,GetBkColor(hPDC));
                       SetBkColor(hDC,GetBkColor(hDC));
                       SetTextColor(hDC,GetTextColor(hDC));
  +                    //SetBkColor(hDC,GetBkColor(hPDC));
                       //SetTextColor(hDC,RGB(127,127,127));
                       //SetBkMode(hDC,OPAQUE);
  -                    FillRect(hDC,&rc,(HBRUSH) (COLOR_BTNFACE + 1));
   
                       lstart = GetWindowLong(hCompWnd,FIGWL_COMPSTARTSTR);
                       num = GetWindowLong(hCompWnd,FIGWL_COMPSTARTNUM);
  @@ -658,6 +666,7 @@
                       lpstr+=lstart;
                       lpattr+=lstart;
                       DrawTextOneLine(hCompWnd, hDC, lpstr, lpattr, num, fVert);
  +
                       ReleaseDC(GetParent(hCompWnd),hPDC);
                   }
                   else
  @@ -718,6 +727,7 @@
           if (IsWindow(lpUIExtra->uiComp[i].hWnd))
               SetWindowLongPtr(lpUIExtra->uiComp[i].hWnd,FIGWL_FONT,(LONG_PTR)lpUIExtra->hFont);
   
  +    OutputDebugString(TEXT("SetFontCompWindow\r\n"));
   }
   
   /*
  
  
  


wkpark      06/10/06 20:20:51

  Modified:    src      dic.c
  Log:
  more fixed reconversion code. Reconversion work word pad now.
  
  Revision  Changes    Path
  1.9       +192 -141  saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- dic.c	5 Oct 2006 04:53:52 -0000	1.8
  +++ dic.c	6 Oct 2006 11:20:51 -0000	1.9
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.8 2006/10/05 04:53:52 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.9 2006/10/06 11:20:51 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -284,10 +284,14 @@
               lmemset(GETLPCOMPREADATTR(lpCompStr),ATTR_TARGET_CONVERTED,
                     Mylstrlen(GETLPCOMPREADSTR(lpCompStr)));
   
  +            OutputDebugString(TEXT("ConvHanja #1\r\n"));
               GnMsg.message = WM_IME_COMPOSITION;
  -            GnMsg.wParam = 0;
  -            GnMsg.lParam = GCS_COMPSTR | GCS_CURSORPOS |
  -                           GCS_COMPATTR | GCS_COMPREADATTR;
  +            GnMsg.wParam = (WCHAR) *lpT2;
  +            //GnMsg.lParam = GCS_COMPSTR | GCS_CURSORPOS |
  +            //               GCS_COMPATTR | GCS_COMPREADATTR;
  +            GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +            if (dwImeFlag & SAENARU_ONTHESPOT)
  +                GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
           }
   
  @@ -351,7 +355,7 @@
   #ifdef DEBUG
                   {
                       TCHAR szDev[80];
  -                    wsprintf(szDev, TEXT(" *** HanjaConv: dwCompStrLen %d\r\n"), lpCompStr->dwCompStrLen);
  +                    wsprintf(szDev, TEXT(" *** ConvHanja: dwCompStrLen %d\r\n"), lpCompStr->dwCompStrLen);
                       OutputDebugString(szDev);
                   }
   #endif
  @@ -361,6 +365,7 @@
                       GnMsg.wParam = 0;
                       GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
                       GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +                    OutputDebugString(TEXT(" *** ConvHanja: GnMsg > 1\r\n"));
                   } else
   #endif
                   {
  @@ -370,7 +375,10 @@
                       if (dwImeFlag & SAENARU_ONTHESPOT)
                           GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
                       GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +                    OutputDebugString(TEXT(" *** ConvHanja: GnMsg == 1\r\n"));
                   }
  +                MyOutputDebugString(lpmystr);
  +                OutputDebugString(TEXT("\r\n *** ConvHanja: Pre candidate\r\n"));
   
                   bRc = TRUE;
                   goto cvk_exit40;
  @@ -397,6 +405,7 @@
               GnMsg.wParam = IMN_OPENCANDIDATE;
               GnMsg.lParam = 1L;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +            OutputDebugString(TEXT("ConvHanja: OpenCandidate\r\n"));
           }
   
           //
  @@ -488,6 +497,7 @@
           GnMsg.wParam = IMN_CHANGECANDIDATE;
           GnMsg.lParam = 1L;
           GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +        OutputDebugString(TEXT("ConvHanja: ChangeCandidate\r\n"));
   
           //
           // If the selected candidate string is changed, the composition string
  @@ -1088,152 +1098,183 @@
   
   #define USE_RECONVERSION
   #ifdef USE_RECONVERSION
  -        // regard the VK_F9 key as the ReConversion key
  -    while (!IsCompStr(hIMC)) {
  -        DWORD dwSize = (DWORD)MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, 0);
  -        if (dwSize) {
  -            LPRECONVERTSTRING lpRS;
  -
  -            lpRS = (LPRECONVERTSTRING)GlobalAlloc(GPTR, dwSize);
  -            lpRS->dwSize = dwSize;
  -
  -            if (dwSize = (DWORD) MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, (LPARAM)lpRS)) {
  -                BOOL convOk= FALSE;
  -                TRANSMSG GnMsg;
  +            // regard the VK_F9 key as the ReConversion key
  +            while (!IsCompStr(hIMC)) {
  +                DWORD dwSize = (DWORD)MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, 0);
  +                if (dwSize) {
  +                    LPRECONVERTSTRING lpRS;
  +        
  +                    lpRS = (LPRECONVERTSTRING)GlobalAlloc(GPTR, dwSize);
  +                    lpRS->dwSize = dwSize;
  +        
  +                    if (dwSize = (DWORD) MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, (LPARAM)lpRS)) {
  +                        BOOL convOk= FALSE;
  +                        TRANSMSG GnMsg;
   #ifdef DEBUG
  -                TCHAR szDev[80];
  +                        TCHAR szDev[80];
   #endif
  -                //LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset);
  -                //*(LPMYSTR)(lpDump + lpRS->dwStrLen) = MYTEXT('\0');
  -
  -                LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset + lpRS->dwCompStrOffset);
  -
  +                        //LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset);
  +                        //*(LPMYSTR)(lpDump + lpRS->dwStrLen) = MYTEXT('\0');
  +        
  +                        LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset + lpRS->dwCompStrOffset);
  +        
   #ifdef DEBUG
  -                OutputDebugString(TEXT("IMR_RECONVERTSTRING\r\n"));
  -                wsprintf(szDev, TEXT("dwSize       %x\r\n"), lpRS->dwSize);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwVersion    %x\r\n"), lpRS->dwVersion);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwStrLen     %x\r\n"), lpRS->dwStrLen);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwStrOffset  %x\r\n"), lpRS->dwStrOffset);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwCompStrOffset %x\r\n"), lpRS->dwCompStrOffset);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwTargetStrLen %x\r\n"), lpRS->dwTargetStrLen);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwTargetStrOffset %x\r\n"), lpRS->dwTargetStrOffset);
  -                OutputDebugString(szDev);
  +                        OutputDebugString(TEXT("IMR_RECONVERTSTRING\r\n"));
  +                        wsprintf(szDev, TEXT("dwSize       %x\r\n"), lpRS->dwSize);
  +                        OutputDebugString(szDev);
  +                        wsprintf(szDev, TEXT("dwVersion    %x\r\n"), lpRS->dwVersion);
  +                        OutputDebugString(szDev);
  +                        wsprintf(szDev, TEXT("dwStrLen     %x\r\n"), lpRS->dwStrLen);
  +                        OutputDebugString(szDev);
  +                        wsprintf(szDev, TEXT("dwStrOffset  %x\r\n"), lpRS->dwStrOffset);
  +                        OutputDebugString(szDev);
  +                        wsprintf(szDev, TEXT("dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  +                        OutputDebugString(szDev);
  +                        wsprintf(szDev, TEXT("dwCompStrOffset %x\r\n"), lpRS->dwCompStrOffset);
  +                        OutputDebugString(szDev);
  +                        wsprintf(szDev, TEXT("dwTargetStrLen %x\r\n"), lpRS->dwTargetStrLen);
  +                        OutputDebugString(szDev);
  +                        wsprintf(szDev, TEXT("dwTargetStrOffset %x\r\n"), lpRS->dwTargetStrOffset);
  +                        OutputDebugString(szDev);
   #endif
  -                if ( (lpRS->dwStrOffset+lpRS->dwCompStrOffset) < lpRS->dwSize) {
  -                    if (lpRS->dwCompStrLen >1) {
  -                        // clause dictionary.
  -                        *(LPMYSTR)(lpDump + lpRS->dwCompStrLen) = MYTEXT('\0');
  -                    } else {
  -                        // one char reconversion.
  -                        *(LPMYSTR)(lpDump + 1) = MYTEXT('\0');
  -                
  -                        lpRS->dwCompStrLen=1;
  -                        lpRS->dwTargetStrLen=1;
  -                        // XXX 1. manage not convertable ascii chars.
  -                        // XXX 2. end of string.
  -                    }
  -                } else {
  -                    // XXX Mozilla bug.
  -                    OutputDebugString(TEXT(" Reconversion error\r\n"));
  -                    GlobalFree((HANDLE)lpRS);
  -                    //ImmUnlockIMC(hIMC);
  -                    break;
  -                }
  +                        if ( (lpRS->dwStrOffset+lpRS->dwCompStrOffset) < lpRS->dwSize) {
  +                            if (lpRS->dwCompStrLen >1) {
  +                                // clause dictionary.
  +                                *(LPMYSTR)(lpDump + lpRS->dwCompStrLen) = MYTEXT('\0');
  +                            } else {
  +                                // one char reconversion.
  +                                *(LPMYSTR)(lpDump + 1) = MYTEXT('\0');
  +                        
  +                                lpRS->dwCompStrLen=1;
  +                                lpRS->dwTargetStrLen=1;
  +                                // XXX 1. manage not convertable ascii chars.
  +                                // XXX 2. end of string.
  +                            }
  +                        } else {
  +                            // XXX Mozilla bug.
  +                            OutputDebugString(TEXT(" Reconversion error\r\n"));
  +                            GlobalFree((HANDLE)lpRS);
  +                            //ImmUnlockIMC(hIMC);
  +                            break;
  +                        }
   #ifdef DEBUG
  -                MyOutputDebugString(lpDump);
  -                OutputDebugString(TEXT("\r\n"));
  +                        MyOutputDebugString(lpDump);
  +                        OutputDebugString(TEXT("\r\n"));
   #endif
  +        
  +        		{
  +        		    LPCOMPOSITIONSTRING	lpCompStr;
  +        
  +        		    if (ImmGetIMCCSize (lpIMC->hCompStr) < sizeof (MYCOMPSTR))
  +                            {
  +                                DWORD dwSize = sizeof(MYCOMPSTR);
  +                                lpIMC->hCompStr = ImmReSizeIMCC(lpIMC->hCompStr,dwSize);
  +                                lpCompStr =
  +                                    (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
  +                                lpCompStr->dwSize = dwSize;
  +                            } else
  +        		        lpCompStr =
  +                                    (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr) ;
  +                            {
  +                                LPMYSTR lpstr,lpread;
  +        
  +        		        if (lpCompStr != NULL) {
  +                                    // XXX
  +                                    InitCompStr(lpCompStr,CLR_RESULT_AND_UNDET);
  +                                    //InitCompStr(lpCompStr,CLR_UNDET);
  +        
  +                                    lpstr = GETLPCOMPSTR(lpCompStr);
  +                                    lpread = GETLPCOMPREADSTR(lpCompStr);
  +                                    Mylstrcpy(lpread,lpDump);
  +                                    Mylstrcpy(lpstr,lpDump);
  +        
  +                                    // delta start
  +                                    lpCompStr->dwDeltaStart =
  +        	                        (DWORD)(MyCharPrev(lpstr, lpstr+Mylstrlen(lpstr)) - lpstr);
  +                                    // cursor pos
  +                                    //lpCompStr->dwCursorPos-=lpRS->dwStrLen;
  +                                    //if (lpCompStr->dwCursorPos <= 0) lpCompStr->dwCursorPos=0;
  +                                    lpCompStr->dwCursorPos = Mylstrlen(lpstr);
  +        
  +                                    //MakeAttrClause(lpCompStr);
  +                                    lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),ATTR_INPUT,
  +                                            Mylstrlen(lpstr));
  +                                    lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT,
  +                                            Mylstrlen(lpread));
  +        
  +                                    // make length
  +                                    lpCompStr->dwCompStrLen = Mylstrlen(lpstr);
  +                                    lpCompStr->dwCompReadStrLen = Mylstrlen(lpread);
  +                                    lpCompStr->dwCompAttrLen = Mylstrlen(lpstr);
  +                                    lpCompStr->dwCompReadAttrLen = Mylstrlen(lpread);
  +        
  +                                    //if (lpCompStr->dwCompReadStrLen > 0)
  +                                    //    lpCompStr->dwCompReadStrLen--;
   
  -		{
  -		    LPCOMPOSITIONSTRING	lpCompStr;
  +                                    //
  +                                    // make clause info
  +                                    //
  +                                    SetClause(GETLPCOMPCLAUSE(lpCompStr),Mylstrlen(lpstr));
  +                                    SetClause(GETLPCOMPREADCLAUSE(lpCompStr),Mylstrlen(lpread));
  +                                    lpCompStr->dwCompClauseLen = 8;
  +                                    lpCompStr->dwCompReadClauseLen = 8;
  +                                    //
   
  -		    if (ImmGetIMCCSize (lpIMC->hCompStr) < sizeof (MYCOMPSTR))
  -                    {
  -                        DWORD dwSize = sizeof(MYCOMPSTR);
  -                        lpIMC->hCompStr = ImmReSizeIMCC(lpIMC->hCompStr,dwSize);
  -                        lpCompStr =
  -                            (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
  -                        lpCompStr->dwSize = dwSize;
  -                    } else
  -		        lpCompStr =
  -                            (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr) ;
  -                    {
  -                        LPMYSTR lpstr,lpread;
  +#if 1
  +                                    Mylstrcpy(GETLPRESULTSTR(lpCompStr),GETLPCOMPSTR(lpCompStr));
  +                                    Mylstrcpy(GETLPRESULTREADSTR(lpCompStr),GETLPCOMPREADSTR(lpCompStr));
   
  -		        if (lpCompStr != NULL) {
  -                            // XXX
  -                            InitCompStr(lpCompStr,CLR_RESULT_AND_UNDET);
  -                            //InitCompStr(lpCompStr,CLR_UNDET);
  -
  -                            lpstr = GETLPCOMPSTR(lpCompStr);
  -                            lpread = GETLPCOMPREADSTR(lpCompStr);
  -                            Mylstrcpy(lpread,lpDump);
  -                            Mylstrcpy(lpstr,lpDump);
  -
  -                            // delta start
  -                            lpCompStr->dwDeltaStart =
  -	                        (DWORD)(MyCharPrev(lpstr, lpstr+Mylstrlen(lpstr)) - lpstr);
  -                            // cursor pos
  -                            //lpCompStr->dwCursorPos=lpRS->dwStrLen;
  -                            lpCompStr->dwCursorPos = Mylstrlen(lpstr);
  -
  -                            //MakeAttrClause(lpCompStr);
  -                            lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),ATTR_INPUT, Mylstrlen(lpstr));
  -                            lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT, Mylstrlen(lpread));
  -
  -                            // make length
  -                            lpCompStr->dwCompStrLen = Mylstrlen(lpstr);
  -                            lpCompStr->dwCompReadStrLen = Mylstrlen(lpread);
  -                            lpCompStr->dwCompAttrLen = Mylstrlen(lpstr);
  -                            lpCompStr->dwCompReadAttrLen = Mylstrlen(lpread);
  -
  -                            //if (lpCompStr->dwCompReadStrLen > 0)
  -                            //    lpCompStr->dwCompReadStrLen--;
  -
  -                            //
  -                            // make clause info
  -                            //
  -                            SetClause(GETLPCOMPCLAUSE(lpCompStr),Mylstrlen(lpstr));
  -                            SetClause(GETLPCOMPREADCLAUSE(lpCompStr),Mylstrlen(lpread));
  -                            lpCompStr->dwCompClauseLen = 8;
  -                            lpCompStr->dwCompReadClauseLen = 8;
  -                            //
  -                            //
  -		        }
  -                    }
  -                    convOk = (BOOL) MyImmRequestMessage(hIMC, IMR_CONFIRMRECONVERTSTRING, (LPARAM)lpRS);
  +                                    lpCompStr->dwResultStrLen = lpCompStr->dwCompStrLen;
  +                                    lpCompStr->dwResultReadStrLen = lpCompStr->dwCompReadStrLen;
  +                                    //
  +                                    // make clause info
  +                                    //
  +                                    SetClause(GETLPRESULTCLAUSE(lpCompStr),Mylstrlen(GETLPRESULTSTR(lpCompStr)));
  +                                    SetClause(GETLPRESULTREADCLAUSE(lpCompStr),Mylstrlen(GETLPRESULTREADSTR(lpCompStr)));
  +                                    lpCompStr->dwResultClauseLen = 8;
  +
  +#if 0
  +                                    // Generate RESULTALL Msg
  +                                    GnMsg.message = WM_IME_COMPOSITION;
  +                                    GnMsg.wParam = 0;
  +                                    GnMsg.lParam = GCS_RESULTSTR | GCS_DELTASTART;
  +                                    GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +
  +                                    // Generate COMPSTR Msg
  +                                    GnMsg.message = WM_IME_COMPOSITION;
  +                                    GnMsg.wParam = 0;
  +                                    GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +                                    GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +#endif
  +#endif
  +        		        } else {
  +                                    OutputDebugString(TEXT(" *** lpCompStr== NULL\r\n"));
  +                                }
  +                            }
  +                            convOk = (BOOL) MyImmRequestMessage(hIMC, IMR_CONFIRMRECONVERTSTRING, (LPARAM)lpRS);
   #ifdef DEBUG
  -                    if (!convOk)
  -                    {
  -                        OutputDebugString(TEXT(" *** fail CONFIRM RECONVERT\r\n"));
  -                    } else {
  -                        OutputDebugString(TEXT(" *** success CONFIRM RECONVERT\r\n"));
  -                        wsprintf(szDev, TEXT(" *** result: dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  -                        OutputDebugString(szDev);
  +                            if (!convOk) {
  +                                OutputDebugString(TEXT(" *** fail CONFIRM RECONVERT\r\n"));
  +                            } else {
  +                                OutputDebugString(TEXT(" *** success CONFIRM RECONVERT\r\n"));
  +                                wsprintf(szDev, TEXT(" *** result: dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  +                                OutputDebugString(szDev);
  +                            }
  +#endif
  +        	            ImmUnlockIMCC (lpIMC->hCompStr);
  +        		}
  +                        break;
                       }
  +#ifdef DEBUG
  +                    else
  +                        OutputDebugString(TEXT("ImmRequestMessage returned 0\r\n"));
   #endif
  -	            ImmUnlockIMCC (lpIMC->hCompStr);
  -		}
  +                    GlobalFree((HANDLE)lpRS);
  +                    //ImmUnlockIMC(hIMC);
  +                    break;
  +                }
                   break;
               }
  -#ifdef DEBUG
  -            else
  -                OutputDebugString(TEXT("ImmRequestMessage returned 0\r\n"));
  -#endif
  -            GlobalFree((HANDLE)lpRS);
  -            //ImmUnlockIMC(hIMC);
  -            break;
  -        }
  -        break;
  -    }
   #endif
               // Check Candidate ability of the IME application
               if (IsCompStr(hIMC)) {
  @@ -1242,8 +1283,7 @@
                   // check the candidate list of the application supported
                   // some applications like as M$ Word support its own candidate
                   // suggest systems.
  -                candOk =
  -                    MyImmRequestMessage(hIMC, IMR_CANDIDATEWINDOW, (LPARAM)&lc);
  +                candOk = MyImmRequestMessage(hIMC, IMR_CANDIDATEWINDOW, (LPARAM)&lc);
   #ifdef DEBUG
                   if (candOk) {
                       TCHAR szDev[80];
  @@ -1273,8 +1313,19 @@
                   GnMsg.wParam = wParam;
                   GnMsg.lParam = lParam;
                   GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +                OutputDebugString(TEXT("DicKeydown: WM_IME_KEYDOWN\r\n"));
  +            } else {
  +                // always generage WM_IME_KEYDOWN for VK_HANJA
  +                TRANSMSG GnMsg;
  +                GnMsg.message = WM_IME_KEYDOWN;
  +                GnMsg.wParam = wParam;
  +                GnMsg.lParam = lParam;
  +                GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +                OutputDebugString(TEXT("DicKeydown: WM_IME_KEYDOWN #2\r\n"));
  +            }
  +            if (!candOk) {
  +                ConvHanja(hIMC,1,0);
               }
  -            if (!candOk) ConvHanja(hIMC,1,0);
               ImmUnlockIMC(hIMC);
               return TRUE;
               break;
  @@ -1455,7 +1506,7 @@
   
   /**********************************************************************/
   /*                                                                    */
  -/*  Entry    : MakeResultString( HIMC)                                */
  +/*  Entry    : MakeResultString( HIMC, BOOL)                          */
   /*                                                                    */
   /**********************************************************************/
   BOOL WINAPI MakeResultString( HIMC hIMC, BOOL fFlag)
  
  
  


wkpark      06/10/06 20:25:45

  Modified:    setup    LICENSE.txt
  Log:
  update date
  
  Revision  Changes    Path
  1.4       +2 -2      saenaru/setup/LICENSE.txt
  
  Index: LICENSE.txt
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/LICENSE.txt,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- LICENSE.txt	2 Dec 2004 12:36:12 -0000	1.3
  +++ LICENSE.txt	6 Oct 2006 11:25:45 -0000	1.4
  @@ -9,7 +9,7 @@
   硻  ҽ ۹̸, ۱ǹ ؼ   ࿡ 
   ô 쿡 Ͻ  ֽϴ. (2 BSD ̼ ¿ Ǿϴ.)
   
  - (C) 2002-2004 ڿ, , ȯ.
  + (C) 2002-2006 ڿ, , ȯ.
    (C) 1990-1998 Microsoft Corporation.
    Ʈ  ۱ ȣ.
   
  @@ -39,4 +39,4 @@
       ׿ ؼ  ѱ Ʈ Ʈ ڵ
   å ϴ.
   
  -$Saenaru: saenaru/setup/LICENSE.txt,v 1.3 2004/12/02 12:36:12 wkpark Exp $
  +$Saenaru: saenaru/setup/LICENSE.txt,v 1.4 2006/10/06 11:25:45 wkpark Exp $
  
  
  


wkpark      06/10/08 18:08:51

  Modified:    src      imm.c
  Log:
  extract reconversion code to dic.c
  WIN Logon support added
  
  Revision  Changes    Path
  1.13      +6 -148    saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- imm.c	5 Oct 2006 04:53:52 -0000	1.12
  +++ imm.c	8 Oct 2006 09:08:51 -0000	1.13
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.12 2006/10/05 04:53:52 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.13 2006/10/08 09:08:51 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -70,6 +70,8 @@
       lstrcpy(lpszClassName,(LPTSTR)szUIClassName);
   
   
  +    /* WIN Logon */
  +    gfSaenaruSecure = ((dwSystemInfoFlags & IME_SYSINFO_WINLOGON) != 0) ;
       return TRUE;
   }
   
  @@ -183,154 +185,10 @@
       if (!(lpIMC = ImmLockIMC(hIMC)))
           return FALSE;
   
  -// only supported Win98 or above
  -//#define USE_RECONVERSION
  -#ifdef USE_RECONVERSION
  -    // regard the VK_F9 key as the ReConversion key
  -    while ( (vkey == VK_F9 || vkey == VK_HANJA) && !IsCompStr(hIMC)) {
  -        DWORD dwSize = (DWORD)MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, 0);
  -        if (dwSize) {
  -            LPRECONVERTSTRING lpRS;
  -
  -            lpRS = (LPRECONVERTSTRING)GlobalAlloc(GPTR, dwSize);
  -            lpRS->dwSize = dwSize;
  -
  -            if (dwSize = (DWORD) MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, (LPARAM)lpRS)) {
  -                BOOL convOk= FALSE;
  -                TRANSMSG GnMsg;
  -#ifdef DEBUG
  -                TCHAR szDev[80];
  -#endif
  -                //LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset);
  -                //*(LPMYSTR)(lpDump + lpRS->dwStrLen) = MYTEXT('\0');
  -
  -                LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset + lpRS->dwCompStrOffset);
  -
  -#ifdef DEBUG
  -                OutputDebugString(TEXT("IMR_RECONVERTSTRING\r\n"));
  -                wsprintf(szDev, TEXT("dwSize       %x\r\n"), lpRS->dwSize);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwVersion    %x\r\n"), lpRS->dwVersion);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwStrLen     %x\r\n"), lpRS->dwStrLen);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwStrOffset  %x\r\n"), lpRS->dwStrOffset);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwCompStrOffset %x\r\n"), lpRS->dwCompStrOffset);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwTargetStrLen %x\r\n"), lpRS->dwTargetStrLen);
  -                OutputDebugString(szDev);
  -                wsprintf(szDev, TEXT("dwTargetStrOffset %x\r\n"), lpRS->dwTargetStrOffset);
  -                OutputDebugString(szDev);
  -#endif
  -                if ( (lpRS->dwStrOffset+lpRS->dwCompStrOffset) < lpRS->dwSize) {
  -                    if (lpRS->dwCompStrLen >1) {
  -                        // clause dictionary.
  -                        *(LPMYSTR)(lpDump + lpRS->dwCompStrLen) = MYTEXT('\0');
  -                    } else {
  -                        // one char reconversion.
  -                        *(LPMYSTR)(lpDump + 1) = MYTEXT('\0');
  -                
  -                        lpRS->dwCompStrLen=1;
  -                        lpRS->dwTargetStrLen=1;
  -                        // XXX 1. manage not convertable ascii chars.
  -                        // XXX 2. end of string.
  -                    }
  -                } else {
  -                    // XXX Mozilla bug.
  -                    OutputDebugString(TEXT(" Reconversion error\r\n"));
  -                    GlobalFree((HANDLE)lpRS);
  -                    ImmUnlockIMC(hIMC);
  -                    break;
  -                }
  -#ifdef DEBUG
  -                MyOutputDebugString(lpDump);
  -                OutputDebugString(TEXT("\r\n"));
  -#endif
  -
  -		{
  -		    LPCOMPOSITIONSTRING	lpCompStr;
  +#if 0
  +    // check VK_HANJA and VK_F9 key
  +    if ( (vkey == VK_F9 || vkey == VK_HANJA) && !IsCompStr(hIMC)) {
   
  -		    if (ImmGetIMCCSize (lpIMC->hCompStr) < sizeof (MYCOMPSTR))
  -                    {
  -                        DWORD dwSize = sizeof(MYCOMPSTR);
  -                        lpIMC->hCompStr = ImmReSizeIMCC(lpIMC->hCompStr,dwSize);
  -                        lpCompStr =
  -                            (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
  -                        lpCompStr->dwSize = dwSize;
  -                    } else
  -		        lpCompStr =
  -                            (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr) ;
  -                    {
  -                        LPMYSTR lpstr,lpread;
  -
  -		        if (lpCompStr != NULL) {
  -                            // XXX
  -                            InitCompStr(lpCompStr,CLR_RESULT_AND_UNDET);
  -                            //InitCompStr(lpCompStr,CLR_UNDET);
  -
  -                            lpstr = GETLPCOMPSTR(lpCompStr);
  -                            lpread = GETLPCOMPREADSTR(lpCompStr);
  -                            Mylstrcpy(lpread,lpDump);
  -                            Mylstrcpy(lpstr,lpDump);
  -
  -                            // delta start
  -                            lpCompStr->dwDeltaStart =
  -	                        (DWORD)(MyCharPrev(lpstr, lpstr+Mylstrlen(lpstr)) - lpstr);
  -                            // cursor pos
  -                            //lpCompStr->dwCursorPos=lpRS->dwStrLen;
  -                            lpCompStr->dwCursorPos = Mylstrlen(lpstr);
  -
  -                            //MakeAttrClause(lpCompStr);
  -                            lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),ATTR_INPUT, Mylstrlen(lpstr));
  -                            lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT, Mylstrlen(lpread));
  -
  -                            // make length
  -                            lpCompStr->dwCompStrLen = Mylstrlen(lpstr);
  -                            lpCompStr->dwCompReadStrLen = Mylstrlen(lpread);
  -                            lpCompStr->dwCompAttrLen = Mylstrlen(lpstr);
  -                            lpCompStr->dwCompReadAttrLen = Mylstrlen(lpread);
  -
  -                            //if (lpCompStr->dwCompReadStrLen > 0)
  -                            //    lpCompStr->dwCompReadStrLen--;
  -
  -                            //
  -                            // make clause info
  -                            //
  -                            SetClause(GETLPCOMPCLAUSE(lpCompStr),Mylstrlen(lpstr));
  -                            SetClause(GETLPCOMPREADCLAUSE(lpCompStr),Mylstrlen(lpread));
  -                            lpCompStr->dwCompClauseLen = 8;
  -                            lpCompStr->dwCompReadClauseLen = 8;
  -                            //
  -                            //
  -		        }
  -                    }
  -                    convOk = (BOOL) MyImmRequestMessage(hIMC, IMR_CONFIRMRECONVERTSTRING, (LPARAM)lpRS);
  -#ifdef DEBUG
  -                    if (!convOk)
  -                    {
  -                        OutputDebugString(TEXT(" *** fail CONFIRM RECONVERT\r\n"));
  -                    } else {
  -                        OutputDebugString(TEXT(" *** success CONFIRM RECONVERT\r\n"));
  -                        wsprintf(szDev, TEXT(" *** result: dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  -                        OutputDebugString(szDev);
  -                    }
  -#endif
  -	            ImmUnlockIMCC (lpIMC->hCompStr);
  -		}
  -                break;
  -            }
  -#ifdef DEBUG
  -            else
  -                OutputDebugString(TEXT("ImmRequestMessage returned 0\r\n"));
  -#endif
  -            GlobalFree((HANDLE)lpRS);
  -            ImmUnlockIMC(hIMC);
  -            break;
  -        }
  -        break;
       }
   #endif
   
  
  
  


wkpark      06/10/08 18:10:02

  Modified:    src      hangul.c
  Log:
  revert last change to fix the EditPlus problem
  
  Revision  Changes    Path
  1.13      +6 -3      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- hangul.c	6 Oct 2006 10:18:19 -0000	1.12
  +++ hangul.c	8 Oct 2006 09:10:02 -0000	1.13
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.12 2006/10/06 10:18:19 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.13 2006/10/08 09:10:02 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1759,9 +1759,12 @@
   	    //    Է¹ asciiڸ ״ ´.
   	    //PostMessage(lpIMC->hWnd,WM_CHAR,code,lParam);
   	} else {
  -#if 1
  +#if 0
               // Ÿ, е忡  ϵ 
  -	    //  κ   ۵Ѵ.
  +	    //  κ *Ȱ* Ѿ  ۵Ѵ.
  +	    //
  +	    // EditPlus 2.21 (330), WordPad
  +	    //
               GnMsg.message = WM_IME_STARTCOMPOSITION;
               GnMsg.wParam = 0;
               GnMsg.lParam = 0;
  
  
  


wkpark      06/10/08 18:12:52

  Modified:    src      sources tsf.cpp tsf.h
  Added:       src      btnpad.cpp
  Log:
  add btnpad.cpp to support TSF services (experimental and disabled now)
  
  Revision  Changes    Path
  1.2       +34 -8     saenaru/src/sources
  
  Index: sources
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/sources,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- sources	26 Dec 2003 08:22:41 -0000	1.1
  +++ sources	8 Oct 2006 09:12:52 -0000	1.2
  @@ -5,24 +5,33 @@
   DLLENTRY=DLLEntry
   DLLBASE=0x00500000
   
  +#C_DEFINES=-DWINVER=0x501
   C_DEFINES=-DWINVER=0x40A
   
  -!if "$(DDKBUILDENV)" == "checked"
  -C_DEFINES=$(C_DEFINES) -DDEBUG=1
  -USE_MSVCRT=1
  +#
  +#C_DEFINES=-DWINVER=0x40A -DNO_TSF
  +#NO_TSF=1
  +#
  +
  +!if "$(DDKBUILDENV)" == "chk"
  +C_DEFINES=$(C_DEFINES) -DDEBUG=1 -DDEBUG_LV=103
  +MSC_OPTIMIZATION=-Zi -ZI -Yd -Od
   !endif
   
   NO_NTDLL=1
   
  +# Ʒ  ݵ ־ tsfcmd, tsfime ٴ´ !!!
  +USE_MSVCRT=1
  +
   INCLUDES=.
   
   SOURCES= \
           config.c \
           data.c \
           dic.c \
  -        dic2.c \
  +        hangul.c \
           saenaru.c \
  -        fdebug.c \
  +        reg.c \
           imm.c \
           immsec.c \
           input.c \
  @@ -34,7 +43,23 @@
           uicand.c \
           uicomp.c \
           uiguide.c \
  -        uistate.c \
  +        uistate.c
  +
  +!if "$(NO_TSF)" != "1"
  +TSFSRCS= \
  +	tsf.cpp \
  +	btnime.cpp \
  +	btncmd.cpp \
  +	btnpad.cpp \
  +	btnext.cpp
  +
  +TSFLIBS= \
  +        $(DDK_LIB_PATH)\oleaut32.lib \
  +        $(DDK_LIB_PATH)\uuid.lib \
  +        $(DDK_LIB_PATH)\uxtheme.lib \
  +        $(DDK_LIB_PATH)\ole32.lib \
  +        $(DDK_LIB_PATH)\shlwapi.lib
  +!endif
   
   TARGETLIBS= \
           $(DDK_LIB_PATH)\advapi32.lib \
  @@ -42,12 +67,13 @@
           $(DDK_LIB_PATH)\gdi32.lib \
           $(DDK_LIB_PATH)\imm32.lib \
           $(DDK_LIB_PATH)\kernel32.lib \
  -        $(DDK_LIB_PATH)\user32.lib
  +        $(DDK_LIB_PATH)\user32.lib \
  +	$(TSFLIBS)
   
   NTTARGETFILES=copyfile
   
   TARGETNAME=saenaru
   C_DEFINES=$(C_DEFINES) -DUNICODE -D_UNICODE
  -SOURCES= $(SOURCES) \
  +SOURCES= $(SOURCES) $(TSFSRCS)\
           saenaru.rc
   
  
  
  
  1.4       +48 -14    saenaru/src/tsf.cpp
  
  Index: tsf.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- tsf.cpp	3 Oct 2006 13:10:27 -0000	1.3
  +++ tsf.cpp	8 Oct 2006 09:12:52 -0000	1.4
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/tsf.cpp,v 1.3 2006/10/03 13:10:27 wkpark Exp $
  + * $Saenaru: saenaru/src/tsf.cpp,v 1.4 2006/10/08 09:12:52 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -114,6 +114,11 @@
       0xd97b240b, 0x2c61, 0x4b9b, { 0xae, 0xcf, 0xd5, 0xc3, 0xcf, 0xdd, 0xfc, 0xbb }
   };
   
  +// {4d970333-cad0-42d0-ab1f-a9315b6cad38}
  +const GUID c_guidItemButtonPad = {
  +    0x4d970333, 0xcad0, 0x42d0, { 0xab, 0x1f, 0xa9, 0x31, 0x5b, 0x6c, 0xad, 0x38 }
  +};
  +
   /*    Ҫ button ̸몬skimic.dll ҪΪŪΪʪЪʪ
    *    誦Ҫ˪ƪΪȪ?ê
    */
  @@ -151,7 +156,7 @@
       DEBUGPRINTF ((TEXT ("Enter::InitLanguageBar\n")));
   
       /* Logon ˪ TSF 󪵪ʪ*/
  -#if 0
  +#if 1
       if (gfSaenaruSecure) {
           DEBUGPRINTF ((TEXT ("Leave::InitLanguageBar - security\n")));
           return    FALSE;
  @@ -241,9 +246,9 @@
   #endif
       register DWORD  dwValue;
       register BOOL   fRetval = FALSE;
  -    register BOOL   fShowKeyboardIcon, fShowIMEIcon, fShowInputModeIcon, fShowShapeIcon;
  +    register BOOL   fShowKeyboardIcon, fShowIMEIcon, fShowInputModeIcon, fShowShapeIcon, fShowPadIcon;
   
  -#if 0
  +#if 1
       if (gfSaenaruSecure)
           return    FALSE;
   #endif
  @@ -264,6 +269,7 @@
   
       /*    ?ޫ쫸ȫ?ΪΪ᪷Ϊ */
       fShowKeyboardIcon = fShowIMEIcon = fShowInputModeIcon = fShowShapeIcon = TRUE;
  +    fShowPadIcon = TRUE;
   #if 0
   #if !defined (NO_TOUCH_REGISTRY)
       if (GetRegDwordValue (TEXT ("\\CICERO"), TEXT(REGKEY_SHOWKEYBRDICON), &dwValue))
  @@ -292,7 +298,7 @@
                   pItem->Release ();
               }
           }
  -#if 1
  +
           if (fShowShapeIcon) {
               pItem    = NULL;
               if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonShape, &pItem)) &&
  @@ -303,7 +309,7 @@
                   pItem->Release ();
               }
           }
  -#endif
  +
           if (fShowIMEIcon) {
               pItem    = NULL;
               if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonIME, &pItem)) &&
  @@ -314,6 +320,18 @@
                   pItem->Release ();
               }
           }
  +
  +        if (fShowPadIcon) {
  +            pItem    = NULL;
  +            if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonPad, &pItem)) &&
  +                pItem != NULL) {
  +                pLangBarItemMgr->RemoveItem (pItem);
  +                if (fShowPadIcon) 
  +                    pLangBarItemMgr->AddItem (pItem);
  +                pItem->Release ();
  +            }
  +        }
  +
           pLangBarItemMgr->Release ();
       }
   #if 0
  @@ -340,10 +358,10 @@
       register HANDLE                hMutex;
   #endif
       register DWORD                dwValue;
  -    register BOOL                fShowKeyboardIcon, fShowIMEIcon, fShowInputModeIcon ,fShowShapeIcon;
  +    register BOOL                fShowKeyboardIcon, fShowIMEIcon, fShowInputModeIcon ,fShowShapeIcon, fShowPadIcon;
       
       TF_LANGBARITEMINFO MypInfo;
  -#if 0
  +#if 1
       if (gfSaenaruSecure)
           return;
   #endif
  @@ -365,6 +383,7 @@
   
       /*    ?ޫ쫸ȫ?ΪΪ᪷Ϊ */
       fShowKeyboardIcon = fShowIMEIcon = fShowInputModeIcon = fShowShapeIcon = TRUE;
  +    fShowPadIcon = FALSE;
       if (fSelect) {
   #if 0
   #if !defined (NO_TOUCH_REGISTRY)
  @@ -386,7 +405,7 @@
   
           pItem    = NULL;
           fRemove    = FALSE;
  -#if 1
  +
           if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonCMode, &pItem)) &&
               pItem != NULL) {
               fRemove    = SUCCEEDED (pLangBarItemMgr->RemoveItem (pItem));
  @@ -402,9 +421,7 @@
           }
           pItem    = NULL;
           fRemove    = FALSE;
  -#endif
   
  -#if 1
           if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonShape, &pItem)) &&
               pItem != NULL) {
               fRemove    = SUCCEEDED (pLangBarItemMgr->RemoveItem (pItem));
  @@ -420,9 +437,8 @@
           }
           pItem    = NULL;
           fRemove    = FALSE;
  -#endif
   
  -#if 1
  +
           if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonIME, &pItem)) &&
               pItem != NULL) {
               fRemove    = SUCCEEDED (pLangBarItemMgr->RemoveItem (pItem));
  @@ -435,6 +451,24 @@
                   pNewItem->Release ();
               }
           }
  +        pItem    = NULL;
  +        fRemove    = FALSE;
  +#if 1
  +        if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonPad, &pItem)) &&
  +            pItem != NULL) {
  +            fRemove    = SUCCEEDED (pLangBarItemMgr->RemoveItem (pItem));
  +            pItem->Release ();
  +        }
  +
  +        if ((pItem == NULL || fRemove) && fSelect && fShowPadIcon) {
  +            pNewItem    = NULL;
  +            if (CreateItemButtonPad (&pNewItem) && pNewItem != NULL) {
  +                pLangBarItemMgr->AddItem (pNewItem);
  +                pNewItem->Release ();
  +            }
  +        }
  +        pItem    = NULL;
  +        fRemove    = FALSE;
   #endif
           pLangBarItemMgr->Release ();
       }
  @@ -457,7 +491,7 @@
       register ITfLangBarItemMgr*    pLangBarItemMgr            = NULL;
       register int    i;
   
  -#if 0    
  +#if 1
       if (gfSaenaruSecure) {
           return;
       }
  
  
  
  1.3       +3 -1      saenaru/src/tsf.h
  
  Index: tsf.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- tsf.h	26 Dec 2003 09:26:33 -0000	1.2
  +++ tsf.h	8 Oct 2006 09:12:52 -0000	1.3
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/tsf.h,v 1.2 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/tsf.h,v 1.3 2006/10/08 09:12:52 wkpark Exp $
    */
   
   #if !defined (tsf_h)
  @@ -56,12 +56,14 @@
   extern const GUID c_guidItemButtonIME ;
   extern const GUID c_guidItemButtonShape ;
   extern const GUID c_guidKeyboardItemButton ;
  +extern const GUID c_guidItemButtonPad ;
   
   /* prototypes */
   HIMC _GetCurrentHIMC(void);
   BOOL CreateItemButtonCMode(ITfLangBarItem** ppLangBarItem);
   BOOL CreateItemButtonIME(ITfLangBarItem** ppLangBarItem);
   BOOL CreateItemButtonShape(ITfLangBarItem** ppLangBarItem);
  +BOOL CreateItemButtonPad(ITfLangBarItem** ppLangBarItem);
   BOOL _ShowKeyboardIcon(BOOL fShow) ;
   
   LONG DllAddRef(void);
  
  
  
  1.1                  saenaru/src/btnpad.cpp
  
  Index: btnpad.cpp
  ===================================================================
  /*
   * This file is part of Saenaru.
   *
   * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
   * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in the
   *    documentation and/or other materials provided with the distribution.
   *
   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   *
   * $Saenaru: saenaru/src/btnpad.cpp,v 1.1 2006/10/08 09:12:52 wkpark Exp $
   */
  
  #if !defined (NO_TSF)
  #include "windows.h"
  #include "tchar.h"
  #include "immdev.h"
  
  #include "objbase.h"
  extern "C" {
  #include "saenaru.h"
  #include "resource.h"
  }
  /*	Platform SDK ݻ¡Platform SDK  include path
   *	תΪުΪ? DDK ˪ header 
   *	ԤƪުΪ
   */
  //#include "c:\Program Files\Microsoft SDK\include\msctf.h"
  #include "msctf.h"
  #include "olectl.h"
  #if !defined (TARGET_WIN2K)
  //#include "c:\Program Files\Microsoft SDK\include\uxtheme.h"
  #include "uxtheme.h"
  #endif
  #include "tsf.h"
  
  #define LANGBAR_ITEM_DESC	L"ȮԷ±" // max 32 chars
  
  #if 0
  #endif
  
  #define	SAENARU_LANGBARITEMSINK_COOKIE	0x0fab0fab
  
  /*	CModeItemButton: Conversion Mode Language Bar Item Button
   */
  class	CLangBarItemPadButton : public ITfLangBarItemButton,
  	public ITfSource
  {
  public:
  	CLangBarItemPadButton () ;
  	~CLangBarItemPadButton () ;
  
  	// IUnknown
  	STDMETHODIMP QueryInterface (REFIID riid, void **ppvObj) ;
  	STDMETHODIMP_(ULONG) AddRef (void) ;
  	STDMETHODIMP_(ULONG) Release (void) ;
  	
  	// ITfLangBarItem
  	STDMETHODIMP GetInfo (TF_LANGBARITEMINFO *pInfo) ;
  	STDMETHODIMP GetStatus (DWORD *pdwStatus) ;
  	STDMETHODIMP Show (BOOL fShow) ;
  	STDMETHODIMP GetTooltipString (BSTR *pbstrToolTip) ;
  	
  	// ITfLangBarItemButton
  	STDMETHODIMP OnClick (TfLBIClick click, POINT pt, const RECT *prcArea) ;
  	STDMETHODIMP InitMenu (ITfMenu *pMenu) ;
  	STDMETHODIMP OnMenuSelect (UINT wID) ;
  	STDMETHODIMP GetIcon (HICON *phIcon) ;
  	STDMETHODIMP GetText (BSTR *pbstrText) ;
  
  	// ITfSource
  	STDMETHODIMP AdviseSink(REFIID riid, IUnknown *punk, DWORD *pdwCookie);
  	STDMETHODIMP UnadviseSink(DWORD dwCookie);
  
  private:
  	ITfLangBarItemSink*		_pLangBarItemSink ;
  	TF_LANGBARITEMINFO		_tfLangBarItemInfo ;
  	LONG				_cRef ;
  } ;
  
  /*
   */
  CLangBarItemPadButton::CLangBarItemPadButton ()
  {
  	//DllAddRef () ;
  	_tfLangBarItemInfo.clsidService	= c_clsidSaenaruTextService ;
  	//_tfLangBarItemInfo.clsidService	= CLSID_NULL ;
  	_tfLangBarItemInfo.guidItem		= c_guidItemButtonPad ;
  	_tfLangBarItemInfo.dwStyle		= TF_LBI_STYLE_BTN_BUTTON
  	       | TF_LBI_STYLE_SHOWNINTRAY
  //	       | TF_LBI_STYLE_HIDDENSTATUSCONTROL
  	       ;
  	_tfLangBarItemInfo.ulSort	= 1 ;
  	SafeStringCopy (_tfLangBarItemInfo.szDescription, ARRAYSIZE (_tfLangBarItemInfo.szDescription), LANGBAR_ITEM_DESC) ;
  	_pLangBarItemSink	= NULL ;
  	_cRef			= 1 ;
  	return ;
  }
  
  CLangBarItemPadButton::~CLangBarItemPadButton ()
  {
  	HRESULT     hr = S_OK;
  	DEBUGPRINTFEX (100, (TEXT ("CLangBarItemPadButton::~CLangBarItemPadButton (this:%p)\n"), this)) ;
  	//DllRelease () ;
  	//
  	return ;
  }
  
  STDAPI
  CLangBarItemPadButton::QueryInterface (
  	REFIID			riid,
  	void**			ppvObj)
  {
  	if (ppvObj == NULL)
  		return	E_INVALIDARG ;
  
  	*ppvObj	= NULL ;
  	if (IsEqualIID (riid, IID_IUnknown) ||
  		IsEqualIID (riid, IID_ITfLangBarItem) ||
  		IsEqualIID (riid, IID_ITfLangBarItemButton)) {
  		*ppvObj	= (ITfLangBarItemButton *)this ;
  	} else if (IsEqualIID (riid, IID_ITfSource)) {
  		*ppvObj	= (ITfSource *)this ;
  	}
  	if (*ppvObj != NULL) {
  		AddRef () ;
  		return	S_OK ;
  	}
  	return	E_NOINTERFACE ;
  }
  
  STDAPI_(ULONG)
  CLangBarItemPadButton::AddRef ()
  {
  	return	++ _cRef ;
  }
  
  STDAPI_(ULONG)
  CLangBarItemPadButton::Release ()
  {
  	LONG	cr	= -- _cRef ;
  
  	if (_cRef == 0) {
  		delete	this ;
  	}
  	return	cr ;
  }
  
  STDAPI
  CLangBarItemPadButton::GetInfo (
  	TF_LANGBARITEMINFO*		pInfo)
  {
  	DEBUGPRINTFEX (100, (TEXT ("CLangBarItemPadButton::GetInfo (this:%p)\n"), this)) ;
  
  	if (pInfo == NULL)
  		return	E_INVALIDARG ;
  
  	*pInfo	= _tfLangBarItemInfo ;
  	return	S_OK ;
  }
  
  STDAPI
  CLangBarItemPadButton::Show (
  	BOOL					fShow)
  {
  	DEBUGPRINTFEX (100, (TEXT ("CLangBarItemPadButton::Show (BOOL:%d)\n"), fShow)) ;
      return	E_NOTIMPL ;
  }
  
  STDAPI
  CLangBarItemPadButton::GetStatus (
  	DWORD*					pdwStatus)
  {
  	DEBUGPRINTFEX (100, (TEXT ("CLangBarItemPadButton::Show (DWORD*:%d)\n"), pdwStatus)) ;
  
  	if (pdwStatus == NULL)
  		return	E_INVALIDARG ;
  	*pdwStatus	= (_GetCurrentHIMC () != NULL)? 0 : TF_LBI_STATUS_DISABLED ;
  	return	S_OK ;
  }
  
  /*	Button  tooltip  SysAllocString ˪ê
   *	洪驪롣 SysFreeString 
   *	Ϊϡ󪷪Ǫ롣
   */
  STDAPI
  CLangBarItemPadButton::GetTooltipString (
  	BSTR*					pbstrToolTip)
  {
  	if (pbstrToolTip == NULL)
  		return	E_INVALIDARG ;
  
  	*pbstrToolTip	= SysAllocString (LANGBAR_ITEM_DESC) ;
  	return	(*pbstrToolTip == NULL)? E_OUTOFMEMORY : S_OK ;
  }
  
  /*	ITfLangBarItemButton::OnClick
   *
   */
  STDAPI
  CLangBarItemPadButton::OnClick (
  	TfLBIClick				click,
  	POINT					pt,
  	const RECT*				prcArea)
  {
  	return S_OK ;
  }
  
  /*	ITfLangBarItemButton::InitMenu
   *
   */
  STDAPI
  CLangBarItemPadButton::InitMenu (
  	ITfMenu*				pMenu)
  {
  	register HIMC		hIMC ;
  	register int		i, nCMode ;
  	register DWORD		dwFlag ;
  	register LPCWSTR	wstrDesc ;
  	register ULONG		nstrDesc ;
  
  	DEBUGPRINTFEX (100, (TEXT ("CLangBarItemPadButton::InitMenu (ITfMenu:%p)\n"), pMenu)) ;
  
  	if (pMenu == NULL)
  		return	E_INVALIDARG ;
  	return	S_OK ;
  }
  
  STDAPI
  CLangBarItemPadButton::OnMenuSelect (
  	UINT					wID)
  {
  	return	S_OK ;
  }
  
  STDAPI
  CLangBarItemPadButton::GetIcon (
  	HICON*					phIcon)
  {
  	HIMC	hIMC ;
  	DWORD	dwConversion, dwSentence ;
  	register LPCTSTR	str	= NULL ;
  
  	DEBUGPRINTFEX (100, (TEXT ("CLangBarItemPadButton::GetIcon(%p)\n"), phIcon)) ;
  
  	if (phIcon == NULL)
  		return	E_INVALIDARG ;
  
  	*phIcon    = (HICON)LoadImage (hInst, TEXT ("INDIC_PAD"), IMAGE_ICON, 16, 16, 0);
  	return (*phIcon != NULL) ? S_OK : E_FAIL;
  }
  
  STDAPI
  CLangBarItemPadButton::GetText (
  	BSTR*			pbstrText)
  {
  	if (pbstrText == NULL)
  		return	E_INVALIDARG ;
  
  	*pbstrText	= SysAllocString (LANGBAR_ITEM_DESC) ;
  	return	(*pbstrText == NULL)? E_OUTOFMEMORY : S_OK ;
  }
  
  STDAPI
  CLangBarItemPadButton::AdviseSink (
  	REFIID			riid,
  	IUnknown*		punk,
  	DWORD*			pdwCookie)
  {
  	DEBUGPRINTFEX (100, (TEXT ("CLangBarItemPadButton::AdviseSink (this:%p)\n"), this)) ;
  
      if (!IsEqualIID (IID_ITfLangBarItemSink, riid)) {
  		DEBUGPRINTFEX (100, (TEXT ("CONNECT_E_CANNOTCONNECT\n"))) ;
  		return	CONNECT_E_CANNOTCONNECT ;
  	}
  
      if (_pLangBarItemSink != NULL) {
  		DEBUGPRINTFEX (100, (TEXT ("CONNECT_E_ADVISELIMIT\n"))) ;
          return	CONNECT_E_ADVISELIMIT ;
  	}
  
      if (punk->QueryInterface (IID_ITfLangBarItemSink, (void **)&_pLangBarItemSink) != S_OK) {
  		DEBUGPRINTFEX (100, (TEXT ("E_NOINTERFACE\n"))) ;
          _pLangBarItemSink	= NULL ;
          return	E_NOINTERFACE ;
      }
  
      *pdwCookie	= SAENARU_LANGBARITEMSINK_COOKIE ;
      return	S_OK ;
  }
  
  STDAPI
  CLangBarItemPadButton::UnadviseSink (
  	DWORD			dwCookie)
  {
      if (dwCookie != SAENARU_LANGBARITEMSINK_COOKIE)
          return	CONNECT_E_NOCONNECTION ;
  
      if (_pLangBarItemSink == NULL)
          return	CONNECT_E_NOCONNECTION ;
  
      _pLangBarItemSink->Release () ;
      _pLangBarItemSink	= NULL ;
  
      return	S_OK ;
  }
  
  /*========================================================================*
   *	public function interface
   */
  BOOL	PASCAL
  CreateItemButtonPad (
  	register ITfLangBarItem** 	ppLangBarItem)
  {
  	if (ppLangBarItem == NULL)
  		return	FALSE ;
  	*ppLangBarItem	= new CLangBarItemPadButton ;
  	return	(*ppLangBarItem != NULL) ;
  }
  
  #endif
  
  /*
   * ex: ts=8 sts=8 sw=8 noet
   */
  
  
  


wkpark      06/10/08 18:14:09

  Modified:    resource general.ico
  Added:       resource imepad.ico
  Log:
  add "TSF service" icon and update some icons
  
  Revision  Changes    Path
  1.2       +3 -1      saenaru/resource/general.ico
  
  	<<Binary file>>
  
  
  1.1                  saenaru/resource/imepad.ico
  
  	<<Binary file>>
  
  


wkpark      06/10/08 18:16:02

  Modified:    src      config.c data.c saenaru.h
  Log:
  WIN Logon support added
  
  Revision  Changes    Path
  1.5       +3 -1      saenaru/src/config.c
  
  Index: config.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/config.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- config.c	29 Nov 2004 17:06:14 -0000	1.4
  +++ config.c	8 Oct 2006 09:16:02 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/config.c,v 1.4 2004/11/29 17:06:14 wkpark Exp $
  + * $Saenaru: saenaru/src/config.c,v 1.5 2006/10/08 09:16:02 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -74,6 +74,8 @@
       HPROPSHEETPAGE rPages[MAX_PAGES];
       PROPSHEETHEADER psh;
   
  +    if (gfSaenaruSecure) return FALSE;
  +
       ImeLog(LOGF_API, TEXT("ImeConfigure"));
   
       psh.dwSize = sizeof(psh);
  
  
  
  1.5       +4 -1      saenaru/src/data.c
  
  Index: data.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/data.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- data.c	29 Nov 2004 17:06:14 -0000	1.4
  +++ data.c	8 Oct 2006 09:16:02 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/data.c,v 1.4 2004/11/29 17:06:14 wkpark Exp $
  + * $Saenaru: saenaru/src/data.c,v 1.5 2006/10/08 09:16:02 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -72,6 +72,9 @@
   DWORD dwLayoutFlag = 0L;
   DWORD dwComposeFlag = 0L;
   DWORD dwOptionFlag = BACKSPACE_BY_JAMO;
  +
  +BOOL gfSaenaruSecure = FALSE;
  +
   /* local flags */
   DWORD dwImeFlag = SAENARU_ONTHESPOT;
   #pragma data_seg()
  
  
  
  1.7       +4 -1      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- saenaru.h	3 Dec 2004 01:42:38 -0000	1.6
  +++ saenaru.h	8 Oct 2006 09:16:02 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.6 2004/12/03 01:42:38 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.7 2006/10/08 09:16:02 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -366,6 +366,7 @@
   extern BYTE bNoCompCtl[];
   extern BYTE bNoCompSht[];
   extern BYTE bNoCompAlt[];
  +
   #if DEBUG
   extern DWORD dwLogFlag;
   extern DWORD dwDebugFlag;
  @@ -377,6 +378,8 @@
   
   extern DWORD dwImeFlag;
   
  +extern BOOL gfSaenaruSecure;
  +
   extern HangulIC ic;
   #endif //_NO_EXTERN_
   
  
  
  


wkpark      06/10/08 18:16:56

  Modified:    src      saenaru.rc
  Log:
  add "TSF service" icon
  
  Revision  Changes    Path
  1.5       +1 -0      saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- saenaru.rc	5 Oct 2006 04:53:52 -0000	1.4
  +++ saenaru.rc	8 Oct 2006 09:16:56 -0000	1.5
  @@ -40,6 +40,7 @@
   INDIC_KEY	ICON    DISCARDABLE		"..\\resource\\keyboard.ico"
   INDIC_HALF	ICON    DISCARDABLE		"..\\resource\\half.ico"
   INDIC_FULL	ICON    DISCARDABLE		"..\\resource\\full.ico"
  +INDIC_PAD	ICON    DISCARDABLE		"..\\resource\\imepad.ico"
   
   /////////////////////////////////////////////////////////////////////////////
   //
  
  
  


wkpark      06/10/08 18:18:21

  Modified:    src      dic.c
  Log:
  fixed fatal GlobalFree problem
  
  Revision  Changes    Path
  1.10      +1 -3      saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- dic.c	6 Oct 2006 11:20:51 -0000	1.9
  +++ dic.c	8 Oct 2006 09:18:21 -0000	1.10
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.9 2006/10/06 11:20:51 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.10 2006/10/08 09:18:21 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1263,7 +1263,6 @@
   #endif
           	            ImmUnlockIMCC (lpIMC->hCompStr);
           		}
  -                        break;
                       }
   #ifdef DEBUG
                       else
  @@ -1271,7 +1270,6 @@
   #endif
                       GlobalFree((HANDLE)lpRS);
                       //ImmUnlockIMC(hIMC);
  -                    break;
                   }
                   break;
               }
  
  
  


wkpark      06/10/08 18:19:29

  Modified:    setup    LICENSE.txt
  Log:
  fixed date :>
  
  Revision  Changes    Path
  1.5       +2 -2      saenaru/setup/LICENSE.txt
  
  Index: LICENSE.txt
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/LICENSE.txt,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LICENSE.txt	6 Oct 2006 11:25:45 -0000	1.4
  +++ LICENSE.txt	8 Oct 2006 09:19:29 -0000	1.5
  @@ -9,7 +9,7 @@
   硻  ҽ ۹̸, ۱ǹ ؼ   ࿡ 
   ô 쿡 Ͻ  ֽϴ. (2 BSD ̼ ¿ Ǿϴ.)
   
  - (C) 2002-2006 ڿ, , ȯ.
  + (C) 2003-2006 ڿ, , ȯ.
    (C) 1990-1998 Microsoft Corporation.
    Ʈ  ۱ ȣ.
   
  @@ -39,4 +39,4 @@
       ׿ ؼ  ѱ Ʈ Ʈ ڵ
   å ϴ.
   
  -$Saenaru: saenaru/setup/LICENSE.txt,v 1.4 2006/10/06 11:25:45 wkpark Exp $
  +$Saenaru: saenaru/setup/LICENSE.txt,v 1.5 2006/10/08 09:19:29 wkpark Exp $
  
  
  


wkpark      06/10/09 07:03:16

  Modified:    src      dic.c
  Log:
  Fixed PR #300646: undo hanja converting problem
  fixed wordpad and MS explorer problem with WM_IME_STARTCOMPOSITION
  
  Revision  Changes    Path
  1.11      +38 -19    saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- dic.c	8 Oct 2006 09:18:21 -0000	1.10
  +++ dic.c	8 Oct 2006 22:03:16 -0000	1.11
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.10 2006/10/08 09:18:21 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.11 2006/10/08 22:03:16 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -444,9 +444,13 @@
           {
               int sel = lpCandList->dwSelection / lpCandList->dwPageSize;
               sel *= lpCandList->dwPageSize;
  -            sel +=select - 1;
  -            if (sel >= i)
  -                sel = i - 1;
  +            if (select != -1) {
  +                sel +=select - 1;
  +                if (sel >= i)
  +                    sel = i - 1;
  +            } else {
  +                sel = 0;
  +            }
               lpCandList->dwSelection = sel;
               offset = 0;
           }
  @@ -1062,7 +1066,7 @@
                   select= wParam - VK_1 + 1;
                   break;
               case VK_ESCAPE:
  -                select= 1;
  +                select= -1; // XXX
                   break;
               default:
                   break;
  @@ -1100,7 +1104,16 @@
   #ifdef USE_RECONVERSION
               // regard the VK_F9 key as the ReConversion key
               while (!IsCompStr(hIMC)) {
  +                TCHAR szFname[256];
  +                int ns=0;
                   DWORD dwSize = (DWORD)MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, 0);
  +
  +                ns=GetModuleFileName(NULL,(LPTSTR)szFname,sizeof(szFname));
  +                if (ns > 0) {
  +                    // check application names
  +                    OutputDebugString(szFname);
  +                }
  +
                   if (dwSize) {
                       LPRECONVERTSTRING lpRS;
           
  @@ -1181,7 +1194,15 @@
           		        if (lpCompStr != NULL) {
                                       // XXX
                                       InitCompStr(lpCompStr,CLR_RESULT_AND_UNDET);
  -                                    //InitCompStr(lpCompStr,CLR_UNDET);
  +
  +#if 1
  +                                    // е M$ Explorer ݵ WM_IME_STARTCOMPOSITION ؾ Ѵ.
  +                                    // 2006/10/09
  +                                    GnMsg.message = WM_IME_STARTCOMPOSITION;
  +                                    GnMsg.wParam = 0;
  +                                    GnMsg.lParam = 0;
  +                                    GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +#endif
           
                                       lpstr = GETLPCOMPSTR(lpCompStr);
                                       lpread = GETLPCOMPREADSTR(lpCompStr);
  @@ -1233,19 +1254,6 @@
                                       SetClause(GETLPRESULTREADCLAUSE(lpCompStr),Mylstrlen(GETLPRESULTREADSTR(lpCompStr)));
                                       lpCompStr->dwResultClauseLen = 8;
   
  -#if 0
  -                                    // Generate RESULTALL Msg
  -                                    GnMsg.message = WM_IME_COMPOSITION;
  -                                    GnMsg.wParam = 0;
  -                                    GnMsg.lParam = GCS_RESULTSTR | GCS_DELTASTART;
  -                                    GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  -
  -                                    // Generate COMPSTR Msg
  -                                    GnMsg.message = WM_IME_COMPOSITION;
  -                                    GnMsg.wParam = 0;
  -                                    GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -                                    GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  -#endif
   #endif
           		        } else {
                                       OutputDebugString(TEXT(" *** lpCompStr== NULL\r\n"));
  @@ -1476,6 +1484,17 @@
               }
               break;
   #endif
  +        case VK_LBUTTON:
  +        case VK_RBUTTON:
  +        case VK_MBUTTON:
  +            // for mozilla
  +            OutputDebugString(TEXT(" *** VK_LBUTTON\r\n"));
  +            if (IsCompStr(hIMC)) {
  +                MakeResultString(hIMC,TRUE);
  +                hangul_ic_init(&ic);
  +                return TRUE;
  +            }
  +            break;
           default:
               break;
       }
  
  
  


wkpark      06/10/09 07:05:34

  Modified:    src      imm.c
  Log:
  Fixed PR #300647: mouse selection problem with Firefox
  
  Revision  Changes    Path
  1.14      +13 -3     saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- imm.c	8 Oct 2006 09:08:51 -0000	1.13
  +++ imm.c	8 Oct 2006 22:05:34 -0000	1.14
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.13 2006/10/08 09:08:51 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.14 2006/10/08 22:05:34 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -115,6 +115,7 @@
                   case IME_ESC_QUERY_SUPPORT:
                   case IME_ESC_PRI_GETDWORDTEST:
                   case IME_ESC_GETHELPFILENAME:
  +                case IME_ESC_HANJA_MODE:
                       lRet = TRUE;
                       break;
   
  @@ -124,12 +125,18 @@
               }
               break;
   
  +        case IME_ESC_HANJA_MODE:
  +            MyDebugPrint((TEXT("\tIME_ESC_HANJA_MODE:\r\n")));
  +            lRet = FALSE;
  +            break;
  +
           case IME_ESC_PRI_GETDWORDTEST:
               lRet = 0x12345678;
               break;
   
           case IME_ESC_GETHELPFILENAME:
               Mylstrcpy((LPMYSTR)lpData, MYTEXT("saenaru.hlp"));
  +            MyDebugPrint((TEXT("\tIME_ESC_GETHELPFILENAME\r\n")));
               lRet = TRUE;
               break;
   
  @@ -176,10 +183,12 @@
           MyDebugPrint((TEXT("\tImeProcessKey: vKey is 0x%x\r\n"),vKey));
       }
   
  +#ifdef NO_MOZILLA_HACK
       if (lKeyData & 0x80000000)
       {
           return FALSE;
       }
  +#endif
       MyDebugPrint((TEXT("\t** lKeyData is 0x%x\r\n"),lKeyData));
   
       if (!(lpIMC = ImmLockIMC(hIMC)))
  @@ -307,9 +316,10 @@
           }
       }
       
  -    if (!fRet && IsCompStr(hIMC))
  +    if (!fRet && IsCompStr(hIMC)) {
           MakeResultString(hIMC,TRUE);
  -
  +        hangul_ic_init(&ic);
  +    }
       ImmUnlockIMC(hIMC);
       return fRet;
   }
  
  
  


wkpark      06/10/09 07:07:19

  Modified:    src      uicand.c
  Log:
  fixed positioning of a candidate window
  
  Revision  Changes    Path
  1.5       +25 -8     saenaru/src/uicand.c
  
  Index: uicand.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicand.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- uicand.c	6 Oct 2006 10:20:44 -0000	1.4
  +++ uicand.c	8 Oct 2006 22:07:19 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicand.c,v 1.4 2006/10/06 10:20:44 wkpark Exp $
  + * $Saenaru: saenaru/src/uicand.c,v 1.5 2006/10/08 22:07:19 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -184,8 +184,6 @@
               }
           }
       }
  -    lppt->x=-1;
  -    lppt->y=-1;
       MyDebugPrint((TEXT(" *** GetCandPosFromCompWnd FALSE\n")));
       return FALSE;
   }
  @@ -222,7 +220,7 @@
                       lppt->x = pt.x;
                       lppt->y = pt.y;
                   }
  -                MyDebugPrint((TEXT("XXX #1\n")));
  +                MyDebugPrint((TEXT("FromCompForm #1\n")));
               }
               else
               {
  @@ -242,6 +240,7 @@
               lppt->x = rc.left;
               lppt->y = rc.bottom + 23;
           }
  +                MyDebugPrint((TEXT("FromCompForm #2\n")));
           ScreenToClient(lpIMC->hWnd,lppt);
           return TRUE;
       }
  @@ -585,19 +584,37 @@
               InvalidateRect(lpUIExtra->uiCand.hWnd,NULL,FALSE);
   
           }
  +        MyDebugPrint((TEXT(" *** MoveCandWindow #5\r\n")));
           SendMessage(hUIWnd,WM_UI_CANDMOVE, 0,MAKELONG((WORD)pt.x,(WORD)pt.y));
  +        return;
       } 
  -    else
  -    //else if (lpIMC->cfCandForm[0].dwStyle == CFS_CANDIDATEPOS)
  +    else if (lpIMC->cfCandForm[0].dwStyle == CFS_CANDIDATEPOS)
       {
           pt.x = lpIMC->cfCandForm[0].ptCurrentPos.x;
           pt.y = lpIMC->cfCandForm[0].ptCurrentPos.y;
           ClientToScreen(lpIMC->hWnd,&pt);
  -        
  +        MyDebugPrint((TEXT(" *** MoveCandWindow #6\r\n")));
  +    } else {
  +        MyDebugPrint((TEXT(" *** MoveCandWindow #7\r\n")));
  +        if (!GetCandPosFromCompWnd(lpUIExtra,&pt))
  +        {
  +            //  ø̼ CompWindow   ʴ.
  +            // е尡 ǥ ̽
  +            GetWindowRect(lpIMC->hWnd,&rc);
  +            lpUIExtra->uiCand.pt.x = rc.left;
  +            lpUIExtra->uiCand.pt.y = rc.bottom;
  +
  +            pt.x = rc.left;
  +            pt.y = rc.bottom + 24;
  +        }
  +        //ScreenToClient(lpIMC->hWnd,&pt);
  +        //ClientToScreen(lpIMC->hWnd,&pt);
  +    }
  +
  +    {
           if (IsWindow(lpUIExtra->uiCand.hWnd))
           {
               GetWindowRect(lpUIExtra->uiCand.hWnd,&rc);
  -            MyDebugPrint((TEXT(" *** MoveCandWindow #5\r\n")));
               MoveWindow(lpUIExtra->uiCand.hWnd,pt.x,pt.y, rc.right - rc.left ,rc.bottom - rc.top ,TRUE);
               ShowWindow(lpUIExtra->uiCand.hWnd,SW_SHOWNOACTIVATE);
               lpUIExtra->uiCand.bShow = TRUE;
  
  
  


wkpark      06/10/09 07:11:00

  Modified:    src      hangul.c
  Log:
  Fixed PR #300745: fixed recomposing final consonants problem under the concurrent input
  
  Revision  Changes    Path
  1.14      +12 -8     saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- hangul.c	8 Oct 2006 09:10:02 -0000	1.13
  +++ hangul.c	8 Oct 2006 22:11:00 -0000	1.14
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.13 2006/10/08 09:10:02 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.14 2006/10/08 22:11:00 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -2068,9 +2068,16 @@
   		if ( hangul_is_jongseong(ic->last) )
   		    last = hangul_jongseong_to_choseong(ic->last);
   
  -                if (jong && cho)
  -                    ic->jong = jong;
  -                else {
  +                if (jong && cho) {
  +                    if (last != cho) {
  +			WCHAR tmp;
  +			tmp = cho;
  +			cho = hangul_jongseong_to_choseong(jong);
  +			ic->jong = hangul_choseong_to_jongseong(tmp);
  +		    } else {
  +			ic->jong = jong;
  +		    }
  +		} else {
   		    // ص   
                       //  + ߼:   ʼ ٲٰ  
                       cho = hangul_jongseong_to_choseong(ic->jong);
  @@ -2080,10 +2087,7 @@
   
                   *cs = hangul_ic_commit(ic);
                   // XXX
  -		if (last != cho)
  -		    ic->cho = last;
  -		else
  -		    ic->cho = cho;
  +		ic->cho = cho;
                   ic->jung = jamo;
                   hangul_ic_push(ic,cho);
                   hangul_ic_push(ic,jamo);
  
  
  


wkpark      06/10/10 01:08:03

  Modified:    src      uicomp.c
  Log:
  fixed positioning of the comp window (root style) under the jEdit
  
  Revision  Changes    Path
  1.7       +14 -10    saenaru/src/uicomp.c
  
  Index: uicomp.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicomp.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- uicomp.c	6 Oct 2006 11:14:58 -0000	1.6
  +++ uicomp.c	9 Oct 2006 16:08:03 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicomp.c,v 1.6 2006/10/06 11:14:58 wkpark Exp $
  + * $Saenaru: saenaru/src/uicomp.c,v 1.7 2006/10/09 16:08:03 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -232,8 +232,8 @@
       RECT rc;
       RECT oldrc;
       SIZE sz;
  -    int width;
  -    int height;
  +    int width=0;
  +    int height=0;
       int i;
   
       //
  @@ -466,31 +466,30 @@
                       width = sz.cx;
                       height = sz.cy;
                   }
  -                ImmUnlockIMCC(lpIMC->hCompStr);
               }
   
               ReleaseDC(lpUIExtra->uiDefComp.hWnd,hDC);
           
  -            GetWindowRect(lpUIExtra->uiDefComp.hWnd,&rc);
  +            GetWindowRect(lpIMC->hWnd,&rc);
   
               lpUIExtra->uiDefComp.pt.x = rc.left;
  -            lpUIExtra->uiDefComp.pt.y = rc.top;
  +            lpUIExtra->uiDefComp.pt.y = rc.bottom;
               MoveWindow(lpUIExtra->uiDefComp.hWnd,
                          rc.left,
  -                       rc.top,
  +                       rc.bottom,
                          width+ 2 * GetSystemMetrics(SM_CXEDGE),
                          height+ 2 * GetSystemMetrics(SM_CYEDGE),
                          TRUE);
               if (lpCompStr->dwCompStrLen > 0) {
  -                // comp str   .
  -                //   ܻ   ذ XXX
                   ShowWindow(lpUIExtra->uiDefComp.hWnd, SW_SHOWNOACTIVATE);
                   lpUIExtra->uiDefComp.bShow = TRUE;
  -                InvalidateRect(lpUIExtra->uiDefComp.hWnd,NULL,FALSE);
               } else {
  +                // comp str   .
                   ShowWindow(lpUIExtra->uiDefComp.hWnd, SW_HIDE);
                   lpUIExtra->uiDefComp.bShow = FALSE;
  +                InvalidateRect(lpUIExtra->uiDefComp.hWnd,NULL,FALSE);
               }
  +            ImmUnlockIMCC(lpIMC->hCompStr);
           }
       }
   
  @@ -567,6 +566,11 @@
                   break;
   
               case ATTR_TARGET_NOTCONVERTED:
  +            default:
  +                //SetTextColor(hDC,RGB(127,127,127));
  +                //SetBkMode(hDC,TRANSPARENT);
  +                //MoveToEx(hDC, rc.right, rc.top, NULL);
  +                //LineTo  (hDC, rc.right, rc.bottom);
                   break;
           }
   
  
  
  


wkpark      06/10/10 16:59:34

  Modified:    src      imm.c
  Log:
  fixed shift-space bug.
  
  Revision  Changes    Path
  1.15      +4 -2      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- imm.c	8 Oct 2006 22:05:34 -0000	1.14
  +++ imm.c	10 Oct 2006 07:59:34 -0000	1.15
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.14 2006/10/08 22:05:34 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.15 2006/10/10 07:59:34 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -203,7 +203,9 @@
   
       // SHIFT-SPACE
       // See ui.c how to hook the shift-space event.
  -    if ( (LOWORD(vKey) & 0x00FF) == VK_SPACE && dwOptionFlag & USE_SHIFT_SPACE)
  +    if ( !(lKeyData & 0x80000000) &&
  +            (LOWORD(vKey) & 0x00FF) == VK_SPACE &&
  +            dwOptionFlag & USE_SHIFT_SPACE)
       {
           //SHORT ShiftState = (GetKeyState(VK_SHIFT) >> 31) & 1;
           //SHORT ShiftState = lpbKeyState[VK_SHIFT] & 0x80;
  
  
  


wkpark      06/10/10 17:05:54

  Added:       src      version.h
  Log:
  version.h added
  
  Revision  Changes    Path
  1.1                  saenaru/src/version.h
  
  Index: version.h
  ===================================================================
  /*
   * This file is part of Saenaru.
   *
   * Copyright (c) 1990-1998 Microsoft Corporation.
   * Copyright (c) 2003 Hye-Shik Chang <perky@i18n.org>.
   * Copyright (c) 2003 Won-Kyu Park <wkpark@kldp.org>.
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in the
   *    documentation and/or other materials provided with the distribution.
   *
   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   *
   * $Saenaru: saenaru/src/version.h,v 1.1 2006/10/10 08:05:54 wkpark Exp $
   */
  
  #define VER_MAJOR	 1
  #define VER_MAJOR_STR	"1"
  #define VER_MINOR	 0
  #define VER_MINOR_STR	"0"
  
  #define VER_BUILD	 1010
  #define VER_BUILD_STR	"1010"
  #define VER_PATCHLEVEL	     0
  #define VER_PATCHLEVEL_STR  "0"
  
  #define VER_SNAPSHOT	"snapshot"
  
  
  


wkpark      06/10/10 17:12:59

  Modified:    src      dic.c resource.h saenaru.c saenaru.h saenaru.rc
  Log:
  split dictionary to saenaru.dic word.dic and symbol.dic and add related codes.
  fixed default dictionary entry in the registry.
  
  Revision  Changes    Path
  1.12      +33 -2     saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- dic.c	8 Oct 2006 22:03:16 -0000	1.11
  +++ dic.c	10 Oct 2006 08:12:59 -0000	1.12
  @@ -27,12 +27,13 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.11 2006/10/08 22:03:16 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.12 2006/10/10 08:12:59 wkpark Exp $
    */
   
   #include <windows.h>
   #include <immdev.h>
   #include "saenaru.h"
  +#include "resource.h"
   #include "vksub.h"
   #include "immsec.h"
   
  @@ -249,7 +250,37 @@
       Mylstrcpy(szBuf,lpT2); // add Hangul
       szBuf[Mylstrlen(lpT2)] = 0;
   
  -    nBufLen = GetCandidateStringsFromDictionary(lpT2, szBuf+Mylstrlen(lpT2)+1, 1024, (LPTSTR)szDicFileName);
  +    {
  +        LPTSTR  lpKey;
  +        TCHAR   szKey[128];
  +        LPTSTR  lpDic;
  +        TCHAR   szDic[256];
  +        INT sz;
  +
  +        lpKey = (LPTSTR)&szKey;
  +        lpDic = (LPTSTR)&szDic;
  +        if (Mylstrlen(lpT2) > 1) { // word dic.
  +            LoadString( hInst, IDS_WORD_KEY, lpKey, 128);
  +        } else if (*lpT2 >= 0x3131 && 0x314e >= *lpT2 ) {
  +            LoadString( hInst, IDS_SYM_KEY, lpKey, 128);
  +        } else {
  +            LoadString( hInst, IDS_DIC_KEY, lpKey, 128);
  +        }
  +
  +        lpDic += GetSaenaruDirectory(lpDic,256);
  +        if (*(lpDic-1) != TEXT('\\')) *lpDic++ = TEXT('\\');
  +
  +        sz= GetRegStringValue(TEXT("\\Dictionary"),lpKey,NULL);
  +        if (sz <= 2) {
  +            lpDic = (LPTSTR) szDicFileName; //default
  +        } else
  +            GetRegStringValue(TEXT("\\Dictionary"),(LPTSTR)lpKey,lpDic);
  +        MyDebugPrint((TEXT("Saenaru: %s Dic %s:%d\n"), lpKey, lpDic,sz));
  +
  +        nBufLen = GetCandidateStringsFromDictionary(lpT2,
  +                szBuf+Mylstrlen(lpT2)+1, 1024, (LPTSTR)szDic);
  +    }
  +
       //
       // Check the result of dic. Because my candidate list has only MAXCANDSTRNUM
       // candidate strings.
  
  
  
  1.5       +7 -3      saenaru/src/resource.h
  
  Index: resource.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/resource.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- resource.h	29 Nov 2004 17:06:14 -0000	1.4
  +++ resource.h	10 Oct 2006 08:12:59 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/resource.h,v 1.4 2004/11/29 17:06:14 wkpark Exp $
  + * $Saenaru: saenaru/src/resource.h,v 1.5 2006/10/10 08:12:59 wkpark Exp $
    */
   
   //{{NO_DEPENDENCIES}}
  @@ -78,8 +78,12 @@
   #define IDC_ESCENG_SUPPORT      2008
   
   /* string tables */
  -#define IDS_DICFILENAME             1000
  -#define IDS_CONFIGNAME              1001
  +#define IDS_CONFIGNAME              1000
  +#define IDS_DICFILENAME             1003
  +#define IDS_DIC_KEY                 1005
  +#define IDS_WORD_KEY                1006
  +#define IDS_SYM_KEY                 1007
  +
   #define IDS_GL_NODICTIONARY         1010
   #define IDS_GL_TYPINGERROR          1011
   #define IDS_GL_TESTGUIDELINESTR     1012
  
  
  
  1.6       +5 -5      saenaru/src/saenaru.c
  
  Index: saenaru.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- saenaru.c	10 Oct 2004 10:55:12 -0000	1.5
  +++ saenaru.c	10 Oct 2006 08:12:59 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.c,v 1.5 2004/10/10 10:55:12 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.c,v 1.6 2006/10/10 08:12:59 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -38,7 +38,7 @@
   
   extern HANDLE hMutex;
   
  -static int
  +int
   GetSaenaruDirectory(LPTSTR lpDest, int max)
   {
       static const TCHAR szIMEDir[] = TEXT("\\IME\\Saenaru");
  @@ -101,11 +101,11 @@
               {
   #if 1
                   INT sz;
  -                sz= GetRegStringValue(TEXT("\\Dictionary"),TEXT("default"),NULL);
  -                if (sz <= 0) {
  +                sz= GetRegStringValue(TEXT("\\Dictionary"),TEXT(""),NULL);
  +                if (sz <= 2) {
                       LoadString( hInst, IDS_DICFILENAME, lpDicFileName, 128);
                   } else
  -                    GetRegStringValue(TEXT("\\Dictionary"),TEXT("default"),lpDicFileName);
  +                    GetRegStringValue(TEXT("\\Dictionary"),TEXT(""),lpDicFileName);
                   MyDebugPrint((TEXT("Saenaru: dicfile %s:%d\n"), lpDicFileName,sz));
   #else
                   LoadString( hInst, IDS_DICFILENAME, lpDicFileName, 128);
  
  
  
  1.8       +3 -1      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- saenaru.h	8 Oct 2006 09:16:02 -0000	1.7
  +++ saenaru.h	10 Oct 2006 08:12:59 -0000	1.8
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.7 2006/10/08 09:16:02 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.8 2006/10/10 08:12:59 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -410,6 +410,8 @@
   LPWSTR PASCAL MylstrcpynW(LPWSTR lp0, LPWSTR lp1, int nCount);
   HFONT CheckNativeCharset(HDC hDC);
   
  +int PASCAL GetSaenaruDirectory(LPTSTR lpDest, int max);
  +
   /*   toascii.c   */
   BOOL PASCAL GenerateMessageToTransKey(LPTRANSMSGLIST lpTrabsKey,LPTRANSMSG lpGeneMsg);
   BOOL PASCAL GenerateOverFlowMessage(LPTRANSMSGLIST lpTransKey);
  
  
  
  1.6       +18 -6     saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- saenaru.rc	8 Oct 2006 09:16:56 -0000	1.5
  +++ saenaru.rc	10 Oct 2006 08:12:59 -0000	1.6
  @@ -11,6 +11,7 @@
   #include "saenaru.h"
   #include "resource.h"
   #include "winver.h"
  +#include "version.h"
   
   /////////////////////////////////////////////////////////////////////////////
   #undef APSTUDIO_READONLY_SYMBOLS
  @@ -149,8 +150,8 @@
   //
   
   VS_VERSION_INFO VERSIONINFO
  - FILEVERSION 1,0,0,0
  - PRODUCTVERSION 1,0,0,0
  + FILEVERSION VER_MAJOR,VER_MINOR,VER_BUILD,VER_PATCHLEVEL
  + PRODUCTVERSION VER_MAJOR,VER_MINOR,VER_BUILD,VER_PATCHLEVEL
    FILEFLAGSMASK 0x3fL
   #ifdef _DEBUG
    FILEFLAGS 0xbL
  @@ -168,14 +169,16 @@
               VALUE "Comments", " ѱ Է±\0"
               VALUE "CompanyName", "Open Hangul Project\0"
               VALUE "FileDescription", " 1.0\0"
  -            VALUE "FileVersion", "1.0\0"
  +            VALUE "FileVersion", VER_MAJOR_STR "." VER_MINOR_STR "\0"
               VALUE "InternalName", "SAENARU\0"
               VALUE "LegalCopyright", "Copyright (C) 2003-2006 .\0"
               VALUE "LegalTrademarks", "\0"
               VALUE "OriginalFilename", "SAENARU.IME\0"
  -//            VALUE "PrivateBuild", "\0"
  +#ifdef VER_SNAPSHOT
  +            VALUE "PrivateBuild", VER_SNAPSHOT "\0"
  +#endif
               VALUE "ProductName", "\0"
  -            VALUE "ProductVersion", "1.00\0"
  +            VALUE "ProductVersion", VER_MAJOR_STR "." VER_MINOR_STR "." VER_BUILD_STR "." VER_PATCHLEVEL_STR "\0"
   //            VALUE "SpecialBuild", "\0"
           END
       END
  @@ -259,10 +262,19 @@
   STRINGTABLE DISCARDABLE 
   LANGUAGE 0x12, 0x1
   BEGIN
  -    IDS_DICFILENAME         "SAENARU.DIC"
       IDS_CONFIGNAME          " ѱ Է±"
   END
   
  +
  +STRINGTABLE DISCARDABLE 
  +LANGUAGE 0x12, 0x1
  +BEGIN
  +    IDS_DICFILENAME         "SAENARU.DIC"
  +    IDS_DIC_KEY             ""
  +    IDS_SYM_KEY             "Symbol"
  +    IDS_WORD_KEY            "Word"
  +END
  +
   STRINGTABLE DISCARDABLE 
   LANGUAGE 0x12, 0x1
   BEGIN
  
  
  


wkpark      06/10/10 20:08:38

  Modified:    src      dic.c saenaru.c
  Log:
  more fix last changes
  
  Revision  Changes    Path
  1.13      +4 -3      saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- dic.c	10 Oct 2006 08:12:59 -0000	1.12
  +++ dic.c	10 Oct 2006 11:08:38 -0000	1.13
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.12 2006/10/10 08:12:59 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.13 2006/10/10 11:08:38 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -272,10 +272,11 @@
   
           sz= GetRegStringValue(TEXT("\\Dictionary"),lpKey,NULL);
           if (sz <= 2) {
  -            lpDic = (LPTSTR) szDicFileName; //default
  +            lpDic = (LPTSTR)&szDic;
  +            lstrcpy (szDic, szDicFileName) ;
           } else
               GetRegStringValue(TEXT("\\Dictionary"),(LPTSTR)lpKey,lpDic);
  -        MyDebugPrint((TEXT("Saenaru: %s Dic %s:%d\n"), lpKey, lpDic,sz));
  +        MyDebugPrint((TEXT("Saenaru: %s Dic %s:%d\n"), lpKey, szDic,sz));
   
           nBufLen = GetCandidateStringsFromDictionary(lpT2,
                   szBuf+Mylstrlen(lpT2)+1, 1024, (LPTSTR)szDic);
  
  
  
  1.7       +6 -7      saenaru/src/saenaru.c
  
  Index: saenaru.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- saenaru.c	10 Oct 2006 08:12:59 -0000	1.6
  +++ saenaru.c	10 Oct 2006 11:08:38 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.c,v 1.6 2006/10/10 08:12:59 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.c,v 1.7 2006/10/10 11:08:38 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -99,17 +99,16 @@
               if (*(lpDicFileName-1) != TEXT('\\'))
                   *lpDicFileName++ = TEXT('\\');
               {
  -#if 1
                   INT sz;
  -                sz= GetRegStringValue(TEXT("\\Dictionary"),TEXT(""),NULL);
  +                TCHAR lpKey[128];
  +                LoadString( hInst, IDS_DIC_KEY, lpKey, 128);
  +
  +                sz= GetRegStringValue(TEXT("\\Dictionary"),lpKey,NULL);
                   if (sz <= 2) {
                       LoadString( hInst, IDS_DICFILENAME, lpDicFileName, 128);
                   } else
  -                    GetRegStringValue(TEXT("\\Dictionary"),TEXT(""),lpDicFileName);
  +                    GetRegStringValue(TEXT("\\Dictionary"),lpKey,lpDicFileName);
                   MyDebugPrint((TEXT("Saenaru: dicfile %s:%d\n"), lpDicFileName,sz));
  -#else
  -                LoadString( hInst, IDS_DICFILENAME, lpDicFileName, 128);
  -#endif
               }
   
               // read registry
  
  
  


wkpark      06/10/10 20:24:59

  Modified:    src      dic.c
  Log:
  ignore unconvertable conversion requests
  
  Revision  Changes    Path
  1.14      +2 -1      saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- dic.c	10 Oct 2006 11:08:38 -0000	1.13
  +++ dic.c	10 Oct 2006 11:24:59 -0000	1.14
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.13 2006/10/10 11:08:38 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.14 2006/10/10 11:24:59 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -308,6 +308,7 @@
       {
           if (!*lpb)
           {
  +            goto cvk_exit40;
               //
               // make attribute
               //
  
  
  


wkpark      06/10/11 00:28:30

  Modified:    src      ui.c
  Log:
  fixed ALT behavior like as hangul IME 2002/2003
  
  Revision  Changes    Path
  1.11      +28 -16    saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ui.c	5 Oct 2006 04:53:52 -0000	1.10
  +++ ui.c	10 Oct 2006 15:28:30 -0000	1.11
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.10 2006/10/05 04:53:52 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.11 2006/10/10 15:28:30 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -224,6 +224,7 @@
   #endif
                   return 0L;
               default:
  +                OutputDebugString((LPTSTR)TEXT("hUICurIMC == NULL\r\n"));
                   break;
           }
       }
  @@ -265,7 +266,7 @@
               break;
   
           case WM_IME_SETCONTEXT:
  -            MyDebugPrint((TEXT("WM_IME_SETCONTEXT\n")));
  +            MyDebugPrint((TEXT("* WM_IME_SETCONTEXT\r\n")));
               if (wParam)
               {
                   hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
  @@ -361,8 +362,11 @@
               lpIMC = ImmLockIMC(hUICurIMC);
               hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
               lpUIExtra = (LPUIEXTRA)GlobalLock(hUIExtra);
  +            // if (lpIMC && !(dwImeFlag & SAENARU_ONTHESPOT))
               CreateCompWindow(hWnd,lpUIExtra,lpIMC );
   
  +            MyDebugPrint((TEXT("WM_IME_STARTCOMPOSITION\r\n")));
  +
               GlobalUnlock(hUIExtra);
               ImmUnlockIMC(hUICurIMC);
               break;
  @@ -377,7 +381,7 @@
               lpIMC = ImmLockIMC(hUICurIMC);
               hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
               lpUIExtra = (LPUIEXTRA)GlobalLock(hUIExtra);
  -            // STARTCOMPOSITION ޽ ޵ ʴ 
  +            // WM_IME_STARTCOMPOSITION ޽ ޵ ʴ 
               if (lpIMC && !(dwImeFlag & SAENARU_ONTHESPOT))
               {
                   LPCOMPOSITIONSTRING lpCompStr;
  @@ -503,15 +507,12 @@
               // Set the position of the candidate window to UIExtra.
               // This message is sent by the candidate window.
               //
  -            //lpIMC = ImmLockIMC(hUICurIMC);
               hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
               lpUIExtra = (LPUIEXTRA)GlobalLock(hUIExtra);
               lpUIExtra->uiCand.pt.x = (long)LOWORD(lParam);
               lpUIExtra->uiCand.pt.y = (long)HIWORD(lParam);
   
               MyDebugPrint((TEXT(" * CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
  -            //MoveCandWindow(hWnd,lpIMC,lpUIExtra,FALSE);
  -            //ImmUnlockIMC(hUICurIMC);
               GlobalUnlock(hUIExtra);
               break;
   #if 1
  @@ -533,6 +534,7 @@
               {
                    if (hUICurIMC && IsCompStr(hUICurIMC))
                    MakeResultString(hUICurIMC,TRUE);
  +                MyDebugPrint((TEXT("WM_LBUTTONDOWN\r\n")));
               }
   
               return DefWindowProc(hWnd,message,wParam,lParam);
  @@ -677,6 +679,7 @@
               break;
   
           case IMN_SETCOMPOSITIONFONT:
  +            MyDebugPrint((TEXT("IMN_SETCOMPOSITIONFONT\r\n")));
               lf = lpIMC->lfFont.W;
               if (lpUIExtra->hFont)
                   DeleteObject(lpUIExtra->hFont);
  @@ -702,6 +705,8 @@
               SetFontCompWindow(lpUIExtra);
               MoveCompWindow(lpUIExtra,lpIMC);
   
  +            // lRet=1L; for fail
  +
               break;
   
           case IMN_SETOPENSTATUS:
  @@ -778,6 +783,8 @@
           case IMN_SETCOMPOSITIONWINDOW:
               MoveCompWindow(lpUIExtra,lpIMC);
               MoveCandWindow(hWnd,lpIMC,lpUIExtra, TRUE);
  +            MyDebugPrint((TEXT("IMN_SETCOMPOSITIONWINDOW\n")));
  +
               break;
   
           case IMN_SETSTATUSWINDOWPOS:
  @@ -837,6 +844,9 @@
               break;
   
           case IMC_GETCOMPOSITIONWINDOW:
  +            wsprintf((LPTSTR)szDev,TEXT("GETCOMPOSITIONWINDOW\r\n"));
  +            OutputDebugString((LPTSTR)szDev);
  +
               *(LPCOMPOSITIONFORM)lParam  = lpIMC->cfCompForm; 
               lRet = 0;
               break;
  @@ -1286,8 +1296,19 @@
               break;
           case WM_SYSKEYDOWN:
           case WM_SYSKEYUP:
  -            // hack to use RALT(VK_RMENU) as a Mode_Switch
               GetKeyboardState((LPBYTE)&pbKeyState);
  +            // commit all CompStr like as IME 2002/2003
  +            if ( pbKeyState[VK_MENU] & 0x80)
  +            {
  +                HWND hwnd = GetFocus ();
  +                if (hwnd != NULL) {
  +                    HIMC hIMC = NULL;
  +                    hIMC = ImmGetContext (hwnd);
  +                    if (hIMC && IsCompStr(hIMC))
  +                        MakeResultString(hIMC,TRUE);
  +                }
  +            }
  +            // hack to use RALT(VK_RMENU) as a Mode_Switch
               if ( pbKeyState[VK_RMENU] & 0x80 && !(lpmsg->lParam & 0x01000000))
               {
                   WORD ch;
  @@ -1297,15 +1318,6 @@
                   if (ch < '!' || ch > '~')
                        break;
                   MyDebugPrint((TEXT("RALT + %x\n"), ch));
  -                {
  -                    HWND hwnd = GetFocus ();
  -                    if (hwnd != NULL) {
  -                        HIMC hIMC = NULL;
  -                        hIMC = ImmGetContext (hwnd);
  -                        if (hIMC && IsCompStr(hIMC))
  -                            MakeResultString(hIMC,TRUE);
  -                    }
  -                }
   #if 1
                   lpmsg->message-=4; // WM_SYSKEYUP - WM_KEYUP = 4 See WINUSER.H
                   MyDebugPrint((TEXT("RALT %x\n"), lpmsg->lParam));
  
  
  


wkpark      06/10/11 00:29:36

  Modified:    src      saenaru.rc
  Log:
  add some english resources
  
  Revision  Changes    Path
  1.7       +105 -4    saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- saenaru.rc	10 Oct 2006 08:12:59 -0000	1.6
  +++ saenaru.rc	10 Oct 2006 15:29:36 -0000	1.7
  @@ -86,7 +86,7 @@
       CONTROL         "   (&U)",IDC_LAYOUT_USER,"Button",
                       BS_AUTORADIOBUTTON,115,57,77,11
   
  -    CONTROL         "ġ (&M)",IDC_COMPOSITE_TYPING,"Button",
  +    CONTROL         "ġ (&L)",IDC_COMPOSITE_TYPING,"Button",
                       BS_AUTOCHECKBOX | WS_TABSTOP,26,79,53,10
       CONTROL         "ġ (&C)",IDC_CONCURRENT_TYPING,"Button",
                       BS_AUTOCHECKBOX | WS_TABSTOP,83,79,53,10
  @@ -115,8 +115,8 @@
   BEGIN
       LTEXT           " ѱ Է±  1.0",IDC_STATIC,63,36,88,8
       ICON            IDI_ABOUT,IDC_STATIC,98,4,20,20
  -    LTEXT           " <perky@FreeBSD.org>  2003",IDC_STATIC,41,54,
  -                    132,8
  +    LTEXT           " <perky@FreeBSD.org>  2003-2006",IDC_STATIC,
  +		    33,54,151,8 
       LTEXT           " Ʈ ùٸ ̳ Ư  ռ    ""ִ ״"" ˴ϴ.",
                       IDC_STATIC,8,81,198,18
       LTEXT           " Ʈ ѹα ۱ǹ  ȣ˴ϴ. ڼ ۱   Ǵ   Ǵ Ʈ Ȩ(http://saenaru.i18n.org/) Ͻʽÿ.",
  @@ -127,7 +127,7 @@
   DLG_DEBUG DIALOG DISCARDABLE  30, 65, 215, 135
   STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION
   CAPTION "DebugOptions"
  -FONT 9, ""
  +FONT 9, "MS Shell Dlg"
   LANGUAGE 0x12, 0x1
   BEGIN
       CONTROL         "LOGF_ENTRY",IDC_LOGF_ENTRY,"Button",BS_AUTOCHECKBOX | 
  @@ -292,6 +292,107 @@
   /////////////////////////////////////////////////////////////////////////////
   
   
  +/////////////////////////////////////////////////////////////////////////////
  +// English (U.S.) resources
  +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
  +
  +DLG_GENERAL DIALOG DISCARDABLE  30, 65, 212, 158
  +STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION
  +CAPTION "Keyboard options"
  +LANGUAGE 0x09, 0x1
  +FONT 9, "Tahoma"
  +{
  +   ICON		IDI_GENERAL,IDC_STATIC,4,5,18,21
  +   GROUPBOX	"Select keyboard", IDC_STATIC,26,2,181,72 
  +   CONTROL	"&2 set", IDC_LAYOUT_OLD2BUL, BUTTON,
  +		BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE,33,15,70,11 
  +   CONTROL	"&3 set Final", IDC_LAYOUT_3FIN, BUTTON,
  +		BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE,33,29,70,11 
  +   CONTROL	"3 set 3&90", IDC_LAYOUT_390, BUTTON,
  +		BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE,33,43,70,11 
  +   CONTROL	"3 set Soo&nare", IDC_LAYOUT_3SUN, BUTTON,
  +		BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE,33,57,70,11 
  +   CONTROL	"new 2 set (&D)", IDC_LAYOUT_NEW2BUL, BUTTON,
  +		BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE,115,15,77,11 
  +   CONTROL	"new 3 set (&S)", IDC_LAYOUT_NEW3BUL, BUTTON,
  +		BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE,115,29,77,11 
  +   CONTROL	"&Ahnmatae", IDC_LAYOUT_AHNMATAE, BUTTON,
  +		BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE,115,43,77,11 
  +   CONTROL	"&User defined", IDC_LAYOUT_USER, BUTTON,
  +		BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE,115,57,77,11 
  +   CONTROL	"Co&llective", IDC_COMPOSITE_TYPING, BUTTON,
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,79,53,10 
  +   CONTROL	"&Concurrent", IDC_CONCURRENT_TYPING, BUTTON,
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,83,79,53,10 
  +   CONTROL	"D&Vorak", IDC_DVORAK_SUPPORT, BUTTON,
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,138,79,60,10 
  +   CONTROL	"Delete by &Jaso unit", IDC_BACKSPACE_BY_JAMO, BUTTON,
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,91,71,10 
  +   CONTROL	"<&ESC> to Ascii mode", IDC_ESCENG_SUPPORT, BUTTON,
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,109,91,88,10 
  +   CONTROL	"<Shift>-<SPACE> toggle &Han/Eng mode", IDC_USE_SHIFT_SPACE, BUTTON,
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,103,155,10 
  +   CONTROL	"Support e&Xtended Hanja (KS X 1002) ", IDC_KSX1002_SUPPORT, BUTTON,
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,115,156,10 
  +   CONTROL	"Restrict to Wansung (&KS X 1001) syllables", IDC_KSX1001_SUPPORT, BUTTON,
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,127,156,10 
  +   CONTROL	"Compose with Hangul Jam&O", IDC_FULL_MULTIJOMO, BUTTON,
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,139,156,10 
  +}
  +
  +
  +DLG_ABOUT DIALOG DISCARDABLE  30, 65, 215, 135
  +STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION
  +CAPTION "About Saenaru..."
  +LANGUAGE 0x09, 0x01
  +FONT 9, "Tahoma"
  +{
  +   LTEXT	"Saenaru Hangul Input Method ver 1.0", IDC_STATIC, 43,29,126,8 
  +   ICON		IDI_ABOUT, IDC_STATIC, 98,6,18,18 
  +   LTEXT	"Hye-Sik Chang  <perky@FreeBSD.org> 2003-2006", IDC_STATIC, 26,42,164,8 
  +   LTEXT 	"THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.", IDC_STATIC, 10,59,198,42 
  +   LTEXT	"The software product is protected by copyright laws in Korea. See the included license along with this program or visit the homepage(http://saenaru.i18n.org/) of this project.", IDC_STATIC,
  +		8,102,198,27 
  +   GROUPBOX	"", IDC_STATIC, 3,53,209,77 
  +}
  +
  +
  +/////////////////////////////////////////////////////////////////////////////
  +//
  +// String Table
  +//
  +
  +STRINGTABLE DISCARDABLE 
  +LANGUAGE 0x09, 0x1
  +BEGIN
  +    IDS_CONFIGNAME          "Saenaru Hangul Input Method"
  +END
  +
  +STRINGTABLE DISCARDABLE 
  +LANGUAGE 0x09, 0x1
  +BEGIN
  +    IDS_DICFILENAME         "SAENARU.DIC"
  +    IDS_DIC_KEY             ""
  +    IDS_SYM_KEY             "SymbolEn"
  +    IDS_WORD_KEY            "WordEn"
  +END
  +
  +STRINGTABLE DISCARDABLE 
  +LANGUAGE 0x09, 0x1
  +BEGIN
  +    IDS_GL_NODICTIONARY     "Can not find dictionary"
  +    IDS_GL_TYPINGERROR      "Typing Error No Roman"
  +    IDS_GL_TESTGUIDELINESTR "TestGuideLine String"
  +    IDS_GL_TESTGUIDELINEPRIVATE "TestGuideLine Private"
  +    IDS_NOREADING           "There is no reading string\r\nPlease enter the reading string"
  +    IDS_NOSTRING            "There is no string\r\nPlease enter the string"
  +    IDS_NOMEMORY            "No memory."
  +    IDS_REGWORDRET          "Fail to register Word"
  +END
  +
  +#endif // English (U.S.) resources
  +
  +
   
   #ifndef APSTUDIO_INVOKED
   /////////////////////////////////////////////////////////////////////////////
  
  
  


wkpark      06/10/11 12:46:34

  Modified:    src      btncmd.cpp btnext.cpp btnime.cpp resource.h
                        saenaru.rc tsf.h
  Log:
  add english resources
  
  Revision  Changes    Path
  1.4       +27 -6     saenaru/src/btncmd.cpp
  
  Index: btncmd.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btncmd.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- btncmd.cpp	3 Oct 2006 13:08:03 -0000	1.3
  +++ btncmd.cpp	11 Oct 2006 03:46:34 -0000	1.4
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btncmd.cpp,v 1.3 2006/10/03 13:08:03 wkpark Exp $
  + * $Saenaru: saenaru/src/btncmd.cpp,v 1.4 2006/10/11 03:46:34 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -54,7 +54,7 @@
   #endif
   #include "tsf.h"
   
  -#define LANGBAR_ITEM_DESC	L"Է¹" // max 32 chars
  +//#define LANGBAR_ITEM_DESC	L"Է¹" // max 32 chars
   
   static	void	_Menu_ToHangul (void) ;
   static	void	_Menu_ToHanja  (void) ;
  @@ -63,11 +63,18 @@
   static	int	_GetConversionMode (HIMC hIMC) ;
   
   static	const TSFLBMENUINFO	c_rgMenuItems []	= {
  +#if 0
   	{ L"ѱ",	_Menu_ToHangul },
   	{ L"",	_Menu_ToAscII },
   	{ L"",	_Menu_ToHanja },
   	{ NULL,		NULL },
   	{ L"",	NULL }
  +#endif
  +	{ IDS_MENU_HANGUL,	_Menu_ToHangul },
  +	{ IDS_MENU_ASCII,	_Menu_ToAscII },
  +	{ IDS_MENU_HANJA,	_Menu_ToHanja },
  +	{ NULL,		NULL },
  +	{ IDS_MENU_CANCEL,	NULL }
   } ;
   
   #define	SAENARU_LANGBARITEMSINK_COOKIE	0x0fab0faa
  @@ -121,6 +128,7 @@
   CLangBarItemCModeButton::CLangBarItemCModeButton ()
   {
   	//DllAddRef () ;
  +	LPTSTR lpDesc;
   #if 1
   	_tfLangBarItemInfo.clsidService	= c_clsidSaenaruTextService ;
   	//_tfLangBarItemInfo.clsidService	= CLSID_NULL ;
  @@ -133,7 +141,11 @@
   #endif
   	       ;
   	_tfLangBarItemInfo.ulSort		= 1 ;
  -	SafeStringCopy (_tfLangBarItemInfo.szDescription, ARRAYSIZE (_tfLangBarItemInfo.szDescription), LANGBAR_ITEM_DESC) ;
  +
  +	lpDesc=(LPTSTR)&_tfLangBarItemInfo.szDescription;
  +	LoadString(hInst,IDS_INPUT_CMODE_DESC, lpDesc,ARRAYSIZE (_tfLangBarItemInfo.szDescription));
  +
  +	// SafeStringCopy (_tfLangBarItemInfo.szDescription, ARRAYSIZE (_tfLangBarItemInfo.szDescription), LANGBAR_ITEM_DESC) ;
   	_pLangBarItemSink	= NULL ;
   	_cRef				= 1 ;
   #endif
  @@ -232,7 +244,7 @@
   	if (pbstrToolTip == NULL)
   		return	E_INVALIDARG ;
   
  -	*pbstrToolTip	= SysAllocString (LANGBAR_ITEM_DESC) ;
  +	*pbstrToolTip	= SysAllocString (_tfLangBarItemInfo.szDescription) ;
   	return	(*pbstrToolTip == NULL)? E_OUTOFMEMORY : S_OK ;
   }
   
  @@ -283,7 +295,16 @@
   		 */
   		nCMode	= _GetConversionMode (hIMC) ;
   		for (i = 0 ; i < ARRAYSIZE (c_rgMenuItems) ; i ++) {
  -			wstrDesc		= c_rgMenuItems [i].pchDesc ;
  +			LPTSTR lpDesc;
  +			TCHAR szDesc[128];
  +
  +			lpDesc=(LPTSTR)&szDesc;
  +			if (c_rgMenuItems [i].chDesc!=NULL)
  +				LoadString(hInst,c_rgMenuItems [i].chDesc,lpDesc,128);
  +			else
  +				lpDesc=NULL;
  +			wstrDesc		= (LPCWSTR)lpDesc;
  +			//wstrDesc		= c_rgMenuItems [i].pchDesc ;
   			if (wstrDesc != NULL) {
   				nstrDesc	= wcslen (wstrDesc) ;
   				dwFlag		= (i == nCMode)? TF_LBMENUF_CHECKED : 0 ;
  @@ -364,7 +385,7 @@
   	if (pbstrText == NULL)
   		return	E_INVALIDARG ;
   
  -	*pbstrText	= SysAllocString (LANGBAR_ITEM_DESC) ;
  +	*pbstrText	= SysAllocString (_tfLangBarItemInfo.szDescription) ;
   	return	(*pbstrText == NULL)? E_OUTOFMEMORY : S_OK ;
   }
   
  
  
  
  1.4       +13 -5     saenaru/src/btnext.cpp
  
  Index: btnext.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btnext.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- btnext.cpp	3 Oct 2006 13:08:03 -0000	1.3
  +++ btnext.cpp	11 Oct 2006 03:46:34 -0000	1.4
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btnext.cpp,v 1.3 2006/10/03 13:08:03 wkpark Exp $
  + * $Saenaru: saenaru/src/btnext.cpp,v 1.4 2006/10/11 03:46:34 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -54,7 +54,7 @@
   #endif
   #include "tsf.h"
   
  -#define LANGBAR_ITEM_DESC	L"/ݰ ȯ" // max 32 chars
  +//#define LANGBAR_ITEM_DESC	L"/ݰ ȯ" // max 32 chars
   
   #if 0
   static	void	_Menu_ToHangul (void) ;
  @@ -122,6 +122,8 @@
   CLangBarItemShapeButton::CLangBarItemShapeButton ()
   {
   	//DllAddRef () ;
  +	LPTSTR lpDesc;
  +
   #if 1
   	_tfLangBarItemInfo.clsidService	= c_clsidSaenaruTextService ;
   	//_tfLangBarItemInfo.clsidService	= CLSID_NULL ;
  @@ -132,7 +134,11 @@
   	       | TF_LBI_STYLE_TEXTCOLORICON
   	       ;
   	_tfLangBarItemInfo.ulSort		= 1 ;
  -	SafeStringCopy (_tfLangBarItemInfo.szDescription, ARRAYSIZE (_tfLangBarItemInfo.szDescription), LANGBAR_ITEM_DESC) ;
  +
  +	lpDesc=(LPTSTR)& _tfLangBarItemInfo.szDescription;
  +	LoadString(hInst,IDS_TOGGLE_HALFFULL_DESC,lpDesc,ARRAYSIZE (_tfLangBarItemInfo.szDescription));
  +
  +	// SafeStringCopy (_tfLangBarItemInfo.szDescription, ARRAYSIZE (_tfLangBarItemInfo.szDescription), LANGBAR_ITEM_DESC) ;
   	_pLangBarItemSink	= NULL ;
   	_cRef				= 1 ;
   #endif
  @@ -231,7 +237,8 @@
   	if (pbstrToolTip == NULL)
   		return	E_INVALIDARG ;
   
  -	*pbstrToolTip	= SysAllocString (LANGBAR_ITEM_DESC) ;
  +	*pbstrToolTip	= SysAllocString (_tfLangBarItemInfo.szDescription) ;
  +	//*pbstrToolTip	= SysAllocString (LANGBAR_ITEM_DESC) ;
   	return	(*pbstrToolTip == NULL)? E_OUTOFMEMORY : S_OK ;
   }
   
  @@ -377,7 +384,8 @@
   	if (pbstrText == NULL)
   		return	E_INVALIDARG ;
   
  -	*pbstrText	= SysAllocString (LANGBAR_ITEM_DESC) ;
  +	//*pbstrText	= SysAllocString (LANGBAR_ITEM_DESC) ;
  +	*pbstrText	= SysAllocString (_tfLangBarItemInfo.szDescription) ;
   	return	(*pbstrText == NULL)? E_OUTOFMEMORY : S_OK ;
   }
   
  
  
  
  1.5       +67 -11    saenaru/src/btnime.cpp
  
  Index: btnime.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btnime.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- btnime.cpp	3 Oct 2006 13:08:03 -0000	1.4
  +++ btnime.cpp	11 Oct 2006 03:46:34 -0000	1.5
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btnime.cpp,v 1.4 2006/10/03 13:08:03 wkpark Exp $
  + * $Saenaru: saenaru/src/btnime.cpp,v 1.5 2006/10/11 03:46:34 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -53,7 +53,7 @@
   #endif
   #include "tsf.h"
   
  -#define LANGBAR_ITEM_DESC    L"ۼ/Է± " // max 32 chars!
  +//#define LANGBAR_ITEM_DESC    L"ۼ/Է± " // max 32 chars!
   #define SAENARU_LANGBARITEMSINK_COOKIE    0x0fab0fac
   
   static void  _Menu_Help (UINT);
  @@ -76,12 +76,14 @@
   static DWORD _UserKeyboardMenu_GetKeyboardFlag (UINT);
   
   typedef struct {
  -    const WCHAR* pchDesc;
  +    //const WCHAR* pchDesc;
  +    UINT	 chDesc;
       DWORD        (*pfnGetFlag)(UINT);
       void         (*pfnHandler)(UINT);
   } TSFLBMENUINFOEX;
   
   static const TSFLBMENUINFOEX c_rgMenuItems[] = {
  +#if 0
   //  { L"(&H)",   _MenuItem_GetNormalFlag, _Menu_Help },
       { L"ȯ漳(&R)", _MenuItem_GetNormalFlag, _Menu_Property },
   //  { L"缳(&C)",   _MenuItem_GetNormalFlag, _Menu_Reconversion },
  @@ -93,14 +95,28 @@
       { L"Ű ",  _MenuItem_GetToggleKeyboardFlag, _Menu_ToggleShowKeyboard },
       { NULL, NULL, NULL },
       { L"", NULL, NULL }
  +#endif
  +//  { L"(&H)",   _MenuItem_GetNormalFlag, _Menu_Help },
  +    { IDS_MENU_ENV, _MenuItem_GetNormalFlag, _Menu_Property },
  +//  { L"缳(&C)",   _MenuItem_GetNormalFlag, _Menu_Reconversion },
  +    { NULL, NULL, NULL },
  +    { IDS_MENU_DVORAK,   _MenuItem_GetToggleDvorakFlag,   _Menu_ToggleDvorak },
  +    { IDS_MENU_ESC_ASCII, _MenuItem_GetToggleEscEngFlag, _Menu_ToggleEscEng },
  +    { IDS_MENU_EDIT_WORD_UNIT, _MenuItem_GetToggleOnTheSpotFlag,_Menu_ToggleOnTheSpot },
  +    { NULL, NULL, NULL },
  +    { IDS_MENU_SHOW_KEYBOARD,  _MenuItem_GetToggleKeyboardFlag, _Menu_ToggleShowKeyboard },
  +    { NULL, NULL, NULL },
  +    { IDS_MENU_CANCEL, NULL, NULL }
   };
   
   typedef struct {
  -    const WCHAR* pchDesc;
  +    //const WCHAR* pchDesc;
  +    UINT         chDesc;
       DWORD        dwFlag;
   } TSFLBKEYBOARDINFOEX;
   
   static const TSFLBKEYBOARDINFOEX c_rgKeyboardItems[]= {
  +#if 0
       { L"ι(&2)",        NULL },
       { L"(&3)",        NULL },
       { L"390(&9)",     NULL },
  @@ -110,6 +126,16 @@
       { L" Ʒ(&N)", NULL },
       { L" (&U)",   TF_LBMENUF_SUBMENU },
       { L" (&C)",   TF_LBMENUF_SUBMENU },
  +#endif
  +    { IDS_MENU_OLD2BUL  ,   NULL },
  +    { IDS_MENU_3FIN     ,   NULL },
  +    { IDS_MENU_390      ,   NULL },
  +    { IDS_MENU_NEW2BUL  ,   NULL },
  +    { IDS_MENU_NEW3BUL  ,   NULL },
  +    { IDS_MENU_AHNMATAE ,   NULL },
  +    { IDS_MENU_3SOON    ,   NULL },
  +    { IDS_MENU_USER     ,   TF_LBMENUF_SUBMENU },
  +    { IDS_MENU_USER_COMP,   TF_LBMENUF_SUBMENU },
   };
   
   enum {
  @@ -163,6 +189,8 @@
   CLangBarItemImeButton::CLangBarItemImeButton ()
   {
       //DllAddRef ();
  +    LPTSTR lpDesc;
  +
       _tfLangBarItemInfo.clsidService   = c_clsidSaenaruTextService;
       //_tfLangBarItemInfo.clsidService = CLSID_NULL;
       _tfLangBarItemInfo.guidItem       = c_guidItemButtonIME;
  @@ -172,8 +200,11 @@
           | TF_LBI_STYLE_HIDDENSTATUSCONTROL
   #endif
           ;
  +    lpDesc=(LPTSTR)&_tfLangBarItemInfo.szDescription;
       _tfLangBarItemInfo.ulSort = 1;
  -    SafeStringCopy (_tfLangBarItemInfo.szDescription, ARRAYSIZE (_tfLangBarItemInfo.szDescription), LANGBAR_ITEM_DESC);
  +    LoadString(hInst,IDS_KEYBOARD_OPTION_DESC,lpDesc,ARRAYSIZE (_tfLangBarItemInfo.szDescription));
  +
  +    //SafeStringCopy (_tfLangBarItemInfo.szDescription, ARRAYSIZE (_tfLangBarItemInfo.szDescription), LANGBAR_ITEM_DESC);
       _pLangBarItemSink = NULL;
       _cRef             = 1;
       return;
  @@ -271,7 +302,7 @@
       if (pbstrToolTip == NULL)
           return E_INVALIDARG;
   
  -    *pbstrToolTip = SysAllocString (LANGBAR_ITEM_DESC);
  +    *pbstrToolTip = SysAllocString (_tfLangBarItemInfo.szDescription);
       return (*pbstrToolTip == NULL)? E_OUTOFMEMORY : S_OK;
   }
   
  @@ -321,8 +352,14 @@
   
       id = 0;
       for (i = 0; i < 2; i ++) {
  -        wstrDesc = c_rgMenuItems [i].pchDesc;
  -        if (wstrDesc != NULL) {
  +	LPTSTR lpDesc;
  +	TCHAR  szDesc[128];
  +	lpDesc=(LPTSTR)&szDesc;
  +
  +	LoadString(hInst,c_rgMenuItems [i].chDesc,lpDesc,128);
  +        wstrDesc = (LPCWSTR)lpDesc;
  +        //wstrDesc = c_rgMenuItems [i].pchDesc;
  +        if (c_rgMenuItems [i].chDesc != NULL) {
               nstrDesc = wcslen (wstrDesc);
               dwFlag = 0;
               if (c_rgMenuItems [i].pfnGetFlag != NULL)
  @@ -340,9 +377,19 @@
       pUserComposeMenu=NULL;
       for (i = 0; i < ARRAYSIZE (c_rgKeyboardItems); i++)
       {
  -        wstrDesc = c_rgKeyboardItems [i].pchDesc;
  +	LPTSTR lpDesc;
  +	TCHAR  szDesc[128];
  +	lpDesc=(LPTSTR)&szDesc;
  +
  +	//if (c_rgKeyboardItems [i].chDesc == NULL)
  +	//	lpDesc=NULL;
  +	//else
  +	LoadString(hInst,c_rgKeyboardItems [i].chDesc,lpDesc,128);
  +        wstrDesc = (LPCWSTR)lpDesc;
  +        //wstrDesc = c_rgKeyboardItems [i].pchDesc;
           nstrDesc = wcslen (wstrDesc);
           dwFlag = c_rgKeyboardItems [i].dwFlag;
  +
           if (dwFlag == NULL)
           {
               dwFlag = _MenuItem_GetKeyboardFlag(id);
  @@ -368,7 +415,16 @@
       id=30;
       for (i = 2; i < ARRAYSIZE (c_rgMenuItems); i++)
       {
  -        wstrDesc = c_rgMenuItems [i].pchDesc;
  +	LPTSTR lpDesc;
  +	TCHAR  szDesc[128];
  +	lpDesc=(LPTSTR)&szDesc;
  +
  +	if (c_rgMenuItems [i].chDesc == NULL)
  +		lpDesc=NULL;
  +	else
  +		LoadString(hInst,c_rgMenuItems [i].chDesc,lpDesc,128);
  +        wstrDesc = (LPCWSTR)lpDesc;
  +        //wstrDesc = c_rgMenuItems [i].pchDesc;
           if (wstrDesc != NULL) {
               nstrDesc = wcslen (wstrDesc);
               dwFlag = (c_rgMenuItems [i].pfnGetFlag != NULL)? (c_rgMenuItems [i].pfnGetFlag)(i) : 0;
  @@ -500,7 +556,7 @@
       if (pbstrText == NULL)
           return    E_INVALIDARG;
   
  -    *pbstrText    = SysAllocString (LANGBAR_ITEM_DESC);
  +    *pbstrText    = SysAllocString (_tfLangBarItemInfo.szDescription);
       return    (*pbstrText == NULL)? E_OUTOFMEMORY : S_OK;
   }
   
  
  
  
  1.6       +24 -1     saenaru/src/resource.h
  
  Index: resource.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/resource.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- resource.h	10 Oct 2006 08:12:59 -0000	1.5
  +++ resource.h	11 Oct 2006 03:46:34 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/resource.h,v 1.5 2006/10/10 08:12:59 wkpark Exp $
  + * $Saenaru: saenaru/src/resource.h,v 1.6 2006/10/11 03:46:34 wkpark Exp $
    */
   
   //{{NO_DEPENDENCIES}}
  @@ -93,6 +93,29 @@
   #define IDS_NOMEMORY                1022
   #define IDS_REGWORDRET              1023
   
  +#define IDS_INPUT_CMODE_DESC        2000
  +#define IDS_TOGGLE_HALFFULL_DESC    2001
  +#define IDS_KEYBOARD_OPTION_DESC    2100
  +#define IDS_MENU_HANGUL             2002
  +#define IDS_MENU_ASCII              2003
  +#define IDS_MENU_HANJA              2004
  +#define IDS_MENU_CANCEL             2005
  +#define IDS_MENU_OLD2BUL            2101
  +#define IDS_MENU_3FIN               2102
  +#define IDS_MENU_390                2103
  +#define IDS_MENU_NEW2BUL            2104
  +#define IDS_MENU_NEW3BUL            2105
  +#define IDS_MENU_AHNMATAE           2106
  +#define IDS_MENU_3SOON              2107
  +#define IDS_MENU_USER               2108
  +#define IDS_MENU_USER_COMP          2109
  +
  +#define IDS_MENU_ENV                2111
  +#define IDS_MENU_DVORAK             2112
  +#define IDS_MENU_ESC_ASCII          2113
  +#define IDS_MENU_EDIT_WORD_UNIT     2114
  +#define IDS_MENU_SHOW_KEYBOARD      2115
  +
   #define IDC_STATIC                      -1
   
   #define IDM_RECONVERT                   40001
  
  
  
  1.8       +65 -0     saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- saenaru.rc	10 Oct 2006 15:29:36 -0000	1.7
  +++ saenaru.rc	11 Oct 2006 03:46:34 -0000	1.8
  @@ -278,6 +278,39 @@
   STRINGTABLE DISCARDABLE 
   LANGUAGE 0x12, 0x1
   BEGIN
  +    IDS_INPUT_CMODE_DESC        "Է¹"
  +    IDS_TOGGLE_HALFFULL_DESC    "/ݰ ȯ"
  +    IDS_KEYBOARD_OPTION_DESC    "ۼ/Է± "
  +    IDS_MENU_HANGUL             "ѱ"
  +    IDS_MENU_ASCII              ""
  +    IDS_MENU_HANJA              ""
  +    IDS_MENU_CANCEL             ""
  +END
  +
  +STRINGTABLE DISCARDABLE 
  +LANGUAGE 0x12, 0x1
  +BEGIN
  +    IDS_MENU_ENV                "ȯ漳(&R)"
  +    IDS_MENU_DVORAK             "庸(&V)"
  +    IDS_MENU_ESC_ASCII          "ESC ȯ(&E)"
  +    IDS_MENU_EDIT_WORD_UNIT     "ܾ (&W)"
  +    IDS_MENU_SHOW_KEYBOARD      "Ű "
  +
  +    IDS_MENU_OLD2BUL            "ι(&2)"
  +    IDS_MENU_3FIN               "(&3)"
  +    IDS_MENU_390                "390(&9)"
  +    IDS_MENU_NEW2BUL            "ι(&D)"
  +    IDS_MENU_NEW3BUL            "(&S)"
  +    IDS_MENU_AHNMATAE           "ȸ(&A)"
  +    IDS_MENU_3SOON              " Ʒ(&N)"
  +    IDS_MENU_USER               " (&U)" 
  +    IDS_MENU_USER_COMP          " (&C)"
  +END
  +
  +
  +STRINGTABLE DISCARDABLE 
  +LANGUAGE 0x12, 0x1
  +BEGIN
       IDS_GL_NODICTIONARY     "Can not find dictionary"
       IDS_GL_TYPINGERROR      "Typing Error No Roman"
       IDS_GL_TESTGUIDELINESTR "TestGuideLine String"
  @@ -390,6 +423,38 @@
       IDS_REGWORDRET          "Fail to register Word"
   END
   
  +STRINGTABLE DISCARDABLE 
  +LANGUAGE 0x09, 0x1
  +BEGIN
  +    IDS_INPUT_CMODE_DESC        "Input Mode"
  +    IDS_TOGGLE_HALFFULL_DESC    "Fullwidth/Halfwidth Toggle"
  +    IDS_KEYBOARD_OPTION_DESC    "Keyboard/InputMethod Options"
  +    IDS_MENU_HANGUL             "Hangul"
  +    IDS_MENU_ASCII              "English"
  +    IDS_MENU_HANJA              "Ideograh"
  +    IDS_MENU_CANCEL             "Cancel"
  +END
  +
  +STRINGTABLE DISCARDABLE 
  +LANGUAGE 0x09, 0x1
  +BEGIN
  +    IDS_MENU_ENV                "Configuration(&C)"
  +    IDS_MENU_DVORAK             "D&Vorak"
  +    IDS_MENU_ESC_ASCII          "&ESC to Ascii Mode"
  +    IDS_MENU_EDIT_WORD_UNIT     "&Word Unit Edit"
  +    IDS_MENU_SHOW_KEYBOARD      "Show Keyboard"
  +
  +    IDS_MENU_OLD2BUL            "&2-Set"
  +    IDS_MENU_3FIN               "&3-Set Final"
  +    IDS_MENU_390                "3-Set 390"
  +    IDS_MENU_NEW2BUL            "New 2-Set (&D)"
  +    IDS_MENU_NEW3BUL            "New 2-Set (&S)"
  +    IDS_MENU_AHNMATAE           "&Ahnmatae"
  +    IDS_MENU_3SOON              "3-set Soo&Nare"
  +    IDS_MENU_USER               "&User defined" 
  +    IDS_MENU_USER_COMP          "&Compose Map"
  +END
  +
   #endif // English (U.S.) resources
   
   
  
  
  
  1.4       +3 -2      saenaru/src/tsf.h
  
  Index: tsf.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- tsf.h	8 Oct 2006 09:12:52 -0000	1.3
  +++ tsf.h	11 Oct 2006 03:46:34 -0000	1.4
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/tsf.h,v 1.3 2006/10/08 09:12:52 wkpark Exp $
  + * $Saenaru: saenaru/src/tsf.h,v 1.4 2006/10/11 03:46:34 wkpark Exp $
    */
   
   #if !defined (tsf_h)
  @@ -46,7 +46,8 @@
   typedef HRESULT (WINAPI *PTF_CREATETHREADMGR)(ITfThreadMgr**) ;
   typedef HRESULT (WINAPI *PTF_CREATELANGBARITEMMGR)(ITfLangBarItemMgr**);
   typedef struct {
  -    const WCHAR*    pchDesc ;
  +    //const WCHAR*    pchDesc ;
  +    UINT      chDesc ;
       void    (*pfnHandler)(void) ;
   } TSFLBMENUINFO ;
   
  
  
  


wkpark      06/10/13 06:57:34

  Modified:    src      dic.c
  Log:
  fixed last changes
  
  Revision  Changes    Path
  1.15      +2 -2      saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- dic.c	10 Oct 2006 11:24:59 -0000	1.14
  +++ dic.c	12 Oct 2006 21:57:34 -0000	1.15
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.14 2006/10/10 11:24:59 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.15 2006/10/12 21:57:34 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -308,7 +308,7 @@
       {
           if (!*lpb)
           {
  -            goto cvk_exit40;
  +            //goto cvk_exit40;
               //
               // make attribute
               //
  
  
  


wkpark      06/10/13 06:58:26

  Modified:    src      imm.c
  Log:
  alt (VK_MENU) fix for mozilla (?)
  
  Revision  Changes    Path
  1.16      +2 -2      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- imm.c	10 Oct 2006 07:59:34 -0000	1.15
  +++ imm.c	12 Oct 2006 21:58:26 -0000	1.16
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.15 2006/10/10 07:59:34 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.16 2006/10/12 21:58:26 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -277,7 +277,7 @@
   
           if (lpbKeyState[VK_MENU] & 0x80)
           {
  -            MakeResultString(hIMC,TRUE);
  +            //MakeResultString(hIMC,TRUE);
               fRet = FALSE;
           }
           else if (lpbKeyState[VK_CONTROL] & 0x80)
  
  
  


wkpark      06/10/13 07:01:01

  Modified:    src      ui.c
  Log:
  some misc changes
   * add shadow style for candidate lists
   * fixed dragUI(): do not drag with LBUTTON
   * use BEAM icon with a compstr window
  
  Revision  Changes    Path
  1.12      +11 -6     saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ui.c	10 Oct 2006 15:28:30 -0000	1.11
  +++ ui.c	12 Oct 2006 22:01:01 -0000	1.12
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.11 2006/10/10 15:28:30 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.12 2006/10/12 22:01:01 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -94,7 +94,7 @@
       wc.cbClsExtra     = 0;
       wc.cbWndExtra     = UIEXTRASIZE;
       wc.hInstance      = hInstance;
  -    wc.hCursor        = LoadCursor( NULL, IDC_ARROW );
  +    wc.hCursor        = LoadCursor( NULL, IDC_IBEAM );
       wc.hIcon          = NULL;
       wc.lpszMenuName   = (LPTSTR)NULL;
       wc.lpszClassName  = (LPTSTR)szCompStrClassName;
  @@ -108,13 +108,18 @@
       //
       // register class of candidate window.
       //
  +    //
       wc.cbSize         = sizeof(WNDCLASSEX);
  -    wc.style          = CS_SAENARU;
  +    wc.style          = CS_SAENARU|CS_DROPSHADOW;
       wc.lpfnWndProc    = CandWndProc;
       wc.cbClsExtra     = 0;
       wc.cbWndExtra     = UIEXTRASIZE;
       wc.hInstance      = hInstance;
  +#if (WINVER >= 0x0410)
  +    wc.hCursor        = LoadCursor( NULL, IDC_HAND );
  +#else
       wc.hCursor        = LoadCursor( NULL, IDC_ARROW );
  +#endif
       wc.hIcon          = NULL;
       wc.lpszMenuName   = (LPTSTR)NULL;
       wc.lpszClassName  = (LPTSTR)szCandClassName;
  @@ -414,6 +419,7 @@
               break;
   
           case WM_IME_COMPOSITIONFULL:
  +            //XXX
               break;
   
           case WM_IME_SELECT:
  @@ -534,7 +540,7 @@
               {
                    if (hUICurIMC && IsCompStr(hUICurIMC))
                    MakeResultString(hUICurIMC,TRUE);
  -                MyDebugPrint((TEXT("WM_LBUTTONDOWN\r\n")));
  +                 MyDebugPrint((TEXT("WM_LBUTTONDOWN\r\n")));
               }
   
               return DefWindowProc(hWnd,message,wParam,lParam);
  @@ -917,8 +923,7 @@
       switch (message)
       {
           case WM_SETCURSOR:
  -            if ( HIWORD(lParam) == WM_LBUTTONDOWN
  -                || HIWORD(lParam) == WM_RBUTTONDOWN ) 
  +            if ( HIWORD(lParam) == WM_RBUTTONDOWN ) 
               {
                   SetCursor(LoadCursor(NULL,IDC_SIZEALL));
   
  
  
  


wkpark      06/10/13 07:02:59

  Modified:    src      sources
  Log:
  slightly change for new WINDDK (390.1830): it does not accept some compile options
  
  Revision  Changes    Path
  1.3       +7 -2      saenaru/src/sources
  
  Index: sources
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/sources,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- sources	8 Oct 2006 09:12:52 -0000	1.2
  +++ sources	12 Oct 2006 22:02:59 -0000	1.3
  @@ -6,7 +6,7 @@
   DLLBASE=0x00500000
   
   #C_DEFINES=-DWINVER=0x501
  -C_DEFINES=-DWINVER=0x40A
  +C_DEFINES=-DWINVER=0x501
   
   #
   #C_DEFINES=-DWINVER=0x40A -DNO_TSF
  @@ -15,7 +15,10 @@
   
   !if "$(DDKBUILDENV)" == "chk"
   C_DEFINES=$(C_DEFINES) -DDEBUG=1 -DDEBUG_LV=103
  -MSC_OPTIMIZATION=-Zi -ZI -Yd -Od
  +#MSC_OPTIMIZATION=-Zi -ZI -Yd -Od
  +MSC_OPTIMIZATION=-Zi -Yd -Od
  +!else
  +MSC_OPTIMIZATION=-O2
   !endif
   
   NO_NTDLL=1
  @@ -25,6 +28,8 @@
   
   INCLUDES=.
   
  +#DDK_LIB_PATH=D:\Micros~1\lib
  +
   SOURCES= \
           config.c \
           data.c \
  
  
  


wkpark      06/10/13 07:08:30

  Modified:    src      uicand.c
  Log:
  fancy candidate window more like as hangul IME 2003
  
  Revision  Changes    Path
  1.6       +183 -41   saenaru/src/uicand.c
  
  Index: uicand.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicand.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- uicand.c	8 Oct 2006 22:07:19 -0000	1.5
  +++ uicand.c	12 Oct 2006 22:08:30 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicand.c,v 1.5 2006/10/08 22:07:19 wkpark Exp $
  + * $Saenaru: saenaru/src/uicand.c,v 1.6 2006/10/12 22:08:30 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -65,13 +65,37 @@
       switch (message)
       {
           case WM_PAINT:
  +            MyDebugPrint((TEXT(" *** WM_PAINT\r\n")));
               PaintCandWindow(hWnd);
               break;
  +        case WM_CREATE:
  +            MyDebugPrint((TEXT(" * WM_CREATE Cand\r\n")));
  +            break;
  +        case WM_MOUSEACTIVATE:
  +            MyDebugPrint((TEXT(" * WM_MOUSEACTIVATE\r\n")));
   
  -        case WM_SETCURSOR:
  -#if (WINVER >= 0x0500)
  -            SetCursor(LoadCursor(NULL,IDC_HAND));
  +            return MA_NOACTIVATE;
  +            //return MA_NOACTIVATEANDEAT;
  +            break;
  +        case WM_DESTROY:
  +            MyDebugPrint((TEXT(" * WM_DESTORY Cand\r\n")));
  +            break;
  +#if 0
  +        case SBM_ENABLE_ARROWS:
  +            MyDebugPrint((TEXT(" * SBM_ENABLE_ARROWS\r\n")));
  +            break;
  +
  +        case SBM_GETSCROLLBARINFO:
  +            MyDebugPrint((TEXT(" * SBM_GETSCROLLBARINFO\r\n")));
  +            break;
   #endif
  +        case WM_SETCURSOR:
  +        case WM_MOUSEMOVE:
  +        case WM_LBUTTONUP:
  +        case WM_RBUTTONUP:
  +
  +            DragUI(hWnd,message,wParam,lParam);
  +
               if (dy == 0)
               {
                   TEXTMETRIC tm;
  @@ -79,30 +103,29 @@
   
                   hDC = CreateIC(TEXT("DISPLAY"),NULL,NULL,NULL);
                   GetTextMetrics(hDC,&tm);
  -                dy = tm.tmHeight + tm.tmExternalLeading;
  +                dy = tm.tmHeight + tm.tmExternalLeading + 4;
                   DeleteDC(hDC);
               }
   
               select = 0;
               offset = 0;
  -            {
  +            while (HIWORD(lParam) == WM_LBUTTONDOWN) {
  +                HDC hDC;
  +                PAINTSTRUCT ps;
                   GetCursorPos(&pt);
                   ScreenToClient(hWnd,&pt);
                   GetClientRect(hWnd,&rc);
  -                if (!PtInRect(&rc,pt))
  -                    return 0;
  +
  +                if (!PtInRect(&rc,pt)) {
  +                    // not in the candlist wind
  +                    break;
  +                }
   
                   pt.y -= GetSystemMetrics(SM_CYEDGE);
                   if (pt.y > 0)
                       select = pt.y / dy + ((pt.y % dy) ? 1:0);
                   if (select == 0)
                       offset = -2;
  -            }
  -            if ((HIWORD(lParam) != WM_LBUTTONDOWN) &&
  -                (HIWORD(lParam) != WM_RBUTTONDOWN)) 
  -                 return DefWindowProc(hWnd,message,wParam,lParam);
  -            if ((HIWORD(lParam) == WM_LBUTTONDOWN))
  -            {
   #if 0
                   else if (select > 9)
                   {
  @@ -120,18 +143,21 @@
                   {
                       lpIMC = ImmLockIMC(hIMC);
                       ConvHanja(hIMC,offset,select);
  +                    // XXX MakeResultString(hIMC,TRUE);
                       ImmUnlockIMC(hIMC);
  -                    break;
                   }
  +                break;
               }
  -        case WM_MOUSEMOVE:
  -        case WM_LBUTTONUP:
  -        case WM_RBUTTONUP:
  -            DragUI(hWnd,message,wParam,lParam);
  -            if ((message == WM_LBUTTONUP) || (message == WM_RBUTTONUP)) {
  -                MyDebugPrint((TEXT(" $ CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
  -                SetWindowLong(hWnd,FIGWL_MOUSE,0L);
  +
  +            if ((message == WM_SETCURSOR) &&
  +                    (HIWORD(lParam) != WM_LBUTTONDOWN) &&
  +                    (HIWORD(lParam) != WM_RBUTTONDOWN)) {
  +                return DefWindowProc(hWnd,message,wParam,lParam);
               }
  +
  +            // MyDebugPrint((TEXT(" $ CANDMOVE %dx%d\n"),LOWORD(lParam),HIWORD(lParam)));
  +            if ((message == WM_LBUTTONUP) || (message == WM_RBUTTONUP))
  +                SetWindowLong(hWnd,FIGWL_MOUSE,0L);
               break;
   
           case WM_MOVE:
  @@ -142,10 +168,67 @@
                   SendMessage(hUIWnd,WM_UI_CANDMOVE,wParam,lParam);
               break;
   
  +        case WM_VSCROLL:
  +        {
  +            LPCANDIDATEINFO lpCandInfo;
  +            LPCANDIDATELIST lpCandList;
  +            int select=0;
  +            int offset=0;
  +            int sel=0;
  +            int yPos=0;
  +            hSvrWnd = (HWND)GetWindowLongPtr(hWnd,FIGWL_SVRWND);
  +
  +            if (!(hIMC = (HIMC)GetWindowLongPtr(hSvrWnd,IMMGWLP_IMC)) )
  +                // XXX not occur
  +                break;
  +
  +            lpIMC = ImmLockIMC(hIMC);
  +
  +            lpCandInfo= (LPCANDIDATEINFO)ImmLockIMCC(lpIMC->hCandInfo);
  +            lpCandList = (LPCANDIDATELIST)((LPSTR)lpCandInfo  + lpCandInfo->dwOffset[0]);
  +            sel = lpCandList->dwSelection % lpCandList->dwPageSize;
  +            // get the current selected number
  +            // dwPageSize <= 9 (default)
  +
  +            switch (LOWORD(wParam)) 
  +            { 
  +                case SB_PAGEUP:
  +                    offset=-2;
  +                    break;
  +                case SB_PAGEDOWN:
  +                    offset=2;
  +                    break;
  +                case SB_LINEUP:
  +                    offset=-1;
  +                    break;
  +                case SB_LINEDOWN:
  +                    offset=1;
  +
  +                    break;
  +                case SB_THUMBPOSITION:
  +                    yPos = HIWORD(wParam);
  +                case SB_THUMBTRACK:
  +                    yPos = HIWORD(wParam);
  +                    MyDebugPrint((TEXT("THUMB Track %d\n"),yPos));
  +                    lpCandList->dwSelection=yPos;
  +                    SetScrollPos(hWnd,SB_VERT,yPos,TRUE);
  +
  +                    break;
  +                default:
  +                    break;
  +            }
  +
  +            MyDebugPrint((TEXT("THUMB %d\n"),yPos));
  +
  +            ConvHanja(hIMC,offset,select);
  +            ImmUnlockIMCC(lpIMC->hCandInfo);
  +            ImmUnlockIMC(hIMC);
  +        }
  +            break;
           default:
  -            MyDebugPrint((TEXT("WM default message: %x\n"),message));
               if (!MyIsIMEMessage(message))
                   return DefWindowProc(hWnd,message,wParam,lParam);
  +
               break;
       }
       return 0L;
  @@ -256,6 +339,9 @@
   {
       POINT pt;
   
  +    LPCANDIDATEINFO lpCandInfo;
  +    LPCANDIDATELIST lpCandList;
  +
       MyDebugPrint((TEXT("CreateCandWindow\n")));
       // CandWindow CompWindow ġ  ȴ.
       // ׷, CompWindow  쵵 ִ (е)
  @@ -275,15 +361,51 @@
   
       if (!IsWindow(lpUIExtra->uiCand.hWnd))
       {
  +        SCROLLINFO sScrollInfo;
  +
           lpUIExtra->uiCand.hWnd = 
  -                CreateWindowEx(WS_EX_WINDOWEDGE,
  +                CreateWindowEx(WS_EX_WINDOWEDGE|
  +#if (WINVER >= 0x0500)
  +                             WS_EX_COMPOSITED|
  +#endif
  +                             WS_EX_RIGHTSCROLLBAR,
                                (LPTSTR)szCandClassName,NULL,
  -                             WS_COMPNODEFAULT,
  +                             WS_COMPNODEFAULT|
  +                             WS_DISABLED|WS_VSCROLL|
  +                             SBS_VERT|SBS_RIGHTALIGN|SBS_SIZEBOX,
                                //WS_COMPDEFAULT | WS_DLGFRAME,
                                lpUIExtra->uiCand.pt.x,
                                lpUIExtra->uiCand.pt.y,
  -                             1,1,
  +                             CW_USEDEFAULT,100,
                                hUIWnd,NULL,hInst,NULL);
  +
  +        sScrollInfo.cbSize=sizeof(SCROLLINFO);
  +        sScrollInfo.fMask=SIF_POS|SIF_RANGE;
  +        sScrollInfo.nMin=0;
  +        sScrollInfo.nMax=30; // some arbitary value
  +        sScrollInfo.nPage=0;
  +        sScrollInfo.nPos=0;
  +        sScrollInfo.nTrackPos=0;
  +
  +        SetScrollInfo((HWND)lpUIExtra->uiCand.hWnd,SB_VERT,
  +                (LPSCROLLINFO)&sScrollInfo,FALSE);
  +    }
  +
  +    // get candidate info dwCount (is the number of pages
  +    if (lpCandInfo= (LPCANDIDATEINFO)ImmLockIMCC(lpIMC->hCandInfo)) {
  +        int count = 0;
  +        lpCandList = (LPCANDIDATELIST)((LPSTR)lpCandInfo  + lpCandInfo->dwOffset[0]);
  +        count = lpCandList->dwCount - 1;
  +
  +        MyDebugPrint((TEXT("CandList count = %d\r\n"),count));
  +
  +        // to make popup with scrollbar using SetCapture();
  +        EnableWindow( lpUIExtra->uiCand.hWnd, TRUE);
  +        // init scroll pos
  +        SetScrollRange( lpUIExtra->uiCand.hWnd, SB_VERT, 0, count, TRUE);
  +        SetScrollPos( lpUIExtra->uiCand.hWnd, SB_VERT, 0, TRUE);
  +        EnableScrollBar( lpUIExtra->uiCand.hWnd, SB_VERT, ESB_ENABLE_BOTH);
  +        ShowScrollBar( lpUIExtra->uiCand.hWnd, SB_VERT, TRUE);
       }
   
       SetWindowLongPtr(lpUIExtra->uiCand.hWnd,FIGWL_SVRWND,(LONG_PTR)hUIWnd);
  @@ -307,23 +429,26 @@
       LPCANDIDATELIST lpCandList;
       HBRUSH hbr;
       HDC hDC;
  -    RECT rc;
  +    RECT rc,rc2;
       LPMYSTR lpstr;
       int height;
       DWORD i;
       SIZE sz;
       HWND hSvrWnd;
       HBRUSH hbrHightLight = CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT));
  -#if 0
  -    HBRUSH hbrLGR = GetStockObject(LTGRAY_BRUSH);
  -#else
       HBRUSH hbrLGR = (HBRUSH)(COLOR_BTNFACE + 1);
  -#endif
       HFONT hOldFont = NULL;
  +    HBRUSH hBrush;
   
       GetClientRect(hCandWnd,&rc);
  +    rc2.left=rc.left+25; // left margin: 25
  +    rc2.right=rc.right - 1;
  +    rc2.top=rc.top+1;
  +    rc2.bottom=rc.bottom- 8 * GetSystemMetrics(SM_CYEDGE); // bottom space: 8
       hDC = BeginPaint(hCandWnd,&ps);
  +    hBrush=CreateSolidBrush(GetBkColor(hDC));
       FillRect(hDC,&rc,(HBRUSH) (COLOR_BTNFACE + 1));
  +    FillRect(hDC,&rc2,hBrush); // fill text area
       SetBkMode(hDC,TRANSPARENT);
   
   #if 0
  @@ -347,7 +472,7 @@
               for (i = lpCandList->dwPageStart; 
                    i < (lpCandList->dwPageStart + lpCandList->dwPageSize); i++)
               {
  -                TCHAR num[3];
  +                TCHAR num[4];
                   wsprintf(num, TEXT("%d "), i % lpCandList->dwPageSize + 1);
   
                   if (i >= lpCandList->dwCount) 
  @@ -370,10 +495,14 @@
                       SelectObject(hDC,hbr);
                       SetTextColor(hDC,RGB(0,0,0));
                   }
  -                if (i < lpCandList->dwCount)
  -                    MyTextOut(hDC,GetSystemMetrics(SM_CXEDGE),height,num,Mylstrlen(num));
  -                MyTextOut(hDC,10 + GetSystemMetrics(SM_CXEDGE),height,lpstr,Mylstrlen(lpstr));
  -                height += sz.cy;
  +                if (i < lpCandList->dwCount) {
  +                    MyTextOut(hDC,5 + GetSystemMetrics(SM_CXEDGE),height,num,Mylstrlen(num));
  +                    //MyTextOut(hDC,6 + GetSystemMetrics(SM_CXEDGE),height,num,Mylstrlen(num));
  +                }
  +                MyTextOut(hDC,25 + GetSystemMetrics(SM_CXEDGE),height,lpstr,Mylstrlen(lpstr));
  +                // 25 is left margin of candwin
  +                height += sz.cy + 4;
  +                // 4 is linespace
               }
               ImmUnlockIMCC(lpIMC->hCandInfo);
           }
  @@ -384,12 +513,23 @@
       }
       EndPaint(hCandWnd,&ps);
   
  +    DeleteDC(hDC);
       DeleteObject(hbrHightLight);
  +    DeleteObject(hBrush);
  +
  +    {
  +        int pos= GetScrollPos(hCandWnd,SB_VERT);
  +        MyDebugPrint((TEXT(" * Current Scroll Pos: %d\r\n"),pos));
  +
  +        pos = lpCandList->dwSelection;
  +        SetScrollPos(hCandWnd,SB_VERT,pos,TRUE);
  +        MyDebugPrint((TEXT(" * Cand Scroll Pos: %d\r\n"),pos));
  +    }
   }
   
   /**********************************************************************/
   /*                                                                    */
  -/* ResizeCandWindow()                                                   */
  +/* ResizeCandWindow()                                                 */
   /*                                                                    */
   /**********************************************************************/
   void PASCAL ResizeCandWindow( LPUIEXTRA lpUIExtra,LPINPUTCONTEXT lpIMC )
  @@ -423,7 +563,7 @@
                   MyGetTextExtentPoint(hDC,lpstr,Mylstrlen(lpstr),&sz);
                   if (width < sz.cx)
                       width = sz.cx;
  -                height += sz.cy;
  +                height += sz.cy + 4; // plus linespace 4
               }
               ImmUnlockIMCC(lpIMC->hCandInfo);
           }
  @@ -436,9 +576,11 @@
           MoveWindow(lpUIExtra->uiCand.hWnd,
                          rc.left,
                          rc.top,
  -                       width+ 10 + 4 * GetSystemMetrics(SM_CXEDGE),
  -                       /* 10 is a left margin */
  -                       height+ 4 * GetSystemMetrics(SM_CYEDGE),
  +                       width+ 25 + 4 + 4 * GetSystemMetrics(SM_CXEDGE) +
  +                       GetSystemMetrics(SM_CXVSCROLL),
  +                       /* 25 is a left margin */
  +                       height+ 8 * GetSystemMetrics(SM_CYEDGE),
  +                       // bottom margin is 8 * SM_CYEDGE
                          TRUE);
       }
   }
  
  
  


wkpark      06/10/13 07:08:57

  Modified:    src      version.h
  Log:
  update version
  
  Revision  Changes    Path
  1.2       +3 -3      saenaru/src/version.h
  
  Index: version.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/version.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- version.h	10 Oct 2006 08:05:54 -0000	1.1
  +++ version.h	12 Oct 2006 22:08:57 -0000	1.2
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/version.h,v 1.1 2006/10/10 08:05:54 wkpark Exp $
  + * $Saenaru: saenaru/src/version.h,v 1.2 2006/10/12 22:08:57 wkpark Exp $
    */
   
   #define VER_MAJOR	 1
  @@ -35,8 +35,8 @@
   #define VER_MINOR	 0
   #define VER_MINOR_STR	"0"
   
  -#define VER_BUILD	 1010
  -#define VER_BUILD_STR	"1010"
  +#define VER_BUILD	 1013
  +#define VER_BUILD_STR	"1013"
   #define VER_PATCHLEVEL	     0
   #define VER_PATCHLEVEL_STR  "0"
   
  
  
  


wkpark      06/10/13 07:13:53

  Modified:    .        Makefile
  Log:
  fix for new DDK
  
  Revision  Changes    Path
  1.3       +3 -3      saenaru/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/Makefile,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Makefile	27 Dec 2003 15:20:42 -0000	1.2
  +++ Makefile	12 Oct 2006 22:13:53 -0000	1.3
  @@ -1,12 +1,12 @@
   #
   # Maintainer Buildtool for nmake
   #
  -# $Saenaru: saenaru/Makefile,v 1.2 2003/12/27 15:20:42 perky Exp $
  +# $Saenaru: saenaru/Makefile,v 1.3 2006/10/12 22:13:53 wkpark Exp $
   #
   
  -RELVERSION=	031226
  +RELVERSION=	061013
   SETUPEXE=	setup\Saenaru-$(RELVERSION).exe
  -IMEBUILDDIR=	src\objfre\i386
  +IMEBUILDDIR=	src\objfre_wxp_x86\i386
   NSISDIR=	C:\Program Files\NSIS
   
   all: $(SETUPEXE)
  
  
  


wkpark      06/10/13 07:14:09

  Modified:    setup    saenaru.nsi
  Log:
  fix for new DDK
  
  Revision  Changes    Path
  1.5       +11 -3     saenaru/setup/saenaru.nsi
  
  Index: saenaru.nsi
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/saenaru.nsi,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- saenaru.nsi	2 Dec 2004 12:18:08 -0000	1.4
  +++ saenaru.nsi	12 Oct 2006 22:14:09 -0000	1.5
  @@ -1,10 +1,10 @@
   ; Saenaru Installation Script
   ; Written by Hye-Shik Chang <perky@i18n.org>
  -; $Saenaru: saenaru/setup/saenaru.nsi,v 1.4 2004/12/02 12:18:08 wkpark Exp $
  +; $Saenaru: saenaru/setup/saenaru.nsi,v 1.5 2006/10/12 22:14:09 wkpark Exp $
   
  -!define RELVERSION      "041202"
  +!define RELVERSION      "061013"
   !define REGISTRY_PATH   "Software\OpenHangulProject\Saenaru"
  -!define DDKBUILDDIR     "..\src\objfre\i386"
  +!define DDKBUILDDIR     "..\src\objfre_wxp_x86\i386"
   !define RESOURCEDIR     "..\resource"
   !define SRCROOTDIR      ".."
   !define SMPATH          "$SMPROGRAMS\"
  @@ -27,6 +27,10 @@
     
     ;Get install folder from registry if available
     InstallDirRegKey HKLM "${REGISTRY_PATH}" ""
  +  InstallDirRegKey HKLM "${REGISTRY_PATH}\Dictionary" ""
  +  InstallDirRegKey HKLM "${REGISTRY_PATH}\Keyboard" ""
  +  InstallDirRegKey HKLM "${REGISTRY_PATH}\Compose" ""
  +
   
   ;--------------------------------
   ;Pages
  @@ -82,6 +86,8 @@
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "Layout text" " ѱ Է±"
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "Layout display name" "ѱ Է± ()"
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "IME file" "SAENARU.IME"
  +
  +  WriteRegStr HKLM "${REGISTRY_PATH}\Dictionary" "default" "SAENARU.DIC"
     
     ;Create uninstaller
     WriteUninstaller "$INSTDIR\Uninstall.exe"
  @@ -160,6 +166,8 @@
     ; set as default IME
     WriteRegStr HKCU "Keyboard Layout\Preload" "1" "e0120412"
   
  +  ; set some Saenaru reg entries.
  +
     ; get last IME
     StrCpy $1 1
     StrCpy $3 2
  
  
  


wkpark      06/10/13 07:26:43

  Added:       resource nabi.dic symwin.dic
  Log:
  add dictionary files
   * nabi.dic : Hanja dictionary form the Nabi project
   * symwin.dic : symbol dictionary (separated from the nabi.dic)
  
  Revision  Changes    Path
  1.1                  saenaru/resource/nabi.dic
  
  	<<Binary file>>
  
  
  1.1                  saenaru/resource/symwin.dic
  
  	<<Binary file>>
  
  


wkpark      06/10/13 07:40:05

  Modified:    setup    saenaru.nsi
  Log:
  update
  
  Revision  Changes    Path
  1.6       +14 -3     saenaru/setup/saenaru.nsi
  
  Index: saenaru.nsi
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/saenaru.nsi,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- saenaru.nsi	12 Oct 2006 22:14:09 -0000	1.5
  +++ saenaru.nsi	12 Oct 2006 22:40:05 -0000	1.6
  @@ -1,6 +1,6 @@
   ; Saenaru Installation Script
   ; Written by Hye-Shik Chang <perky@i18n.org>
  -; $Saenaru: saenaru/setup/saenaru.nsi,v 1.5 2006/10/12 22:14:09 wkpark Exp $
  +; $Saenaru: saenaru/setup/saenaru.nsi,v 1.6 2006/10/12 22:40:05 wkpark Exp $
   
   !define RELVERSION      "061013"
   !define REGISTRY_PATH   "Software\OpenHangulProject\Saenaru"
  @@ -26,7 +26,7 @@
     InstallDir "$WINDIR\IME\Saenaru"
     
     ;Get install folder from registry if available
  -  InstallDirRegKey HKLM "${REGISTRY_PATH}" ""
  +  ;;InstallDirRegKey HKLM "${REGISTRY_PATH}" ""
     InstallDirRegKey HKLM "${REGISTRY_PATH}\Dictionary" ""
     InstallDirRegKey HKLM "${REGISTRY_PATH}\Keyboard" ""
     InstallDirRegKey HKLM "${REGISTRY_PATH}\Compose" ""
  @@ -74,6 +74,9 @@
     SetOverwrite lastused
     SetOutPath "$INSTDIR"
     File "${RESOURCEDIR}\saenaru.dic"
  +;;  File "${RESOURCEDIR}\word.dic"
  +  File "${RESOURCEDIR}\symwin.dic"
  +  File "${RESOURCEDIR}\nabi.dic"
     File "${RESOURCEDIR}\2set3set.reg"
     File "${RESOURCEDIR}\ahnmatae.reg"
     File /oname=saenaru.ico "${RESOURCEDIR}\about.ico"
  @@ -87,7 +90,9 @@
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "Layout display name" "ѱ Է± ()"
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "IME file" "SAENARU.IME"
   
  -  WriteRegStr HKLM "${REGISTRY_PATH}\Dictionary" "default" "SAENARU.DIC"
  +  WriteRegStr HKLM "${REGISTRY_PATH}\Dictionary" "" "nabi.dic"
  +  WriteRegStr HKLM "${REGISTRY_PATH}\Dictionary" "Symbol" "symwin.dic"
  +  ;;WriteRegStr HKLM "${REGISTRY_PATH}\Dictionary" "Word" "word.dic"
     
     ;Create uninstaller
     WriteUninstaller "$INSTDIR\Uninstall.exe"
  @@ -204,6 +209,9 @@
   
     Delete "$SYSDIR\saenaru.ime"
     Delete "$INSTDIR\saenaru.dic"
  +  Delete "$INSTDIR\nabi.dic"
  +  Delete "$INSTDIR\winsym.dic"
  +  ;;Delete "$INSTDIR\word.dic"
   
     Delete "$INSTDIR\Source\DIRS"
     Delete "$INSTDIR\Source\LICENSE"
  @@ -229,6 +237,9 @@
     Delete "$INSTDIR\Source\resource\keyboard.ico"
     Delete "$INSTDIR\Source\resource\penindic.ico"
     Delete "$INSTDIR\Source\resource\saenaru.dic"
  +  Delete "$INSTDIR\Source\resource\winsym.dic"
  +  Delete "$INSTDIR\Source\resource\nabi.dic"
  +  ;;Delete "$INSTDIR\Source\resource\word.dic"
     Delete "$INSTDIR\Source\resource\saenaru.dlg"
     Delete "$INSTDIR\Source\resource\saenaru.ico"
     Delete "$INSTDIR\Source\resource\saenaru.rcv"
  
  
  


wkpark      06/10/14 11:21:59

  Modified:    src      hangul.c
  Log:
  fix for the Hangul 2004 (do not set CursorPos)
  
  Revision  Changes    Path
  1.15      +5 -5      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- hangul.c	8 Oct 2006 22:11:00 -0000	1.14
  +++ hangul.c	14 Oct 2006 02:21:59 -0000	1.15
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.14 2006/10/08 22:11:00 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.15 2006/10/14 02:21:59 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1679,8 +1679,8 @@
       {
           GnMsg.message = WM_IME_COMPOSITION;
           GnMsg.wParam = cs;
  -        GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -        //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; //ѱ IME 2002,2003
  +        //GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +        GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; //ѱ IME 2002,2003
           if (dwImeFlag & SAENARU_ONTHESPOT)
               GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
           GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  @@ -1772,8 +1772,8 @@
   #endif
               GnMsg.message = WM_IME_COMPOSITION;
               GnMsg.wParam = cs;
  -            GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -            //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
  +            //GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +            GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
               if (dwImeFlag & SAENARU_ONTHESPOT)
                   GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  
  
  


wkpark      06/10/14 11:23:39

  Modified:    src      dic.c
  Log:
  fix for the Hangul 2004 (do not set CursorPos)
  add some comments
  small fix for reconversion
  
  Revision  Changes    Path
  1.16      +35 -17    saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- dic.c	12 Oct 2006 21:57:34 -0000	1.15
  +++ dic.c	14 Oct 2006 02:23:39 -0000	1.16
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.15 2006/10/12 21:57:34 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.16 2006/10/14 02:23:39 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -182,6 +182,7 @@
           GnMsg.message = WM_IME_COMPOSITION;
           GnMsg.wParam = 0;
           GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +        //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
           GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
   
           ImmUnlockIMCC(lpIMC->hCompStr);
  @@ -320,9 +321,8 @@
               OutputDebugString(TEXT("ConvHanja #1\r\n"));
               GnMsg.message = WM_IME_COMPOSITION;
               GnMsg.wParam = (WCHAR) *lpT2;
  -            //GnMsg.lParam = GCS_COMPSTR | GCS_CURSORPOS |
  -            //               GCS_COMPATTR | GCS_COMPREADATTR;
               GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +            //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
               if (dwImeFlag & SAENARU_ONTHESPOT)
                   GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  @@ -397,6 +397,7 @@
                       GnMsg.message = WM_IME_COMPOSITION;
                       GnMsg.wParam = 0;
                       GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +                    //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
                       GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
                       OutputDebugString(TEXT(" *** ConvHanja: GnMsg > 1\r\n"));
                   } else
  @@ -405,6 +406,7 @@
                       GnMsg.message = WM_IME_COMPOSITION;
                       GnMsg.wParam = cs;
                       GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +                    //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
                       if (dwImeFlag & SAENARU_ONTHESPOT)
                           GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
                       GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  @@ -682,7 +684,8 @@
           {
               GnMsg.message = WM_IME_COMPOSITION;
               GnMsg.wParam = cs;
  -            GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +            //GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +            GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
               if (dwImeFlag & SAENARU_ONTHESPOT)
                   GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  @@ -705,6 +708,7 @@
               GnMsg.message = WM_IME_COMPOSITION;
               GnMsg.wParam = 0;
               GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +            //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
               if (dwImeFlag & SAENARU_ONTHESPOT)
                   GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  @@ -1026,6 +1030,7 @@
       GnMsg.message = WM_IME_COMPOSITION;
       GnMsg.wParam = 0;
       GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART | dwGCR;
  +    //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR | dwGCR; // ѱ IME 2002,2003
       GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
   
   ac_exit:
  @@ -1144,7 +1149,18 @@
                   ns=GetModuleFileName(NULL,(LPTSTR)szFname,sizeof(szFname));
                   if (ns > 0) {
                       // check application names
  -                    OutputDebugString(szFname);
  +                    int i;
  +                    LPTSTR lpFname;
  +
  +                    OutputDebugString(szFname); // application path.
  +
  +                    for (i=ns;i>0;i--) {
  +                        if (szFname[i] == TEXT('\\')) break;
  +                    }
  +                    if (i>0) {
  +                        lpFname=szFname + i + 1;
  +                        OutputDebugString(lpFname); // application real name
  +                    }
                   }
   
                   if (dwSize) {
  @@ -1207,8 +1223,18 @@
                           MyOutputDebugString(lpDump);
                           OutputDebugString(TEXT("\r\n"));
   #endif
  -        
  -        		{
  +                        convOk = (BOOL) MyImmRequestMessage(hIMC, IMR_CONFIRMRECONVERTSTRING, (LPARAM)lpRS);
  +#ifdef DEBUG
  +                        if (!convOk) {
  +                            // why fail for MS IE ? XXX
  +                            OutputDebugString(TEXT(" *** fail CONFIRM RECONVERT\r\n"));
  +                        } else {
  +                            OutputDebugString(TEXT(" *** success CONFIRM RECONVERT\r\n"));
  +                            wsprintf(szDev, TEXT(" *** result: dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  +                            OutputDebugString(szDev);
  +                        }
  +#endif
  +        		if (convOk) {
           		    LPCOMPOSITIONSTRING	lpCompStr;
           
           		    if (ImmGetIMCCSize (lpIMC->hCompStr) < sizeof (MYCOMPSTR))
  @@ -1292,16 +1318,6 @@
                                       OutputDebugString(TEXT(" *** lpCompStr== NULL\r\n"));
                                   }
                               }
  -                            convOk = (BOOL) MyImmRequestMessage(hIMC, IMR_CONFIRMRECONVERTSTRING, (LPARAM)lpRS);
  -#ifdef DEBUG
  -                            if (!convOk) {
  -                                OutputDebugString(TEXT(" *** fail CONFIRM RECONVERT\r\n"));
  -                            } else {
  -                                OutputDebugString(TEXT(" *** success CONFIRM RECONVERT\r\n"));
  -                                wsprintf(szDev, TEXT(" *** result: dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  -                                OutputDebugString(szDev);
  -                            }
  -#endif
           	            ImmUnlockIMCC (lpIMC->hCompStr);
           		}
                       }
  @@ -1354,6 +1370,8 @@
                   GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
                   OutputDebugString(TEXT("DicKeydown: WM_IME_KEYDOWN\r\n"));
               } else {
  +                //   ü  candidateƮ ,  ׷ ʴ.
  +                // ׷ ̷  ϰ    Ưó ؾ Ѵ.
                   // always generage WM_IME_KEYDOWN for VK_HANJA
                   TRANSMSG GnMsg;
                   GnMsg.message = WM_IME_KEYDOWN;
  
  
  


wkpark      06/10/14 11:25:48

  Modified:    src      imm.c
  Log:
  support Reconversion under ASCII Cmode (hack hack)
  use ImmUnlockIMC() properly
  
  Revision  Changes    Path
  1.17      +47 -10    saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- imm.c	12 Oct 2006 21:58:26 -0000	1.16
  +++ imm.c	14 Oct 2006 02:25:48 -0000	1.17
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.16 2006/10/12 21:58:26 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.17 2006/10/14 02:25:48 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -126,6 +126,8 @@
               break;
   
           case IME_ESC_HANJA_MODE:
  +            // EditPlus only use it. XXX
  +            // EditPlus does not receive IMR_* message
               MyDebugPrint((TEXT("\tIME_ESC_HANJA_MODE:\r\n")));
               lRet = FALSE;
               break;
  @@ -194,13 +196,6 @@
       if (!(lpIMC = ImmLockIMC(hIMC)))
           return FALSE;
   
  -#if 0
  -    // check VK_HANJA and VK_F9 key
  -    if ( (vkey == VK_F9 || vkey == VK_HANJA) && !IsCompStr(hIMC)) {
  -
  -    }
  -#endif
  -
       // SHIFT-SPACE
       // See ui.c how to hook the shift-space event.
       if ( !(lKeyData & 0x80000000) &&
  @@ -250,7 +245,9 @@
               if (!fOpen)
                   ImmSetOpenStatus(hIMC,FALSE);
   
  -            return FALSE;
  +            fRet = FALSE;
  +            ImmUnlockIMC(hIMC);
  +            return fRet;
               break;
           case VK_ESCAPE:
               if (dwOptionFlag & ESCENG_SUPPORT)
  @@ -258,7 +255,9 @@
               //ChangeMode(hIMC,TO_CMODE_ROMAN);
               break;
           case VK_SHIFT:
  -            return FALSE;
  +            fRet = FALSE;
  +            ImmUnlockIMC(hIMC);
  +            return fRet;
               break;
           default:
               break;
  @@ -266,6 +265,25 @@
   
       fOpen = lpIMC->fOpen;
   
  +#if 0
  +    // check OpenState.
  +    //  α׷ Open¿ Է  Ѵ.
  +    //   Է»ε Open state  .
  +    // , CompStr ִ 쿡 Ѵ.
  +    // CompStr ִ  Open· Ѵ. (Reconversion )
  +    if (fOpen && !IsCompStr(hIMC)) {
  +        if (ImmGetConversionStatus (hIMC, &dwConversion, &dwSentense)) {
  +            if (! (dwConversion & IME_CMODE_NATIVE)) {
  +                dwConversion &= ~IME_CMODE_NATIVE;
  +                dwConversion &= ~IME_CMODE_FULLSHAPE;
  +                MyDebugPrint((TEXT(" * English and OPEN state\n")));
  +                ImmSetOpenStatus(hIMC,FALSE);
  +                fOpen=FALSE;
  +            }
  +        }
  +    }
  +#endif
  +
       if (fOpen)
       {
           if (lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr))
  @@ -304,6 +322,25 @@
   
           if (lpCompStr)
               ImmUnlockIMCC(lpIMC->hCompStr);
  +
  +    } else {
  +        // Open ¿ Reconversion ϱ  HACK HACK
  +        //  κ ɼ ϴ°?
  +        //   Open¿  Է  ʴ´.
  +        if ((vKey == VK_HANJA || vKey == VK_F9) && !IsCompStr(hIMC) ) {
  +            DWORD dwSize = (DWORD)MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, 0);
  +            if (dwSize) {
  +                ImmSetOpenStatus(hIMC,TRUE);
  +                MyDebugPrint((TEXT(" *** IME not open state *** \r\n")));
  +                if (DicKeydownHandler( hIMC, vKey, lKeyData, lpbKeyState ) ) {
  +                    fRet=TRUE;
  +                }
  +                if (!IsCompStr(hIMC)) {
  +                    ImmSetOpenStatus(hIMC,FALSE);
  +                    fRet=FALSE;
  +                }
  +            }
  +        }
       }
       // Some application do not accept WM_CHAR events with VK_PROCESSKEY.
       // For this appls we need a following hack:
  
  
  


wkpark      06/10/14 11:29:44

  Modified:    src      ui.c uicand.c
  Log:
  ImmUnlockIMC() fixes
  check KS X 1001 or not in the candidate lists.
  show candidate page num etc.
  
  Revision  Changes    Path
  1.13      +2 -1      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ui.c	12 Oct 2006 22:01:01 -0000	1.12
  +++ ui.c	14 Oct 2006 02:29:44 -0000	1.13
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.12 2006/10/12 22:01:01 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.13 2006/10/14 02:29:44 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -395,6 +395,7 @@
                   {
                         CreateCompWindow(hWnd,lpUIExtra,lpIMC );
                   }
  +                ImmUnlockIMCC(lpIMC->hCompStr); // XXX
               }
               //
               MoveCompWindow(lpUIExtra,lpIMC);
  
  
  
  1.7       +90 -16    saenaru/src/uicand.c
  
  Index: uicand.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicand.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- uicand.c	12 Oct 2006 22:08:30 -0000	1.6
  +++ uicand.c	14 Oct 2006 02:29:44 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicand.c,v 1.6 2006/10/12 22:08:30 wkpark Exp $
  + * $Saenaru: saenaru/src/uicand.c,v 1.7 2006/10/14 02:29:44 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -141,10 +141,7 @@
                   if (select > 0 &&
                       (hIMC = (HIMC)GetWindowLongPtr(hSvrWnd,IMMGWLP_IMC)) )
                   {
  -                    lpIMC = ImmLockIMC(hIMC);
                       ConvHanja(hIMC,offset,select);
  -                    // XXX MakeResultString(hIMC,TRUE);
  -                    ImmUnlockIMC(hIMC);
                   }
                   break;
               }
  @@ -160,6 +157,12 @@
                   SetWindowLong(hWnd,FIGWL_MOUSE,0L);
               break;
   
  +        case WM_LBUTTONDBLCLK:
  +            hSvrWnd = (HWND)GetWindowLongPtr(hWnd,FIGWL_SVRWND);
  +            if (hIMC = (HIMC)GetWindowLongPtr(hSvrWnd,IMMGWLP_IMC) )
  +                MakeResultString(hIMC,TRUE);
  +            break;
  +
           case WM_MOVE:
               hUIWnd = (HWND)GetWindowLongPtr(hWnd,FIGWL_SVRWND);
   
  @@ -372,7 +375,8 @@
                                (LPTSTR)szCandClassName,NULL,
                                WS_COMPNODEFAULT|
                                WS_DISABLED|WS_VSCROLL|
  -                             SBS_VERT|SBS_RIGHTALIGN|SBS_SIZEBOX,
  +                             SBS_VERT|SBS_RIGHTALIGN|
  +                             SBS_SIZEBOX|SBS_SIZEBOXBOTTOMRIGHTALIGN,
                                //WS_COMPDEFAULT | WS_DLGFRAME,
                                lpUIExtra->uiCand.pt.x,
                                lpUIExtra->uiCand.pt.y,
  @@ -406,6 +410,7 @@
           SetScrollPos( lpUIExtra->uiCand.hWnd, SB_VERT, 0, TRUE);
           EnableScrollBar( lpUIExtra->uiCand.hWnd, SB_VERT, ESB_ENABLE_BOTH);
           ShowScrollBar( lpUIExtra->uiCand.hWnd, SB_VERT, TRUE);
  +        ImmUnlockIMCC(lpIMC->hCandInfo);
       }
   
       SetWindowLongPtr(lpUIExtra->uiCand.hWnd,FIGWL_SVRWND,(LONG_PTR)hUIWnd);
  @@ -440,6 +445,9 @@
       HFONT hOldFont = NULL;
       HBRUSH hBrush;
   
  +    LOGFONT lfFont;
  +    HFONT hNumFont;
  +
       GetClientRect(hCandWnd,&rc);
       rc2.left=rc.left+25; // left margin: 25
       rc2.right=rc.right - 1;
  @@ -451,6 +459,18 @@
       FillRect(hDC,&rc2,hBrush); // fill text area
       SetBkMode(hDC,TRANSPARENT);
   
  +    // set number font
  +    hOldFont = GetCurrentObject(hDC, OBJ_FONT);
  +    GetObject(hOldFont, sizeof(LOGFONT), &lfFont);
  +
  +    lfFont.lfWeight = FW_BOLD;
  +    lfFont.lfHeight = 12;
  +    lfFont.lfWidth = 0;
  +    lfFont.lfCharSet = DEFAULT_CHARSET;
  +
  +    Mylstrcpy(lfFont.lfFaceName,TEXT("Verdana"));
  +    hNumFont = CreateFontIndirect(&lfFont);
  +
   #if 0
       MoveToEx(hDC, rc.left+1,rc.top+1,NULL);
       LineTo(hDC, rc.left+1,rc.bottom-1);
  @@ -473,6 +493,10 @@
                    i < (lpCandList->dwPageStart + lpCandList->dwPageSize); i++)
               {
                   TCHAR num[4];
  +                INT wtype; // KSX 1002 set or not
  +                INT highlighted;
  +                wtype=0;
  +                highlighted=0;
                   wsprintf(num, TEXT("%d "), i % lpCandList->dwPageSize + 1);
   
                   if (i >= lpCandList->dwCount) 
  @@ -487,6 +511,7 @@
                       PatBlt(hDC,0,height,rc.right,sz.cy,PATCOPY);
                       SelectObject(hDC,hbr);
                       SetTextColor(hDC,GetSysColor(COLOR_HIGHLIGHTTEXT));
  +                    highlighted=1;
                   }
                   else
                   {
  @@ -499,32 +524,81 @@
                       MyTextOut(hDC,5 + GetSystemMetrics(SM_CXEDGE),height,num,Mylstrlen(num));
                       //MyTextOut(hDC,6 + GetSystemMetrics(SM_CXEDGE),height,num,Mylstrlen(num));
                   }
  -                MyTextOut(hDC,25 + GetSystemMetrics(SM_CXEDGE),height,lpstr,Mylstrlen(lpstr));
  +                //  ̸鼭 KSX1002  ƴϸ charset üũ
  +                if (wtype != -1 && dwOptionFlag & KSX1002_SUPPORT)
  +                {
  +                    WORD mb;
  +                    WideCharToMultiByte(949, WC_COMPOSITECHECK,
  +                        lpstr, 1, (char *)&mb, 2, NULL, NULL);
  +
  +                    if(LOBYTE(mb) < 0xa1 || LOBYTE(mb) > 0xfe 
  +                        || HIBYTE(mb) < 0xa1 || HIBYTE(mb) > 0xfe)
  +                        wtype=1;
  +                    // XXX   ÿ  
  +                    // KS X 1002 óϱ  Ư ƾ ʿ?
  +                }
  +                if (wtype) {
  +                    if (highlighted)
  +                        SetTextColor(hDC,RGB(0,0,0)); // shadow
  +                    else
  +                        SetTextColor(hDC,RGB(220,220,220));
  +                    MyTextOut(hDC,25 + 1 + GetSystemMetrics(SM_CXEDGE),
  +                            height + 1,lpstr, Mylstrlen(lpstr));
  +                }
  +                // ϼ 4888ڰ ƴ   û.
  +                if (highlighted)
  +                    SetTextColor(hDC,GetSysColor(COLOR_HIGHLIGHTTEXT));
  +                else if (wtype==1)
  +                    SetTextColor(hDC,RGB(16,83,239));
  +
  +                MyTextOut(hDC,25 + GetSystemMetrics(SM_CXEDGE),height,lpstr,
  +                    Mylstrlen(lpstr));
                   // 25 is left margin of candwin
                   height += sz.cy + 4;
                   // 4 is linespace
               }
               ImmUnlockIMCC(lpIMC->hCandInfo);
           }
  -        if (hOldFont) {
  +
  +        if (hOldFont)
               DeleteObject(SelectObject(hDC, hOldFont));
  -        }
  +
  +        if (hNumFont)
  +            DeleteObject(SelectObject(hDC, hNumFont));
  +
           ImmUnlockIMC(hIMC);
       }
  -    EndPaint(hCandWnd,&ps);
  -
  -    DeleteDC(hDC);
  -    DeleteObject(hbrHightLight);
  -    DeleteObject(hBrush);
   
       {
  -        int pos= GetScrollPos(hCandWnd,SB_VERT);
  -        MyDebugPrint((TEXT(" * Current Scroll Pos: %d\r\n"),pos));
  +        int pages,page;
  +        int pos;
  +        TCHAR num[10];
  +        GetScrollPos(hCandWnd,SB_VERT);
   
           pos = lpCandList->dwSelection;
  +        pages = lpCandList->dwCount / lpCandList->dwPageSize +
  +            ((lpCandList->dwCount % lpCandList->dwPageSize) ? 1:0);
  +
  +        page = (pos + 1) / lpCandList->dwPageSize +
  +            (((pos + 1) % lpCandList->dwPageSize) ? 1:0);
  +
  +        SetTextColor(hDC,RGB(0,0,0));
  +
  +        wsprintf(num, TEXT("%d/%d"), page, pages);
  +
  +        SelectObject(hDC, hNumFont);
  +        MyTextOut(hDC,rc.left + 10 - Mylstrlen(num),rc.bottom - 15 ,num,Mylstrlen(num));
  +
  +        //pos= GetScrollPos(hCandWnd,SB_VERT);
           SetScrollPos(hCandWnd,SB_VERT,pos,TRUE);
  -        MyDebugPrint((TEXT(" * Cand Scroll Pos: %d\r\n"),pos));
       }
  +
  +    EndPaint(hCandWnd,&ps);
  +
  +    DeleteDC(hDC);
  +    DeleteObject(hbrHightLight);
  +    DeleteObject(hBrush);
  +
   }
   
   /**********************************************************************/
  
  
  


wkpark      06/10/15 20:33:11

  Modified:    src      ui.c
  Log:
  support Dvorak with WM_SYSCHAR
  add some experimental code to hook Console keyboard
  
  Revision  Changes    Path
  1.14      +86 -4     saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ui.c	14 Oct 2006 02:29:44 -0000	1.13
  +++ ui.c	15 Oct 2006 11:33:11 -0000	1.14
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.13 2006/10/14 02:29:44 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.14 2006/10/15 11:33:11 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -44,8 +44,16 @@
   #endif
   
   LRESULT CALLBACK SAENARUKbdProc(int, WPARAM, LPARAM);
  +LRESULT CALLBACK SAENARUConKbdProc(int, WPARAM, LPARAM);
   BOOL WINAPI SetHookFunc(void);
   BOOL WINAPI UnsetHookFunc(void);
  +BOOL WINAPI SetConsoleHookFunc(void);
  +BOOL WINAPI UnsetConsoleHookFunc(void);
  +void PASCAL DvorakKey(UINT,WPARAM, LPARAM);
  +
  +static HHOOK hHookWnd = 0;
  +static HHOOK hConsoleHookID = 0;
  +
   #if 0
   void PASCAL HideGuideLine (LPUIEXTRA lpUIExtra);
   void PASCAL CreateGuideLine (HWND, LPUIEXTRA, LPINPUTCONTEXT);
  @@ -194,6 +202,7 @@
       HGLOBAL        hUIExtra;
       LONG           lRet = 0L;
       int            i;
  +    static BOOL    iConsoleHookLoaded=0;
   
       hUICurIMC = (HIMC)GetWindowLongPtr(hWnd,IMMGWLP_IMC);
   
  @@ -267,6 +276,7 @@
   
               MyDebugPrint((TEXT("WM_CREATE\n")));
               SetHookFunc();
  +            //SetConsoleHookFunc();
   
               break;
   
  @@ -399,7 +409,8 @@
               }
               //
               MoveCompWindow(lpUIExtra,lpIMC);
  -            MoveCandWindow(hWnd,lpIMC,lpUIExtra, TRUE);
  +            MoveCandWindow(hWnd,lpIMC,lpUIExtra, FALSE);
  +            //MoveCandWindow(hWnd,lpIMC,lpUIExtra, TRUE); // EditPlus problem
               GlobalUnlock(hUIExtra);
               ImmUnlockIMC(hUICurIMC);
   
  @@ -479,6 +490,7 @@
   
               MyDebugPrint((TEXT("WM_DELETE\n")));
               UnsetHookFunc();
  +            //UnsetConsoleHookFunc();
   
               break;
   
  @@ -1078,8 +1090,6 @@
       return;
   }
   
  -static HHOOK hHookWnd = 0;
  -
   BOOL WINAPI SetHookFunc(void)
   {
       if((hHookWnd=SetWindowsHookEx(WH_GETMESSAGE, SAENARUKbdProc, (HINSTANCE) NULL, GetCurrentThreadId())) == NULL)
  @@ -1087,6 +1097,15 @@
       return TRUE;
   }
   
  +BOOL WINAPI SetConsoleHookFunc(void)
  +{
  +    HMODULE hMod;
  +    hMod = GetModuleHandleA("kernel32");
  +    if((hConsoleHookID=SetWindowsHookEx(WH_KEYBOARD_LL, SAENARUConKbdProc, (HINSTANCE) hInst,  GetCurrentThreadId() )) == NULL)
  +        return FALSE;
  +    return TRUE;
  +}
  +
   BOOL WINAPI UnsetHookFunc(void)
   {
       if(UnhookWindowsHookEx(hHookWnd) == 0)
  @@ -1094,6 +1113,13 @@
       return TRUE;
   }
   
  +BOOL WINAPI UnsetConsoleHookFunc(void)
  +{
  +    if(UnhookWindowsHookEx(hConsoleHookID) == 0)
  +        return FALSE;
  +    return TRUE;
  +}
  +
   static const WCHAR qwerty2dvorak_table[] = {
       0x021,    /* GDK_exclam */
       0x05f,    /* GDK_underscore */
  @@ -1265,6 +1291,7 @@
                   }
               }
               break;
  +        case WM_SYSCHAR:
           case WM_CHAR:
   #ifndef NO_DVORAK
               if (dvorak &&
  @@ -1347,6 +1374,61 @@
       return CallNextHookEx(hHookWnd, code, wParam, lParam);
   }
   
  +LRESULT CALLBACK SAENARUConKbdProc(int nCode,WPARAM wParam, LPARAM lParam)
  +{
  +#define CON_WM_KEYDOWN 0x100
  +
  +    if (nCode >= 0 && wParam == CON_WM_KEYDOWN)
  +    {
  +#if 0
  +        int vkCode = Marshal.ReadInt32(lParam);
  +        Console.WriteLine((Keys)vkCode);
  +#endif
  +        MyDebugPrint((TEXT("Console hook\r\n")));
  +    }
  +    return CallNextHookEx(hConsoleHookID, nCode, wParam, lParam);
  +}
  +
  +#if 0
  +void PASCAL DvorakKey(UINT message,WPARAM wParam, LPARAM lParam)
  +{
  +    BYTE pbKeyState [256];
  +    LPMSG lpmsg;
  +    WORD dv;
  +    SHORT sc;
  +    UINT caps = 0;
  +    UINT vKey;
  +
  +    lpmsg = (LPMSG)lParam;
  +    vKey = lpmsg->wParam;
  +
  +    GetKeyboardState((LPBYTE)&pbKeyState);
  +
  +    caps = pbKeyState[VK_CAPITAL];
  +    if (caps) {
  +        if (vKey >= 'A' && vKey <= 'Z')
  +            vKey += 'a' - 'A';
  +        else if (vKey >= 'a' && vKey <= 'z')
  +            vKey -= 'a' - 'A';
  +        dv = qwerty2dvorak_table[vKey - '!'];
  +        if (dv >= 'A' && dv <= 'Z')
  +            dv += 'a' - 'A';
  +        else if (dv >= 'a' && dv <= 'z')
  +            dv -= 'a' - 'A';
  +    } else
  +        dv = qwerty2dvorak_table[vKey - '!'];
  +     
  +    lpmsg->wParam = dv;
  +    sc = VkKeyScan(dv);
  +    lpmsg->lParam &= ~0x00ff0000;
  +    lpmsg->lParam |= (sc <<16);
  +    pbKeyState[dv]=1;
  +    pbKeyState[vKey]=0;
  +    SetKeyboardState((LPBYTE)&pbKeyState);
  +}
  +
  +#endif
  +
   #ifdef DEBUG
   void PASCAL DumpUIExtra(LPUIEXTRA lpUIExtra)
   {
  
  
  


wkpark      06/10/15 20:34:06

  Modified:    src      dic.c
  Log:
  support ascii reconversion
  
  Revision  Changes    Path
  1.17      +33 -21    saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- dic.c	14 Oct 2006 02:23:39 -0000	1.16
  +++ dic.c	15 Oct 2006 11:34:06 -0000	1.17
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.16 2006/10/14 02:23:39 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.17 2006/10/15 11:34:06 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -215,6 +215,7 @@
       WCHAR cs=0;
       LPMYSTR lpmystr, lpTemp;
       MYCHAR myBuf[128];
  +    BOOL isasc=FALSE;
   
       lpmystr = (LPMYSTR)myBuf;
   
  @@ -258,11 +259,14 @@
           TCHAR   szDic[256];
           INT sz;
   
  +        if (0x7F > *lpT2) isasc=TRUE;
  +        MyDebugPrint((TEXT(" * Dic: %x\n"), *lpT2));
  +
           lpKey = (LPTSTR)&szKey;
           lpDic = (LPTSTR)&szDic;
           if (Mylstrlen(lpT2) > 1) { // word dic.
               LoadString( hInst, IDS_WORD_KEY, lpKey, 128);
  -        } else if (*lpT2 >= 0x3131 && 0x314e >= *lpT2 ) {
  +        } else if (isasc || (*lpT2 >= 0x3131 && 0x314e >= *lpT2) ) { // symbol
               LoadString( hInst, IDS_SYM_KEY, lpKey, 128);
           } else {
               LoadString( hInst, IDS_DIC_KEY, lpKey, 128);
  @@ -320,11 +324,13 @@
   
               OutputDebugString(TEXT("ConvHanja #1\r\n"));
               GnMsg.message = WM_IME_COMPOSITION;
  -            GnMsg.wParam = (WCHAR) *lpT2;
  +            if (!isasc) {
  +                GnMsg.wParam = (WCHAR) *lpT2;
  +                if (!isasc && dwImeFlag & SAENARU_ONTHESPOT)
  +                    GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
  +            }
               GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
               //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
  -            if (dwImeFlag & SAENARU_ONTHESPOT)
  -                GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
           }
   
  @@ -393,7 +399,7 @@
                   }
   #endif
   #if 1
  -                if (lpCompStr->dwCompStrLen > 1) {
  +                if (lpCompStr->dwCompStrLen > 1 || isasc) {
                       GnMsg.message = WM_IME_COMPOSITION;
                       GnMsg.wParam = 0;
                       GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  @@ -707,8 +713,8 @@
   
               GnMsg.message = WM_IME_COMPOSITION;
               GnMsg.wParam = 0;
  -            GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -            //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
  +            //GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +            GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
               if (dwImeFlag & SAENARU_ONTHESPOT)
                   GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  @@ -1223,18 +1229,7 @@
                           MyOutputDebugString(lpDump);
                           OutputDebugString(TEXT("\r\n"));
   #endif
  -                        convOk = (BOOL) MyImmRequestMessage(hIMC, IMR_CONFIRMRECONVERTSTRING, (LPARAM)lpRS);
  -#ifdef DEBUG
  -                        if (!convOk) {
  -                            // why fail for MS IE ? XXX
  -                            OutputDebugString(TEXT(" *** fail CONFIRM RECONVERT\r\n"));
  -                        } else {
  -                            OutputDebugString(TEXT(" *** success CONFIRM RECONVERT\r\n"));
  -                            wsprintf(szDev, TEXT(" *** result: dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  -                            OutputDebugString(szDev);
  -                        }
  -#endif
  -        		if (convOk) {
  +        		{
           		    LPCOMPOSITIONSTRING	lpCompStr;
           
           		    if (ImmGetIMCCSize (lpIMC->hCompStr) < sizeof (MYCOMPSTR))
  @@ -1317,6 +1312,18 @@
           		        } else {
                                       OutputDebugString(TEXT(" *** lpCompStr== NULL\r\n"));
                                   }
  +                                convOk = (BOOL) MyImmRequestMessage(hIMC, IMR_CONFIRMRECONVERTSTRING, (LPARAM)lpRS);
  +#ifdef DEBUG
  +                                if (!convOk) {
  +                                    // MS IE   κ ڿ ; Ѵ. , CompStr  Ŀ
  +                                    // ؾ Ѵ ?
  +                                    OutputDebugString(TEXT(" *** fail CONFIRM RECONVERT\r\n"));
  +                                } else {
  +                                    OutputDebugString(TEXT(" *** success CONFIRM RECONVERT\r\n"));
  +                                    wsprintf(szDev, TEXT(" *** result: dwCompStrLen %x\r\n"), lpRS->dwCompStrLen);
  +                                    OutputDebugString(szDev);
  +                                }
  +#endif
                               }
           	            ImmUnlockIMCC (lpIMC->hCompStr);
           		}
  @@ -1369,6 +1376,7 @@
                   GnMsg.lParam = lParam;
                   GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
                   OutputDebugString(TEXT("DicKeydown: WM_IME_KEYDOWN\r\n"));
  +                MyDebugPrint((TEXT("DicKeydown: candOk %d\r\n"),candOk));
               } else {
                   //   ü  candidateƮ ,  ׷ ʴ.
                   // ׷ ̷  ϰ    Ưó ؾ Ѵ.
  @@ -1893,12 +1901,16 @@
                  ((dwBufLen - dwWritten) > 1) &&
                  (MYTEXT('[') != *lpToken))
           {
  +            INT isasc;
  +            isasc=FALSE;
               if (NULL != (lpTemp = Mystrchr(lpToken, MYTEXT('='))))
                   *lpTemp = MYTEXT('\0');
   
               len = Mylstrlen(lpToken);
  +            if (*lpToken < 0x7f)
  +                isasc=TRUE;
               //  ̸鼭 KSX1002  ƴϸ charset üũ
  -            if ( len == 1 && !(dwOptionFlag & KSX1002_SUPPORT))
  +            if (!isasc && len == 1 && !(dwOptionFlag & KSX1002_SUPPORT))
               {
                   WORD mb;
                   WideCharToMultiByte(949, WC_COMPOSITECHECK,
  
  
  


wkpark      06/10/15 20:34:47

  Modified:    src      imm.c
  Log:
  support ImeEscape() too
  
  Revision  Changes    Path
  1.18      +108 -2    saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- imm.c	14 Oct 2006 02:25:48 -0000	1.17
  +++ imm.c	15 Oct 2006 11:34:47 -0000	1.18
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.17 2006/10/14 02:25:48 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.18 2006/10/15 11:34:47 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -104,6 +104,7 @@
   LRESULT WINAPI ImeEscape(HIMC hIMC,UINT uSubFunc,LPVOID lpData)
   {
       LRESULT lRet = FALSE;
  +    LPINPUTCONTEXT lpIMC;
   
       ImeLog(LOGF_API, TEXT("ImeEscape"));
   
  @@ -126,9 +127,114 @@
               break;
   
           case IME_ESC_HANJA_MODE:
  -            // EditPlus only use it. XXX
  +            hangul_ic_init(&ic);
  +
  +            lpIMC = ImmLockIMC(hIMC);
  +            // EditPlus,AcroEdit only use it. XXX
               // EditPlus does not receive IMR_* message
               MyDebugPrint((TEXT("\tIME_ESC_HANJA_MODE:\r\n")));
  +#define USE_ESC_HANJA_MODE
  +#ifdef USE_ESC_HANJA_MODE
  +            if (!IsCompStr(hIMC)) {
  +        		    LPCOMPOSITIONSTRING	lpCompStr;
  +#if DEBUG
  +                TCHAR data[2]; // XXX
  +                Mylstrcpyn(data,lpData,1);
  +                data[1]='\0';
  +                MyDebugPrint((TEXT("\tIME_ESC_HANJA_MODE: %s\r\n"),&data));
  +#endif
  +        
  +        		    if (ImmGetIMCCSize (lpIMC->hCompStr) < sizeof (MYCOMPSTR))
  +                            {
  +                                DWORD dwSize = sizeof(MYCOMPSTR);
  +                                lpIMC->hCompStr = ImmReSizeIMCC(lpIMC->hCompStr,dwSize);
  +                                lpCompStr =
  +                                    (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr);
  +                                lpCompStr->dwSize = dwSize;
  +                            } else
  +        		        lpCompStr =
  +                                    (LPCOMPOSITIONSTRING)ImmLockIMCC (lpIMC->hCompStr) ;
  +                            {
  +                                LPMYSTR lpstr,lpread;
  +        
  +        		        if (lpCompStr != NULL) {
  +                                    TRANSMSG GnMsg;
  +                                    // XXX
  +                                    InitCompStr(lpCompStr,CLR_RESULT_AND_UNDET);
  +
  +#if 1
  +                                    // е M$ Explorer ݵ WM_IME_STARTCOMPOSITION ؾ Ѵ.
  +                                    // 2006/10/09
  +                                    GnMsg.message = WM_IME_STARTCOMPOSITION;
  +                                    GnMsg.wParam = 0;
  +                                    GnMsg.lParam = 0;
  +                                    GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +#endif
  +        
  +                                    lpstr = GETLPCOMPSTR(lpCompStr);
  +                                    lpread = GETLPCOMPREADSTR(lpCompStr);
  +                                    Mylstrcpyn(lpread,lpData,1);
  +                                    Mylstrcpyn(lpstr,lpData,1);
  +        
  +                                    // delta start
  +                                    lpCompStr->dwDeltaStart =
  +        	                        (DWORD)(MyCharPrev(lpstr, lpstr+Mylstrlen(lpstr)) - lpstr);
  +                                    // cursor pos
  +                                    //   CursorPos   ϴ  ִ.
  +                                    // EditPlus.
  +                                    //lpCompStr->dwCursorPos-=lpRS->dwStrLen;
  +                                    //if (lpCompStr->dwCursorPos <= 0) lpCompStr->dwCursorPos=0;
  +                                    //lpCompStr->dwCursorPos = Mylstrlen(lpstr);
  +                                    lpCompStr->dwCursorPos = 0;
  +        
  +                                    //MakeAttrClause(lpCompStr);
  +                                    lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),ATTR_INPUT,
  +                                            Mylstrlen(lpstr));
  +                                    lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT,
  +                                            Mylstrlen(lpread));
  +        
  +                                    // make length
  +                                    lpCompStr->dwCompStrLen = Mylstrlen(lpstr);
  +                                    lpCompStr->dwCompReadStrLen = Mylstrlen(lpread);
  +                                    lpCompStr->dwCompAttrLen = Mylstrlen(lpstr);
  +                                    lpCompStr->dwCompReadAttrLen = Mylstrlen(lpread);
  +        
  +                                    //if (lpCompStr->dwCompReadStrLen > 0)
  +                                    //    lpCompStr->dwCompReadStrLen--;
  +
  +                                    //
  +                                    // make clause info
  +                                    //
  +                                    SetClause(GETLPCOMPCLAUSE(lpCompStr),Mylstrlen(lpstr));
  +                                    SetClause(GETLPCOMPREADCLAUSE(lpCompStr),Mylstrlen(lpread));
  +                                    lpCompStr->dwCompClauseLen = 8;
  +                                    lpCompStr->dwCompReadClauseLen = 8;
  +                                    //
  +
  +#if 1
  +                                    Mylstrcpy(GETLPRESULTSTR(lpCompStr),GETLPCOMPSTR(lpCompStr));
  +                                    Mylstrcpy(GETLPRESULTREADSTR(lpCompStr),GETLPCOMPREADSTR(lpCompStr));
  +
  +                                    lpCompStr->dwResultStrLen = lpCompStr->dwCompStrLen;
  +                                    lpCompStr->dwResultReadStrLen = lpCompStr->dwCompReadStrLen;
  +                                    //
  +                                    // make clause info
  +                                    //
  +                                    SetClause(GETLPRESULTCLAUSE(lpCompStr),Mylstrlen(GETLPRESULTSTR(lpCompStr)));
  +                                    SetClause(GETLPRESULTREADCLAUSE(lpCompStr),Mylstrlen(GETLPRESULTREADSTR(lpCompStr)));
  +                                    lpCompStr->dwResultClauseLen = 8;
  +
  +#endif
  +        		        } else {
  +                                    OutputDebugString(TEXT(" *** lpCompStr== NULL\r\n"));
  +                                }
  +                            }
  +                            ConvHanja(hIMC,1,0);
  +
  +        	            ImmUnlockIMCC (lpIMC->hCompStr);
  +            }
  +            ImmUnlockIMC (hIMC);
  +#endif
               lRet = FALSE;
               break;
   
  
  
  


wkpark      06/10/15 20:36:03

  Modified:    src      uicomp.c
  Log:
  InvalidateRect() properly.
  
  Revision  Changes    Path
  1.8       +11 -4     saenaru/src/uicomp.c
  
  Index: uicomp.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicomp.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- uicomp.c	9 Oct 2006 16:08:03 -0000	1.7
  +++ uicomp.c	15 Oct 2006 11:36:03 -0000	1.8
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicomp.c,v 1.7 2006/10/09 16:08:03 wkpark Exp $
  + * $Saenaru: saenaru/src/uicomp.c,v 1.8 2006/10/15 11:36:03 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -133,11 +133,18 @@
       // skkime ̰ rootwindow style̶ ִ.
       if (!IsWindow(lpUIExtra->uiDefComp.hWnd))
       {
  +#if 0
  +        UINT myStyle=0;
  +        if (lpUIExtra->dwCompStyle == CFS_DEFAULT) {
  +            myStyle=WS_BORDER;
  +        }
  +#endif
  +
           lpUIExtra->uiDefComp.hWnd = 
               CreateWindowEx( WS_EX_WINDOWEDGE,
                            (LPTSTR)szCompStrClassName,NULL,
  -                         //WS_COMPDEFAULT | WS_DLGFRAME,
  -                         WS_COMPNODEFAULT,
  +                         WS_COMPDEFAULT,
  +                         //WS_COMPDEFAULT | myStyle,
                            lpUIExtra->uiDefComp.pt.x,
                            lpUIExtra->uiDefComp.pt.y,
                            1,1,
  @@ -487,8 +494,8 @@
                   // comp str   .
                   ShowWindow(lpUIExtra->uiDefComp.hWnd, SW_HIDE);
                   lpUIExtra->uiDefComp.bShow = FALSE;
  -                InvalidateRect(lpUIExtra->uiDefComp.hWnd,NULL,FALSE);
               }
  +            InvalidateRect(lpUIExtra->uiDefComp.hWnd,NULL,FALSE);
               ImmUnlockIMCC(lpIMC->hCompStr);
           }
       }
  
  
  


wkpark      06/10/16 20:09:12

  Modified:    src      ui.c
  Log:
  more fix to support Dvorak with VK_CONTROL / VK_MENU(alt)
  
  Revision  Changes    Path
  1.15      +17 -6     saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ui.c	15 Oct 2006 11:33:11 -0000	1.14
  +++ ui.c	16 Oct 2006 11:09:12 -0000	1.15
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.14 2006/10/15 11:33:11 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.15 2006/10/16 11:09:12 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -1223,12 +1223,16 @@
       LPMSG lpmsg;
       UINT vKey;
       SHORT ALT;
  +    BOOL nocheck = FALSE;
   
       BOOL dvorak = FALSE;
   
       if (code < 0)
           return CallNextHookEx(hHookWnd, code, wParam, lParam);
   
  +    GetKeyboardState((LPBYTE)&pbKeyState);
  +    nocheck = pbKeyState[VK_CONTROL] & 0x80 || pbKeyState[VK_MENU] & 0x80;
  +
       if (dwOptionFlag & DVORAK_SUPPORT) {
           HWND hwnd = GetFocus ();
           
  @@ -1246,6 +1250,8 @@
           }
       }
   
  +    dvorak = nocheck || dvorak;
  +
       lpmsg = (LPMSG)lParam;
       vKey = lpmsg->wParam;
   
  @@ -1270,12 +1276,12 @@
               }
               else
   #endif
  +            //GetKeyboardState((LPBYTE)&pbKeyState);
               if ( vKey == VK_SPACE && dwOptionFlag & USE_SHIFT_SPACE)
               {
                  // SHORT ShiftState = (GetAsyncKeyState(VK_LSHIFT) >> 31) & 1;
                   TCHAR szDev[80];
                   SHORT ShiftState;
  -                GetKeyboardState((LPBYTE)&pbKeyState);
                   ShiftState = pbKeyState[VK_LSHIFT] & 0x80;
   
                   wsprintf((LPTSTR)szDev,TEXT("ShiftState is %x\r\n"),ShiftState);
  @@ -1289,6 +1295,11 @@
                        lpmsg->wParam=VK_HANGUL; // XXX
                        lpmsg->lParam=(0xF2<<16) | 0x41000001;
                   }
  +            } else 
  +            if ( dvorak && // commit all CompStr like as IME 2002/2003
  +                (vKey >= '!' && vKey <= '~') &&
  +                pbKeyState[VK_CONTROL] & 0x80) {
  +                DvorakKey(lpmsg->message,wParam,lParam);
               }
               break;
           case WM_SYSCHAR:
  @@ -1301,7 +1312,7 @@
                   SHORT sc;
                   UINT caps = 0;
   
  -                GetKeyboardState((LPBYTE)&pbKeyState);
  +                //GetKeyboardState((LPBYTE)&pbKeyState);
   
                   caps = pbKeyState[VK_CAPITAL];
                   if (caps) {
  @@ -1329,7 +1340,7 @@
               break;
           case WM_SYSKEYDOWN:
           case WM_SYSKEYUP:
  -            GetKeyboardState((LPBYTE)&pbKeyState);
  +            //GetKeyboardState((LPBYTE)&pbKeyState);
               // commit all CompStr like as IME 2002/2003
               if ( pbKeyState[VK_MENU] & 0x80)
               {
  @@ -1355,7 +1366,7 @@
                   lpmsg->message-=4; // WM_SYSKEYUP - WM_KEYUP = 4 See WINUSER.H
                   MyDebugPrint((TEXT("RALT %x\n"), lpmsg->lParam));
   
  -                if (dvorak)
  +                if (FALSE && dvorak)
                    {
                       WORD dv;
                       SHORT sc;
  @@ -1389,7 +1400,7 @@
       return CallNextHookEx(hConsoleHookID, nCode, wParam, lParam);
   }
   
  -#if 0
  +#if 1
   void PASCAL DvorakKey(UINT message,WPARAM wParam, LPARAM lParam)
   {
       BYTE pbKeyState [256];
  
  
  


wkpark      06/10/18 09:12:47

  Modified:    src      uicand.c
  Log:
  fixed fatal bug. check dwCount of the CandList
  
  Revision  Changes    Path
  1.8       +13 -10    saenaru/src/uicand.c
  
  Index: uicand.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicand.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- uicand.c	14 Oct 2006 02:29:44 -0000	1.7
  +++ uicand.c	18 Oct 2006 00:12:47 -0000	1.8
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicand.c,v 1.7 2006/10/14 02:29:44 wkpark Exp $
  + * $Saenaru: saenaru/src/uicand.c,v 1.8 2006/10/18 00:12:47 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -270,6 +270,7 @@
               }
           }
       }
  +
       MyDebugPrint((TEXT(" *** GetCandPosFromCompWnd FALSE\n")));
       return FALSE;
   }
  @@ -326,7 +327,7 @@
               lppt->x = rc.left;
               lppt->y = rc.bottom + 23;
           }
  -                MyDebugPrint((TEXT("FromCompForm #2\n")));
  +                MyDebugPrint((TEXT("FromCompForm root style #2\n")));
           ScreenToClient(lpIMC->hWnd,lppt);
           return TRUE;
       }
  @@ -403,13 +404,15 @@
   
           MyDebugPrint((TEXT("CandList count = %d\r\n"),count));
   
  -        // to make popup with scrollbar using SetCapture();
  -        EnableWindow( lpUIExtra->uiCand.hWnd, TRUE);
  -        // init scroll pos
  -        SetScrollRange( lpUIExtra->uiCand.hWnd, SB_VERT, 0, count, TRUE);
  -        SetScrollPos( lpUIExtra->uiCand.hWnd, SB_VERT, 0, TRUE);
  -        EnableScrollBar( lpUIExtra->uiCand.hWnd, SB_VERT, ESB_ENABLE_BOTH);
  -        ShowScrollBar( lpUIExtra->uiCand.hWnd, SB_VERT, TRUE);
  +        if (lpCandList->dwCount > 1) {
  +            // to make popup with scrollbar using SetCapture();
  +            EnableWindow( lpUIExtra->uiCand.hWnd, TRUE);
  +            // init scroll pos
  +            SetScrollRange( lpUIExtra->uiCand.hWnd, SB_VERT, 0, count, TRUE);
  +            SetScrollPos( lpUIExtra->uiCand.hWnd, SB_VERT, 0, TRUE);
  +            EnableScrollBar( lpUIExtra->uiCand.hWnd, SB_VERT, ESB_ENABLE_BOTH);
  +            ShowScrollBar( lpUIExtra->uiCand.hWnd, SB_VERT, TRUE);
  +        }
           ImmUnlockIMCC(lpIMC->hCandInfo);
       }
   
  @@ -569,7 +572,7 @@
           ImmUnlockIMC(hIMC);
       }
   
  -    {
  +    if (lpCandList->dwCount > 1) {
           int pages,page;
           int pos;
           TCHAR num[10];
  
  
  


wkpark      06/10/18 09:15:43

  Modified:    src      dic.c
  Log:
  fix for the reconversion of ascii chars
  
  Revision  Changes    Path
  1.18      +34 -13    saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- dic.c	15 Oct 2006 11:34:06 -0000	1.17
  +++ dic.c	18 Oct 2006 00:15:43 -0000	1.18
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.17 2006/10/15 11:34:06 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.18 2006/10/18 00:15:43 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -324,13 +324,15 @@
   
               OutputDebugString(TEXT("ConvHanja #1\r\n"));
               GnMsg.message = WM_IME_COMPOSITION;
  -            if (!isasc) {
  +            GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
  +            //GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +            if (lpCompStr->dwCompStrLen > 1 || isasc) {
  +                GnMsg.wParam = 0;
  +            } else {
                   GnMsg.wParam = (WCHAR) *lpT2;
                   if (!isasc && dwImeFlag & SAENARU_ONTHESPOT)
                       GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
               }
  -            GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -            //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
           }
   
  @@ -1178,12 +1180,12 @@
                       if (dwSize = (DWORD) MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, (LPARAM)lpRS)) {
                           BOOL convOk= FALSE;
                           TRANSMSG GnMsg;
  +                        MYCHAR myDump[2];
   #ifdef DEBUG
                           TCHAR szDev[80];
   #endif
                           //LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset);
                           //*(LPMYSTR)(lpDump + lpRS->dwStrLen) = MYTEXT('\0');
  -        
                           LPMYSTR lpDump= (LPMYSTR)(((LPSTR)lpRS) + lpRS->dwStrOffset + lpRS->dwCompStrOffset);
           
   #ifdef DEBUG
  @@ -1205,18 +1207,26 @@
                           wsprintf(szDev, TEXT("dwTargetStrOffset %x\r\n"), lpRS->dwTargetStrOffset);
                           OutputDebugString(szDev);
   #endif
  +                        Mylstrcpyn(myDump,lpDump,1);
                           if ( (lpRS->dwStrOffset+lpRS->dwCompStrOffset) < lpRS->dwSize) {
                               if (lpRS->dwCompStrLen >1) {
                                   // clause dictionary.
                                   *(LPMYSTR)(lpDump + lpRS->dwCompStrLen) = MYTEXT('\0');
  -                            } else {
  +                            } else  {
  +                                const LPMYSTR szSep = MYTEXT("\r\n\t");
  +                                LPMYSTR lpToken;
                                   // one char reconversion.
                                   *(LPMYSTR)(lpDump + 1) = MYTEXT('\0');
  +
  +                                lpToken = Mystrtok(lpDump, szSep);
  +                                if (lpToken == NULL) {
  +                                    GlobalFree((HANDLE)lpRS);
  +                                    break;
  +                                }
                           
                                   lpRS->dwCompStrLen=1;
                                   lpRS->dwTargetStrLen=1;
                                   // XXX 1. manage not convertable ascii chars.
  -                                // XXX 2. end of string.
                               }
                           } else {
                               // XXX Mozilla bug.
  @@ -1269,6 +1279,7 @@
                                       // cursor pos
                                       //lpCompStr->dwCursorPos-=lpRS->dwStrLen;
                                       //if (lpCompStr->dwCursorPos <= 0) lpCompStr->dwCursorPos=0;
  +                                    //lpCompStr->dwCursorPos = Mylstrlen(lpstr)-1; // Err
                                       lpCompStr->dwCursorPos = Mylstrlen(lpstr);
           
                                       //MakeAttrClause(lpCompStr);
  @@ -1283,9 +1294,6 @@
                                       lpCompStr->dwCompAttrLen = Mylstrlen(lpstr);
                                       lpCompStr->dwCompReadAttrLen = Mylstrlen(lpread);
           
  -                                    //if (lpCompStr->dwCompReadStrLen > 0)
  -                                    //    lpCompStr->dwCompReadStrLen--;
  -
                                       //
                                       // make clause info
                                       //
  @@ -1307,7 +1315,20 @@
                                       SetClause(GETLPRESULTCLAUSE(lpCompStr),Mylstrlen(GETLPRESULTSTR(lpCompStr)));
                                       SetClause(GETLPRESULTREADCLAUSE(lpCompStr),Mylstrlen(GETLPRESULTREADSTR(lpCompStr)));
                                       lpCompStr->dwResultClauseLen = 8;
  +#endif
  +                                    //
  +                                    //
  +                                    //if (lpCompStr->dwCompReadStrLen > 0)
  +                                    //    lpCompStr->dwCompReadStrLen--;
   
  +#if 0
  +                                    GnMsg.message = WM_IME_COMPOSITION;
  +                                    GnMsg.wParam = 0;
  +                                    //GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +                                    GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; //ѱ IME 2002,2003
  +                                    //if (dwImeFlag & SAENARU_ONTHESPOT)
  +                                    //    GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
  +                                    GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
   #endif
           		        } else {
                                       OutputDebugString(TEXT(" *** lpCompStr== NULL\r\n"));
  @@ -1368,7 +1389,7 @@
               // * InternetExplorer Reconversion . IME 2003 ȵ
               //
   
  -            if (candOk || !IsCompStr(hIMC)) {
  +            if (!IsCompStr(hIMC)) {
                   // for reconversion mode like as IME 2002
                   TRANSMSG GnMsg;
                   GnMsg.message = WM_IME_KEYDOWN;
  @@ -1377,10 +1398,10 @@
                   GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
                   OutputDebugString(TEXT("DicKeydown: WM_IME_KEYDOWN\r\n"));
                   MyDebugPrint((TEXT("DicKeydown: candOk %d\r\n"),candOk));
  -            } else {
  +            } else if (candOk) {
                   //   ü  candidateƮ ,  ׷ ʴ.
                   // ׷ ̷  ϰ    Ưó ؾ Ѵ.
  -                // always generage WM_IME_KEYDOWN for VK_HANJA
  +                // always generage WM_IME_KEYDOWN for VK_HANJA XXX
                   TRANSMSG GnMsg;
                   GnMsg.message = WM_IME_KEYDOWN;
                   GnMsg.wParam = wParam;
  
  
  


wkpark      06/10/18 09:16:09

  Modified:    src      imm.c
  Log:
  fixed fatal bug for ImeEscape()
  
  Revision  Changes    Path
  1.19      +73 -73    saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- imm.c	15 Oct 2006 11:34:47 -0000	1.18
  +++ imm.c	18 Oct 2006 00:16:09 -0000	1.19
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.18 2006/10/15 11:34:47 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.19 2006/10/18 00:16:09 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -105,6 +105,8 @@
   {
       LRESULT lRet = FALSE;
       LPINPUTCONTEXT lpIMC;
  +    LPTRANSMSG lpTransMsg;
  +    BOOL fOpen;
   
       ImeLog(LOGF_API, TEXT("ImeEscape"));
   
  @@ -127,23 +129,33 @@
               break;
   
           case IME_ESC_HANJA_MODE:
  -            hangul_ic_init(&ic);
  -
  -            lpIMC = ImmLockIMC(hIMC);
               // EditPlus,AcroEdit only use it. XXX
               // EditPlus does not receive IMR_* message
               MyDebugPrint((TEXT("\tIME_ESC_HANJA_MODE:\r\n")));
  -#define USE_ESC_HANJA_MODE
  -#ifdef USE_ESC_HANJA_MODE
  +            if (lpData == NULL) return FALSE;
  +
  +            hangul_ic_init(&ic);
  +
  +            lpIMC = ImmLockIMC(hIMC);
  +            if (!lpIMC) return FALSE;
  +
  +            fOpen = lpIMC->fOpen;
  +            if (!fOpen)
  +                MyDebugPrint((TEXT("\t === XXX IME NOT OPEN:\r\n")));
  +
  +#ifndef USE_NO_IME_ESCAPE
               if (!IsCompStr(hIMC)) {
           		    LPCOMPOSITIONSTRING	lpCompStr;
  -#if DEBUG
  -                TCHAR data[2]; // XXX
  -                Mylstrcpyn(data,lpData,1);
  -                data[1]='\0';
  -                MyDebugPrint((TEXT("\tIME_ESC_HANJA_MODE: %s\r\n"),&data));
  -#endif
  -        
  +                            LPMYSTR lpDump;
  +                            MYCHAR szBuf[3];
  +
  +                            lpDump=szBuf;
  +
  +                            Mylstrcpyn(lpDump,lpData,2); // XXX
  +
  +                            MyDebugPrint((TEXT("%x %x %x"),szBuf[0],szBuf[1],szBuf[2]));
  +                            szBuf[1]=MYTEXT('\0');
  + 
           		    if (ImmGetIMCCSize (lpIMC->hCompStr) < sizeof (MYCOMPSTR))
                               {
                                   DWORD dwSize = sizeof(MYCOMPSTR);
  @@ -163,29 +175,29 @@
                                       InitCompStr(lpCompStr,CLR_RESULT_AND_UNDET);
   
   #if 1
  -                                    // е M$ Explorer ݵ WM_IME_STARTCOMPOSITION ؾ Ѵ.
  -                                    // 2006/10/09
  +                                    // ImeEscape()  
  +                                    // M$ Explorer ݵ WM_IME_STARTCOMPOSITION ؾ Ѵ.
  +                                    // 2006/10/18
                                       GnMsg.message = WM_IME_STARTCOMPOSITION;
                                       GnMsg.wParam = 0;
                                       GnMsg.lParam = 0;
  -                                    GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  +                                    GenerateMessage(hIMC, lpIMC, NULL,(LPTRANSMSG)&GnMsg);
   #endif
  -        
  +
                                       lpstr = GETLPCOMPSTR(lpCompStr);
                                       lpread = GETLPCOMPREADSTR(lpCompStr);
  -                                    Mylstrcpyn(lpread,lpData,1);
  -                                    Mylstrcpyn(lpstr,lpData,1);
  +                                    Mylstrcpy(lpread,lpDump);
  +                                    Mylstrcpy(lpstr,lpDump);
           
                                       // delta start
                                       lpCompStr->dwDeltaStart =
           	                        (DWORD)(MyCharPrev(lpstr, lpstr+Mylstrlen(lpstr)) - lpstr);
                                       // cursor pos
  -                                    //   CursorPos   ϴ  ִ.
  -                                    // EditPlus.
                                       //lpCompStr->dwCursorPos-=lpRS->dwStrLen;
                                       //if (lpCompStr->dwCursorPos <= 0) lpCompStr->dwCursorPos=0;
  -                                    //lpCompStr->dwCursorPos = Mylstrlen(lpstr);
  +                                    //lpCompStr->dwCursorPos = Mylstrlen(lpstr)-1; // Err
                                       lpCompStr->dwCursorPos = 0;
  +                                    //lpCompStr->dwCursorPos = Mylstrlen(lpstr);
           
                                       //MakeAttrClause(lpCompStr);
                                       lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),ATTR_INPUT,
  @@ -199,9 +211,6 @@
                                       lpCompStr->dwCompAttrLen = Mylstrlen(lpstr);
                                       lpCompStr->dwCompReadAttrLen = Mylstrlen(lpread);
           
  -                                    //if (lpCompStr->dwCompReadStrLen > 0)
  -                                    //    lpCompStr->dwCompReadStrLen--;
  -
                                       //
                                       // make clause info
                                       //
  @@ -211,7 +220,7 @@
                                       lpCompStr->dwCompReadClauseLen = 8;
                                       //
   
  -#if 1
  +#if 0
                                       Mylstrcpy(GETLPRESULTSTR(lpCompStr),GETLPCOMPSTR(lpCompStr));
                                       Mylstrcpy(GETLPRESULTREADSTR(lpCompStr),GETLPCOMPREADSTR(lpCompStr));
   
  @@ -223,19 +232,31 @@
                                       SetClause(GETLPRESULTCLAUSE(lpCompStr),Mylstrlen(GETLPRESULTSTR(lpCompStr)));
                                       SetClause(GETLPRESULTREADCLAUSE(lpCompStr),Mylstrlen(GETLPRESULTREADSTR(lpCompStr)));
                                       lpCompStr->dwResultClauseLen = 8;
  +#endif
  +                                    //
  +                                    //
  +                                    //if (lpCompStr->dwCompReadStrLen > 0)
  +                                    //    lpCompStr->dwCompReadStrLen--;
   
  +#if 0
  +                                    GnMsg.message = WM_IME_COMPOSITION;
  +                                    GnMsg.wParam = 0;
  +                                    GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  +                                    //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; //ѱ IME 2002,2003
  +                                    //if (dwImeFlag & SAENARU_ONTHESPOT)
  +                                    //    GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
  +                                    GenerateMessage(hIMC, lpIMC, NULL,(LPTRANSMSG)&GnMsg);
   #endif
           		        } else {
                                       OutputDebugString(TEXT(" *** lpCompStr== NULL\r\n"));
                                   }
                               }
  -                            ConvHanja(hIMC,1,0);
  -
  -        	            ImmUnlockIMCC (lpIMC->hCompStr);
               }
  -            ImmUnlockIMC (hIMC);
  +
   #endif
  -            lRet = FALSE;
  +
  +            ImmUnlockIMC (hIMC);
  +
               break;
   
           case IME_ESC_PRI_GETDWORDTEST:
  @@ -319,8 +340,26 @@
               vKey = VK_HANGUL;
       }
   
  -    switch ( ( LOWORD(vKey) & 0x00FF ) ){
  +    fOpen = lpIMC->fOpen;
  +
  +    switch ( ( LOWORD(vKey) & 0x00FF ) ) {
  +#if 1
  +        case VK_HANJA:
  +            if (IsCompStr(hIMC)) {
  +                ImmUnlockIMC(hIMC);
  +                return TRUE;
  +                break;
  +            }
  +            if (fOpen) break;
  +
  +            ImmSetOpenStatus(hIMC,TRUE);
  +            ChangeMode(hIMC,TO_CMODE_ALPHANUMERIC);
  +            fOpen = TRUE;
  +            break;
  +#endif
           case VK_HANGUL:
  +            // for 101 Keyboard type 3 (shift-space enabled kbd)
  +            if ( lKeyData & 0x80000000 ) break;
               // Toggle Hangul composition state
               //
               if (IsCompStr(hIMC))
  @@ -351,9 +390,8 @@
               if (!fOpen)
                   ImmSetOpenStatus(hIMC,FALSE);
   
  -            fRet = FALSE;
               ImmUnlockIMC(hIMC);
  -            return fRet;
  +            return FALSE;
               break;
           case VK_ESCAPE:
               if (dwOptionFlag & ESCENG_SUPPORT)
  @@ -361,9 +399,8 @@
               //ChangeMode(hIMC,TO_CMODE_ROMAN);
               break;
           case VK_SHIFT:
  -            fRet = FALSE;
               ImmUnlockIMC(hIMC);
  -            return fRet;
  +            return FALSE;
               break;
           default:
               break;
  @@ -371,25 +408,6 @@
   
       fOpen = lpIMC->fOpen;
   
  -#if 0
  -    // check OpenState.
  -    //  α׷ Open¿ Է  Ѵ.
  -    //   Է»ε Open state  .
  -    // , CompStr ִ 쿡 Ѵ.
  -    // CompStr ִ  Open· Ѵ. (Reconversion )
  -    if (fOpen && !IsCompStr(hIMC)) {
  -        if (ImmGetConversionStatus (hIMC, &dwConversion, &dwSentense)) {
  -            if (! (dwConversion & IME_CMODE_NATIVE)) {
  -                dwConversion &= ~IME_CMODE_NATIVE;
  -                dwConversion &= ~IME_CMODE_FULLSHAPE;
  -                MyDebugPrint((TEXT(" * English and OPEN state\n")));
  -                ImmSetOpenStatus(hIMC,FALSE);
  -                fOpen=FALSE;
  -            }
  -        }
  -    }
  -#endif
  -
       if (fOpen)
       {
           if (lpCompStr = (LPCOMPOSITIONSTRING)ImmLockIMCC(lpIMC->hCompStr))
  @@ -429,24 +447,6 @@
           if (lpCompStr)
               ImmUnlockIMCC(lpIMC->hCompStr);
   
  -    } else {
  -        // Open ¿ Reconversion ϱ  HACK HACK
  -        //  κ ɼ ϴ°?
  -        //   Open¿  Է  ʴ´.
  -        if ((vKey == VK_HANJA || vKey == VK_F9) && !IsCompStr(hIMC) ) {
  -            DWORD dwSize = (DWORD)MyImmRequestMessage(hIMC, IMR_RECONVERTSTRING, 0);
  -            if (dwSize) {
  -                ImmSetOpenStatus(hIMC,TRUE);
  -                MyDebugPrint((TEXT(" *** IME not open state *** \r\n")));
  -                if (DicKeydownHandler( hIMC, vKey, lKeyData, lpbKeyState ) ) {
  -                    fRet=TRUE;
  -                }
  -                if (!IsCompStr(hIMC)) {
  -                    ImmSetOpenStatus(hIMC,FALSE);
  -                    fRet=FALSE;
  -                }
  -            }
  -        }
       }
       // Some application do not accept WM_CHAR events with VK_PROCESSKEY.
       // For this appls we need a following hack:
  
  
  


wkpark      06/10/18 09:37:16

  Modified:    src      ui.c
  Log:
  oops! fixed last changes
  
  Revision  Changes    Path
  1.16      +2 -3      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- ui.c	16 Oct 2006 11:09:12 -0000	1.15
  +++ ui.c	18 Oct 2006 00:37:16 -0000	1.16
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.15 2006/10/16 11:09:12 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.16 2006/10/18 00:37:16 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -1248,10 +1248,9 @@
                   dvorak = !(lpIMC->fdwConversion & IME_CMODE_NATIVE);
               ImmUnlockIMC(hIMC);
           }
  +        dvorak = nocheck || dvorak;
       }
   
  -    dvorak = nocheck || dvorak;
  -
       lpmsg = (LPMSG)lParam;
       vKey = lpmsg->wParam;
   
  
  
  


wkpark      06/10/18 23:51:01

  Modified:    src      ui.c
  Log:
  fixed dvorak problem with some VK_OEM* symbols
  
  Revision  Changes    Path
  1.17      +30 -9     saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ui.c	18 Oct 2006 00:37:16 -0000	1.16
  +++ ui.c	18 Oct 2006 14:51:01 -0000	1.17
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.16 2006/10/18 00:37:16 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.17 2006/10/18 14:51:01 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -49,7 +49,7 @@
   BOOL WINAPI UnsetHookFunc(void);
   BOOL WINAPI SetConsoleHookFunc(void);
   BOOL WINAPI UnsetConsoleHookFunc(void);
  -void PASCAL DvorakKey(UINT,WPARAM, LPARAM);
  +void PASCAL DvorakKey(BOOL,WPARAM, LPARAM);
   
   static HHOOK hHookWnd = 0;
   static HHOOK hConsoleHookID = 0;
  @@ -1295,10 +1295,25 @@
                        lpmsg->lParam=(0xF2<<16) | 0x41000001;
                   }
               } else 
  -            if ( dvorak && // commit all CompStr like as IME 2002/2003
  -                (vKey >= '!' && vKey <= '~') &&
  +            if ( dvorak && vKey >= '!' &&
                   pbKeyState[VK_CONTROL] & 0x80) {
  -                DvorakKey(lpmsg->message,wParam,lParam);
  +                // commit all CompStr like as IME 2002/2003
  +
  +                if (vKey < '!' || vKey > '~') {
  +                    WORD ch;
  +                    UINT sc;
  +                    HKL hcur;
  +                    hcur= GetKeyboardLayout(0);
  +                    ch = (WORD)MapVirtualKeyEx(vKey,2,hcur);
  +
  +                    //ToAsciiEx(vKey,sc,pbKeyState,&ch,0,hcur);
  +                    ch = 0xff & ch;
  +                MyDebugPrint((TEXT("\t** Try to translate 0x%x 0x%x\r\n"),vKey,ch));
  +                    if (ch < '!' || ch > '~')
  +                        break;
  +                    lpmsg->wParam=ch;
  +                }
  +                DvorakKey(TRUE,wParam,lParam);
               }
               break;
           case WM_SYSCHAR:
  @@ -1400,11 +1415,11 @@
   }
   
   #if 1
  -void PASCAL DvorakKey(UINT message,WPARAM wParam, LPARAM lParam)
  +void PASCAL DvorakKey(BOOL mode,WPARAM wParam, LPARAM lParam)
   {
       BYTE pbKeyState [256];
       LPMSG lpmsg;
  -    WORD dv;
  +    WORD dv,vk;
       SHORT sc;
       UINT caps = 0;
       UINT vKey;
  @@ -1427,9 +1442,15 @@
               dv -= 'a' - 'A';
       } else
           dv = qwerty2dvorak_table[vKey - '!'];
  +
  +    vk = dv;
  +    if (mode) { // for Ctrl-X mode
  +        if (vk >='a' && vk <= 'z')
  +            vk -= 'a' - 'A';
  +    }
        
  -    lpmsg->wParam = dv;
  -    sc = VkKeyScan(dv);
  +    lpmsg->wParam = vk;
  +    sc = VkKeyScan(vk);
       lpmsg->lParam &= ~0x00ff0000;
       lpmsg->lParam |= (sc <<16);
       pbKeyState[dv]=1;
  
  
  


wkpark      06/10/23 07:04:28

  Modified:    src      ui.c
  Log:
  more fixes to last dvorak problem with VK_OEM_*
  
  Revision  Changes    Path
  1.18      +5 -7      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ui.c	18 Oct 2006 14:51:01 -0000	1.17
  +++ ui.c	22 Oct 2006 22:04:28 -0000	1.18
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.17 2006/10/18 14:51:01 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.18 2006/10/22 22:04:28 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -1295,11 +1295,8 @@
                        lpmsg->lParam=(0xF2<<16) | 0x41000001;
                   }
               } else 
  -            if ( dvorak && vKey >= '!' &&
  -                pbKeyState[VK_CONTROL] & 0x80) {
  -                // commit all CompStr like as IME 2002/2003
  -
  -                if (vKey < '!' || vKey > '~') {
  +            if ( dvorak && pbKeyState[VK_CONTROL] & 0x80) {
  +                if (vKey >= VK_OEM_1 && vKey <= VK_OEM_102) {
                       WORD ch;
                       UINT sc;
                       HKL hcur;
  @@ -1312,7 +1309,8 @@
                       if (ch < '!' || ch > '~')
                           break;
                       lpmsg->wParam=ch;
  -                }
  +                } else if (vKey < VK_1 || vKey > VK_Z)
  +                    break;
                   DvorakKey(TRUE,wParam,lParam);
               }
               break;
  
  
  


wkpark      06/10/23 07:05:32

  Modified:    src      imm.c
  Log:
  fixed ImeEscape() bug with the MS explorer
  
  Revision  Changes    Path
  1.20      +10 -25    saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- imm.c	18 Oct 2006 00:16:09 -0000	1.19
  +++ imm.c	22 Oct 2006 22:05:32 -0000	1.20
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.19 2006/10/18 00:16:09 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.20 2006/10/22 22:05:32 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -130,7 +130,7 @@
   
           case IME_ESC_HANJA_MODE:
               // EditPlus,AcroEdit only use it. XXX
  -            // EditPlus does not receive IMR_* message
  +            // EditPlus can not receive IMR_* message
               MyDebugPrint((TEXT("\tIME_ESC_HANJA_MODE:\r\n")));
               if (lpData == NULL) return FALSE;
   
  @@ -196,13 +196,13 @@
                                       //lpCompStr->dwCursorPos-=lpRS->dwStrLen;
                                       //if (lpCompStr->dwCursorPos <= 0) lpCompStr->dwCursorPos=0;
                                       //lpCompStr->dwCursorPos = Mylstrlen(lpstr)-1; // Err
  -                                    lpCompStr->dwCursorPos = 0;
  -                                    //lpCompStr->dwCursorPos = Mylstrlen(lpstr);
  +                                    //lpCompStr->dwCursorPos = 0;
  +                                    lpCompStr->dwCursorPos = Mylstrlen(lpstr);
           
                                       //MakeAttrClause(lpCompStr);
  -                                    lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),ATTR_INPUT,
  +                                    lmemset((LPBYTE)GETLPCOMPATTR(lpCompStr),ATTR_TARGET_CONVERTED,
                                               Mylstrlen(lpstr));
  -                                    lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),ATTR_INPUT,
  +                                    lmemset((LPBYTE)GETLPCOMPREADATTR(lpCompStr),ATTR_TARGET_CONVERTED,
                                               Mylstrlen(lpread));
           
                                       // make length
  @@ -219,34 +219,19 @@
                                       lpCompStr->dwCompClauseLen = 8;
                                       lpCompStr->dwCompReadClauseLen = 8;
                                       //
  -
  -#if 0
  -                                    Mylstrcpy(GETLPRESULTSTR(lpCompStr),GETLPCOMPSTR(lpCompStr));
  -                                    Mylstrcpy(GETLPRESULTREADSTR(lpCompStr),GETLPCOMPREADSTR(lpCompStr));
  -
  -                                    lpCompStr->dwResultStrLen = lpCompStr->dwCompStrLen;
  -                                    lpCompStr->dwResultReadStrLen = lpCompStr->dwCompReadStrLen;
  -                                    //
  -                                    // make clause info
  -                                    //
  -                                    SetClause(GETLPRESULTCLAUSE(lpCompStr),Mylstrlen(GETLPRESULTSTR(lpCompStr)));
  -                                    SetClause(GETLPRESULTREADCLAUSE(lpCompStr),Mylstrlen(GETLPRESULTREADSTR(lpCompStr)));
  -                                    lpCompStr->dwResultClauseLen = 8;
  -#endif
  -                                    //
  -                                    //
  -                                    //if (lpCompStr->dwCompReadStrLen > 0)
  -                                    //    lpCompStr->dwCompReadStrLen--;
  +                                    MyDebugPrint((TEXT(" *** dwCompStrLen= %d\r\n"),lpCompStr->dwCompStrLen));
   
   #if 0
                                       GnMsg.message = WM_IME_COMPOSITION;
                                       GnMsg.wParam = 0;
  +                                    //GnMsg.wParam = cs;
                                       GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  -                                    //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; //ѱ IME 2002,2003
  +                                    GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; //ѱ IME 2002,2003
                                       //if (dwImeFlag & SAENARU_ONTHESPOT)
                                       //    GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
                                       GenerateMessage(hIMC, lpIMC, NULL,(LPTRANSMSG)&GnMsg);
   #endif
  +                                    lRet=TRUE;
           		        } else {
                                       OutputDebugString(TEXT(" *** lpCompStr== NULL\r\n"));
                                   }
  
  
  


wkpark      06/10/23 16:41:40

  Modified:    src      hangul.c
  Log:
  activate USE_WM_CHAR for dvorak support under IME Open status
  
  Revision  Changes    Path
  1.16      +2 -2      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- hangul.c	14 Oct 2006 02:21:59 -0000	1.15
  +++ hangul.c	23 Oct 2006 07:41:39 -0000	1.16
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.15 2006/10/14 02:21:59 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.16 2006/10/23 07:41:39 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1489,7 +1489,7 @@
   
       if (fdwConversion & IME_CMODE_NATIVE)
   	hkey = keyToHangulKey( code );
  -#ifdef USE_WM_CHAR
  +#ifndef USE_NO_WM_CHAR
       if ( (!hkey || (hkey >= TEXT('!') && hkey <= TEXT('~')) )
   	    && !IsCompStr(hIMC)) {
   	//    Է¹ asciiڸ ״ ´.
  
  
  


wkpark      06/10/24 20:27:09

  Modified:    src      dic.c saenaru.h
  Log:
  add a hanja table to support hanja to hangul conversion (KS X 1001/1002 only).
  
  Revision  Changes    Path
  1.19      +17 -1     saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- dic.c	18 Oct 2006 00:15:43 -0000	1.18
  +++ dic.c	24 Oct 2006 11:27:08 -0000	1.19
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.18 2006/10/18 00:15:43 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.19 2006/10/24 11:27:08 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -285,6 +285,22 @@
   
           nBufLen = GetCandidateStringsFromDictionary(lpT2,
                   szBuf+Mylstrlen(lpT2)+1, 1024, (LPTSTR)szDic);
  +
  +        if (nBufLen < 1 && Mylstrlen(lpT2)==1 &&
  +                (*lpT2 < 0xac00 || *lpT2 >=0xd7a8)) {
  +            // check the hanja_to_hangul table
  +            UINT han;
  +            han = hanja_search(*lpT2);
  +            if (han) {
  +                //szBuf[0]= (MYCHAR)han; // set hangul
  +                //szBuf[1]= MYTEXT(' ');
  +                //szBuf[3]= 0;
  +                //*lpT2=(MYCHAR)han;
  +                // get hanja list for this hangul
  +                nBufLen = GetCandidateStringsFromDictionary((LPWSTR)&han,
  +                        szBuf+Mylstrlen(lpT2)+1, 1024, (LPTSTR)szDic);
  +            }
  +        }
       }
   
       //
  
  
  
  1.9       +4 -1      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- saenaru.h	10 Oct 2006 08:12:59 -0000	1.8
  +++ saenaru.h	24 Oct 2006 11:27:08 -0000	1.9
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.8 2006/10/10 08:12:59 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.9 2006/10/24 11:27:08 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -503,6 +503,9 @@
   int PASCAL set_compose(UINT);
   int PASCAL set_automata(UINT);
   
  +/* hanja.c       */
  +UINT PASCAL hanja_search(UINT);
  +
   /* DIC2.C        */
   BOOL OneCharZenToHan(WCHAR ,WCHAR* ,WCHAR* );
   WORD PASCAL HanToZen(WORD,WORD,DWORD);
  
  
  


wkpark      06/10/24 20:29:05

  Modified:    src      sources
  Log:
  add a hanja table to support hanja to hangul conversion (KS X 1001/1002 only).
  
  Revision  Changes    Path
  1.4       +1 -0      saenaru/src/sources
  
  Index: sources
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/sources,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- sources	12 Oct 2006 22:02:59 -0000	1.3
  +++ sources	24 Oct 2006 11:29:05 -0000	1.4
  @@ -35,6 +35,7 @@
           data.c \
           dic.c \
           hangul.c \
  +        hanja.c \
           saenaru.c \
           reg.c \
           imm.c \
  
  
  


wkpark      06/10/24 20:32:49

  Added:       src      hanja.c
  Log:
  add a hanja table to support hanja to hangul conversion (KS X 1001/1002 only).
  
  Revision  Changes    Path
  1.1                  saenaru/src/hanja.c
  
  Index: hanja.c
  ===================================================================
  /*
   * This file is part of Saenaru.
   *
   * Copyright (c) 1990-1998 Microsoft Corporation.
   * Copyright (c) 2006 Hye-Shik Chang <perky@i18n.org>.
   * Copyright (c) 2006 Won-Kyu Park <wkpark@kldp.org>.
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in the
   *    documentation and/or other materials provided with the distribution.
   *
   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   *
   * $Saenaru: saenaru/src/hanja.c,v 1.1 2006/10/24 11:32:49 wkpark Exp $
   */
  
  #include <windows.h>
  
  struct _ConvTbl 
  {
    UINT key;
    UINT code;
  };
  
  typedef struct _ConvTbl ConvTbl;
  
  /* conversion table for the KS X 1001 + KS X 1002 hanja characters */
  static const ConvTbl hanja_to_hangul[] = {
   { 0x4E00, 0xC77C },
   { 0x4E01, 0xC815 },
   { 0x4E03, 0xCE60 },
   { 0x4E07, 0xB9CC },
   { 0x4E08, 0xC7A5 },
   { 0x4E09, 0xC0BC },
   { 0x4E0A, 0xC0C1 },
   { 0x4E0B, 0xD558 },
   { 0x4E0D, 0xBD80 },
   { 0x4E11, 0xCD95 },
   { 0x4E14, 0xCC28 },
   { 0x4E15, 0xBE44 },
   { 0x4E16, 0xC138 },
   { 0x4E18, 0xAD6C },
   { 0x4E19, 0xBCD1 },
   { 0x4E1E, 0xC2B9 },
   { 0x4E2D, 0xC911 },
   { 0x4E32, 0xACF6 },
   { 0x4E38, 0xD658 },
   { 0x4E39, 0xB2E8 },
   { 0x4E3B, 0xC8FC },
   { 0x4E42, 0xC608 },
   { 0x4E43, 0xB0B4 },
   { 0x4E45, 0xAD6C },
   { 0x4E4B, 0xC9C0 },
   { 0x4E4D, 0xC0AC },
   { 0x4E4E, 0xD638 },
   { 0x4E4F, 0xD54D },
   { 0x4E56, 0xAD34 },
   { 0x4E58, 0xC2B9 },
   { 0x4E59, 0xC744 },
   { 0x4E5D, 0xAD6C },
   { 0x4E5E, 0xAC78 },
   { 0x4E5F, 0xC57C },
   { 0x4E6B, 0xAC08 },
   { 0x4E6D, 0xB3CC },
   { 0x4E73, 0xC720 },
   { 0x4E76, 0xBCFC },
   { 0x4E77, 0xC0B4 },
   { 0x4E7E, 0xAC74 },
   { 0x4E82, 0xB09C },
   { 0x4E86, 0xB8CC },
   { 0x4E88, 0xC5EC },
   { 0x4E8B, 0xC0AC },
   { 0x4E8C, 0xC774 },
   { 0x4E8E, 0xC6B0 },
   { 0x4E90, 0xC6B8 },
   { 0x4E91, 0xC6B4 },
   { 0x4E92, 0xD638 },
   { 0x4E94, 0xC624 },
   { 0x4E95, 0xC815 },
   { 0x4E98, 0xAE0D },
   { 0x4E9B, 0xC0AC },
   { 0x4E9E, 0xC544 },
   { 0x4EA1, 0xB9DD },
   { 0x4EA2, 0xD56D },
   { 0x4EA4, 0xAD50 },
   { 0x4EA5, 0xD574 },
   { 0x4EA6, 0xC5ED },
   { 0x4EA8, 0xD615 },
   { 0x4EAB, 0xD5A5 },
   { 0x4EAC, 0xACBD },
   { 0x4EAD, 0xC815 },
   { 0x4EAE, 0xB7C9 },
   { 0x4EB6, 0xB2E8 },
   { 0x4EBA, 0xC778 },
   { 0x4EC0, 0xC2ED },
   { 0x4EC1, 0xC778 },
   { 0x4EC4, 0xCE21 },
   { 0x4EC7, 0xAD6C },
   { 0x4ECA, 0xAE08 },
   { 0x4ECB, 0xAC1C },
   { 0x4ECD, 0xC789 },
   { 0x4ED4, 0xC790 },
   { 0x4ED5, 0xC0AC },
   { 0x4ED6, 0xD0C0 },
   { 0x4ED7, 0xC7A5 },
   { 0x4ED8, 0xBD80 },
   { 0x4ED9, 0xC120 },
   { 0x4EDD, 0xB3D9 },
   { 0x4EDF, 0xCC9C },
   { 0x4EE3, 0xB300 },
   { 0x4EE4, 0xB839 },
   { 0x4EE5, 0xC774 },
   { 0x4EF0, 0xC559 },
   { 0x4EF2, 0xC911 },
   { 0x4EF6, 0xAC74 },
   { 0x4EF7, 0xAC1C },
   { 0x4EFB, 0xC784 },
   { 0x4F01, 0xAE30 },
   { 0x4F09, 0xD56D },
   { 0x4F0A, 0xC774 },
   { 0x4F0B, 0xAE09 },
   { 0x4F0D, 0xC624 },
   { 0x4F0E, 0xAE30 },
   { 0x4F0F, 0xBCF5 },
   { 0x4F10, 0xBC8C },
   { 0x4F11, 0xD734 },
   { 0x4F2F, 0xBC31 },
   { 0x4F34, 0xBC18 },
   { 0x4F36, 0xB839 },
   { 0x4F38, 0xC2E0 },
   { 0x4F3A, 0xC0AC },
   { 0x4F3C, 0xC0AC },
   { 0x4F3D, 0xAC00 },
   { 0x4F43, 0xC804 },
   { 0x4F46, 0xB2E8 },
   { 0x4F47, 0xC800 },
   { 0x4F48, 0xD3EC },
   { 0x4F4D, 0xC704 },
   { 0x4F4E, 0xC800 },
   { 0x4F4F, 0xC8FC },
   { 0x4F50, 0xC88C },
   { 0x4F51, 0xC6B0 },
   { 0x4F55, 0xD558 },
   { 0x4F59, 0xC5EC },
   { 0x4F5A, 0xC77C },
   { 0x4F5B, 0xBD88 },
   { 0x4F5C, 0xC791 },
   { 0x4F69, 0xD328 },
   { 0x4F6F, 0xC591 },
   { 0x4F70, 0xBC31 },
   { 0x4F73, 0xAC00 },
   { 0x4F76, 0xAE38 },
   { 0x4F7A, 0xC804 },
   { 0x4F7E, 0xC77C },
   { 0x4F7F, 0xC0AC },
   { 0x4F81, 0xC2E0 },
   { 0x4F83, 0xAC04 },
   { 0x4F84, 0xC9C8 },
   { 0x4F86, 0xB0B4 },
   { 0x4F88, 0xCE58 },
   { 0x4F8A, 0xAD11 },
   { 0x4F8B, 0xB840 },
   { 0x4F8D, 0xC2DC },
   { 0x4F8F, 0xC8FC },
   { 0x4F91, 0xC720 },
   { 0x4F96, 0xB95C },
   { 0x4F98, 0xCC28 },
   { 0x4F9B, 0xACF5 },
   { 0x4F9D, 0xC758 },
   { 0x4FAE, 0xBAA8 },
   { 0x4FAF, 0xD6C4 },
   { 0x4FB5, 0xCE68 },
   { 0x4FB6, 0xB824 },
   { 0x4FBF, 0xBCC0 },
   { 0x4FC2, 0xACC4 },
   { 0x4FC3, 0xCD09 },
   { 0x4FC4, 0xC544 },
   { 0x4FC9, 0xC624 },
   { 0x4FCA, 0xC900 },
   { 0x4FCE, 0xC870 },
   { 0x4FD1, 0xC6A9 },
   { 0x4FD3, 0xACBD },
   { 0x4FD4, 0xD604 },
   { 0x4FD7, 0xC18D },
   { 0x4FDA, 0xB9AC },
   { 0x4FDD, 0xBCF4 },
   { 0x4FDF, 0xC0AC },
   { 0x4FE0, 0xD611 },
   { 0x4FE1, 0xC2E0 },
   { 0x4FEE, 0xC218 },
   { 0x4FEF, 0xBD80 },
   { 0x4FF1, 0xAD6C },
   { 0x4FF3, 0xBC30 },
   { 0x4FF5, 0xD45C },
   { 0x4FF8, 0xBD09 },
   { 0x4FFA, 0xC5C4 },
   { 0x5002, 0xBCD1 },
   { 0x5006, 0xB7C9 },
   { 0x5009, 0xCC3D },
   { 0x500B, 0xAC1C },
   { 0x500D, 0xBC30 },
   { 0x5011, 0xBB38 },
   { 0x5012, 0xB3C4 },
   { 0x5016, 0xD589 },
   { 0x5019, 0xD6C4 },
   { 0x501A, 0xC758 },
   { 0x501C, 0xCC99 },
   { 0x501E, 0xACBD },
   { 0x501F, 0xCC28 },
   { 0x5021, 0xCC3D },
   { 0x5023, 0xBC29 },
   { 0x5024, 0xCE58 },
   { 0x5026, 0xAD8C },
   { 0x5027, 0xC885 },
   { 0x5028, 0xAC70 },
   { 0x502A, 0xC608 },
   { 0x502B, 0xB95C },
   { 0x502C, 0xD0C1 },
   { 0x502D, 0xC65C },
   { 0x503B, 0xC57C },
   { 0x5043, 0xC5B8 },
   { 0x5047, 0xAC00 },
   { 0x5048, 0xAC8C },
   { 0x5049, 0xC704 },
   { 0x504F, 0xD3B8 },
   { 0x5055, 0xD574 },
   { 0x505A, 0xC8FC },
   { 0x505C, 0xC815 },
   { 0x5065, 0xAC74 },
   { 0x5074, 0xCE21 },
   { 0x5075, 0xC815 },
   { 0x5076, 0xC6B0 },
   { 0x5078, 0xD22C },
   { 0x5080, 0xAD34 },
   { 0x5085, 0xBD80 },
   { 0x508D, 0xBC29 },
   { 0x5091, 0xAC78 },
   { 0x5098, 0xC0B0 },
   { 0x5099, 0xBE44 },
   { 0x50AC, 0xCD5C },
   { 0x50AD, 0xC6A9 },
   { 0x50B2, 0xC624 },
   { 0x50B3, 0xC804 },
   { 0x50B5, 0xCC44 },
   { 0x50B7, 0xC0C1 },
   { 0x50BE, 0xACBD },
   { 0x50C5, 0xADFC },
   { 0x50C9, 0xCCA8 },
   { 0x50CA, 0xC120 },
   { 0x50CF, 0xC0C1 },
   { 0x50D1, 0xAD50 },
   { 0x50D5, 0xBCF5 },
   { 0x50D6, 0xD76C },
   { 0x50DA, 0xB8CC },
   { 0x50DE, 0xC704 },
   { 0x50E5, 0xC694 },
   { 0x50E7, 0xC2B9 },
   { 0x50ED, 0xCC38 },
   { 0x50F9, 0xAC00 },
   { 0x50FB, 0xBCBD },
   { 0x50FF, 0xC0AC },
   { 0x5100, 0xC758 },
   { 0x5101, 0xC900 },
   { 0x5104, 0xC5B5 },
   { 0x5106, 0xACBD },
   { 0x5109, 0xAC80 },
   { 0x5112, 0xC720 },
   { 0x511F, 0xC0C1 },
   { 0x5121, 0xB8B0 },
   { 0x512A, 0xC6B0 },
   { 0x5132, 0xC800 },
   { 0x5137, 0xB824 },
   { 0x513A, 0xB098 },
   { 0x513C, 0xC5C4 },
   { 0x5140, 0xC62C },
   { 0x5141, 0xC724 },
   { 0x5143, 0xC6D0 },
   { 0x5144, 0xD615 },
   { 0x5145, 0xCDA9 },
   { 0x5146, 0xC870 },
   { 0x5147, 0xD749 },
   { 0x5148, 0xC120 },
   { 0x5149, 0xAD11 },
   { 0x514B, 0xADF9 },
   { 0x514C, 0xD0DC },
   { 0x514D, 0xBA74 },
   { 0x514E, 0xD1A0 },
   { 0x5152, 0xC544 },
   { 0x515C, 0xB450 },
   { 0x5162, 0xAE0D },
   { 0x5165, 0xC785 },
   { 0x5167, 0xB0B4 },
   { 0x5168, 0xC804 },
   { 0x5169, 0xB7C9 },
   { 0x516A, 0xC720 },
   { 0x516B, 0xD314 },
   { 0x516C, 0xACF5 },
   { 0x516D, 0xB959 },
   { 0x516E, 0xD61C },
   { 0x5171, 0xACF5 },
   { 0x5175, 0xBCD1 },
   { 0x5176, 0xAE30 },
   { 0x5177, 0xAD6C },
   { 0x5178, 0xC804 },
   { 0x517C, 0xACB8 },
   { 0x5180, 0xAE30 },
   { 0x5186, 0xC5D4 },
   { 0x518A, 0xCC45 },
   { 0x518D, 0xC7AC },
   { 0x5192, 0xBAA8 },
   { 0x5195, 0xBA74 },
   { 0x5197, 0xC6A9 },
   { 0x51A0, 0xAD00 },
   { 0x51A5, 0xBA85 },
   { 0x51AA, 0xBA71 },
   { 0x51AC, 0xB3D9 },
   { 0x51B6, 0xC57C },
   { 0x51B7, 0xB0C9 },
   { 0x51BD, 0xB82C },
   { 0x51C4, 0xCC98 },
   { 0x51C6, 0xC900 },
   { 0x51C9, 0xB7C9 },
   { 0x51CB, 0xC870 },
   { 0x51CC, 0xB2A5 },
   { 0x51CD, 0xB3D9 },
   { 0x51DC, 0xB2A0 },
   { 0x51DD, 0xC751 },
   { 0x51DE, 0xD76C },
   { 0x51E1, 0xBC94 },
   { 0x51F0, 0xD669 },
   { 0x51F1, 0xAC1C },
   { 0x51F6, 0xD749 },
   { 0x51F8, 0xCCA0 },
   { 0x51F9, 0xC694 },
   { 0x51FA, 0xCD9C },
   { 0x51FD, 0xD568 },
   { 0x5200, 0xB3C4 },
   { 0x5203, 0xC778 },
   { 0x5206, 0xBD84 },
   { 0x5207, 0xC808 },
   { 0x5208, 0xC608 },
   { 0x520A, 0xAC04 },
   { 0x520E, 0xBB38 },
   { 0x5211, 0xD615 },
   { 0x5217, 0xB82C },
   { 0x521D, 0xCD08 },
   { 0x5224, 0xD310 },
   { 0x5225, 0xBCC4 },
   { 0x5229, 0xB9AC },
   { 0x522A, 0xC0B0 },
   { 0x522E, 0xAD04 },
   { 0x5230, 0xB3C4 },
   { 0x5236, 0xC81C },
   { 0x5237, 0xC1C4 },
   { 0x5238, 0xAD8C },
   { 0x5239, 0xCC30 },
   { 0x523A, 0xC790 },
   { 0x523B, 0xAC01 },
   { 0x5243, 0xCCB4 },
   { 0x5247, 0xCE59 },
   { 0x524A, 0xC0AD },
   { 0x524B, 0xADF9 },
   { 0x524C, 0xB784 },
   { 0x524D, 0xC804 },
   { 0x5254, 0xCC99 },
   { 0x5256, 0xBD80 },
   { 0x525B, 0xAC15 },
   { 0x525D, 0xBC15 },
   { 0x5261, 0xC12C },
   { 0x5269, 0xC789 },
   { 0x526A, 0xC804 },
   { 0x526F, 0xBD80 },
   { 0x5272, 0xD560 },
   { 0x5275, 0xCC3D },
   { 0x527D, 0xD45C },
   { 0x527F, 0xCD08 },
   { 0x5283, 0xD68D },
   { 0x5287, 0xADF9 },
   { 0x5288, 0xBCBD },
   { 0x5289, 0xB958 },
   { 0x528D, 0xAC80 },
   { 0x5291, 0xC81C },
   { 0x5292, 0xAC80 },
   { 0x529B, 0xB825 },
   { 0x529F, 0xACF5 },
   { 0x52A0, 0xAC00 },
   { 0x52A3, 0xB82C },
   { 0x52A4, 0xADFC },
   { 0x52A9, 0xC870 },
   { 0x52AA, 0xB178 },
   { 0x52AB, 0xAC81 },
   { 0x52BE, 0xD575 },
   { 0x52C1, 0xACBD },
   { 0x52C3, 0xBC1C },
   { 0x52C5, 0xCE59 },
   { 0x52C7, 0xC6A9 },
   { 0x52C9, 0xBA74 },
   { 0x52CD, 0xACBD },
   { 0x52D2, 0xB291 },
   { 0x52D5, 0xB3D9 },
   { 0x52D6, 0xC6B1 },
   { 0x52D8, 0xAC10 },
   { 0x52D9, 0xBB34 },
   { 0x52DB, 0xD6C8 },
   { 0x52DD, 0xC2B9 },
   { 0x52DE, 0xB178 },
   { 0x52DF, 0xBAA8 },
   { 0x52E2, 0xC138 },
   { 0x52E3, 0xC801 },
   { 0x52E4, 0xADFC },
   { 0x52F3, 0xD6C8 },
   { 0x52F5, 0xB824 },
   { 0x52F8, 0xAD8C },
   { 0x52FA, 0xC791 },
   { 0x52FB, 0xADE0 },
   { 0x52FE, 0xAD6C },
   { 0x52FF, 0xBB3C },
   { 0x5305, 0xD3EC },
   { 0x5308, 0xD749 },
   { 0x530D, 0xD3EC },
   { 0x530F, 0xD3EC },
   { 0x5310, 0xBCF5 },
   { 0x5315, 0xBE44 },
   { 0x5316, 0xD654 },
   { 0x5317, 0xBC30 },
   { 0x5319, 0xC2DC },
   { 0x5320, 0xC7A5 },
   { 0x5321, 0xAD11 },
   { 0x5323, 0xAC11 },
   { 0x532A, 0xBE44 },
   { 0x532F, 0xD68C },
   { 0x5339, 0xD544 },
   { 0x533F, 0xB2C9 },
   { 0x5340, 0xAD6C },
   { 0x5341, 0xC2ED },
   { 0x5343, 0xCC9C },
   { 0x5344, 0xC785 },
   { 0x5347, 0xC2B9 },
   { 0x5348, 0xC624 },
   { 0x5349, 0xD6FC },
   { 0x534A, 0xBC18 },
   { 0x534D, 0xB9CC },
   { 0x5351, 0xBE44 },
   { 0x5352, 0xC878 },
   { 0x5353, 0xD0C1 },
   { 0x5354, 0xD611 },
   { 0x5357, 0xB0A8 },
   { 0x535A, 0xBC15 },
   { 0x535C, 0xBCF5 },
   { 0x535E, 0xBCC0 },
   { 0x5360, 0xC810 },
   { 0x5366, 0xAD18 },
   { 0x5368, 0xC124 },
   { 0x536F, 0xBB18 },
   { 0x5370, 0xC778 },
   { 0x5371, 0xC704 },
   { 0x5374, 0xAC01 },
   { 0x5375, 0xB09C },
   { 0x5377, 0xAD8C },
   { 0x537D, 0xC989 },
   { 0x537F, 0xACBD },
   { 0x5384, 0xC561 },
   { 0x5393, 0xC560 },
   { 0x5398, 0xB9AC },
   { 0x539A, 0xD6C4 },
   { 0x539F, 0xC6D0 },
   { 0x53A0, 0xCE21 },
   { 0x53A5, 0xAD90 },
   { 0x53A6, 0xD558 },
   { 0x53AD, 0xC5FC },
   { 0x53BB, 0xAC70 },
   { 0x53C3, 0xC0BC },
   { 0x53C8, 0xC6B0 },
   { 0x53C9, 0xCC28 },
   { 0x53CA, 0xAE09 },
   { 0x53CB, 0xC6B0 },
   { 0x53CD, 0xBC18 },
   { 0x53D4, 0xC219 },
   { 0x53D6, 0xCDE8 },
   { 0x53D7, 0xC218 },
   { 0x53DB, 0xBC18 },
   { 0x53E1, 0xC608 },
   { 0x53E2, 0xCD1D },
   { 0x53E3, 0xAD6C },
   { 0x53E4, 0xACE0 },
   { 0x53E5, 0xAD6C },
   { 0x53E9, 0xACE0 },
   { 0x53EA, 0xC9C0 },
   { 0x53EB, 0xADDC },
   { 0x53EC, 0xC18C },
   { 0x53ED, 0xD314 },
   { 0x53EF, 0xAC00 },
   { 0x53F0, 0xD0DC },
   { 0x53F1, 0xC9C8 },
   { 0x53F2, 0xC0AC },
   { 0x53F3, 0xC6B0 },
   { 0x53F8, 0xC0AC },
   { 0x5403, 0xD758 },
   { 0x5404, 0xAC01 },
   { 0x5408, 0xD569 },
   { 0x5409, 0xAE38 },
   { 0x540A, 0xC801 },
   { 0x540C, 0xB3D9 },
   { 0x540D, 0xBA85 },
   { 0x540E, 0xD6C4 },
   { 0x540F, 0xB9AC },
   { 0x5410, 0xD1A0 },
   { 0x5411, 0xD5A5 },
   { 0x541B, 0xAD70 },
   { 0x541D, 0xB9B0 },
   { 0x541F, 0xC74C },
   { 0x5420, 0xD3D0 },
   { 0x5426, 0xBD80 },
   { 0x5429, 0xBD84 },
   { 0x542B, 0xD568 },
   { 0x5433, 0xC624 },
   { 0x5438, 0xD761 },
   { 0x5439, 0xCDE8 },
   { 0x543B, 0xBB38 },
   { 0x543C, 0xD6C4 },
   { 0x543E, 0xC624 },
   { 0x5442, 0xB824 },
   { 0x5448, 0xC815 },
   { 0x544A, 0xACE0 },
   { 0x5451, 0xD0C4 },
   { 0x5468, 0xC8FC },
   { 0x546A, 0xC8FC },
   { 0x5471, 0xACE0 },
   { 0x5473, 0xBBF8 },
   { 0x5475, 0xAC00 },
   { 0x547B, 0xC2E0 },
   { 0x547C, 0xD638 },
   { 0x547D, 0xBA85 },
   { 0x5480, 0xC800 },
   { 0x5486, 0xD3EC },
   { 0x548C, 0xD654 },
   { 0x548E, 0xAD6C },
   { 0x5490, 0xBD80 },
   { 0x54A4, 0xD0C0 },
   { 0x54A8, 0xC790 },
   { 0x54AB, 0xC9C0 },
   { 0x54AC, 0xAD50 },
   { 0x54B3, 0xD574 },
   { 0x54B8, 0xD568 },
   { 0x54BD, 0xC5F4 },
   { 0x54C0, 0xC560 },
   { 0x54C1, 0xD488 },
   { 0x54C4, 0xD64D },
   { 0x54C8, 0xD569 },
   { 0x54C9, 0xC7AC },
   { 0x54E1, 0xC6D0 },
   { 0x54E5, 0xAC00 },
   { 0x54E8, 0xCD08 },
   { 0x54ED, 0xACE1 },
   { 0x54EE, 0xD6A8 },
   { 0x54F2, 0xCCA0 },
   { 0x54FA, 0xD3EC },
   { 0x5504, 0xD328 },
   { 0x5506, 0xC0AC },
   { 0x5507, 0xC9C4 },
   { 0x550E, 0xB9AC },
   { 0x5510, 0xB2F9 },
   { 0x551C, 0xB9D0 },
   { 0x552F, 0xC720 },
   { 0x5531, 0xCC3D },
   { 0x5535, 0xC554 },
   { 0x553E, 0xD0C0 },
   { 0x5544, 0xD0C1 },
   { 0x5546, 0xC0C1 },
   { 0x554F, 0xBB38 },
   { 0x5553, 0xACC4 },
   { 0x5556, 0xB2F4 },
   { 0x555E, 0xC544 },
   { 0x5563, 0xD568 },
   { 0x557C, 0xC81C },
   { 0x5580, 0xAC1D },
   { 0x5584, 0xC120 },
   { 0x5586, 0xCCA0 },
   { 0x5587, 0xB098 },
   { 0x5589, 0xD6C4 },
   { 0x558A, 0xD568 },
   { 0x5598, 0xCC9C },
   { 0x5599, 0xD6FC },
   { 0x559A, 0xD658 },
   { 0x559C, 0xD76C },
   { 0x559D, 0xAC08 },
   { 0x55A7, 0xD6E4 },
   { 0x55A9, 0xC720 },
   { 0x55AA, 0xC0C1 },
   { 0x55AB, 0xB07D },
   { 0x55AC, 0xAD50 },
   { 0x55AE, 0xB2E8 },
   { 0x55C5, 0xD6C4 },
   { 0x55C7, 0xC0C9 },
   { 0x55D4, 0xC9C4 },
   { 0x55DA, 0xC624 },
   { 0x55DC, 0xAE30 },
   { 0x55DF, 0xCC28 },
   { 0x55E3, 0xC0AC },
   { 0x55E4, 0xCE58 },
   { 0x55FD, 0xC218 },
   { 0x55FE, 0xC8FC },
   { 0x5606, 0xD0C4 },
   { 0x5609, 0xAC00 },
   { 0x5614, 0xAD6C },
   { 0x5617, 0xC0C1 },
   { 0x562F, 0xC18C },
   { 0x5632, 0xC870 },
   { 0x5634, 0xCDE8 },
   { 0x5636, 0xC2DC },
   { 0x5653, 0xD5C8 },
   { 0x5668, 0xAE30 },
   { 0x566B, 0xD76C },
   { 0x5674, 0xBD84 },
   { 0x5686, 0xD6A8 },
   { 0x56A5, 0xC5F0 },
   { 0x56AC, 0xBE48 },
   { 0x56AE, 0xD5A5 },
   { 0x56B4, 0xC5C4 },
   { 0x56BC, 0xC791 },
   { 0x56CA, 0xB0AD },
   { 0x56CD, 0xD76C },
   { 0x56D1, 0xCD09 },
   { 0x56DA, 0xC218 },
   { 0x56DB, 0xC0AC },
   { 0x56DE, 0xD68C },
   { 0x56E0, 0xC778 },
   { 0x56F0, 0xACE4 },
   { 0x56F9, 0xB839 },
   { 0x56FA, 0xACE0 },
   { 0x5703, 0xD3EC },
   { 0x5704, 0xC5B4 },
   { 0x5708, 0xAD8C },
   { 0x570B, 0xAD6D },
   { 0x570D, 0xC704 },
   { 0x5712, 0xC6D0 },
   { 0x5713, 0xC6D0 },
   { 0x5716, 0xB3C4 },
   { 0x5718, 0xB2E8 },
   { 0x571F, 0xD1A0 },
   { 0x5728, 0xC7AC },
   { 0x572D, 0xADDC },
   { 0x5730, 0xC9C0 },
   { 0x573B, 0xAE30 },
   { 0x5740, 0xC9C0 },
   { 0x5742, 0xD310 },
   { 0x5747, 0xADE0 },
   { 0x574A, 0xBC29 },
   { 0x574D, 0xB2F4 },
   { 0x574E, 0xAC10 },
   { 0x5750, 0xC88C },
   { 0x5751, 0xAC31 },
   { 0x5761, 0xD30C },
   { 0x5764, 0xACE4 },
   { 0x5766, 0xD0C4 },
   { 0x576A, 0xD3C9 },
   { 0x576E, 0xB300 },
   { 0x5770, 0xACBD },
   { 0x5775, 0xAD6C },
   { 0x577C, 0xD0C1 },
   { 0x5782, 0xC218 },
   { 0x5788, 0xB300 },
   { 0x578B, 0xD615 },
   { 0x5793, 0xD574 },
   { 0x57A0, 0xC740 },
   { 0x57A2, 0xAD6C },
   { 0x57A3, 0xC6D0 },
   { 0x57C3, 0xC560 },
   { 0x57C7, 0xC6A9 },
   { 0x57C8, 0xC900 },
   { 0x57CB, 0xB9E4 },
   { 0x57CE, 0xC131 },
   { 0x57DF, 0xC5ED },
   { 0x57E0, 0xBD80 },
   { 0x57F0, 0xCC44 },
   { 0x57F4, 0xC2DD },
   { 0x57F7, 0xC9D1 },
   { 0x57F9, 0xBC30 },
   { 0x57FA, 0xAE30 },
   { 0x57FC, 0xAE30 },
   { 0x5800, 0xAD74 },
   { 0x5802, 0xB2F9 },
   { 0x5805, 0xACAC },
   { 0x5806, 0xD1F4 },
   { 0x5808, 0xAC15 },
   { 0x5809, 0xC721 },
   { 0x580A, 0xC545 },
   { 0x581E, 0xCCA9 },
   { 0x5821, 0xBCF4 },
   { 0x5824, 0xC81C },
   { 0x5827, 0xC5F0 },
   { 0x582A, 0xAC10 },
   { 0x582F, 0xC694 },
   { 0x5830, 0xC5B8 },
   { 0x5831, 0xBCF4 },
   { 0x5834, 0xC7A5 },
   { 0x5835, 0xB3C4 },
   { 0x583A, 0xACC4 },
   { 0x584A, 0xAD34 },
   { 0x584B, 0xC601 },
   { 0x584F, 0xAC1C },
   { 0x5851, 0xC18C },
   { 0x5854, 0xD0D1 },
   { 0x5857, 0xB3C4 },
   { 0x5858, 0xB2F9 },
   { 0x585A, 0xCD1D },
   { 0x585E, 0xC0C8 },
   { 0x5861, 0xC804 },
   { 0x5862, 0xC624 },
   { 0x5864, 0xD6C8 },
   { 0x5875, 0xC9C4 },
   { 0x5879, 0xCC38 },
   { 0x587C, 0xC804 },
   { 0x587E, 0xC219 },
   { 0x5883, 0xACBD },
   { 0x5885, 0xC11C },
   { 0x5889, 0xC6A9 },
   { 0x5893, 0xBB18 },
   { 0x589C, 0xCD94 },
   { 0x589E, 0xC99D },
   { 0x589F, 0xD5C8 },
   { 0x58A8, 0xBB35 },
   { 0x58A9, 0xB3C8 },
   { 0x58AE, 0xD0C0 },
   { 0x58B3, 0xBD84 },
   { 0x58BA, 0xC624 },
   { 0x58BB, 0xC7A5 },
   { 0x58BE, 0xAC04 },
   { 0x58C1, 0xBCBD },
   { 0x58C5, 0xC639 },
   { 0x58C7, 0xB2E8 },
   { 0x58CE, 0xD6C8 },
   { 0x58D1, 0xD559 },
   { 0x58D3, 0xC555 },
   { 0x58D5, 0xD638 },
   { 0x58D8, 0xB204 },
   { 0x58D9, 0xAD11 },
   { 0x58DE, 0xAD34 },
   { 0x58DF, 0xB18D },
   { 0x58E4, 0xC591 },
   { 0x58EB, 0xC0AC },
   { 0x58EC, 0xC784 },
   { 0x58EF, 0xC7A5 },
   { 0x58F9, 0xC77C },
   { 0x58FA, 0xD638 },
   { 0x58FB, 0xC11C },
   { 0x58FD, 0xC218 },
   { 0x590F, 0xD558 },
   { 0x5914, 0xAE30 },
   { 0x5915, 0xC11D },
   { 0x5916, 0xC678 },
   { 0x5919, 0xC219 },
   { 0x591A, 0xB2E4 },
   { 0x591C, 0xC57C },
   { 0x5922, 0xBABD },
   { 0x5927, 0xB300 },
   { 0x5929, 0xCC9C },
   { 0x592A, 0xD0DC },
   { 0x592B, 0xBD80 },
   { 0x592D, 0xC694 },
   { 0x592E, 0xC559 },
   { 0x5931, 0xC2E4 },
   { 0x5937, 0xC774 },
   { 0x593E, 0xD611 },
   { 0x5944, 0xC5C4 },
   { 0x5947, 0xAE30 },
   { 0x5948, 0xB098 },
   { 0x5949, 0xBD09 },
   { 0x594E, 0xADDC },
   { 0x594F, 0xC8FC },
   { 0x5950, 0xD658 },
   { 0x5951, 0xACC4 },
   { 0x5954, 0xBD84 },
   { 0x5955, 0xD601 },
   { 0x5957, 0xD22C },
   { 0x595A, 0xD574 },
   { 0x5960, 0xC804 },
   { 0x5962, 0xC0AC },
   { 0x5967, 0xC624 },
   { 0x596A, 0xD0C8 },
   { 0x596B, 0xC724 },
   { 0x596C, 0xC7A5 },
   { 0x596D, 0xC11D },
   { 0x596E, 0xBD84 },
   { 0x5973, 0xB140 },
   { 0x5974, 0xB178 },
   { 0x5978, 0xAC04 },
   { 0x597D, 0xD638 },
   { 0x5982, 0xC5EC },
   { 0x5983, 0xBE44 },
   { 0x5984, 0xB9DD },
   { 0x598A, 0xC784 },
   { 0x5993, 0xAE30 },
   { 0x5996, 0xC694 },
   { 0x5997, 0xAE08 },
   { 0x5999, 0xBB18 },
   { 0x59A5, 0xD0C0 },
   { 0x59A8, 0xBC29 },
   { 0x59AC, 0xD22C },
   { 0x59B9, 0xB9E4 },
   { 0x59BB, 0xCC98 },
   { 0x59BE, 0xCCA9 },
   { 0x59C3, 0xC815 },
   { 0x59C6, 0xBAA8 },
   { 0x59C9, 0xC790 },
   { 0x59CB, 0xC2DC },
   { 0x59D0, 0xC800 },
   { 0x59D1, 0xACE0 },
   { 0x59D3, 0xC131 },
   { 0x59D4, 0xC704 },
   { 0x59D9, 0xC784 },
   { 0x59DA, 0xC694 },
   { 0x59DC, 0xAC15 },
   { 0x59DD, 0xC8FC },
   { 0x59E6, 0xAC04 },
   { 0x59E8, 0xC774 },
   { 0x59EA, 0xC9C8 },
   { 0x59EC, 0xD76C },
   { 0x59EE, 0xD56D },
   { 0x59F8, 0xC5F0 },
   { 0x59FB, 0xC778 },
   { 0x59FF, 0xC790 },
   { 0x5A01, 0xC704 },
   { 0x5A03, 0xC65C },
   { 0x5A11, 0xC0AC },
   { 0x5A18, 0xB0AD },
   { 0x5A1B, 0xC624 },
   { 0x5A1C, 0xB098 },
   { 0x5A1F, 0xC5F0 },
   { 0x5A20, 0xC2E0 },
   { 0x5A25, 0xC544 },
   { 0x5A29, 0xB9CC },
   { 0x5A36, 0xCDE8 },
   { 0x5A3C, 0xCC3D },
   { 0x5A41, 0xB8E8 },
   { 0x5A46, 0xD30C },
   { 0x5A49, 0xC644 },
   { 0x5A5A, 0xD63C },
   { 0x5A62, 0xBE44 },
   { 0x5A66, 0xBD80 },
   { 0x5A92, 0xB9E4 },
   { 0x5A9A, 0xBBF8 },
   { 0x5A9B, 0xC6D0 },
   { 0x5AA4, 0xC2DC },
   { 0x5AC1, 0xAC00 },
   { 0x5AC2, 0xC218 },
   { 0x5AC4, 0xC6D0 },
   { 0x5AC9, 0xC9C8 },
   { 0x5ACC, 0xD610 },
   { 0x5AE1, 0xC801 },
   { 0x5AE6, 0xD56D },
   { 0x5AE9, 0xB208 },
   { 0x5B05, 0xD654 },
   { 0x5B09, 0xD76C },
   { 0x5B0B, 0xC120 },
   { 0x5B0C, 0xAD50 },
   { 0x5B16, 0xD3D0 },
   { 0x5B2A, 0xBE48 },
   { 0x5B40, 0xC0C1 },
   { 0x5B43, 0xC591 },
   { 0x5B50, 0xC790 },
   { 0x5B51, 0xD608 },
   { 0x5B54, 0xACF5 },
   { 0x5B55, 0xC789 },
   { 0x5B57, 0xC790 },
   { 0x5B58, 0xC874 },
   { 0x5B5A, 0xBD80 },
   { 0x5B5C, 0xC790 },
   { 0x5B5D, 0xD6A8 },
   { 0x5B5F, 0xB9F9 },
   { 0x5B63, 0xACC4 },
   { 0x5B64, 0xACE0 },
   { 0x5B69, 0xD574 },
   { 0x5B6B, 0xC190 },
   { 0x5B70, 0xC219 },
   { 0x5B71, 0xC794 },
   { 0x5B75, 0xBD80 },
   { 0x5B78, 0xD559 },
   { 0x5B7A, 0xC720 },
   { 0x5B7C, 0xC5BC },
   { 0x5B85, 0xB301 },
   { 0x5B87, 0xC6B0 },
   { 0x5B88, 0xC218 },
   { 0x5B89, 0xC548 },
   { 0x5B8B, 0xC1A1 },
   { 0x5B8C, 0xC644 },
   { 0x5B8F, 0xAD49 },
   { 0x5B93, 0xBCF5 },
   { 0x5B95, 0xD0D5 },
   { 0x5B96, 0xD6A1 },
   { 0x5B97, 0xC885 },
   { 0x5B98, 0xAD00 },
   { 0x5B99, 0xC8FC },
   { 0x5B9A, 0xC815 },
   { 0x5B9B, 0xC644 },
   { 0x5B9C, 0xC758 },
   { 0x5BA2, 0xAC1D },
   { 0x5BA3, 0xC120 },
   { 0x5BA4, 0xC2E4 },
   { 0x5BA5, 0xC720 },
   { 0x5BA6, 0xD658 },
   { 0x5BAC, 0xC131 },
   { 0x5BAE, 0xAD81 },
   { 0x5BB0, 0xC7AC },
   { 0x5BB3, 0xD574 },
   { 0x5BB4, 0xC5F0 },
   { 0x5BB5, 0xC18C },
   { 0x5BB6, 0xAC00 },
   { 0x5BB8, 0xC2E0 },
   { 0x5BB9, 0xC6A9 },
   { 0x5BBF, 0xC219 },
   { 0x5BC0, 0xCC44 },
   { 0x5BC2, 0xC801 },
   { 0x5BC3, 0xC6D0 },
   { 0x5BC4, 0xAE30 },
   { 0x5BC5, 0xC778 },
   { 0x5BC6, 0xBC00 },
   { 0x5BC7, 0xAD6C },
   { 0x5BCC, 0xBD80 },
   { 0x5BD0, 0xB9E4 },
   { 0x5BD2, 0xD55C },
   { 0x5BD3, 0xC6B0 },
   { 0x5BD4, 0xC2DD },
   { 0x5BD7, 0xB155 },
   { 0x5BDE, 0xB9C9 },
   { 0x5BDF, 0xCC30 },
   { 0x5BE1, 0xACFC },
   { 0x5BE2, 0xCE68 },
   { 0x5BE4, 0xC624 },
   { 0x5BE5, 0xC694 },
   { 0x5BE6, 0xC2E4 },
   { 0x5BE7, 0xB155 },
   { 0x5BE8, 0xCC44 },
   { 0x5BE9, 0xC2EC },
   { 0x5BEB, 0xC0AC },
   { 0x5BEC, 0xAD00 },
   { 0x5BEE, 0xB8CC },
   { 0x5BEF, 0xC900 },
   { 0x5BF5, 0xCD1D },
   { 0x5BF6, 0xBCF4 },
   { 0x5BF8, 0xCD0C },
   { 0x5BFA, 0xC0AC },
   { 0x5C01, 0xBD09 },
   { 0x5C04, 0xC0AC },
   { 0x5C07, 0xC7A5 },
   { 0x5C08, 0xC804 },
   { 0x5C09, 0xC704 },
   { 0x5C0A, 0xC874 },
   { 0x5C0B, 0xC2EC },
   { 0x5C0D, 0xB300 },
   { 0x5C0E, 0xB3C4 },
   { 0x5C0F, 0xC18C },
   { 0x5C11, 0xC18C },
   { 0x5C16, 0xCCA8 },
   { 0x5C19, 0xC0C1 },
   { 0x5C24, 0xC6B0 },
   { 0x5C28, 0xBC29 },
   { 0x5C31, 0xCDE8 },
   { 0x5C38, 0xC2DC },
   { 0x5C39, 0xC724 },
   { 0x5C3A, 0xCC99 },
   { 0x5C3B, 0xACE0 },
   { 0x5C3C, 0xB2C8 },
   { 0x5C3E, 0xBBF8 },
   { 0x5C3F, 0xB1E8 },
   { 0x5C40, 0xAD6D },
   { 0x5C45, 0xAC70 },
   { 0x5C46, 0xACC4 },
   { 0x5C48, 0xAD74 },
   { 0x5C4B, 0xC625 },
   { 0x5C4D, 0xC2DC },
   { 0x5C4E, 0xC2DC },
   { 0x5C51, 0xC124 },
   { 0x5C55, 0xC804 },
   { 0x5C5B, 0xBCD1 },
   { 0x5C60, 0xB3C4 },
   { 0x5C62, 0xB204 },
   { 0x5C64, 0xCE35 },
   { 0x5C65, 0xB9AC },
   { 0x5C6C, 0xC18D },
   { 0x5C6F, 0xB454 },
   { 0x5C71, 0xC0B0 },
   { 0x5C79, 0xD758 },
   { 0x5C90, 0xAE30 },
   { 0x5C91, 0xC7A0 },
   { 0x5CA1, 0xAC15 },
   { 0x5CA9, 0xC554 },
   { 0x5CAB, 0xC218 },
   { 0x5CAC, 0xAC11 },
   { 0x5CB1, 0xB300 },
   { 0x5CB3, 0xC545 },
   { 0x5CB5, 0xD638 },
   { 0x5CB7, 0xBBFC },
   { 0x5CB8, 0xC548 },
   { 0x5CBA, 0xB839 },
   { 0x5CBE, 0xC810 },
   { 0x5CC0, 0xC218 },
   { 0x5CD9, 0xCE58 },
   { 0x5CE0, 0xC0C1 },
   { 0x5CE8, 0xC544 },
   { 0x5CEF, 0xBD09 },
   { 0x5CF0, 0xBD09 },
   { 0x5CF4, 0xD604 },
   { 0x5CF6, 0xB3C4 },
   { 0x5CFB, 0xC900 },
   { 0x5CFD, 0xD611 },
   { 0x5D07, 0xC22D },
   { 0x5D0D, 0xB798 },
   { 0x5D0E, 0xAE30 },
   { 0x5D11, 0xACE4 },
   { 0x5D14, 0xCD5C },
   { 0x5D16, 0xC560 },
   { 0x5D17, 0xAC15 },
   { 0x5D19, 0xB95C },
   { 0x5D27, 0xC22D },
   { 0x5D29, 0xBD95 },
   { 0x5D4B, 0xBBF8 },
   { 0x5D4C, 0xAC10 },
   { 0x5D50, 0xB0A8 },
   { 0x5D69, 0xC22D },
   { 0x5D6C, 0xC678 },
   { 0x5D6F, 0xCC28 },
   { 0x5D87, 0xAD6C },
   { 0x5D8B, 0xB3C4 },
   { 0x5D9D, 0xB4F1 },
   { 0x5DA0, 0xAD50 },
   { 0x5DA2, 0xC694 },
   { 0x5DAA, 0xC5C5 },
   { 0x5DB8, 0xC601 },
   { 0x5DBA, 0xB839 },
   { 0x5DBC, 0xC11C },
   { 0x5DBD, 0xC545 },
   { 0x5DCD, 0xC678 },
   { 0x5DD2, 0xB9CC },
   { 0x5DD6, 0xC554 },
   { 0x5DDD, 0xCC9C },
   { 0x5DDE, 0xC8FC },
   { 0x5DE1, 0xC21C },
   { 0x5DE2, 0xC18C },
   { 0x5DE5, 0xACF5 },
   { 0x5DE6, 0xC88C },
   { 0x5DE7, 0xAD50 },
   { 0x5DE8, 0xAC70 },
   { 0x5DEB, 0xBB34 },
   { 0x5DEE, 0xCC28 },
   { 0x5DF1, 0xAE30 },
   { 0x5DF2, 0xC774 },
   { 0x5DF3, 0xC0AC },
   { 0x5DF4, 0xD30C },
   { 0x5DF7, 0xD56D },
   { 0x5DFD, 0xC190 },
   { 0x5DFE, 0xAC74 },
   { 0x5E02, 0xC2DC },
   { 0x5E03, 0xD3EC },
   { 0x5E06, 0xBC94 },
   { 0x5E0C, 0xD76C },
   { 0x5E11, 0xD0D5 },
   { 0x5E16, 0xCCA9 },
   { 0x5E19, 0xC9C8 },
   { 0x5E1B, 0xBC31 },
   { 0x5E1D, 0xC81C },
   { 0x5E25, 0xC218 },
   { 0x5E2B, 0xC0AC },
   { 0x5E2D, 0xC11D },
   { 0x5E33, 0xC7A5 },
   { 0x5E36, 0xB300 },
   { 0x5E38, 0xC0C1 },
   { 0x5E3D, 0xBAA8 },
   { 0x5E3F, 0xD6C4 },
   { 0x5E40, 0xC815 },
   { 0x5E44, 0xC545 },
   { 0x5E45, 0xD3ED },
   { 0x5E47, 0xBC29 },
   { 0x5E4C, 0xD669 },
   { 0x5E55, 0xB9C9 },
   { 0x5E5F, 0xCE58 },
   { 0x5E61, 0xBC88 },
   { 0x5E62, 0xB2F9 },
   { 0x5E63, 0xD3D0 },
   { 0x5E72, 0xAC04 },
   { 0x5E73, 0xD3C9 },
   { 0x5E74, 0xB144 },
   { 0x5E77, 0xBCD1 },
   { 0x5E78, 0xD589 },
   { 0x5E79, 0xAC04 },
   { 0x5E7B, 0xD658 },
   { 0x5E7C, 0xC720 },
   { 0x5E7D, 0xC720 },
   { 0x5E7E, 0xAE30 },
   { 0x5E84, 0xC7A5 },
   { 0x5E87, 0xBE44 },
   { 0x5E8A, 0xC0C1 },
   { 0x5E8F, 0xC11C },
   { 0x5E95, 0xC800 },
   { 0x5E97, 0xC810 },
   { 0x5E9A, 0xACBD },
   { 0x5E9C, 0xBD80 },
   { 0x5EA0, 0xC0C1 },
   { 0x5EA6, 0xB3C4 },
   { 0x5EA7, 0xC88C },
   { 0x5EAB, 0xACE0 },
   { 0x5EAD, 0xC815 },
   { 0x5EB5, 0xC554 },
   { 0x5EB6, 0xC11C },
   { 0x5EB7, 0xAC15 },
   { 0x5EB8, 0xC6A9 },
   { 0x5EBE, 0xC720 },
   { 0x5EC2, 0xC0C1 },
   { 0x5EC8, 0xD558 },
   { 0x5EC9, 0xB834 },
   { 0x5ECA, 0xB0AD },
   { 0x5ED0, 0xAD6C },
   { 0x5ED3, 0xACFD },
   { 0x5ED6, 0xB8CC },
   { 0x5EDA, 0xC8FC },
   { 0x5EDB, 0xC804 },
   { 0x5EDF, 0xBB18 },
   { 0x5EE0, 0xCC3D },
   { 0x5EE2, 0xD3D0 },
   { 0x5EE3, 0xAD11 },
   { 0x5EEC, 0xB824 },
   { 0x5EF3, 0xCCAD },
   { 0x5EF6, 0xC5F0 },
   { 0x5EF7, 0xC815 },
   { 0x5EFA, 0xAC74 },
   { 0x5EFB, 0xD68C },
   { 0x5F01, 0xBCC0 },
   { 0x5F04, 0xB18D },
   { 0x5F0A, 0xD3D0 },
   { 0x5F0F, 0xC2DD },
   { 0x5F11, 0xC2DC },
   { 0x5F13, 0xAD81 },
   { 0x5F14, 0xC870 },
   { 0x5F15, 0xC778 },
   { 0x5F17, 0xBD88 },
   { 0x5F18, 0xD64D },
   { 0x5F1B, 0xC774 },
   { 0x5F1F, 0xC81C },
   { 0x5F26, 0xD604 },
   { 0x5F27, 0xD638 },
   { 0x5F29, 0xB178 },
   { 0x5F31, 0xC57D },
   { 0x5F35, 0xC7A5 },
   { 0x5F3A, 0xAC15 },
   { 0x5F3C, 0xD544 },
   { 0x5F48, 0xD0C4 },
   { 0x5F4A, 0xAC15 },
   { 0x5F4C, 0xBBF8 },
   { 0x5F4E, 0xB9CC },
   { 0x5F56, 0xB2E8 },
   { 0x5F57, 0xD61C },
   { 0x5F59, 0xD718 },
   { 0x5F5B, 0xC774 },
   { 0x5F62, 0xD615 },
   { 0x5F66, 0xC5B8 },
   { 0x5F67, 0xC6B1 },
   { 0x5F69, 0xCC44 },
   { 0x5F6A, 0xD45C },
   { 0x5F6B, 0xC870 },
   { 0x5F6C, 0xBE48 },
   { 0x5F6D, 0xD33D },
   { 0x5F70, 0xCC3D },
   { 0x5F71, 0xC601 },
   { 0x5F77, 0xBC29 },
   { 0x5F79, 0xC5ED },
   { 0x5F7C, 0xD53C },
   { 0x5F7F, 0xBD88 },
   { 0x5F80, 0xC655 },
   { 0x5F81, 0xC815 },
   { 0x5F85, 0xB300 },
   { 0x5F87, 0xC21C },
   { 0x5F8A, 0xD68C },
   { 0x5F8B, 0xB960 },
   { 0x5F8C, 0xD6C4 },
   { 0x5F90, 0xC11C },
   { 0x5F91, 0xACBD },
   { 0x5F92, 0xB3C4 },
   { 0x5F97, 0xB4DD },
   { 0x5F98, 0xBC30 },
   { 0x5F99, 0xC0AC },
   { 0x5F9E, 0xC885 },
   { 0x5FA0, 0xB798 },
   { 0x5FA1, 0xC5B4 },
   { 0x5FA8, 0xD669 },
   { 0x5FA9, 0xBCF5 },
   { 0x5FAA, 0xC21C },
   { 0x5FAE, 0xBBF8 },
   { 0x5FB5, 0xC9D5 },
   { 0x5FB7, 0xB355 },
   { 0x5FB9, 0xCCA0 },
   { 0x5FBD, 0xD718 },
   { 0x5FC3, 0xC2EC },
   { 0x5FC5, 0xD544 },
   { 0x5FCC, 0xAE30 },
   { 0x5FCD, 0xC778 },
   { 0x5FD6, 0xCD0C },
   { 0x5FD7, 0xC9C0 },
   { 0x5FD8, 0xB9DD },
   { 0x5FD9, 0xB9DD },
   { 0x5FE0, 0xCDA9 },
   { 0x5FEB, 0xCF8C },
   { 0x5FF5, 0xB150 },
   { 0x5FFD, 0xD640 },
   { 0x5FFF, 0xBD84 },
   { 0x600F, 0xC559 },
   { 0x6012, 0xB178 },
   { 0x6016, 0xD3EC },
   { 0x601C, 0xB839 },
   { 0x601D, 0xC0AC },
   { 0x6020, 0xD0DC },
   { 0x6021, 0xC774 },
   { 0x6025, 0xAE09 },
   { 0x6027, 0xC131 },
   { 0x6028, 0xC6D0 },
   { 0x602A, 0xAD34 },
   { 0x602F, 0xAC81 },
   { 0x6041, 0xC784 },
   { 0x6042, 0xC21C },
   { 0x6043, 0xC2DC },
   { 0x604D, 0xD669 },
   { 0x6050, 0xACF5 },
   { 0x6052, 0xD56D },
   { 0x6055, 0xC11C },
   { 0x6059, 0xC591 },
   { 0x605D, 0xAD04 },
   { 0x6062, 0xD68C },
   { 0x6063, 0xC790 },
   { 0x6064, 0xD73C },
   { 0x6065, 0xCE58 },
   { 0x6068, 0xD55C },
   { 0x6069, 0xC740 },
   { 0x606A, 0xAC01 },
   { 0x606C, 0xB150 },
   { 0x606D, 0xACF5 },
   { 0x606F, 0xC2DD },
   { 0x6070, 0xD761 },
   { 0x6085, 0xC5F4 },
   { 0x6089, 0xC2E4 },
   { 0x608C, 0xC81C },
   { 0x608D, 0xD55C },
   { 0x6094, 0xD68C },
   { 0x6096, 0xD328 },
   { 0x609A, 0xC1A1 },
   { 0x609B, 0xC804 },
   { 0x609F, 0xC624 },
   { 0x60A0, 0xC720 },
   { 0x60A3, 0xD658 },
   { 0x60A4, 0xCD1D },
   { 0x60A7, 0xB9AC },
   { 0x60B0, 0xC885 },
   { 0x60B2, 0xBE44 },
   { 0x60B3, 0xB355 },
   { 0x60B4, 0xCDCC },
   { 0x60B6, 0xBBFC },
   { 0x60B8, 0xACC4 },
   { 0x60BC, 0xB3C4 },
   { 0x60BD, 0xCC98 },
   { 0x60C5, 0xC815 },
   { 0x60C7, 0xB3C8 },
   { 0x60D1, 0xD639 },
   { 0x60DA, 0xD640 },
   { 0x60DC, 0xC11D },
   { 0x60DF, 0xC720 },
   { 0x60E0, 0xD61C },
   { 0x60E1, 0xC545 },
   { 0x60F0, 0xD0C0 },
   { 0x60F1, 0xB1CC },
   { 0x60F3, 0xC0C1 },
   { 0x60F6, 0xD669 },
   { 0x60F9, 0xC57C },
   { 0x60FA, 0xC131 },
   { 0x60FB, 0xCE21 },
   { 0x6101, 0xC218 },
   { 0x6106, 0xAC74 },
   { 0x6108, 0xC720 },
   { 0x6109, 0xC720 },
   { 0x610D, 0xBBFC },
   { 0x610E, 0xD345 },
   { 0x610F, 0xC758 },
   { 0x6115, 0xC545 },
   { 0x611A, 0xC6B0 },
   { 0x611B, 0xC560 },
   { 0x611F, 0xAC10 },
   { 0x6127, 0xAD34 },
   { 0x6130, 0xD669 },
   { 0x6134, 0xCC3D },
   { 0x6137, 0xAC1C },
   { 0x613C, 0xC2E0 },
   { 0x613E, 0xAC1C },
   { 0x613F, 0xC6D0 },
   { 0x6142, 0xC6A9 },
   { 0x6144, 0xB960 },
   { 0x6147, 0xC740 },
   { 0x6148, 0xC790 },
   { 0x614A, 0xACB8 },
   { 0x614B, 0xD0DC },
   { 0x614C, 0xD669 },
   { 0x6153, 0xD45C },
   { 0x6155, 0xBAA8 },
   { 0x6158, 0xCC38 },
   { 0x6159, 0xCC38 },
   { 0x615D, 0xD2B9 },
   { 0x615F, 0xD1B5 },
   { 0x6162, 0xB9CC },
   { 0x6163, 0xAD00 },
   { 0x6164, 0xAC01 },
   { 0x6167, 0xD61C },
   { 0x6168, 0xAC1C },
   { 0x616B, 0xC885 },
   { 0x616E, 0xB824 },
   { 0x6170, 0xC704 },
   { 0x6176, 0xACBD },
   { 0x6177, 0xAC15 },
   { 0x617D, 0xCC99 },
   { 0x617E, 0xC695 },
   { 0x6181, 0xCD1D },
   { 0x6182, 0xC6B0 },
   { 0x618A, 0xBE44 },
   { 0x618E, 0xC99D },
   { 0x6190, 0xB828 },
   { 0x6191, 0xBE59 },
   { 0x6194, 0xCD08 },
   { 0x6198, 0xD76C },
   { 0x6199, 0xD76C },
   { 0x619A, 0xD0C4 },
   { 0x61A4, 0xBD84 },
   { 0x61A7, 0xB3D9 },
   { 0x61A9, 0xAC8C },
   { 0x61AB, 0xBBFC },
   { 0x61AC, 0xACBD },
   { 0x61AE, 0xBB34 },
   { 0x61B2, 0xD5CC },
   { 0x61B6, 0xC5B5 },
   { 0x61BA, 0xB2F4 },
   { 0x61BE, 0xAC10 },
   { 0x61C3, 0xADFC },
   { 0x61C7, 0xAC04 },
   { 0x61C8, 0xD574 },
   { 0x61C9, 0xC751 },
   { 0x61CA, 0xC624 },
   { 0x61CB, 0xBB34 },
   { 0x61E6, 0xB098 },
   { 0x61F2, 0xC9D5 },
   { 0x61F6, 0xB098 },
   { 0x61F7, 0xD68C },
   { 0x61F8, 0xD604 },
   { 0x61FA, 0xCC38 },
   { 0x61FC, 0xAD6C },
   { 0x61FF, 0xC758 },
   { 0x6200, 0xB828 },
   { 0x6207, 0xB2F9 },
   { 0x6208, 0xACFC },
   { 0x620A, 0xBB34 },
   { 0x620C, 0xC220 },
   { 0x620D, 0xC218 },
   { 0x620E, 0xC735 },
   { 0x6210, 0xC131 },
   { 0x6211, 0xC544 },
   { 0x6212, 0xACC4 },
   { 0x6216, 0xD639 },
   { 0x621A, 0xCC99 },
   { 0x621F, 0xADF9 },
   { 0x6221, 0xAC10 },
   { 0x622A, 0xC808 },
   { 0x622E, 0xB959 },
   { 0x6230, 0xC804 },
   { 0x6231, 0xD76C },
   { 0x6234, 0xB300 },
   { 0x6236, 0xD638 },
   { 0x623E, 0xB824 },
   { 0x623F, 0xBC29 },
   { 0x6240, 0xC18C },
   { 0x6241, 0xD3B8 },
   { 0x6247, 0xC120 },
   { 0x6248, 0xD638 },
   { 0x6249, 0xBE44 },
   { 0x624B, 0xC218 },
   { 0x624D, 0xC7AC },
   { 0x6253, 0xD0C0 },
   { 0x6258, 0xD0C1 },
   { 0x626E, 0xBD84 },
   { 0x6271, 0xAE09 },
   { 0x6276, 0xBD80 },
   { 0x6279, 0xBE44 },
   { 0x627C, 0xC561 },
   { 0x627F, 0xC2B9 },
   { 0x6280, 0xAE30 },
   { 0x6284, 0xCD08 },
   { 0x6289, 0xACB0 },
   { 0x628A, 0xD30C },
   { 0x6291, 0xC5B5 },
   { 0x6292, 0xC11C },
   { 0x6295, 0xD22C },
   { 0x6297, 0xD56D },
   { 0x6298, 0xC808 },
   { 0x629B, 0xD3EC },
   { 0x62AB, 0xD53C },
   { 0x62B1, 0xD3EC },
   { 0x62B5, 0xC800 },
   { 0x62B9, 0xB9D0 },
   { 0x62BC, 0xC555 },
   { 0x62BD, 0xCD94 },
   { 0x62C2, 0xBD88 },
   { 0x62C7, 0xBB34 },
   { 0x62C8, 0xB150 },
   { 0x62C9, 0xB0A9 },
   { 0x62CC, 0xBC18 },
   { 0x62CD, 0xBC15 },
   { 0x62CF, 0xB098 },
   { 0x62D0, 0xAD34 },
   { 0x62D2, 0xAC70 },
   { 0x62D3, 0xCC99 },
   { 0x62D4, 0xBC1C },
   { 0x62D6, 0xD0C0 },
   { 0x62D7, 0xC694 },
   { 0x62D8, 0xAD6C },
   { 0x62D9, 0xC878 },
   { 0x62DB, 0xCD08 },
   { 0x62DC, 0xBC30 },
   { 0x62EC, 0xAD04 },
   { 0x62ED, 0xC2DD },
   { 0x62EE, 0xAE38 },
   { 0x62EF, 0xC99D },
   { 0x62F1, 0xACF5 },
   { 0x62F3, 0xAD8C },
   { 0x62F7, 0xACE0 },
   { 0x62FE, 0xC2B5 },
   { 0x62FF, 0xB098 },
   { 0x6301, 0xC9C0 },
   { 0x6307, 0xC9C0 },
   { 0x6309, 0xC548 },
   { 0x6311, 0xB3C4 },
   { 0x632B, 0xC88C },
   { 0x632F, 0xC9C4 },
   { 0x633A, 0xC815 },
   { 0x633B, 0xC5F0 },
   { 0x633D, 0xB9CC },
   { 0x633E, 0xD611 },
   { 0x6349, 0xCC29 },
   { 0x634C, 0xD314 },
   { 0x634F, 0xB0A0 },
   { 0x6350, 0xC5F0 },
   { 0x6355, 0xD3EC },
   { 0x6367, 0xBD09 },
   { 0x6368, 0xC0AC },
   { 0x636E, 0xAC70 },
   { 0x6372, 0xAD8C },
   { 0x6377, 0xCCA9 },
   { 0x637A, 0xB0A0 },
   { 0x637B, 0xB150 },
   { 0x637F, 0xC11C },
   { 0x6383, 0xC18C },
   { 0x6388, 0xC218 },
   { 0x6389, 0xB3C4 },
   { 0x638C, 0xC7A5 },
   { 0x6392, 0xBC30 },
   { 0x6396, 0xC561 },
   { 0x6398, 0xAD74 },
   { 0x639B, 0xAD18 },
   { 0x63A0, 0xB7B5 },
   { 0x63A1, 0xCC44 },
   { 0x63A2, 0xD0D0 },
   { 0x63A5, 0xC811 },
   { 0x63A7, 0xACF5 },
   { 0x63A8, 0xCD94 },
   { 0x63A9, 0xC5C4 },
   { 0x63AA, 0xC870 },
   { 0x63C0, 0xAC04 },
   { 0x63C4, 0xC720 },
   { 0x63C6, 0xADDC },
   { 0x63CF, 0xBB18 },
   { 0x63D0, 0xC81C },
   { 0x63D6, 0xC74D },
   { 0x63DA, 0xC591 },
   { 0x63DB, 0xD658 },
   { 0x63E1, 0xC545 },
   { 0x63ED, 0xAC8C },
   { 0x63EE, 0xD718 },
   { 0x63F4, 0xC6D0 },
   { 0x63F6, 0xC57C },
   { 0x63F7, 0xC0BD },
   { 0x640D, 0xC190 },
   { 0x640F, 0xBC15 },
   { 0x6414, 0xC18C },
   { 0x6416, 0xC694 },
   { 0x6417, 0xB3C4 },
   { 0x641C, 0xC218 },
   { 0x6422, 0xC9C4 },
   { 0x642C, 0xBC18 },
   { 0x642D, 0xD0D1 },
   { 0x643A, 0xD734 },
   { 0x643E, 0xCC29 },
   { 0x6458, 0xC801 },
   { 0x6460, 0xCD1D },
   { 0x6469, 0xB9C8 },
   { 0x646F, 0xC9C0 },
   { 0x6478, 0xBAA8 },
   { 0x6479, 0xBAA8 },
   { 0x647A, 0xC811 },
   { 0x6488, 0xB85C },
   { 0x6491, 0xD0F1 },
   { 0x6492, 0xC0B4 },
   { 0x6493, 0xC694 },
   { 0x649A, 0xB144 },
   { 0x649E, 0xB2F9 },
   { 0x64A4, 0xCCA0 },
   { 0x64A5, 0xBC1C },
   { 0x64AB, 0xBB34 },
   { 0x64AD, 0xD30C },
   { 0x64AE, 0xCD2C },
   { 0x64B0, 0xCC2C },
   { 0x64B2, 0xBC15 },
   { 0x64BB, 0xB2EC },
   { 0x64C1, 0xC639 },
   { 0x64C4, 0xB178 },
   { 0x64C5, 0xCC9C },
   { 0x64C7, 0xD0DD },
   { 0x64CA, 0xACA9 },
   { 0x64CD, 0xC870 },
   { 0x64CE, 0xACBD },
   { 0x64D2, 0xAE08 },
   { 0x64D4, 0xB2F4 },
   { 0x64D8, 0xBCBD },
   { 0x64DA, 0xAC70 },
   { 0x64E1, 0xB300 },
   { 0x64E2, 0xD0C1 },
   { 0x64E5, 0xB78C },
   { 0x64E6, 0xCC30 },
   { 0x64E7, 0xAC70 },
   { 0x64EC, 0xC758 },
   { 0x64F2, 0xCC99 },
   { 0x64F4, 0xD655 },
   { 0x64FA, 0xD30C },
   { 0x64FE, 0xC694 },
   { 0x6500, 0xBC18 },
   { 0x6504, 0xD130 },
   { 0x6518, 0xC591 },
   { 0x651D, 0xC12D },
   { 0x6523, 0xB828 },
   { 0x652A, 0xAD50 },
   { 0x652B, 0xD655 },
   { 0x652C, 0xB78C },
   { 0x652F, 0xC9C0 },
   { 0x6536, 0xC218 },
   { 0x6537, 0xACE0 },
   { 0x6538, 0xC720 },
   { 0x6539, 0xAC1C },
   { 0x653B, 0xACF5 },
   { 0x653E, 0xBC29 },
   { 0x653F, 0xC815 },
   { 0x6545, 0xACE0 },
   { 0x6548, 0xD6A8 },
   { 0x654D, 0xC11C },
   { 0x654E, 0xAD50 },
   { 0x654F, 0xBBFC },
   { 0x6551, 0xAD6C },
   { 0x6556, 0xC624 },
   { 0x6557, 0xD328 },
   { 0x655E, 0xCC3D },
   { 0x6562, 0xAC10 },
   { 0x6563, 0xC0B0 },
   { 0x6566, 0xB3C8 },
   { 0x656C, 0xACBD },
   { 0x656D, 0xC591 },
   { 0x6572, 0xACE0 },
   { 0x6574, 0xC815 },
   { 0x6575, 0xC801 },
   { 0x6577, 0xBD80 },
   { 0x6578, 0xC0AD },
   { 0x657E, 0xC120 },
   { 0x6582, 0xB834 },
   { 0x6583, 0xD3D0 },
   { 0x6585, 0xD6A8 },
   { 0x6587, 0xBB38 },
   { 0x658C, 0xBE48 },
   { 0x6590, 0xBE44 },
   { 0x6591, 0xBC18 },
   { 0x6597, 0xB450 },
   { 0x6599, 0xB8CC },
   { 0x659B, 0xACE1 },
   { 0x659C, 0xC0AC },
   { 0x659F, 0xC9D0 },
   { 0x65A1, 0xC54C },
   { 0x65A4, 0xADFC },
   { 0x65A5, 0xCC99 },
   { 0x65A7, 0xBD80 },
   { 0x65AB, 0xC791 },
   { 0x65AC, 0xCC38 },
   { 0x65AF, 0xC0AC },
   { 0x65B0, 0xC2E0 },
   { 0x65B7, 0xB2E8 },
   { 0x65B9, 0xBC29 },
   { 0x65BC, 0xC5B4 },
   { 0x65BD, 0xC2DC },
   { 0x65C1, 0xBC29 },
   { 0x65C5, 0xB824 },
   { 0x65CB, 0xC120 },
   { 0x65CC, 0xC815 },
   { 0x65CF, 0xC871 },
   { 0x65D2, 0xB958 },
   { 0x65D7, 0xAE30 },
   { 0x65E0, 0xBB34 },
   { 0x65E3, 0xAE30 },
   { 0x65E5, 0xC77C },
   { 0x65E6, 0xB2E8 },
   { 0x65E8, 0xC9C0 },
   { 0x65E9, 0xC870 },
   { 0x65EC, 0xC21C },
   { 0x65ED, 0xC6B1 },
   { 0x65F1, 0xD55C },
   { 0x65F4, 0xC6B0 },
   { 0x65FA, 0xC655 },
   { 0x65FB, 0xBBFC },
   { 0x65FC, 0xBBFC },
   { 0x65FD, 0xB3C8 },
   { 0x65FF, 0xC624 },
   { 0x6606, 0xACE4 },
   { 0x6607, 0xC2B9 },
   { 0x6609, 0xBC29 },
   { 0x660A, 0xD638 },
   { 0x660C, 0xCC3D },
   { 0x660E, 0xBA85 },
   { 0x660F, 0xD63C },
   { 0x6610, 0xBD84 },
   { 0x6611, 0xAE08 },
   { 0x6613, 0xC5ED },
   { 0x6614, 0xC11D },
   { 0x6615, 0xD754 },
   { 0x661E, 0xBCD1 },
   { 0x661F, 0xC131 },
   { 0x6620, 0xC601 },
   { 0x6625, 0xCD98 },
   { 0x6627, 0xB9E4 },
   { 0x6628, 0xC791 },
   { 0x662D, 0xC18C },
   { 0x662F, 0xC2DC },
   { 0x6630, 0xD558 },
   { 0x6631, 0xC6B1 },
   { 0x6634, 0xBB18 },
   { 0x6636, 0xCC3D },
   { 0x663A, 0xBCD1 },
   { 0x663B, 0xC559 },
   { 0x6641, 0xC870 },
   { 0x6642, 0xC2DC },
   { 0x6643, 0xD669 },
   { 0x6644, 0xD669 },
   { 0x6649, 0xC9C4 },
   { 0x664B, 0xC9C4 },
   { 0x664F, 0xC548 },
   { 0x6659, 0xC900 },
   { 0x665B, 0xD604 },
   { 0x665D, 0xC8FC },
   { 0x665E, 0xD76C },
   { 0x665F, 0xC131 },
   { 0x6664, 0xC624 },
   { 0x6665, 0xD658 },
   { 0x6666, 0xD68C },
   { 0x6667, 0xD638 },
   { 0x6668, 0xC2E0 },
   { 0x6669, 0xB9CC },
   { 0x666B, 0xD0C1 },
   { 0x666E, 0xBCF4 },
   { 0x666F, 0xACBD },
   { 0x6673, 0xC11D },
   { 0x6674, 0xCCAD },
   { 0x6676, 0xC815 },
   { 0x6677, 0xADC0 },
   { 0x6678, 0xC815 },
   { 0x667A, 0xC9C0 },
   { 0x6684, 0xD6E4 },
   { 0x6687, 0xAC00 },
   { 0x6688, 0xC6B4 },
   { 0x6689, 0xD718 },
   { 0x668E, 0xC601 },
   { 0x6690, 0xC704 },
   { 0x6691, 0xC11C },
   { 0x6696, 0xB09C },
   { 0x6697, 0xC554 },
   { 0x6698, 0xC591 },
   { 0x669D, 0xBA85 },
   { 0x66A0, 0xACE0 },
   { 0x66A2, 0xCC3D },
   { 0x66AB, 0xC7A0 },
   { 0x66AE, 0xBAA8 },
   { 0x66B2, 0xC7A5 },
   { 0x66B3, 0xD61C },
   { 0x66B4, 0xD3EC },
   { 0x66B9, 0xC12C },
   { 0x66BB, 0xACBD },
   { 0x66BE, 0xB3C8 },
   { 0x66C4, 0xC5FD },
   { 0x66C6, 0xB825 },
   { 0x66C7, 0xB2F4 },
   { 0x66C9, 0xD6A8 },
   { 0x66D6, 0xC560 },
   { 0x66D9, 0xC11C },
   { 0x66DC, 0xC694 },
   { 0x66DD, 0xD3ED },
   { 0x66E0, 0xAD11 },
   { 0x66E6, 0xD76C },
   { 0x66F0, 0xC648 },
   { 0x66F2, 0xACE1 },
   { 0x66F3, 0xC608 },
   { 0x66F4, 0xAC31 },
   { 0x66F7, 0xAC08 },
   { 0x66F8, 0xC11C },
   { 0x66F9, 0xC870 },
   { 0x66FA, 0xC870 },
   { 0x66FC, 0xB9CC },
   { 0x66FE, 0xC99D },
   { 0x66FF, 0xCCB4 },
   { 0x6700, 0xCD5C },
   { 0x6703, 0xD68C },
   { 0x6708, 0xC6D4 },
   { 0x6709, 0xC720 },
   { 0x670B, 0xBD95 },
   { 0x670D, 0xBCF5 },
   { 0x6714, 0xC0AD },
   { 0x6715, 0xC9D0 },
   { 0x6717, 0xB0AD },
   { 0x671B, 0xB9DD },
   { 0x671D, 0xC870 },
   { 0x671E, 0xAE30 },
   { 0x671F, 0xAE30 },
   { 0x6726, 0xBABD },
   { 0x6727, 0xB871 },
   { 0x6728, 0xBAA9 },
   { 0x672A, 0xBBF8 },
   { 0x672B, 0xB9D0 },
   { 0x672C, 0xBCF8 },
   { 0x672D, 0xCC30 },
   { 0x672E, 0xCD9C },
   { 0x6731, 0xC8FC },
   { 0x6734, 0xBC15 },
   { 0x6736, 0xD0C0 },
   { 0x673A, 0xADA4 },
   { 0x673D, 0xD6C4 },
   { 0x6746, 0xAC04 },
   { 0x6749, 0xC0BC },
   { 0x674E, 0xB9AC },
   { 0x674F, 0xD589 },
   { 0x6750, 0xC7AC },
   { 0x6751, 0xCD0C },
   { 0x6753, 0xD45C },
   { 0x6756, 0xC7A5 },
   { 0x675C, 0xB450 },
   { 0x675E, 0xAE30 },
   { 0x675F, 0xC18D },
   { 0x676D, 0xD56D },
   { 0x676F, 0xBC30 },
   { 0x6770, 0xAC78 },
   { 0x6771, 0xB3D9 },
   { 0x6773, 0xBB18 },
   { 0x6775, 0xC800 },
   { 0x6777, 0xD30C },
   { 0x677B, 0xB274 },
   { 0x677E, 0xC1A1 },
   { 0x677F, 0xD310 },
   { 0x6787, 0xBE44 },
   { 0x6789, 0xC655 },
   { 0x678B, 0xBC29 },
   { 0x678F, 0xB0A8 },
   { 0x6790, 0xC11D },
   { 0x6793, 0xB450 },
   { 0x6795, 0xCE68 },
   { 0x6797, 0xB9BC },
   { 0x679A, 0xB9E4 },
   { 0x679C, 0xACFC },
   { 0x679D, 0xC9C0 },
   { 0x67AF, 0xACE0 },
   { 0x67B0, 0xD3C9 },
   { 0x67B3, 0xC9C0 },
   { 0x67B6, 0xAC00 },
   { 0x67B7, 0xAC00 },
   { 0x67B8, 0xAD6C },
   { 0x67BE, 0xC2DC },
   { 0x67C4, 0xBCD1 },
   { 0x67CF, 0xBC31 },
   { 0x67D0, 0xBAA8 },
   { 0x67D1, 0xAC10 },
   { 0x67D2, 0xCE60 },
   { 0x67D3, 0xC5FC },
   { 0x67D4, 0xC720 },
   { 0x67DA, 0xC720 },
   { 0x67DD, 0xD0C1 },
   { 0x67E9, 0xAD6C },
   { 0x67EC, 0xAC04 },
   { 0x67EF, 0xAC00 },
   { 0x67F0, 0xB0B4 },
   { 0x67F1, 0xC8FC },
   { 0x67F3, 0xB958 },
   { 0x67F4, 0xC2DC },
   { 0x67F5, 0xCC45 },
   { 0x67F6, 0xC0AC },
   { 0x67FB, 0xC0AC },
   { 0x67FE, 0xC815 },
   { 0x6812, 0xC21C },
   { 0x6813, 0xC804 },
   { 0x6816, 0xC11C },
   { 0x6817, 0xB960 },
   { 0x6821, 0xAD50 },
   { 0x6822, 0xBC31 },
   { 0x682A, 0xC8FC },
   { 0x682F, 0xC6B1 },
   { 0x6838, 0xD575 },
   { 0x6839, 0xADFC },
   { 0x683C, 0xACA9 },
   { 0x683D, 0xC7AC },
   { 0x6840, 0xAC78 },
   { 0x6841, 0xD56D },
   { 0x6842, 0xACC4 },
   { 0x6843, 0xB3C4 },
   { 0x6848, 0xC548 },
   { 0x684E, 0xC9C8 },
   { 0x6850, 0xB3D9 },
   { 0x6851, 0xC0C1 },
   { 0x6853, 0xD658 },
   { 0x6854, 0xAE38 },
   { 0x686D, 0xC9C4 },
   { 0x6876, 0xD1B5 },
   { 0x687F, 0xAC04 },
   { 0x6881, 0xB7C9 },
   { 0x6885, 0xB9E4 },
   { 0x688F, 0xACE1 },
   { 0x6893, 0xC7AC },
   { 0x6894, 0xCE58 },
   { 0x6897, 0xACBD },
   { 0x689D, 0xC870 },
   { 0x689F, 0xD6A8 },
   { 0x68A1, 0xC644 },
   { 0x68A2, 0xCD08 },
   { 0x68A7, 0xC624 },
   { 0x68A8, 0xB9AC },
   { 0x68AD, 0xC0AC },
   { 0x68AF, 0xC81C },
   { 0x68B0, 0xACC4 },
   { 0x68B1, 0xACE4 },
   { 0x68B3, 0xC18C },
   { 0x68B5, 0xBC94 },
   { 0x68B6, 0xBBF8 },
   { 0x68C4, 0xAE30 },
   { 0x68C5, 0xBCD1 },
   { 0x68C9, 0xBA74 },
   { 0x68CB, 0xAE30 },
   { 0x68CD, 0xACE4 },
   { 0x68D2, 0xBD09 },
   { 0x68D5, 0xC885 },
   { 0x68D7, 0xC870 },
   { 0x68D8, 0xADF9 },
   { 0x68DA, 0xBD95 },
   { 0x68DF, 0xB3D9 },
   { 0x68E0, 0xB2F9 },
   { 0x68E7, 0xC794 },
   { 0x68E8, 0xACC4 },
   { 0x68EE, 0xC0BC },
   { 0x68F2, 0xC11C },
   { 0x68F9, 0xB3C4 },
   { 0x68FA, 0xAD00 },
   { 0x6900, 0xC644 },
   { 0x6905, 0xC758 },
   { 0x690D, 0xC2DD },
   { 0x690E, 0xCD94 },
   { 0x6912, 0xCD08 },
   { 0x6927, 0xBA85 },
   { 0x6930, 0xC57C },
   { 0x693D, 0xC5F0 },
   { 0x693F, 0xCD98 },
   { 0x694A, 0xC591 },
   { 0x6953, 0xD48D },
   { 0x6954, 0xC124 },
   { 0x6955, 0xD0C0 },
   { 0x6957, 0xAC74 },
   { 0x6959, 0xBB34 },
   { 0x695A, 0xCD08 },
   { 0x695E, 0xB989 },
   { 0x6960, 0xB0A8 },
   { 0x6961, 0xC720 },
   { 0x6962, 0xC720 },
   { 0x6963, 0xBBF8 },
   { 0x6968, 0xC815 },
   { 0x696B, 0xC999 },
   { 0x696D, 0xC5C5 },
   { 0x696E, 0xC800 },
   { 0x696F, 0xC21C },
   { 0x6975, 0xADF9 },
   { 0x6977, 0xD574 },
   { 0x6978, 0xCD94 },
   { 0x6979, 0xC601 },
   { 0x6995, 0xC6A9 },
   { 0x699B, 0xC9C4 },
   { 0x699C, 0xBC29 },
   { 0x69A5, 0xD669 },
   { 0x69A7, 0xBE44 },
   { 0x69AE, 0xC601 },
   { 0x69B4, 0xB958 },
   { 0x69BB, 0xD0D1 },
   { 0x69C1, 0xACE0 },
   { 0x69C3, 0xBC18 },
   { 0x69CB, 0xAD6C },
   { 0x69CC, 0xD1F4 },
   { 0x69CD, 0xCC3D },
   { 0x69D0, 0xAD34 },
   { 0x69E8, 0xACFD },
   { 0x69EA, 0xAC1C },
   { 0x69FB, 0xADDC },
   { 0x69FD, 0xC870 },
   { 0x69FF, 0xADFC },
   { 0x6A02, 0xB099 },
   { 0x6A0A, 0xBC88 },
   { 0x6A11, 0xB7C9 },
   { 0x6A13, 0xB204 },
   { 0x6A17, 0xC800 },
   { 0x6A19, 0xD45C },
   { 0x6A1E, 0xCD94 },
   { 0x6A1F, 0xC7A5 },
   { 0x6A21, 0xBAA8 },
   { 0x6A23, 0xC591 },
   { 0x6A35, 0xCD08 },
   { 0x6A38, 0xBC15 },
   { 0x6A39, 0xC218 },
   { 0x6A3A, 0xD654 },
   { 0x6A3D, 0xC900 },
   { 0x6A44, 0xAC10 },
   { 0x6A48, 0xC694 },
   { 0x6A4B, 0xAD50 },
   { 0x6A52, 0xC6B4 },
   { 0x6A53, 0xC21C },
   { 0x6A58, 0xADE4 },
   { 0x6A59, 0xB4F1 },
   { 0x6A5F, 0xAE30 },
   { 0x6A61, 0xC0C1 },
   { 0x6A6B, 0xD6A1 },
   { 0x6A80, 0xB2E8 },
   { 0x6A84, 0xACA9 },
   { 0x6A89, 0xC815 },
   { 0x6A8D, 0xC5B5 },
   { 0x6A8E, 0xAE08 },
   { 0x6A97, 0xBCBD },
   { 0x6A9C, 0xD68C },
   { 0x6AA2, 0xAC80 },
   { 0x6AA3, 0xC7A5 },
   { 0x6AB3, 0xBE48 },
   { 0x6ABB, 0xD568 },
   { 0x6AC2, 0xB3C4 },
   { 0x6AC3, 0xADA4 },
   { 0x6AD3, 0xB178 },
   { 0x6ADA, 0xB824 },
   { 0x6ADB, 0xC990 },
   { 0x6AF6, 0xD5CC },
   { 0x6AFB, 0xC575 },
   { 0x6B04, 0xB09C },
   { 0x6B0A, 0xAD8C },
   { 0x6B0C, 0xC7A5 },
   { 0x6B12, 0xB780 },
   { 0x6B16, 0xB78C },
   { 0x6B20, 0xD760 },
   { 0x6B21, 0xCC28 },
   { 0x6B23, 0xD754 },
   { 0x6B32, 0xC695 },
   { 0x6B3A, 0xAE30 },
   { 0x6B3D, 0xD760 },
   { 0x6B3E, 0xAD00 },
   { 0x6B46, 0xD760 },
   { 0x6B47, 0xD5D0 },
   { 0x6B4C, 0xAC00 },
   { 0x6B4E, 0xD0C4 },
   { 0x6B50, 0xAD6C },
   { 0x6B5F, 0xC5EC },
   { 0x6B61, 0xD658 },
   { 0x6B62, 0xC9C0 },
   { 0x6B63, 0xC815 },
   { 0x6B64, 0xCC28 },
   { 0x6B65, 0xBCF4 },
   { 0x6B66, 0xBB34 },
   { 0x6B6A, 0xC65C },
   { 0x6B72, 0xC138 },
   { 0x6B77, 0xB825 },
   { 0x6B78, 0xADC0 },
   { 0x6B7B, 0xC0AC },
   { 0x6B7F, 0xBAB0 },
   { 0x6B83, 0xC559 },
   { 0x6B84, 0xC9C4 },
   { 0x6B86, 0xD0DC },
   { 0x6B89, 0xC21C },
   { 0x6B8A, 0xC218 },
   { 0x6B96, 0xC2DD },
   { 0x6B98, 0xC794 },
   { 0x6B9E, 0xC6B4 },
   { 0x6BAE, 0xB834 },
   { 0x6BAF, 0xBE48 },
   { 0x6BB2, 0xC12C },
   { 0x6BB5, 0xB2E8 },
   { 0x6BB7, 0xC740 },
   { 0x6BBA, 0xC0B4 },
   { 0x6BBC, 0xAC01 },
   { 0x6BBF, 0xC804 },
   { 0x6BC1, 0xD6FC },
   { 0x6BC5, 0xC758 },
   { 0x6BC6, 0xAD6C },
   { 0x6BCB, 0xBB34 },
   { 0x6BCD, 0xBAA8 },
   { 0x6BCF, 0xB9E4 },
   { 0x6BD2, 0xB3C5 },
   { 0x6BD3, 0xC721 },
   { 0x6BD4, 0xBE44 },
   { 0x6BD6, 0xBE44 },
   { 0x6BD7, 0xBE44 },
   { 0x6BD8, 0xBE44 },
   { 0x6BDB, 0xBAA8 },
   { 0x6BEB, 0xD638 },
   { 0x6BEC, 0xAD6C },
   { 0x6C08, 0xC804 },
   { 0x6C0F, 0xC528 },
   { 0x6C11, 0xBBFC },
   { 0x6C13, 0xB9F9 },
   { 0x6C23, 0xAE30 },
   { 0x6C34, 0xC218 },
   { 0x6C37, 0xBE59 },
   { 0x6C38, 0xC601 },
   { 0x6C3E, 0xBC94 },
   { 0x6C40, 0xC815 },
   { 0x6C41, 0xC999 },
   { 0x6C42, 0xAD6C },
   { 0x6C4E, 0xBC94 },
   { 0x6C50, 0xC11D },
   { 0x6C55, 0xC0B0 },
   { 0x6C57, 0xD55C },
   { 0x6C5A, 0xC624 },
   { 0x6C5D, 0xC5EC },
   { 0x6C5E, 0xD64D },
   { 0x6C5F, 0xAC15 },
   { 0x6C60, 0xC9C0 },
   { 0x6C68, 0xACE8 },
   { 0x6C6A, 0xC655 },
   { 0x6C6D, 0xC608 },
   { 0x6C70, 0xD0DC },
   { 0x6C72, 0xAE09 },
   { 0x6C76, 0xBB38 },
   { 0x6C7A, 0xACB0 },
   { 0x6C7D, 0xAE30 },
   { 0x6C7E, 0xBD84 },
   { 0x6C81, 0xC2EC },
   { 0x6C82, 0xAE30 },
   { 0x6C83, 0xC625 },
   { 0x6C85, 0xC6D0 },
   { 0x6C86, 0xD56D },
   { 0x6C87, 0xC5F0 },
   { 0x6C88, 0xC2EC },
   { 0x6C8C, 0xB3C8 },
   { 0x6C90, 0xBAA9 },
   { 0x6C92, 0xBAB0 },
   { 0x6C93, 0xB2F5 },
   { 0x6C94, 0xBA74 },
   { 0x6C95, 0xBB3C },
   { 0x6C96, 0xCDA9 },
   { 0x6C99, 0xC0AC },
   { 0x6C9A, 0xC9C0 },
   { 0x6C9B, 0xD328 },
   { 0x6CAB, 0xB9D0 },
   { 0x6CAE, 0xC800 },
   { 0x6CB3, 0xD558 },
   { 0x6CB8, 0xBE44 },
   { 0x6CB9, 0xC720 },
   { 0x6CBB, 0xCE58 },
   { 0x6CBC, 0xC18C },
   { 0x6CBD, 0xACE0 },
   { 0x6CBE, 0xCCA8 },
   { 0x6CBF, 0xC5F0 },
   { 0x6CC1, 0xD669 },
   { 0x6CC2, 0xD615 },
   { 0x6CC4, 0xC124 },
   { 0x6CC9, 0xCC9C },
   { 0x6CCA, 0xBC15 },
   { 0x6CCC, 0xBE44 },
   { 0x6CD3, 0xD64D },
   { 0x6CD5, 0xBC95 },
   { 0x6CD7, 0xC0AC },
   { 0x6CDB, 0xBC94 },
   { 0x6CE1, 0xD3EC },
   { 0x6CE2, 0xD30C },
   { 0x6CE3, 0xC74D },
   { 0x6CE5, 0xB2C8 },
   { 0x6CE8, 0xC8FC },
   { 0x6CEB, 0xD604 },
   { 0x6CEE, 0xBC18 },
   { 0x6CEF, 0xBBFC },
   { 0x6CF0, 0xD0DC },
   { 0x6CF3, 0xC601 },
   { 0x6D0B, 0xC591 },
   { 0x6D0C, 0xB82C },
   { 0x6D11, 0xBCF4 },
   { 0x6D17, 0xC138 },
   { 0x6D19, 0xC218 },
   { 0x6D1B, 0xB099 },
   { 0x6D1E, 0xB3D9 },
   { 0x6D25, 0xC9C4 },
   { 0x6D27, 0xC720 },
   { 0x6D29, 0xC124 },
   { 0x6D2A, 0xD64D },
   { 0x6D32, 0xC8FC },
   { 0x6D35, 0xC21C },
   { 0x6D36, 0xD749 },
   { 0x6D38, 0xAD11 },
   { 0x6D39, 0xC6D0 },
   { 0x6D3B, 0xD65C },
   { 0x6D3D, 0xD761 },
   { 0x6D3E, 0xD30C },
   { 0x6D41, 0xB958 },
   { 0x6D59, 0xC808 },
   { 0x6D5A, 0xC900 },
   { 0x6D5C, 0xBE48 },
   { 0x6D63, 0xC644 },
   { 0x6D66, 0xD3EC },
   { 0x6D69, 0xD638 },
   { 0x6D6A, 0xB0AD },
   { 0x6D6C, 0xB9AC },
   { 0x6D6E, 0xBD80 },
   { 0x6D74, 0xC695 },
   { 0x6D77, 0xD574 },
   { 0x6D78, 0xCE68 },
   { 0x6D79, 0xD611 },
   { 0x6D7F, 0xD328 },
   { 0x6D85, 0xC5F4 },
   { 0x6D87, 0xACBD },
   { 0x6D88, 0xC18C },
   { 0x6D89, 0xC12D },
   { 0x6D8C, 0xC6A9 },
   { 0x6D8D, 0xD6A8 },
   { 0x6D8E, 0xC5F0 },
   { 0x6D91, 0xC18D },
   { 0x6D93, 0xC5F0 },
   { 0x6D95, 0xCCB4 },
   { 0x6DAF, 0xC560 },
   { 0x6DB2, 0xC561 },
   { 0x6DB5, 0xD568 },
   { 0x6DC0, 0xC815 },
   { 0x6DC3, 0xAD8C },
   { 0x6DC4, 0xCE58 },
   { 0x6DC5, 0xC11D },
   { 0x6DC6, 0xD6A8 },
   { 0x6DC7, 0xAE30 },
   { 0x6DCB, 0xB9BC },
   { 0x6DCF, 0xD638 },
   { 0x6DD1, 0xC219 },
   { 0x6DD8, 0xB3C4 },
   { 0x6DD9, 0xC885 },
   { 0x6DDA, 0xB204 },
   { 0x6DDE, 0xC1A1 },
   { 0x6DE1, 0xB2F4 },
   { 0x6DE8, 0xC815 },
   { 0x6DEA, 0xB95C },
   { 0x6DEB, 0xC74C },
   { 0x6DEE, 0xD68C },
   { 0x6DF1, 0xC2EC },
   { 0x6DF3, 0xC21C },
   { 0x6DF5, 0xC5F0 },
   { 0x6DF7, 0xD63C },
   { 0x6DF8, 0xCCAD },
   { 0x6DF9, 0xC5C4 },
   { 0x6DFA, 0xCC9C },
   { 0x6DFB, 0xCCA8 },
   { 0x6E17, 0xC0BC },
   { 0x6E19, 0xD658 },
   { 0x6E1A, 0xC800 },
   { 0x6E1B, 0xAC10 },
   { 0x6E1F, 0xC815 },
   { 0x6E20, 0xAC70 },
   { 0x6E21, 0xB3C4 },
   { 0x6E23, 0xC0AC },
   { 0x6E24, 0xBC1C },
   { 0x6E25, 0xC545 },
   { 0x6E26, 0xC640 },
   { 0x6E2B, 0xC124 },
   { 0x6E2C, 0xCE21 },
   { 0x6E2D, 0xC704 },
   { 0x6E2F, 0xD56D },
   { 0x6E32, 0xC120 },
   { 0x6E34, 0xAC08 },
   { 0x6E36, 0xC601 },
   { 0x6E38, 0xC720 },
   { 0x6E3A, 0xBB18 },
   { 0x6E3C, 0xBBF8 },
   { 0x6E3D, 0xC7AC },
   { 0x6E3E, 0xD63C },
   { 0x6E43, 0xBC30 },
   { 0x6E44, 0xBBF8 },
   { 0x6E4A, 0xC8FC },
   { 0x6E4D, 0xB2E8 },
   { 0x6E56, 0xD638 },
   { 0x6E58, 0xC0C1 },
   { 0x6E5B, 0xB2F4 },
   { 0x6E5C, 0xC2DD },
   { 0x6E5E, 0xC815 },
   { 0x6E5F, 0xD669 },
   { 0x6E67, 0xC6A9 },
   { 0x6E6B, 0xCD94 },
   { 0x6E6E, 0xC778 },
   { 0x6E6F, 0xD0D5 },
   { 0x6E72, 0xC6D0 },
   { 0x6E73, 0xB0A8 },
   { 0x6E7A, 0xBCF4 },
   { 0x6E90, 0xC6D0 },
   { 0x6E96, 0xC900 },
   { 0x6E9C, 0xB958 },
   { 0x6E9D, 0xAD6C },
   { 0x6E9F, 0xBA85 },
   { 0x6EA2, 0xC77C },
   { 0x6EA5, 0xBD80 },
   { 0x6EAA, 0xACC4 },
   { 0x6EAB, 0xC628 },
   { 0x6EAF, 0xC18C },
   { 0x6EB1, 0xC9C4 },
   { 0x6EB6, 0xC6A9 },
   { 0x6EBA, 0xB2C9 },
   { 0x6EC2, 0xBC29 },
   { 0x6EC4, 0xCC3D },
   { 0x6EC5, 0xBA78 },
   { 0x6EC9, 0xD669 },
   { 0x6ECB, 0xC790 },
   { 0x6ECC, 0xCC99 },
   { 0x6ECE, 0xD615 },
   { 0x6ED1, 0xACE8 },
   { 0x6ED3, 0xC7AC },
   { 0x6ED4, 0xB3C4 },
   { 0x6EEF, 0xCCB4 },
   { 0x6EF4, 0xC801 },
   { 0x6EF8, 0xD638 },
   { 0x6EFE, 0xACE4 },
   { 0x6EFF, 0xB9CC },
   { 0x6F01, 0xC5B4 },
   { 0x6F02, 0xD45C },
   { 0x6F06, 0xCE60 },
   { 0x6F0F, 0xB204 },
   { 0x6F11, 0xAC1C },
   { 0x6F14, 0xC5F0 },
   { 0x6F15, 0xC870 },
   { 0x6F20, 0xB9C9 },
   { 0x6F22, 0xD55C },
   { 0x6F23, 0xB828 },
   { 0x6F2B, 0xB9CC },
   { 0x6F2C, 0xC9C0 },
   { 0x6F31, 0xC218 },
   { 0x6F32, 0xCC3D },
   { 0x6F38, 0xC810 },
   { 0x6F3F, 0xC7A5 },
   { 0x6F41, 0xC601 },
   { 0x6F51, 0xBC1C },
   { 0x6F54, 0xACB0 },
   { 0x6F57, 0xC9D1 },
   { 0x6F58, 0xBC18 },
   { 0x6F5A, 0xC219 },
   { 0x6F5B, 0xC7A0 },
   { 0x6F5E, 0xB85C },
   { 0x6F5F, 0xC11D },
   { 0x6F62, 0xD669 },
   { 0x6F64, 0xC724 },
   { 0x6F6D, 0xB2F4 },
   { 0x6F6E, 0xC870 },
   { 0x6F70, 0xADA4 },
   { 0x6F7A, 0xC794 },
   { 0x6F7C, 0xB3D9 },
   { 0x6F7D, 0xBCF4 },
   { 0x6F7E, 0xB9B0 },
   { 0x6F81, 0xC0BD },
   { 0x6F84, 0xC9D5 },
   { 0x6F88, 0xCCA0 },
   { 0x6F8D, 0xC8FC },
   { 0x6F8E, 0xD33D },
   { 0x6F90, 0xC6B4 },
   { 0x6F94, 0xD638 },
   { 0x6F97, 0xAC04 },
   { 0x6FA3, 0xD55C },
   { 0x6FA4, 0xD0DD },
   { 0x6FA7, 0xB840 },
   { 0x6FAE, 0xD68C },
   { 0x6FAF, 0xCC2C },
   { 0x6FB1, 0xC804 },
   { 0x6FB3, 0xC624 },
   { 0x6FB9, 0xB2F4 },
   { 0x6FBE, 0xB2EC },
   { 0x6FC0, 0xACA9 },
   { 0x6FC1, 0xD0C1 },
   { 0x6FC2, 0xB834 },
   { 0x6FC3, 0xB18D },
   { 0x6FCA, 0xC608 },
   { 0x6FD5, 0xC2B5 },
   { 0x6FDA, 0xC601 },
   { 0x6FDF, 0xC81C },
   { 0x6FE0, 0xD638 },
   { 0x6FE1, 0xC720 },
   { 0x6FE4, 0xB3C4 },
   { 0x6FE9, 0xD638 },
   { 0x6FEB, 0xB0A8 },
   { 0x6FEC, 0xC900 },
   { 0x6FEF, 0xD0C1 },
   { 0x6FF1, 0xBE48 },
   { 0x6FFE, 0xB824 },
   { 0x7001, 0xC591 },
   { 0x7005, 0xD615 },
   { 0x7006, 0xB3C5 },
   { 0x7009, 0xC0AC },
   { 0x700B, 0xC2EC },
   { 0x700F, 0xB958 },
   { 0x7011, 0xD3ED },
   { 0x7015, 0xBE48 },
   { 0x7018, 0xB85C },
   { 0x701A, 0xD55C },
   { 0x701B, 0xC601 },
   { 0x701C, 0xC735 },
   { 0x701D, 0xB825 },
   { 0x701E, 0xC815 },
   { 0x701F, 0xC18C },
   { 0x7023, 0xD574 },
   { 0x7027, 0xB871 },
   { 0x7028, 0xB8B0 },
   { 0x702F, 0xC601 },
   { 0x7037, 0xC775 },
   { 0x703E, 0xB780 },
   { 0x704C, 0xAD00 },
   { 0x7050, 0xD615 },
   { 0x7051, 0xC1C4 },
   { 0x7058, 0xD0C4 },
   { 0x705D, 0xD638 },
   { 0x7063, 0xB9CC },
   { 0x706B, 0xD654 },
   { 0x7070, 0xD68C },
   { 0x7078, 0xAD6C },
   { 0x707C, 0xC791 },
   { 0x707D, 0xC7AC },
   { 0x7085, 0xACBD },
   { 0x708A, 0xCDE8 },
   { 0x708E, 0xC5FC },
   { 0x7092, 0xCD08 },
   { 0x7098, 0xD754 },
   { 0x7099, 0xC790 },
   { 0x709A, 0xAD11 },
   { 0x70A1, 0xC815 },
   { 0x70A4, 0xC18C },
   { 0x70AB, 0xD604 },
   { 0x70AC, 0xAC70 },
   { 0x70AD, 0xD0C4 },
   { 0x70AF, 0xD615 },
   { 0x70B3, 0xBCD1 },
   { 0x70B7, 0xC8FC },
   { 0x70B8, 0xC791 },
   { 0x70B9, 0xC810 },
   { 0x70C8, 0xB82C },
   { 0x70CB, 0xD734 },
   { 0x70CF, 0xC624 },
   { 0x70D8, 0xD64D },
   { 0x70D9, 0xB099 },
   { 0x70DD, 0xC99D },
   { 0x70DF, 0xC5F0 },
   { 0x70F1, 0xACBD },
   { 0x70F9, 0xD33D },
   { 0x70FD, 0xBD09 },
   { 0x7104, 0xD6C8 },
   { 0x7109, 0xC5B8 },
   { 0x710C, 0xC900 },
   { 0x7119, 0xBC30 },
   { 0x711A, 0xBD84 },
   { 0x711E, 0xB3C8 },
   { 0x7121, 0xBB34 },
   { 0x7126, 0xCD08 },
   { 0x7130, 0xC5FC },
   { 0x7136, 0xC5F0 },
   { 0x7147, 0xD718 },
   { 0x7149, 0xB828 },
   { 0x714A, 0xD6E4 },
   { 0x714C, 0xD669 },
   { 0x714E, 0xC804 },
   { 0x7150, 0xC601 },
   { 0x7156, 0xB09C },
   { 0x7159, 0xC5F0 },
   { 0x715C, 0xC6B1 },
   { 0x715E, 0xC0B4 },
   { 0x7164, 0xB9E4 },
   { 0x7165, 0xD658 },
   { 0x7166, 0xD6C4 },
   { 0x7167, 0xC870 },
   { 0x7169, 0xBC88 },
   { 0x716C, 0xC591 },
   { 0x716E, 0xC790 },
   { 0x717D, 0xC120 },
   { 0x7184, 0xC2DD },
   { 0x7189, 0xC6B4 },
   { 0x718A, 0xC6C5 },
   { 0x718F, 0xD6C8 },
   { 0x7192, 0xD615 },
   { 0x7194, 0xC6A9 },
   { 0x7199, 0xD76C },
   { 0x719F, 0xC219 },
   { 0x71A2, 0xBD09 },
   { 0x71AC, 0xC624 },
   { 0x71B1, 0xC5F4 },
   { 0x71B9, 0xD76C },
   { 0x71BA, 0xD76C },
   { 0x71BE, 0xCE58 },
   { 0x71C1, 0xC5FD },
   { 0x71C3, 0xC5F0 },
   { 0x71C8, 0xB4F1 },
   { 0x71C9, 0xB3C8 },
   { 0x71CE, 0xB8CC },
   { 0x71D0, 0xB9B0 },
   { 0x71D2, 0xC18C },
   { 0x71D4, 0xBC88 },
   { 0x71D5, 0xC5F0 },
   { 0x71DF, 0xC601 },
   { 0x71E5, 0xC870 },
   { 0x71E6, 0xCC2C },
   { 0x71E7, 0xC218 },
   { 0x71ED, 0xCD09 },
   { 0x71EE, 0xC12D },
   { 0x71FB, 0xD6C8 },
   { 0x71FC, 0xC2E0 },
   { 0x71FE, 0xB3C4 },
   { 0x71FF, 0xC694 },
   { 0x7200, 0xD601 },
   { 0x7206, 0xD3ED },
   { 0x7210, 0xB178 },
   { 0x721B, 0xB09C },
   { 0x722A, 0xC870 },
   { 0x722C, 0xD30C },
   { 0x722D, 0xC7C1 },
   { 0x7230, 0xC6D0 },
   { 0x7232, 0xC704 },
   { 0x7235, 0xC791 },
   { 0x7236, 0xBD80 },
   { 0x723A, 0xC57C },
   { 0x723B, 0xD6A8 },
   { 0x723D, 0xC0C1 },
   { 0x723E, 0xC774 },
   { 0x7240, 0xC0C1 },
   { 0x7246, 0xC7A5 },
   { 0x7247, 0xD3B8 },
   { 0x7248, 0xD310 },
   { 0x724C, 0xD328 },
   { 0x7252, 0xCCA9 },
   { 0x7258, 0xB3C5 },
   { 0x7259, 0xC544 },
   { 0x725B, 0xC6B0 },
   { 0x725D, 0xBE48 },
   { 0x725F, 0xBAA8 },
   { 0x7261, 0xBAA8 },
   { 0x7262, 0xB1CC },
   { 0x7267, 0xBAA9 },
   { 0x7269, 0xBB3C },
   { 0x7272, 0xC0DD },
   { 0x7279, 0xD2B9 },
   { 0x727D, 0xACAC },
   { 0x7280, 0xC11C },
   { 0x7281, 0xB9AC },
   { 0x72A2, 0xB3C5 },
   { 0x72A7, 0xD76C },
   { 0x72AC, 0xACAC },
   { 0x72AF, 0xBC94 },
   { 0x72C0, 0xC0C1 },
   { 0x72C2, 0xAD11 },
   { 0x72C4, 0xC801 },
   { 0x72CE, 0xC555 },
   { 0x72D0, 0xD638 },
   { 0x72D7, 0xAD6C },
   { 0x72D9, 0xC800 },
   { 0x72E1, 0xAD50 },
   { 0x72E9, 0xC218 },
   { 0x72F8, 0xB9AC },
   { 0x72F9, 0xD611 },
   { 0x72FC, 0xB0AD },
   { 0x72FD, 0xD328 },
   { 0x730A, 0xC608 },
   { 0x7316, 0xCC3D },
   { 0x731B, 0xB9F9 },
   { 0x731C, 0xC2DC },
   { 0x731D, 0xC878 },
   { 0x7325, 0xC678 },
   { 0x7329, 0xC131 },
   { 0x732A, 0xC800 },
   { 0x732B, 0xBB18 },
   { 0x7336, 0xC720 },
   { 0x7337, 0xC720 },
   { 0x733E, 0xD65C },
   { 0x733F, 0xC6D0 },
   { 0x7344, 0xC625 },
   { 0x7345, 0xC0AC },
   { 0x7350, 0xC7A5 },
   { 0x7352, 0xC624 },
   { 0x7357, 0xAD90 },
   { 0x7368, 0xB3C5 },
   { 0x736A, 0xD68C },
   { 0x7370, 0xC601 },
   { 0x7372, 0xD68D },
   { 0x7375, 0xB835 },
   { 0x7378, 0xC218 },
   { 0x737A, 0xB2EC },
   { 0x737B, 0xD5CC },
   { 0x7384, 0xD604 },
   { 0x7386, 0xC790 },
   { 0x7387, 0xB960 },
   { 0x7389, 0xC625 },
   { 0x738B, 0xC655 },
   { 0x738E, 0xC815 },
   { 0x7394, 0xCC9C },
   { 0x7396, 0xAD6C },
   { 0x7397, 0xC6B0 },
   { 0x7398, 0xAE30 },
   { 0x739F, 0xBBFC },
   { 0x73A7, 0xC724 },
   { 0x73A9, 0xC644 },
   { 0x73AD, 0xBE48 },
   { 0x73B2, 0xB839 },
   { 0x73B3, 0xB300 },
   { 0x73B9, 0xD604 },
   { 0x73C0, 0xBC15 },
   { 0x73C2, 0xAC00 },
   { 0x73C9, 0xBBFC },
   { 0x73CA, 0xC0B0 },
   { 0x73CC, 0xD544 },
   { 0x73CD, 0xC9C4 },
   { 0x73CF, 0xAC01 },
   { 0x73D6, 0xAD11 },
   { 0x73D9, 0xACF5 },
   { 0x73DD, 0xD6C4 },
   { 0x73DE, 0xB099 },
   { 0x73E0, 0xC8FC },
   { 0x73E3, 0xC21C },
   { 0x73E4, 0xBCF4 },
   { 0x73E5, 0xC774 },
   { 0x73E6, 0xD5A5 },
   { 0x73E9, 0xD615 },
   { 0x73EA, 0xADDC },
   { 0x73ED, 0xBC18 },
   { 0x73F7, 0xBB34 },
   { 0x73F9, 0xC131 },
   { 0x73FD, 0xC815 },
   { 0x73FE, 0xD604 },
   { 0x7401, 0xC120 },
   { 0x7403, 0xAD6C },
   { 0x7405, 0xB791 },
   { 0x7406, 0xB9AC },
   { 0x7407, 0xC218 },
   { 0x7409, 0xB958 },
   { 0x7413, 0xC644 },
   { 0x741B, 0xCE68 },
   { 0x7420, 0xC804 },
   { 0x7421, 0xC219 },
   { 0x7422, 0xD0C1 },
   { 0x7425, 0xD638 },
   { 0x7426, 0xAE30 },
   { 0x7428, 0xACE4 },
   { 0x742A, 0xAE30 },
   { 0x742B, 0xBD09 },
   { 0x742C, 0xC644 },
   { 0x742E, 0xC885 },
   { 0x742F, 0xAD00 },
   { 0x7430, 0xC5FC },
   { 0x7433, 0xB9BC },
   { 0x7434, 0xAE08 },
   { 0x7435, 0xBE44 },
   { 0x7436, 0xD30C },
   { 0x7438, 0xD0C1 },
   { 0x743A, 0xBC95 },
   { 0x743F, 0xD63C },
   { 0x7440, 0xC6B0 },
   { 0x7441, 0xBAA8 },
   { 0x7443, 0xCD98 },
   { 0x7444, 0xC120 },
   { 0x744B, 0xC704 },
   { 0x7455, 0xD558 },
   { 0x7457, 0xC6D0 },
   { 0x7459, 0xB178 },
   { 0x745A, 0xD638 },
   { 0x745B, 0xC601 },
   { 0x745C, 0xC720 },
   { 0x745E, 0xC11C },
   { 0x745F, 0xC2AC },
   { 0x7460, 0xB958 },
   { 0x7462, 0xC6A9 },
   { 0x7464, 0xC694 },
   { 0x7465, 0xC628 },
   { 0x7468, 0xC9C4 },
   { 0x7469, 0xC601 },
   { 0x746A, 0xB9C8 },
   { 0x746F, 0xB791 },
   { 0x747E, 0xADFC },
   { 0x7482, 0xAE30 },
   { 0x7483, 0xB9AC },
   { 0x7487, 0xC120 },
   { 0x7489, 0xB828 },
   { 0x748B, 0xC7A5 },
   { 0x7498, 0xB9B0 },
   { 0x749C, 0xD669 },
   { 0x749E, 0xBC15 },
   { 0x749F, 0xACBD },
   { 0x74A1, 0xC9C4 },
   { 0x74A3, 0xAE30 },
   { 0x74A5, 0xACBD },
   { 0x74A7, 0xBCBD },
   { 0x74A8, 0xCC2C },
   { 0x74AA, 0xC870 },
   { 0x74B0, 0xD658 },
   { 0x74B2, 0xC218 },
   { 0x74B5, 0xC5EC },
   { 0x74B9, 0xC219 },
   { 0x74BD, 0xC0C8 },
   { 0x74BF, 0xC120 },
   { 0x74C6, 0xC9C8 },
   { 0x74CA, 0xACBD },
   { 0x74CF, 0xB871 },
   { 0x74D4, 0xC601 },
   { 0x74D8, 0xAD00 },
   { 0x74DA, 0xCC2C },
   { 0x74DC, 0xACFC },
   { 0x74E0, 0xD638 },
   { 0x74E2, 0xD45C },
   { 0x74E3, 0xD310 },
   { 0x74E6, 0xC640 },
   { 0x74EE, 0xC639 },
   { 0x74F7, 0xC790 },
   { 0x7501, 0xBCD1 },
   { 0x7504, 0xACAC },
   { 0x7511, 0xC99D },
   { 0x7515, 0xC639 },
   { 0x7518, 0xAC10 },
   { 0x751A, 0xC2EC },
   { 0x751B, 0xCCA8 },
   { 0x751F, 0xC0DD },
   { 0x7523, 0xC0B0 },
   { 0x7525, 0xC0DD },
   { 0x7526, 0xC18C },
   { 0x7528, 0xC6A9 },
   { 0x752B, 0xBCF4 },
   { 0x752C, 0xC6A9 },
   { 0x7530, 0xC804 },
   { 0x7531, 0xC720 },
   { 0x7532, 0xAC11 },
   { 0x7533, 0xC2E0 },
   { 0x7537, 0xB0A8 },
   { 0x7538, 0xC804 },
   { 0x753A, 0xC815 },
   { 0x7547, 0xADE0 },
   { 0x754C, 0xACC4 },
   { 0x754F, 0xC678 },
   { 0x7551, 0xC804 },
   { 0x7553, 0xB2F5 },
   { 0x7554, 0xBC18 },
   { 0x7559, 0xB958 },
   { 0x755B, 0xC9C4 },
   { 0x755C, 0xCD95 },
   { 0x755D, 0xBB34 },
   { 0x7562, 0xD544 },
   { 0x7565, 0xB7B5 },
   { 0x7566, 0xD734 },
   { 0x756A, 0xBC88 },
   { 0x756F, 0xC900 },
   { 0x7570, 0xB9AC },
   { 0x7575, 0xD654 },
   { 0x7576, 0xB2F9 },
   { 0x7578, 0xAE30 },
   { 0x757A, 0xAC15 },
   { 0x757F, 0xAE30 },
   { 0x7586, 0xAC15 },
   { 0x7587, 0xC8FC },
   { 0x758A, 0xCCA9 },
   { 0x758B, 0xD544 },
   { 0x758E, 0xC18C },
   { 0x758F, 0xC18C },
   { 0x7591, 0xC758 },
   { 0x759D, 0xC0B0 },
   { 0x75A5, 0xAC1C },
   { 0x75AB, 0xC5ED },
   { 0x75B1, 0xD3EC },
   { 0x75B2, 0xD53C },
   { 0x75B3, 0xAC10 },
   { 0x75B5, 0xC790 },
   { 0x75B8, 0xB2EC },
   { 0x75B9, 0xC9C4 },
   { 0x75BC, 0xB3D9 },
   { 0x75BD, 0xC800 },
   { 0x75BE, 0xC9C8 },
   { 0x75C2, 0xAC00 },
   { 0x75C5, 0xBCD1 },
   { 0x75C7, 0xC99D },
   { 0x75CD, 0xC774 },
   { 0x75D2, 0xC591 },
   { 0x75D4, 0xCE58 },
   { 0x75D5, 0xD754 },
   { 0x75D8, 0xB450 },
   { 0x75D9, 0xACBD },
   { 0x75DB, 0xD1B5 },
   { 0x75E2, 0xB9AC },
   { 0x75F0, 0xB2F4 },
   { 0x75F2, 0xB9C8 },
   { 0x75F4, 0xCE58 },
   { 0x75FA, 0xBE44 },
   { 0x75FC, 0xACE0 },
   { 0x7600, 0xC5B4 },
   { 0x760D, 0xC591 },
   { 0x7619, 0xC18C },
   { 0x761F, 0xC628 },
   { 0x7620, 0xCC99 },
   { 0x7621, 0xCC3D },
   { 0x7622, 0xBC18 },
   { 0x7624, 0xB958 },
   { 0x7626, 0xC218 },
   { 0x763B, 0xB8E8 },
   { 0x7642, 0xB8CC },
   { 0x764C, 0xC554 },
   { 0x764E, 0xAC04 },
   { 0x7652, 0xC720 },
   { 0x7656, 0xBCBD },
   { 0x7661, 0xCE58 },
   { 0x7664, 0xC808 },
   { 0x7669, 0xB098 },
   { 0x766C, 0xC120 },
   { 0x7670, 0xC639 },
   { 0x7672, 0xC804 },
   { 0x7678, 0xACC4 },
   { 0x767B, 0xB4F1 },
   { 0x767C, 0xBC1C },
   { 0x767D, 0xBC31 },
   { 0x767E, 0xBC31 },
   { 0x7684, 0xC801 },
   { 0x7686, 0xAC1C },
   { 0x7687, 0xD669 },
   { 0x768E, 0xAD50 },
   { 0x7690, 0xACE0 },
   { 0x7693, 0xD638 },
   { 0x76AE, 0xD53C },
   { 0x76BA, 0xCD94 },
   { 0x76BF, 0xBA85 },
   { 0x76C2, 0xC6B0 },
   { 0x76C3, 0xBC30 },
   { 0x76C6, 0xBD84 },
   { 0x76C8, 0xC601 },
   { 0x76CA, 0xC775 },
   { 0x76D2, 0xD569 },
   { 0x76D6, 0xAC1C },
   { 0x76DB, 0xC131 },
   { 0x76DC, 0xB3C4 },
   { 0x76DE, 0xC794 },
   { 0x76DF, 0xB9F9 },
   { 0x76E1, 0xC9C4 },
   { 0x76E3, 0xAC10 },
   { 0x76E4, 0xBC18 },
   { 0x76E7, 0xB178 },
   { 0x76EE, 0xBAA9 },
   { 0x76F2, 0xB9F9 },
   { 0x76F4, 0xC9C1 },
   { 0x76F8, 0xC0C1 },
   { 0x76FC, 0xBC18 },
   { 0x76FE, 0xC21C },
   { 0x7701, 0xC0DD },
   { 0x7704, 0xBA74 },
   { 0x7708, 0xD0D0 },
   { 0x7709, 0xBBF8 },
   { 0x770B, 0xAC04 },
   { 0x771E, 0xC9C4 },
   { 0x7720, 0xBA74 },
   { 0x7729, 0xD604 },
   { 0x7737, 0xAD8C },
   { 0x7738, 0xBAA8 },
   { 0x773A, 0xC870 },
   { 0x773C, 0xC548 },
   { 0x7740, 0xCC29 },
   { 0x774D, 0xD604 },
   { 0x775B, 0xC815 },
   { 0x7761, 0xC218 },
   { 0x7763, 0xB3C5 },
   { 0x7766, 0xBAA9 },
   { 0x776B, 0xCCA9 },
   { 0x7779, 0xB3C4 },
   { 0x777E, 0xACE0 },
   { 0x777F, 0xC608 },
   { 0x778B, 0xC9C4 },
   { 0x7791, 0xBA85 },
   { 0x779E, 0xB9CC },
   { 0x77A5, 0xBCC4 },
   { 0x77AC, 0xC21C },
   { 0x77AD, 0xB8CC },
   { 0x77B0, 0xAC10 },
   { 0x77B3, 0xB3D9 },
   { 0x77BB, 0xCCA8 },
   { 0x77BC, 0xAC80 },
   { 0x77BF, 0xAD6C },
   { 0x77D7, 0xCD09 },
   { 0x77DB, 0xBAA8 },
   { 0x77DC, 0xAE0D },
   { 0x77E2, 0xC2DC },
   { 0x77E3, 0xC758 },
   { 0x77E5, 0xC9C0 },
   { 0x77E9, 0xAD6C },
   { 0x77ED, 0xB2E8 },
   { 0x77EE, 0xC65C },
   { 0x77EF, 0xAD50 },
   { 0x77F3, 0xC11D },
   { 0x7802, 0xC0AC },
   { 0x7812, 0xBE44 },
   { 0x7825, 0xC9C0 },
   { 0x7826, 0xCC44 },
   { 0x7827, 0xCE68 },
   { 0x782C, 0xB9BD },
   { 0x7832, 0xD3EC },
   { 0x7834, 0xD30C },
   { 0x7845, 0xADDC },
   { 0x784F, 0xC5F0 },
   { 0x785D, 0xCD08 },
   { 0x786B, 0xB958 },
   { 0x786C, 0xACBD },
   { 0x786F, 0xC5F0 },
   { 0x787C, 0xBD95 },
   { 0x7881, 0xAE30 },
   { 0x7887, 0xC815 },
   { 0x788C, 0xB179 },
   { 0x788D, 0xC560 },
   { 0x788E, 0xC1C4 },
   { 0x7891, 0xBE44 },
   { 0x7897, 0xC644 },
   { 0x78A3, 0xAC08 },
   { 0x78A7, 0xBCBD },
   { 0x78A9, 0xC11D },
   { 0x78BA, 0xD655 },
   { 0x78BB, 0xD655 },
   { 0x78BC, 0xB9C8 },
   { 0x78C1, 0xC790 },
   { 0x78C5, 0xBC29 },
   { 0x78CA, 0xB1CC },
   { 0x78CB, 0xCC28 },
   { 0x78CE, 0xACC4 },
   { 0x78D0, 0xBC18 },
   { 0x78E8, 0xB9C8 },
   { 0x78EC, 0xACBD },
   { 0x78EF, 0xAE30 },
   { 0x78F5, 0xAC04 },
   { 0x78FB, 0xBC18 },
   { 0x7901, 0xCD08 },
   { 0x790E, 0xCD08 },
   { 0x7916, 0xC5EC },
   { 0x792A, 0xB824 },
   { 0x792B, 0xB825 },
   { 0x792C, 0xBC18 },
   { 0x793A, 0xC2DC },
   { 0x793E, 0xC0AC },
   { 0x7940, 0xC0AC },
   { 0x7941, 0xAE30 },
   { 0x7947, 0xAE30 },
   { 0x7948, 0xAE30 },
   { 0x7949, 0xC9C0 },
   { 0x7950, 0xC6B0 },
   { 0x7956, 0xC870 },
   { 0x7957, 0xC9C0 },
   { 0x795A, 0xC870 },
   { 0x795B, 0xAC70 },
   { 0x795C, 0xD638 },
   { 0x795D, 0xCD95 },
   { 0x795E, 0xC2E0 },
   { 0x7960, 0xC0AC },
   { 0x7965, 0xC0C1 },
   { 0x7968, 0xD45C },
   { 0x796D, 0xC81C },
   { 0x797A, 0xAE30 },
   { 0x797F, 0xB179 },
   { 0x7981, 0xAE08 },
   { 0x798D, 0xD654 },
   { 0x798E, 0xC815 },
   { 0x798F, 0xBCF5 },
   { 0x7991, 0xC6B0 },
   { 0x79A6, 0xC5B4 },
   { 0x79A7, 0xD76C },
   { 0x79AA, 0xC120 },
   { 0x79AE, 0xB840 },
   { 0x79B1, 0xB3C4 },
   { 0x79B3, 0xC591 },
   { 0x79B9, 0xC6B0 },
   { 0x79BD, 0xAE08 },
   { 0x79BE, 0xD654 },
   { 0x79BF, 0xB3C5 },
   { 0x79C0, 0xC218 },
   { 0x79C1, 0xC0AC },
   { 0x79C9, 0xBCD1 },
   { 0x79CA, 0xB144 },
   { 0x79CB, 0xCD94 },
   { 0x79D1, 0xACFC },
   { 0x79D2, 0xCD08 },
   { 0x79D5, 0xBE44 },
   { 0x79D8, 0xBE44 },
   { 0x79DF, 0xC870 },
   { 0x79E4, 0xCE6D },
   { 0x79E6, 0xC9C4 },
   { 0x79E7, 0xC559 },
   { 0x79E9, 0xC9C8 },
   { 0x79FB, 0xC774 },
   { 0x7A00, 0xD76C },
   { 0x7A05, 0xC138 },
   { 0x7A08, 0xAC04 },
   { 0x7A0B, 0xC815 },
   { 0x7A0D, 0xCD08 },
   { 0x7A14, 0xC784 },
   { 0x7A17, 0xD328 },
   { 0x7A19, 0xC9C1 },
   { 0x7A1A, 0xCE58 },
   { 0x7A1C, 0xB2A5 },
   { 0x7A1F, 0xD488 },
   { 0x7A20, 0xC870 },
   { 0x7A2E, 0xC885 },
   { 0x7A31, 0xCE6D },
   { 0x7A36, 0xC6B1 },
   { 0x7A37, 0xC9C1 },
   { 0x7A3B, 0xB3C4 },
   { 0x7A3C, 0xAC00 },
   { 0x7A3D, 0xACC4 },
   { 0x7A3F, 0xACE0 },
   { 0x7A40, 0xACE1 },
   { 0x7A46, 0xBAA9 },
   { 0x7A49, 0xCE58 },
   { 0x7A4D, 0xC801 },
   { 0x7A4E, 0xC601 },
   { 0x7A57, 0xC218 },
   { 0x7A61, 0xC0C9 },
   { 0x7A62, 0xC608 },
   { 0x7A69, 0xC628 },
   { 0x7A6B, 0xD655 },
   { 0x7A70, 0xC591 },
   { 0x7A74, 0xD608 },
   { 0x7A76, 0xAD6C },
   { 0x7A79, 0xAD81 },
   { 0x7A7A, 0xACF5 },
   { 0x7A7D, 0xC815 },
   { 0x7A7F, 0xCC9C },
   { 0x7A81, 0xB3CC },
   { 0x7A84, 0xCC29 },
   { 0x7A88, 0xC694 },
   { 0x7A92, 0xC9C8 },
   { 0x7A93, 0xCC3D },
   { 0x7A95, 0xC870 },
   { 0x7A98, 0xAD70 },
   { 0x7A9F, 0xAD74 },
   { 0x7AA9, 0xC640 },
   { 0x7AAA, 0xC640 },
   { 0x7AAE, 0xAD81 },
   { 0x7AAF, 0xC694 },
   { 0x7ABA, 0xADDC },
   { 0x7AC4, 0xCC2C },
   { 0x7AC5, 0xADDC },
   { 0x7AC7, 0xB450 },
   { 0x7ACA, 0xC808 },
   { 0x7ACB, 0xB9BD },
   { 0x7AD7, 0xBB18 },
   { 0x7AD9, 0xCC38 },
   { 0x7ADD, 0xBCD1 },
   { 0x7ADF, 0xACBD },
   { 0x7AE0, 0xC7A5 },
   { 0x7AE3, 0xC900 },
   { 0x7AE5, 0xB3D9 },
   { 0x7AEA, 0xC218 },
   { 0x7AED, 0xAC08 },
   { 0x7AEF, 0xB2E8 },
   { 0x7AF6, 0xACBD },
   { 0x7AF9, 0xC8FD },
   { 0x7AFA, 0xCD95 },
   { 0x7AFF, 0xAC04 },
   { 0x7B0F, 0xD640 },
   { 0x7B11, 0xC18C },
   { 0x7B19, 0xC0DD },
   { 0x7B1B, 0xC801 },
   { 0x7B1E, 0xD0DC },
   { 0x7B20, 0xB9BD },
   { 0x7B26, 0xBD80 },
   { 0x7B2C, 0xC81C },
   { 0x7B2D, 0xB839 },
   { 0x7B39, 0xC138 },
   { 0x7B46, 0xD544 },
   { 0x7B49, 0xB4F1 },
   { 0x7B4B, 0xADFC },
   { 0x7B4C, 0xC804 },
   { 0x7B4D, 0xC21C },
   { 0x7B4F, 0xBC8C },
   { 0x7B50, 0xAD11 },
   { 0x7B51, 0xCD95 },
   { 0x7B52, 0xD1B5 },
   { 0x7B54, 0xB2F5 },
   { 0x7B56, 0xCC45 },
   { 0x7B60, 0xADE0 },
   { 0x7B6C, 0xC131 },
   { 0x7B6E, 0xC11C },
   { 0x7B75, 0xC5F0 },
   { 0x7B7D, 0xC624 },
   { 0x7B87, 0xAC1C },
   { 0x7B8B, 0xC804 },
   { 0x7B8F, 0xC7C1 },
   { 0x7B94, 0xBC15 },
   { 0x7B95, 0xAE30 },
   { 0x7B97, 0xC0B0 },
   { 0x7B9A, 0xCC28 },
   { 0x7B9D, 0xACB8 },
   { 0x7BA1, 0xAD00 },
   { 0x7BAD, 0xC804 },
   { 0x7BB1, 0xC0C1 },
   { 0x7BB4, 0xC7A0 },
   { 0x7BB8, 0xC800 },
   { 0x7BC0, 0xC808 },
   { 0x7BC1, 0xD669 },
   { 0x7BC4, 0xBC94 },
   { 0x7BC6, 0xC804 },
   { 0x7BC7, 0xD3B8 },
   { 0x7BC9, 0xCD95 },
   { 0x7BD2, 0xC2DD },
   { 0x7BE0, 0xC18C },
   { 0x7BE4, 0xB3C5 },
   { 0x7BE9, 0xC0AC },
   { 0x7C07, 0xC871 },
   { 0x7C12, 0xCC2C },
   { 0x7C1E, 0xB2E8 },
   { 0x7C21, 0xAC04 },
   { 0x7C27, 0xD669 },
   { 0x7C2A, 0xC7A0 },
   { 0x7C2B, 0xC18C },
   { 0x7C3D, 0xCCA8 },
   { 0x7C3E, 0xB834 },
   { 0x7C3F, 0xBD80 },
   { 0x7C43, 0xB78C },
   { 0x7C4C, 0xC8FC },
   { 0x7C4D, 0xC801 },
   { 0x7C60, 0xB18D },
   { 0x7C64, 0xCCA8 },
   { 0x7C6C, 0xB9AC },
   { 0x7C73, 0xBBF8 },
   { 0x7C83, 0xBE44 },
   { 0x7C89, 0xBD84 },
   { 0x7C92, 0xB9BD },
   { 0x7C95, 0xBC15 },
   { 0x7C97, 0xC870 },
   { 0x7C98, 0xC810 },
   { 0x7C9F, 0xC18D },
   { 0x7CA5, 0xC8FD },
   { 0x7CA7, 0xC7A5 },
   { 0x7CAE, 0xB7C9 },
   { 0x7CB1, 0xB7C9 },
   { 0x7CB2, 0xCC2C },
   { 0x7CB3, 0xAC31 },
   { 0x7CB9, 0xC218 },
   { 0x7CBE, 0xC815 },
   { 0x7CCA, 0xD638 },
   { 0x7CD6, 0xB2F9 },
   { 0x7CDE, 0xBD84 },
   { 0x7CDF, 0xC870 },
   { 0x7CE0, 0xAC15 },
   { 0x7CE7, 0xB7C9 },
   { 0x7CFB, 0xACC4 },
   { 0x7CFE, 0xADDC },
   { 0x7D00, 0xAE30 },
   { 0x7D02, 0xC8FC },
   { 0x7D04, 0xC57D },
   { 0x7D05, 0xD64D },
   { 0x7D06, 0xC6B0 },
   { 0x7D07, 0xD758 },
   { 0x7D08, 0xD658 },
   { 0x7D0A, 0xBB38 },
   { 0x7D0B, 0xBB38 },
   { 0x7D0D, 0xB0A9 },
   { 0x7D10, 0xB274 },
   { 0x7D14, 0xC21C },
   { 0x7D17, 0xC0AC },
   { 0x7D18, 0xAD49 },
   { 0x7D19, 0xC9C0 },
   { 0x7D1A, 0xAE09 },
   { 0x7D1B, 0xBD84 },
   { 0x7D20, 0xC18C },
   { 0x7D21, 0xBC29 },
   { 0x7D22, 0xC0AD },
   { 0x7D2B, 0xC790 },
   { 0x7D2C, 0xC8FC },
   { 0x7D2E, 0xCC30 },
   { 0x7D2F, 0xB204 },
   { 0x7D30, 0xC138 },
   { 0x7D33, 0xC2E0 },
   { 0x7D35, 0xC800 },
   { 0x7D39, 0xC18C },
   { 0x7D3A, 0xAC10 },
   { 0x7D42, 0xC885 },
   { 0x7D43, 0xD604 },
   { 0x7D44, 0xC870 },
   { 0x7D45, 0xACBD },
   { 0x7D46, 0xBC18 },
   { 0x7D50, 0xACB0 },
   { 0x7D5E, 0xAD50 },
   { 0x7D61, 0xB77D },
   { 0x7D62, 0xD604 },
   { 0x7D66, 0xAE09 },
   { 0x7D68, 0xC735 },
   { 0x7D6A, 0xC778 },
   { 0x7D6E, 0xC11C },
   { 0x7D71, 0xD1B5 },
   { 0x7D72, 0xC0AC },
   { 0x7D73, 0xAC15 },
   { 0x7D76, 0xC808 },
   { 0x7D79, 0xACAC },
   { 0x7D7F, 0xAD6C },
   { 0x7D8E, 0xC815 },
   { 0x7D8F, 0xC218 },
   { 0x7D93, 0xACBD },
   { 0x7D9C, 0xC885 },
   { 0x7DA0, 0xB179 },
   { 0x7DA2, 0xC8FC },
   { 0x7DAC, 0xC218 },
   { 0x7DAD, 0xC720 },
   { 0x7DB1, 0xAC15 },
   { 0x7DB2, 0xB9DD },
   { 0x7DB4, 0xCCA0 },
   { 0x7DB5, 0xCC44 },
   { 0x7DB8, 0xB95C },
   { 0x7DBA, 0xAE30 },
   { 0x7DBB, 0xD0C4 },
   { 0x7DBD, 0xC791 },
   { 0x7DBE, 0xB2A5 },
   { 0x7DBF, 0xBA74 },
   { 0x7DC7, 0xCE58 },
   { 0x7DCA, 0xAE34 },
   { 0x7DCB, 0xBE44 },
   { 0x7DD6, 0xC11C },
   { 0x7DD8, 0xD568 },
   { 0x7DDA, 0xC120 },
   { 0x7DDD, 0xC9D1 },
   { 0x7DDE, 0xB2E8 },
   { 0x7DE0, 0xCCB4 },
   { 0x7DE1, 0xBBFC },
   { 0x7DE3, 0xC5F0 },
   { 0x7DE8, 0xD3B8 },
   { 0x7DE9, 0xC644 },
   { 0x7DEC, 0xBA74 },
   { 0x7DEF, 0xC704 },
   { 0x7DF4, 0xB828 },
   { 0x7DFB, 0xCE58 },
   { 0x7E09, 0xC9C4 },
   { 0x7E0A, 0xC561 },
   { 0x7E15, 0xC628 },
   { 0x7E1B, 0xBC15 },
   { 0x7E1D, 0xC9C4 },
   { 0x7E1E, 0xD638 },
   { 0x7E1F, 0xC695 },
   { 0x7E21, 0xC7AC },
   { 0x7E23, 0xD604 },
   { 0x7E2B, 0xBD09 },
   { 0x7E2E, 0xCD95 },
   { 0x7E2F, 0xC5F0 },
   { 0x7E31, 0xC885 },
   { 0x7E37, 0xB204 },
   { 0x7E3D, 0xCD1D },
   { 0x7E3E, 0xC801 },
   { 0x7E41, 0xBC88 },
   { 0x7E43, 0xBD95 },
   { 0x7E46, 0xBB34 },
   { 0x7E47, 0xC694 },
   { 0x7E52, 0xC99D },
   { 0x7E54, 0xC9C1 },
   { 0x7E55, 0xC120 },
   { 0x7E5E, 0xC694 },
   { 0x7E61, 0xC218 },
   { 0x7E69, 0xC2B9 },
   { 0x7E6A, 0xD68C },
   { 0x7E6B, 0xACC4 },
   { 0x7E6D, 0xACAC },
   { 0x7E70, 0xC870 },
   { 0x7E79, 0xC5ED },
   { 0x7E7C, 0xACC4 },
   { 0x7E82, 0xCC2C },
   { 0x7E8C, 0xC18D },
   { 0x7E8F, 0xC804 },
   { 0x7E93, 0xC601 },
   { 0x7E96, 0xC12C },
   { 0x7E98, 0xCC2C },
   { 0x7E9B, 0xB3C5 },
   { 0x7E9C, 0xB78C },
   { 0x7F36, 0xBD80 },
   { 0x7F38, 0xD56D },
   { 0x7F3A, 0xACB0 },
   { 0x7F4C, 0xC575 },
   { 0x7F50, 0xAD00 },
   { 0x7F54, 0xB9DD },
   { 0x7F55, 0xD55C },
   { 0x7F6A, 0xC8C4 },
   { 0x7F6B, 0xAD18 },
   { 0x7F6E, 0xCE58 },
   { 0x7F70, 0xBC8C },
   { 0x7F72, 0xC11C },
   { 0x7F75, 0xB9E4 },
   { 0x7F77, 0xD30C },
   { 0x7F79, 0xB9AC },
   { 0x7F85, 0xB098 },
   { 0x7F88, 0xAE30 },
   { 0x7F8A, 0xC591 },
   { 0x7F8C, 0xAC15 },
   { 0x7F8E, 0xBBF8 },
   { 0x7F94, 0xACE0 },
   { 0x7F9A, 0xB839 },
   { 0x7F9E, 0xC218 },
   { 0x7FA4, 0xAD70 },
   { 0x7FA8, 0xC120 },
   { 0x7FA9, 0xC758 },
   { 0x7FB2, 0xD76C },
   { 0x7FB8, 0xB9AC },
   { 0x7FB9, 0xAC31 },
   { 0x7FBD, 0xC6B0 },
   { 0x7FC1, 0xC639 },
   { 0x7FC5, 0xC2DC },
   { 0x7FCA, 0xC775 },
   { 0x7FCC, 0xC775 },
   { 0x7FCE, 0xB839 },
   { 0x7FD2, 0xC2B5 },
   { 0x7FD4, 0xC0C1 },
   { 0x7FD5, 0xD761 },
   { 0x7FDF, 0xC801 },
   { 0x7FE0, 0xCDE8 },
   { 0x7FE1, 0xBE44 },
   { 0x7FE9, 0xD3B8 },
   { 0x7FEB, 0xC644 },
   { 0x7FF0, 0xD55C },
   { 0x7FF9, 0xAD50 },
   { 0x7FFC, 0xC775 },
   { 0x8000, 0xC694 },
   { 0x8001, 0xB178 },
   { 0x8003, 0xACE0 },
   { 0x8005, 0xC790 },
   { 0x8006, 0xAE30 },
   { 0x8009, 0xAD6C },
   { 0x800C, 0xC774 },
   { 0x8010, 0xB0B4 },
   { 0x8015, 0xACBD },
   { 0x8017, 0xBAA8 },
   { 0x8018, 0xC6B4 },
   { 0x802D, 0xAE30 },
   { 0x8033, 0xC774 },
   { 0x8036, 0xC57C },
   { 0x803D, 0xD0D0 },
   { 0x803F, 0xACBD },
   { 0x8043, 0xB2F4 },
   { 0x8046, 0xB839 },
   { 0x804A, 0xB8CC },
   { 0x8056, 0xC131 },
   { 0x8058, 0xBE59 },
   { 0x805A, 0xCDE8 },
   { 0x805E, 0xBB38 },
   { 0x806F, 0xB828 },
   { 0x8070, 0xCD1D },
   { 0x8072, 0xC131 },
   { 0x8073, 0xC6A9 },
   { 0x8077, 0xC9C1 },
   { 0x807D, 0xCCAD },
   { 0x807E, 0xB18D },
   { 0x807F, 0xC728 },
   { 0x8084, 0xC774 },
   { 0x8085, 0xC219 },
   { 0x8086, 0xC0AC },
   { 0x8087, 0xC870 },
   { 0x8089, 0xC721 },
   { 0x808B, 0xB291 },
   { 0x808C, 0xAE30 },
   { 0x8096, 0xCD08 },
   { 0x809B, 0xD56D },
   { 0x809D, 0xAC04 },
   { 0x80A1, 0xACE0 },
   { 0x80A2, 0xC9C0 },
   { 0x80A5, 0xBE44 },
   { 0x80A9, 0xACAC },
   { 0x80AA, 0xBC29 },
   { 0x80AF, 0xAE0D },
   { 0x80B1, 0xAD49 },
   { 0x80B2, 0xC721 },
   { 0x80B4, 0xD6A8 },
   { 0x80BA, 0xD3D0 },
   { 0x80C3, 0xC704 },
   { 0x80C4, 0xC8FC },
   { 0x80CC, 0xBC30 },
   { 0x80CE, 0xD0DC },
   { 0x80DA, 0xBC30 },
   { 0x80DB, 0xAC11 },
   { 0x80DE, 0xD3EC },
   { 0x80E1, 0xD638 },
   { 0x80E4, 0xC724 },
   { 0x80E5, 0xC11C },
   { 0x80F1, 0xAD11 },
   { 0x80F4, 0xB3D9 },
   { 0x80F8, 0xD749 },
   { 0x80FD, 0xB2A5 },
   { 0x8102, 0xC9C0 },
   { 0x8105, 0xD611 },
   { 0x8106, 0xCDE8 },
   { 0x8107, 0xD611 },
   { 0x8108, 0xB9E5 },
   { 0x810A, 0xCC99 },
   { 0x8118, 0xC644 },
   { 0x811A, 0xAC01 },
   { 0x811B, 0xACBD },
   { 0x8123, 0xC21C },
   { 0x8129, 0xC218 },
   { 0x812B, 0xD0C8 },
   { 0x812F, 0xD3EC },
   { 0x8139, 0xCC3D },
   { 0x813E, 0xBE44 },
   { 0x814B, 0xC561 },
   { 0x814E, 0xC2E0 },
   { 0x8150, 0xBD80 },
   { 0x8151, 0xBD80 },
   { 0x8154, 0xAC15 },
   { 0x8155, 0xC644 },
   { 0x8165, 0xC131 },
   { 0x8166, 0xB1CC },
   { 0x816B, 0xC885 },
   { 0x8170, 0xC694 },
   { 0x8171, 0xAC74 },
   { 0x8178, 0xC7A5 },
   { 0x8179, 0xBCF5 },
   { 0x817A, 0xC120 },
   { 0x817F, 0xD1F4 },
   { 0x8180, 0xBC29 },
   { 0x8188, 0xACA9 },
   { 0x818A, 0xBC15 },
   { 0x818F, 0xACE0 },
   { 0x819A, 0xBD80 },
   { 0x819C, 0xB9C9 },
   { 0x819D, 0xC2AC },
   { 0x81A0, 0xAD50 },
   { 0x81A3, 0xC9C8 },
   { 0x81A8, 0xD33D },
   { 0x81B3, 0xC120 },
   { 0x81B5, 0xCDCC },
   { 0x81BA, 0xC751 },
   { 0x81BD, 0xB2F4 },
   { 0x81BE, 0xD68C },
   { 0x81BF, 0xB18D },
   { 0x81C0, 0xB454 },
   { 0x81C2, 0xBE44 },
   { 0x81C6, 0xC5B5 },
   { 0x81CD, 0xC81C },
   { 0x81D8, 0xB0A9 },
   { 0x81DF, 0xC7A5 },
   { 0x81E3, 0xC2E0 },
   { 0x81E5, 0xC640 },
   { 0x81E7, 0xC7A5 },
   { 0x81E8, 0xB9BC },
   { 0x81EA, 0xC790 },
   { 0x81ED, 0xCDE8 },
   { 0x81F3, 0xC9C0 },
   { 0x81F4, 0xCE58 },
   { 0x81FA, 0xB300 },
   { 0x81FB, 0xC9C4 },
   { 0x81FC, 0xAD6C },
   { 0x81FE, 0xC720 },
   { 0x8205, 0xAD6C },
   { 0x8207, 0xC5EC },
   { 0x8208, 0xD765 },
   { 0x820A, 0xAD6C },
   { 0x820C, 0xC124 },
   { 0x820D, 0xC0AC },
   { 0x8212, 0xC11C },
   { 0x821B, 0xCC9C },
   { 0x821C, 0xC21C },
   { 0x821E, 0xBB34 },
   { 0x821F, 0xC8FC },
   { 0x8221, 0xAC15 },
   { 0x822A, 0xD56D },
   { 0x822B, 0xBC29 },
   { 0x822C, 0xBC18 },
   { 0x8235, 0xD0C0 },
   { 0x8236, 0xBC15 },
   { 0x8237, 0xD604 },
   { 0x8239, 0xC120 },
   { 0x8240, 0xBD80 },
   { 0x8245, 0xC5EC },
   { 0x8247, 0xC815 },
   { 0x8259, 0xCC3D },
   { 0x8264, 0xC758 },
   { 0x8266, 0xD568 },
   { 0x826E, 0xAC04 },
   { 0x826F, 0xB7C9 },
   { 0x8271, 0xAC04 },
   { 0x8272, 0xC0C9 },
   { 0x8276, 0xC5FC },
   { 0x8278, 0xCD08 },
   { 0x827E, 0xC560 },
   { 0x828B, 0xC6B0 },
   { 0x828D, 0xC791 },
   { 0x828E, 0xAD81 },
   { 0x8292, 0xB9DD },
   { 0x8299, 0xBD80 },
   { 0x829A, 0xB454 },
   { 0x829D, 0xC9C0 },
   { 0x829F, 0xC0BC },
   { 0x82A5, 0xAC1C },
   { 0x82A6, 0xD638 },
   { 0x82A9, 0xAE08 },
   { 0x82AC, 0xBD84 },
   { 0x82AD, 0xD30C },
   { 0x82AE, 0xC608 },
   { 0x82AF, 0xC2EC },
   { 0x82B1, 0xD654 },
   { 0x82B3, 0xBC29 },
   { 0x82B7, 0xC9C0 },
   { 0x82B8, 0xC6B4 },
   { 0x82B9, 0xADFC },
   { 0x82BB, 0xCD94 },
   { 0x82BC, 0xBAA8 },
   { 0x82BD, 0xC544 },
   { 0x82BF, 0xC789 },
   { 0x82D1, 0xC6D0 },
   { 0x82D2, 0xC5FC },
   { 0x82D4, 0xD0DC },
   { 0x82D5, 0xCD08 },
   { 0x82D7, 0xBB18 },
   { 0x82DB, 0xAC00 },
   { 0x82DE, 0xD3EC },
   { 0x82DF, 0xAD6C },
   { 0x82E1, 0xC774 },
   { 0x82E5, 0xC57C },
   { 0x82E6, 0xACE0 },
   { 0x82E7, 0xC800 },
   { 0x82F1, 0xC601 },
   { 0x82FD, 0xACE0 },
   { 0x82FE, 0xD544 },
   { 0x8301, 0xC904 },
   { 0x8302, 0xBB34 },
   { 0x8303, 0xBC94 },
   { 0x8304, 0xAC00 },
   { 0x8305, 0xBAA8 },
   { 0x8309, 0xB9D0 },
   { 0x8317, 0xBA85 },
   { 0x8328, 0xC790 },
   { 0x832B, 0xB9DD },
   { 0x832F, 0xBCF5 },
   { 0x8331, 0xC218 },
   { 0x8334, 0xD68C },
   { 0x8335, 0xC778 },
   { 0x8336, 0xB2E4 },
   { 0x8338, 0xC6A9 },
   { 0x8339, 0xC5EC },
   { 0x8340, 0xC21C },
   { 0x8347, 0xD589 },
   { 0x8349, 0xCD08 },
   { 0x834A, 0xD615 },
   { 0x834F, 0xC784 },
   { 0x8351, 0xC774 },
   { 0x8352, 0xD669 },
   { 0x8373, 0xB450 },
   { 0x8377, 0xD558 },
   { 0x837B, 0xC801 },
   { 0x8389, 0xB9AC },
   { 0x838A, 0xC7A5 },
   { 0x838E, 0xC0AC },
   { 0x8396, 0xACBD },
   { 0x8398, 0xC2E0 },
   { 0x839E, 0xC644 },
   { 0x83A2, 0xD611 },
   { 0x83A9, 0xBD80 },
   { 0x83AA, 0xC544 },
   { 0x83AB, 0xB9C9 },
   { 0x83BD, 0xB9DD },
   { 0x83C1, 0xCCAD },
   { 0x83C5, 0xAD00 },
   { 0x83C9, 0xB179 },
   { 0x83CA, 0xAD6D },
   { 0x83CC, 0xADE0 },
   { 0x83D3, 0xACFC },
   { 0x83D6, 0xCC3D },
   { 0x83DC, 0xCC44 },
   { 0x83E9, 0xBCF4 },
   { 0x83EB, 0xADFC },
   { 0x83EF, 0xD654 },
   { 0x83F0, 0xACE0 },
   { 0x83F1, 0xB2A5 },
   { 0x83F2, 0xBE44 },
   { 0x83F4, 0xC554 },
   { 0x83F9, 0xC800 },
   { 0x83FD, 0xC219 },
   { 0x8403, 0xCDCC },
   { 0x8404, 0xB3C4 },
   { 0x840A, 0xB798 },
   { 0x840C, 0xB9F9 },
   { 0x840D, 0xD3C9 },
   { 0x840E, 0xC704 },
   { 0x8429, 0xCD94 },
   { 0x842C, 0xB9CC },
   { 0x8431, 0xD6E4 },
   { 0x8438, 0xC720 },
   { 0x843D, 0xB099 },
   { 0x8449, 0xC12D },
   { 0x8457, 0xC800 },
   { 0x845B, 0xAC08 },
   { 0x8461, 0xD3EC },
   { 0x8463, 0xB3D9 },
   { 0x8466, 0xC704 },
   { 0x846B, 0xD638 },
   { 0x846C, 0xC7A5 },
   { 0x846F, 0xC57D },
   { 0x8475, 0xADDC },
   { 0x847A, 0xC999 },
   { 0x8490, 0xC218 },
   { 0x8494, 0xC2DC },
   { 0x8499, 0xBABD },
   { 0x849C, 0xC0B0 },
   { 0x84A1, 0xBC29 },
   { 0x84B2, 0xD3EC },
   { 0x84B8, 0xC99D },
   { 0x84BB, 0xC57D },
   { 0x84BC, 0xCC3D },
   { 0x84BF, 0xD638 },
   { 0x84C0, 0xC190 },
   { 0x84C2, 0xBA85 },
   { 0x84C4, 0xCD95 },
   { 0x84C6, 0xC11D },
   { 0x84C9, 0xC6A9 },
   { 0x84CB, 0xAC1C },
   { 0x84CD, 0xC2DC },
   { 0x84D1, 0xC0AC },
   { 0x84DA, 0xC218 },
   { 0x84EC, 0xBD09 },
   { 0x84EE, 0xB828 },
   { 0x84F4, 0xC21C },
   { 0x84FC, 0xB8CC },
   { 0x8511, 0xBA78 },
   { 0x8513, 0xB9CC },
   { 0x8514, 0xBCF5 },
   { 0x8517, 0xC790 },
   { 0x8518, 0xC0BC },
   { 0x851A, 0xC6B8 },
   { 0x851E, 0xB8E8 },
   { 0x8521, 0xCC44 },
   { 0x8523, 0xC7A5 },
   { 0x8525, 0xCD1D },
   { 0x852C, 0xC18C },
   { 0x852D, 0xC74C },
   { 0x852F, 0xC9C4 },
   { 0x853D, 0xD3D0 },
   { 0x853F, 0xC704 },
   { 0x8541, 0xB2F4 },
   { 0x8543, 0xBC88 },
   { 0x8549, 0xCD08 },
   { 0x854E, 0xAD50 },
   { 0x8553, 0xC6B4 },
   { 0x8559, 0xD61C },
   { 0x8563, 0xC21C },
   { 0x8568, 0xAD90 },
   { 0x8569, 0xD0D5 },
   { 0x856A, 0xBB34 },
   { 0x856D, 0xC18C },
   { 0x8584, 0xBC15 },
   { 0x8587, 0xBBF8 },
   { 0x858F, 0xC758 },
   { 0x8591, 0xAC15 },
   { 0x8594, 0xC7A5 },
   { 0x859B, 0xC124 },
   { 0x85A6, 0xCC9C },
   { 0x85A8, 0xD6D9 },
   { 0x85A9, 0xC0B4 },
   { 0x85AA, 0xC2E0 },
   { 0x85AF, 0xC11C },
   { 0x85B0, 0xD6C8 },
   { 0x85BA, 0xC81C },
   { 0x85C1, 0xACE0 },
   { 0x85C9, 0xC790 },
   { 0x85CD, 0xB0A8 },
   { 0x85CE, 0xC2E0 },
   { 0x85CF, 0xC7A5 },
   { 0x85D5, 0xC6B0 },
   { 0x85DC, 0xB824 },
   { 0x85DD, 0xC608 },
   { 0x85E4, 0xB4F1 },
   { 0x85E5, 0xC57D },
   { 0x85E9, 0xBC88 },
   { 0x85EA, 0xC218 },
   { 0x85F7, 0xC800 },
   { 0x85FA, 0xB9B0 },
   { 0x85FB, 0xC870 },
   { 0x85FF, 0xACFD },
   { 0x8602, 0xC608 },
   { 0x8606, 0xB178 },
   { 0x8607, 0xC18C },
   { 0x860A, 0xC628 },
   { 0x8616, 0xC5BC },
   { 0x8617, 0xBCBD },
   { 0x861A, 0xC120 },
   { 0x862D, 0xB09C },
   { 0x863F, 0xB098 },
   { 0x864E, 0xD638 },
   { 0x8650, 0xD559 },
   { 0x8654, 0xAC74 },
   { 0x8655, 0xCC98 },
   { 0x865B, 0xD5C8 },
   { 0x865C, 0xB178 },
   { 0x865E, 0xC6B0 },
   { 0x865F, 0xD638 },
   { 0x8667, 0xD734 },
   { 0x8679, 0xD64D },
   { 0x868A, 0xBB38 },
   { 0x868C, 0xBC29 },
   { 0x8693, 0xC778 },
   { 0x86A3, 0xACF5 },
   { 0x86A4, 0xC870 },
   { 0x86A9, 0xCE58 },
   { 0x86C7, 0xC0AC },
   { 0x86CB, 0xB2E8 },
   { 0x86D4, 0xD68C },
   { 0x86D9, 0xC640 },
   { 0x86DB, 0xC8FC },
   { 0x86DF, 0xAD50 },
   { 0x86E4, 0xD569 },
   { 0x86ED, 0xC9C8 },
   { 0x86FE, 0xC544 },
   { 0x8700, 0xCD09 },
   { 0x8702, 0xBD09 },
   { 0x8703, 0xC2E0 },
   { 0x8708, 0xC624 },
   { 0x8718, 0xC9C0 },
   { 0x871A, 0xBE44 },
   { 0x871C, 0xBC00 },
   { 0x874E, 0xAC08 },
   { 0x8755, 0xC2DD },
   { 0x8757, 0xD669 },
   { 0x875F, 0xC704 },
   { 0x8766, 0xD558 },
   { 0x8768, 0xC2AC },
   { 0x8774, 0xD638 },
   { 0x8776, 0xC811 },
   { 0x8778, 0xC640 },
   { 0x8782, 0xB791 },
   { 0x878D, 0xC735 },
   { 0x879F, 0xBA85 },
   { 0x87A2, 0xD615 },
   { 0x87B3, 0xB2F9 },
   { 0x87BA, 0xB098 },
   { 0x87C4, 0xCE69 },
   { 0x87E0, 0xBC18 },
   { 0x87EC, 0xC120 },
   { 0x87EF, 0xC694 },
   { 0x87F2, 0xCDA9 },
   { 0x87F9, 0xD574 },
   { 0x87FB, 0xC758 },
   { 0x87FE, 0xC12C },
   { 0x8805, 0xC2B9 },
   { 0x881F, 0xB0A9 },
   { 0x8822, 0xC900 },
   { 0x8823, 0xB824 },
   { 0x8831, 0xACE0 },
   { 0x8836, 0xC7A0 },
   { 0x883B, 0xB9CC },
   { 0x8840, 0xD608 },
   { 0x8846, 0xC911 },
   { 0x884C, 0xD56D },
   { 0x884D, 0xC5F0 },
   { 0x8852, 0xD604 },
   { 0x8853, 0xC220 },
   { 0x8857, 0xAC00 },
   { 0x8859, 0xC544 },
   { 0x885B, 0xC704 },
   { 0x885D, 0xCDA9 },
   { 0x8861, 0xD615 },
   { 0x8862, 0xAD6C },
   { 0x8863, 0xC758 },
   { 0x8868, 0xD45C },
   { 0x886B, 0xC0BC },
   { 0x8870, 0xC1E0 },
   { 0x8872, 0xB0A9 },
   { 0x8877, 0xCDA9 },
   { 0x887E, 0xAE08 },
   { 0x887F, 0xAE08 },
   { 0x8881, 0xC6D0 },
   { 0x8882, 0xBA8C },
   { 0x8888, 0xAC00 },
   { 0x888B, 0xB300 },
   { 0x888D, 0xD3EC },
   { 0x8892, 0xB2E8 },
   { 0x8896, 0xC218 },
   { 0x8897, 0xC9C4 },
   { 0x889E, 0xACE4 },
   { 0x88AB, 0xD53C },
   { 0x88B4, 0xACE0 },
   { 0x88C1, 0xC7AC },
   { 0x88C2, 0xB82C },
   { 0x88CF, 0xB9AC },
   { 0x88D4, 0xC608 },
   { 0x88D5, 0xC720 },
   { 0x88D9, 0xAD70 },
   { 0x88DC, 0xBCF4 },
   { 0x88DD, 0xC7A5 },
   { 0x88DF, 0xC0AC },
   { 0x88E1, 0xB9AC },
   { 0x88E8, 0xBE44 },
   { 0x88F3, 0xC0C1 },
   { 0x88F4, 0xBC30 },
   { 0x88F5, 0xBC30 },
   { 0x88F8, 0xB098 },
   { 0x88FD, 0xC81C },
   { 0x8907, 0xBCF5 },
   { 0x8910, 0xAC08 },
   { 0x8912, 0xD3EC },
   { 0x8913, 0xBCF4 },
   { 0x8918, 0xC704 },
   { 0x8919, 0xBC30 },
   { 0x8925, 0xC695 },
   { 0x892A, 0xD1F4 },
   { 0x8936, 0xC2B5 },
   { 0x8938, 0xB8E8 },
   { 0x893B, 0xC124 },
   { 0x8941, 0xAC15 },
   { 0x8944, 0xC591 },
   { 0x895F, 0xAE08 },
   { 0x8964, 0xB0A8 },
   { 0x896A, 0xB9D0 },
   { 0x8972, 0xC2B5 },
   { 0x897F, 0xC11C },
   { 0x8981, 0xC694 },
   { 0x8983, 0xB2F4 },
   { 0x8986, 0xBCF5 },
   { 0x8987, 0xD328 },
   { 0x898B, 0xACAC },
   { 0x898F, 0xADDC },
   { 0x8993, 0xBA71 },
   { 0x8996, 0xC2DC },
   { 0x89A1, 0xACA9 },
   { 0x89A9, 0xB3C4 },
   { 0x89AA, 0xCE5C },
   { 0x89B2, 0xADFC },
   { 0x89BA, 0xAC01 },
   { 0x89BD, 0xB78C },
   { 0x89C0, 0xAD00 },
   { 0x89D2, 0xAC01 },
   { 0x89E3, 0xD574 },
   { 0x89F4, 0xC0C1 },
   { 0x89F8, 0xCD09 },
   { 0x8A00, 0xC5B8 },
   { 0x8A02, 0xC815 },
   { 0x8A03, 0xBD80 },
   { 0x8A08, 0xACC4 },
   { 0x8A0A, 0xC2E0 },
   { 0x8A0C, 0xD64D },
   { 0x8A0E, 0xD1A0 },
   { 0x8A13, 0xD6C8 },
   { 0x8A16, 0xD758 },
   { 0x8A17, 0xD0C1 },
   { 0x8A18, 0xAE30 },
   { 0x8A1B, 0xC640 },
   { 0x8A1D, 0xC544 },
   { 0x8A1F, 0xC1A1 },
   { 0x8A23, 0xACB0 },
   { 0x8A25, 0xB20C },
   { 0x8A2A, 0xBC29 },
   { 0x8A2D, 0xC124 },
   { 0x8A31, 0xD5C8 },
   { 0x8A34, 0xC18C },
   { 0x8A36, 0xAC00 },
   { 0x8A3A, 0xC9C4 },
   { 0x8A3B, 0xC8FC },
   { 0x8A50, 0xC0AC },
   { 0x8A54, 0xC870 },
   { 0x8A55, 0xD3C9 },
   { 0x8A5B, 0xC800 },
   { 0x8A5E, 0xC0AC },
   { 0x8A60, 0xC601 },
   { 0x8A62, 0xC21C },
   { 0x8A63, 0xC608 },
   { 0x8A66, 0xC2DC },
   { 0x8A69, 0xC2DC },
   { 0x8A6D, 0xADA4 },
   { 0x8A6E, 0xC804 },
   { 0x8A70, 0xD790 },
   { 0x8A71, 0xD654 },
   { 0x8A72, 0xD574 },
   { 0x8A73, 0xC0C1 },
   { 0x8A75, 0xC120 },
   { 0x8A79, 0xCCA8 },
   { 0x8A85, 0xC8FC },
   { 0x8A87, 0xACFC },
   { 0x8A8C, 0xC9C0 },
   { 0x8A8D, 0xC778 },
   { 0x8A93, 0xC11C },
   { 0x8A95, 0xD0C4 },
   { 0x8A98, 0xC720 },
   { 0x8A9E, 0xC5B4 },
   { 0x8AA0, 0xC131 },
   { 0x8AA1, 0xACC4 },
   { 0x8AA3, 0xBB34 },
   { 0x8AA4, 0xC624 },
   { 0x8AA5, 0xACE0 },
   { 0x8AA6, 0xC1A1 },
   { 0x8AA8, 0xD68C },
   { 0x8AAA, 0xC124 },
   { 0x8AB0, 0xC218 },
   { 0x8AB2, 0xACFC },
   { 0x8AB9, 0xBE44 },
   { 0x8ABC, 0xC758 },
   { 0x8ABE, 0xC740 },
   { 0x8ABF, 0xC870 },
   { 0x8AC2, 0xCCA8 },
   { 0x8AC4, 0xC21C },
   { 0x8AC7, 0xB2F4 },
   { 0x8ACB, 0xCCAD },
   { 0x8ACD, 0xC7C1 },
   { 0x8ACF, 0xCD94 },
   { 0x8AD2, 0xB7C9 },
   { 0x8AD6, 0xB17C },
   { 0x8ADB, 0xC720 },
   { 0x8ADC, 0xCCA9 },
   { 0x8AE1, 0xC2DC },
   { 0x8AE6, 0xCCB4 },
   { 0x8AE7, 0xD574 },
   { 0x8AEA, 0xC815 },
   { 0x8AEB, 0xAC04 },
   { 0x8AED, 0xC720 },
   { 0x8AEE, 0xC790 },
   { 0x8AF1, 0xD718 },
   { 0x8AF6, 0xC2EC },
   { 0x8AF7, 0xD48D },
   { 0x8AF8, 0xC81C },
   { 0x8AFA, 0xC5B8 },
   { 0x8AFE, 0xB099 },
   { 0x8B00, 0xBAA8 },
   { 0x8B01, 0xC54C },
   { 0x8B02, 0xC704 },
   { 0x8B04, 0xB4F1 },
   { 0x8B0E, 0xBBF8 },
   { 0x8B10, 0xBC00 },
   { 0x8B14, 0xD559 },
   { 0x8B16, 0xC18D },
   { 0x8B17, 0xBC29 },
   { 0x8B19, 0xACB8 },
   { 0x8B1A, 0xC775 },
   { 0x8B1B, 0xAC15 },
   { 0x8B1D, 0xC0AC },
   { 0x8B20, 0xC694 },
   { 0x8B28, 0xBAA8 },
   { 0x8B2B, 0xC801 },
   { 0x8B2C, 0xB958 },
   { 0x8B33, 0xAD6C },
   { 0x8B39, 0xADFC },
   { 0x8B41, 0xD654 },
   { 0x8B49, 0xC99D },
   { 0x8B4E, 0xD73C },
   { 0x8B4F, 0xAE30 },
   { 0x8B58, 0xC2DD },
   { 0x8B5A, 0xB2F4 },
   { 0x8B5C, 0xBCF4 },
   { 0x8B66, 0xACBD },
   { 0x8B6C, 0xBE44 },
   { 0x8B6F, 0xC5ED },
   { 0x8B70, 0xC758 },
   { 0x8B74, 0xACAC },
   { 0x8B77, 0xD638 },
   { 0x8B7D, 0xC608 },
   { 0x8B80, 0xB3C5 },
   { 0x8B8A, 0xBCC0 },
   { 0x8B90, 0xC218 },
   { 0x8B92, 0xCC38 },
   { 0x8B93, 0xC591 },
   { 0x8B96, 0xCC38 },
   { 0x8B9A, 0xCC2C },
   { 0x8C37, 0xACE1 },
   { 0x8C3F, 0xACC4 },
   { 0x8C41, 0xD65C },
   { 0x8C46, 0xB450 },
   { 0x8C48, 0xAC1C },
   { 0x8C4A, 0xD48D },
   { 0x8C4C, 0xC644 },
   { 0x8C55, 0xC2DC },
   { 0x8C5A, 0xB3C8 },
   { 0x8C61, 0xC0C1 },
   { 0x8C6A, 0xD638 },
   { 0x8C6B, 0xC608 },
   { 0x8C79, 0xD45C },
   { 0x8C7A, 0xC2DC },
   { 0x8C82, 0xCD08 },
   { 0x8C8A, 0xB9E5 },
   { 0x8C8C, 0xBAA8 },
   { 0x8C9D, 0xD328 },
   { 0x8C9E, 0xC815 },
   { 0x8CA0, 0xBD80 },
   { 0x8CA1, 0xC7AC },
   { 0x8CA2, 0xACF5 },
   { 0x8CA7, 0xBE48 },
   { 0x8CA8, 0xD654 },
   { 0x8CA9, 0xD310 },
   { 0x8CAA, 0xD0D0 },
   { 0x8CAB, 0xAD00 },
   { 0x8CAC, 0xCC45 },
   { 0x8CAF, 0xC800 },
   { 0x8CB0, 0xC138 },
   { 0x8CB3, 0xC774 },
   { 0x8CB4, 0xADC0 },
   { 0x8CB6, 0xD3C4 },
   { 0x8CB7, 0xB9E4 },
   { 0x8CB8, 0xB300 },
   { 0x8CBB, 0xBE44 },
   { 0x8CBC, 0xCCA9 },
   { 0x8CBD, 0xC774 },
   { 0x8CBF, 0xBB34 },
   { 0x8CC0, 0xD558 },
   { 0x8CC1, 0xBD84 },
   { 0x8CC2, 0xB1CC },
   { 0x8CC3, 0xC784 },
   { 0x8CC4, 0xD68C },
   { 0x8CC7, 0xC790 },
   { 0x8CC8, 0xAC00 },
   { 0x8CCA, 0xC801 },
   { 0x8CD1, 0xC9C4 },
   { 0x8CD3, 0xBE48 },
   { 0x8CDA, 0xB8B0 },
   { 0x8CDC, 0xC0AC },
   { 0x8CDE, 0xC0C1 },
   { 0x8CE0, 0xBC30 },
   { 0x8CE2, 0xD604 },
   { 0x8CE3, 0xB9E4 },
   { 0x8CE4, 0xCC9C },
   { 0x8CE6, 0xBD80 },
   { 0x8CEA, 0xC9C8 },
   { 0x8CED, 0xB3C4 },
   { 0x8CF4, 0xB8B0 },
   { 0x8CFB, 0xBD80 },
   { 0x8CFC, 0xAD6C },
   { 0x8CFD, 0xC0C8 },
   { 0x8D04, 0xC9C0 },
   { 0x8D05, 0xCDE8 },
   { 0x8D07, 0xC724 },
   { 0x8D08, 0xC99D },
   { 0x8D0A, 0xCC2C },
   { 0x8D0D, 0xC12C },
   { 0x8D13, 0xC7A5 },
   { 0x8D16, 0xC18D },
   { 0x8D64, 0xC801 },
   { 0x8D66, 0xC0AC },
   { 0x8D6B, 0xD601 },
   { 0x8D70, 0xC8FC },
   { 0x8D73, 0xADDC },
   { 0x8D74, 0xBD80 },
   { 0x8D77, 0xAE30 },
   { 0x8D85, 0xCD08 },
   { 0x8D8A, 0xC6D4 },
   { 0x8D99, 0xC870 },
   { 0x8DA3, 0xCDE8 },
   { 0x8DA8, 0xCD94 },
   { 0x8DB3, 0xC871 },
   { 0x8DBA, 0xBD80 },
   { 0x8DBE, 0xC9C0 },
   { 0x8DC6, 0xD0DC },
   { 0x8DCB, 0xBC1C },
   { 0x8DCC, 0xC9C8 },
   { 0x8DCF, 0xAC00 },
   { 0x8DDB, 0xD30C },
   { 0x8DDD, 0xAC70 },
   { 0x8DE1, 0xC801 },
   { 0x8DE3, 0xC120 },
   { 0x8DE8, 0xACFC },
   { 0x8DEF, 0xB178 },
   { 0x8DF3, 0xB3C4 },
   { 0x8E0A, 0xC6A9 },
   { 0x8E0F, 0xB2F5 },
   { 0x8E10, 0xCC9C },
   { 0x8E1E, 0xAC70 },
   { 0x8E2A, 0xC885 },
   { 0x8E30, 0xC720 },
   { 0x8E35, 0xC885 },
   { 0x8E42, 0xC720 },
   { 0x8E44, 0xC81C },
   { 0x8E47, 0xAC74 },
   { 0x8E48, 0xB3C4 },
   { 0x8E49, 0xCC28 },
   { 0x8E4A, 0xD61C },
   { 0x8E59, 0xCD95 },
   { 0x8E5F, 0xC801 },
   { 0x8E60, 0xCC99 },
   { 0x8E74, 0xCD95 },
   { 0x8E76, 0xAD90 },
   { 0x8E81, 0xC870 },
   { 0x8E87, 0xC800 },
   { 0x8E8A, 0xC8FC },
   { 0x8E8D, 0xC57D },
   { 0x8EAA, 0xB9B0 },
   { 0x8EAB, 0xC2E0 },
   { 0x8EAC, 0xAD81 },
   { 0x8EC0, 0xAD6C },
   { 0x8ECA, 0xAC70 },
   { 0x8ECB, 0xC54C },
   { 0x8ECC, 0xADA4 },
   { 0x8ECD, 0xAD70 },
   { 0x8ED2, 0xD5CC },
   { 0x8EDF, 0xC5F0 },
   { 0x8EEB, 0xC9C4 },
   { 0x8EF8, 0xCD95 },
   { 0x8EFB, 0xAC00 },
   { 0x8EFE, 0xC2DD },
   { 0x8F03, 0xAD50 },
   { 0x8F05, 0xB85C },
   { 0x8F09, 0xC7AC },
   { 0x8F12, 0xCCA9 },
   { 0x8F13, 0xB9CC },
   { 0x8F14, 0xBCF4 },
   { 0x8F15, 0xACBD },
   { 0x8F1B, 0xB7C9 },
   { 0x8F1C, 0xCE58 },
   { 0x8F1D, 0xD718 },
   { 0x8F1E, 0xB9DD },
   { 0x8F1F, 0xCCA0 },
   { 0x8F26, 0xB828 },
   { 0x8F27, 0xBCD1 },
   { 0x8F29, 0xBC30 },
   { 0x8F2A, 0xB95C },
   { 0x8F2F, 0xC9D1 },
   { 0x8F33, 0xC8FC },
   { 0x8F38, 0xC218 },
   { 0x8F39, 0xBCF5 },
   { 0x8F3B, 0xBCF5 },
   { 0x8F3E, 0xC804 },
   { 0x8F3F, 0xC5EC },
   { 0x8F44, 0xD560 },
   { 0x8F45, 0xC6D0 },
   { 0x8F49, 0xC804 },
   { 0x8F4D, 0xCCA0 },
   { 0x8F4E, 0xAD50 },
   { 0x8F5D, 0xC5EC },
   { 0x8F5F, 0xAD49 },
   { 0x8F62, 0xB825 },
   { 0x8F9B, 0xC2E0 },
   { 0x8F9C, 0xACE0 },
   { 0x8FA3, 0xB784 },
   { 0x8FA6, 0xD310 },
   { 0x8FA8, 0xBCC0 },
   { 0x8FAD, 0xC0AC },
   { 0x8FAF, 0xBCC0 },
   { 0x8FB0, 0xC2E0 },
   { 0x8FB1, 0xC695 },
   { 0x8FB2, 0xB18D },
   { 0x8FC2, 0xC6B0 },
   { 0x8FC5, 0xC2E0 },
   { 0x8FCE, 0xC601 },
   { 0x8FD1, 0xADFC },
   { 0x8FD4, 0xBC18 },
   { 0x8FE6, 0xAC00 },
   { 0x8FEA, 0xC801 },
   { 0x8FEB, 0xBC15 },
   { 0x8FED, 0xC9C8 },
   { 0x8FF0, 0xC220 },
   { 0x8FF2, 0xAC81 },
   { 0x8FF7, 0xBBF8 },
   { 0x8FF9, 0xC801 },
   { 0x8FFD, 0xCD94 },
   { 0x9000, 0xD1F4 },
   { 0x9001, 0xC1A1 },
   { 0x9002, 0xAD04 },
   { 0x9003, 0xB3C4 },
   { 0x9005, 0xD6C4 },
   { 0x9006, 0xC5ED },
   { 0x9008, 0xD615 },
   { 0x900B, 0xD3EC },
   { 0x900D, 0xC18C },
   { 0x900F, 0xD22C },
   { 0x9010, 0xCD95 },
   { 0x9011, 0xAD6C },
   { 0x9014, 0xB3C4 },
   { 0x9015, 0xACBD },
   { 0x9017, 0xB450 },
   { 0x9019, 0xC800 },
   { 0x901A, 0xD1B5 },
   { 0x901D, 0xC11C },
   { 0x901E, 0xB839 },
   { 0x901F, 0xC18D },
   { 0x9020, 0xC870 },
   { 0x9021, 0xC900 },
   { 0x9022, 0xBD09 },
   { 0x9023, 0xB828 },
   { 0x902E, 0xCCB4 },
   { 0x9031, 0xC8FC },
   { 0x9032, 0xC9C4 },
   { 0x9035, 0xADDC },
   { 0x9038, 0xC77C },
   { 0x903C, 0xD54D },
   { 0x903E, 0xC720 },
   { 0x9041, 0xB454 },
   { 0x9042, 0xC218 },
   { 0x9047, 0xC6B0 },
   { 0x904A, 0xC720 },
   { 0x904B, 0xC6B4 },
   { 0x904D, 0xD3B8 },
   { 0x904E, 0xACFC },
   { 0x9050, 0xD558 },
   { 0x9051, 0xD669 },
   { 0x9053, 0xB3C4 },
   { 0x9054, 0xB2EC },
   { 0x9055, 0xC704 },
   { 0x9059, 0xC694 },
   { 0x905C, 0xC190 },
   { 0x905D, 0xB2F5 },
   { 0x905E, 0xCCB4 },
   { 0x9060, 0xC6D0 },
   { 0x9061, 0xC18C },
   { 0x9063, 0xACAC },
   { 0x9069, 0xC801 },
   { 0x906D, 0xC870 },
   { 0x906E, 0xCC28 },
   { 0x906F, 0xB454 },
   { 0x9072, 0xC9C0 },
   { 0x9075, 0xC900 },
   { 0x9077, 0xCC9C },
   { 0x9078, 0xC120 },
   { 0x907A, 0xC720 },
   { 0x907C, 0xB8CC },
   { 0x907D, 0xAC70 },
   { 0x907F, 0xD53C },
   { 0x9080, 0xC694 },
   { 0x9081, 0xB9E4 },
   { 0x9082, 0xD574 },
   { 0x9083, 0xC218 },
   { 0x9084, 0xD658 },
   { 0x9087, 0xC774 },
   { 0x9088, 0xB9C9 },
   { 0x908A, 0xBCC0 },
   { 0x908F, 0xB098 },
   { 0x9091, 0xC74D },
   { 0x9095, 0xC639 },
   { 0x9099, 0xB9DD },
   { 0x90A2, 0xD615 },
   { 0x90A3, 0xB098 },
   { 0x90A6, 0xBC29 },
   { 0x90A8, 0xCD0C },
   { 0x90AA, 0xC0AC },
   { 0x90AF, 0xAC10 },
   { 0x90B0, 0xD0DC },
   { 0x90B1, 0xAD6C },
   { 0x90B5, 0xC18C },
   { 0x90B8, 0xC800 },
   { 0x90C1, 0xC6B1 },
   { 0x90CA, 0xAD50 },
   { 0x90DE, 0xB791 },
   { 0x90E1, 0xAD70 },
   { 0x90E8, 0xBD80 },
   { 0x90ED, 0xACFD },
   { 0x90F5, 0xC6B0 },
   { 0x90FD, 0xB3C4 },
   { 0x9102, 0xC545 },
   { 0x9112, 0xCD94 },
   { 0x9115, 0xD5A5 },
   { 0x9119, 0xBE44 },
   { 0x9127, 0xB4F1 },
   { 0x912D, 0xC815 },
   { 0x9132, 0xB2E8 },
   { 0x9149, 0xC720 },
   { 0x914A, 0xC815 },
   { 0x914B, 0xCD94 },
   { 0x914C, 0xC791 },
   { 0x914D, 0xBC30 },
   { 0x914E, 0xC8FC },
   { 0x9152, 0xC8FC },
   { 0x9162, 0xCD08 },
   { 0x9169, 0xBA85 },
   { 0x916A, 0xB099 },
   { 0x916C, 0xC218 },
   { 0x9175, 0xD6A8 },
   { 0x9177, 0xD639 },
   { 0x9178, 0xC0B0 },
   { 0x9187, 0xC21C },
   { 0x9189, 0xCDE8 },
   { 0x918B, 0xCD08 },
   { 0x918D, 0xC81C },
   { 0x9192, 0xC131 },
   { 0x919C, 0xCD94 },
   { 0x91AB, 0xC758 },
   { 0x91AC, 0xC7A5 },
   { 0x91AE, 0xCD08 },
   { 0x91AF, 0xD61C },
   { 0x91B1, 0xBC1C },
   { 0x91B4, 0xB840 },
   { 0x91B5, 0xAC39 },
   { 0x91C0, 0xC591 },
   { 0x91C7, 0xCC44 },
   { 0x91C9, 0xC720 },
   { 0x91CB, 0xC11D },
   { 0x91CC, 0xB9AC },
   { 0x91CD, 0xC911 },
   { 0x91CE, 0xC57C },
   { 0x91CF, 0xB7C9 },
   { 0x91D0, 0xB9AC },
   { 0x91D1, 0xAE08 },
   { 0x91D7, 0xC1E0 },
   { 0x91D8, 0xC815 },
   { 0x91DC, 0xBD80 },
   { 0x91DD, 0xCE68 },
   { 0x91E3, 0xC870 },
   { 0x91E7, 0xCC9C },
   { 0x91EA, 0xC6B0 },
   { 0x91F5, 0xCC44 },
   { 0x920D, 0xB454 },
   { 0x9210, 0xAC80 },
   { 0x9211, 0xD310 },
   { 0x9212, 0xC0BD },
   { 0x9217, 0xC724 },
   { 0x921E, 0xADE0 },
   { 0x9234, 0xB839 },
   { 0x923A, 0xC625 },
   { 0x923F, 0xC804 },
   { 0x9240, 0xAC11 },
   { 0x9245, 0xAC70 },
   { 0x9249, 0xD604 },
   { 0x9257, 0xACB8 },
   { 0x925B, 0xC5F0 },
   { 0x925E, 0xC6D4 },
   { 0x9262, 0xBC1C },
   { 0x9264, 0xAD6C },
   { 0x9265, 0xC220 },
   { 0x9266, 0xC815 },
   { 0x9280, 0xC740 },
   { 0x9283, 0xCD1D },
   { 0x9285, 0xB3D9 },
   { 0x9291, 0xC120 },
   { 0x9293, 0xC804 },
   { 0x9296, 0xC218 },
   { 0x9298, 0xBA85 },
   { 0x929C, 0xD568 },
   { 0x92B3, 0xC608 },
   { 0x92B6, 0xAD6C },
   { 0x92B7, 0xC18C },
   { 0x92B9, 0xC218 },
   { 0x92CC, 0xC815 },
   { 0x92CF, 0xD611 },
   { 0x92D2, 0xBD09 },
   { 0x92E4, 0xC11C },
   { 0x92EA, 0xD3EC },
   { 0x92F8, 0xAC70 },
   { 0x92FC, 0xAC15 },
   { 0x9304, 0xB179 },
   { 0x9310, 0xCD94 },
   { 0x9318, 0xCD94 },
   { 0x931A, 0xC7C1 },
   { 0x931E, 0xC21C },
   { 0x931F, 0xB2F4 },
   { 0x9320, 0xC815 },
   { 0x9321, 0xAE30 },
   { 0x9322, 0xC804 },
   { 0x9324, 0xAE30 },
   { 0x9326, 0xAE08 },
   { 0x9328, 0xBB18 },
   { 0x932B, 0xC11D },
   { 0x932E, 0xACE0 },
   { 0x932F, 0xCC29 },
   { 0x9348, 0xC601 },
   { 0x934A, 0xB828 },
   { 0x934B, 0xACFC },
   { 0x934D, 0xB3C4 },
   { 0x9354, 0xC545 },
   { 0x935B, 0xB2E8 },
   { 0x936E, 0xC720 },
   { 0x9375, 0xAC74 },
   { 0x937C, 0xCE68 },
   { 0x937E, 0xC885 },
   { 0x938C, 0xACB8 },
   { 0x9394, 0xC6A9 },
   { 0x9396, 0xC1C4 },
   { 0x939A, 0xCD94 },
   { 0x93A3, 0xD615 },
   { 0x93A7, 0xAC1C },
   { 0x93AC, 0xD638 },
   { 0x93AD, 0xC9C4 },
   { 0x93B0, 0xC77C },
   { 0x93C3, 0xC871 },
   { 0x93D1, 0xC801 },
   { 0x93DE, 0xC6A9 },
   { 0x93E1, 0xACBD },
   { 0x93E4, 0xB8E8 },
   { 0x93F6, 0xC9D1 },
   { 0x9404, 0xD6A1 },
   { 0x9418, 0xC885 },
   { 0x9425, 0xC120 },
   { 0x942B, 0xC804 },
   { 0x9435, 0xCCA0 },
   { 0x9438, 0xD0C1 },
   { 0x9444, 0xC8FC },
   { 0x9451, 0xAC10 },
   { 0x9452, 0xAC10 },
   { 0x945B, 0xAD11 },
   { 0x947D, 0xCC2C },
   { 0x947F, 0xCC29 },
   { 0x9577, 0xC7A5 },
   { 0x9580, 0xBB38 },
   { 0x9583, 0xC12C },
   { 0x9589, 0xD3D0 },
   { 0x958B, 0xAC1C },
   { 0x958F, 0xC724 },
   { 0x9591, 0xD55C },
   { 0x9592, 0xD55C },
   { 0x9593, 0xAC04 },
   { 0x9594, 0xBBFC },
   { 0x9598, 0xAC11 },
   { 0x95A3, 0xAC01 },
   { 0x95A4, 0xD569 },
   { 0x95A5, 0xBC8C },
   { 0x95A8, 0xADDC },
   { 0x95AD, 0xB824 },
   { 0x95B1, 0xC5F4 },
   { 0x95BB, 0xC5FC },
   { 0x95BC, 0xC54C },
   { 0x95C7, 0xC554 },
   { 0x95CA, 0xD65C },
   { 0x95D4, 0xD569 },
   { 0x95D5, 0xAD90 },
   { 0x95D6, 0xD2C8 },
   { 0x95DC, 0xAD00 },
   { 0x95E1, 0xCC9C },
   { 0x95E2, 0xBCBD },
   { 0x961C, 0xBD80 },
   { 0x9621, 0xCC9C },
   { 0x962A, 0xD310 },
   { 0x962E, 0xC644 },
   { 0x9632, 0xBC29 },
   { 0x963B, 0xC870 },
   { 0x963F, 0xC544 },
   { 0x9640, 0xD0C0 },
   { 0x9642, 0xD53C },
   { 0x9644, 0xBD80 },
   { 0x964B, 0xB204 },
   { 0x964C, 0xB9E5 },
   { 0x964D, 0xAC15 },
   { 0x9650, 0xD55C },
   { 0x965B, 0xD3D0 },
   { 0x965C, 0xD569 },
   { 0x965D, 0xC12C },
   { 0x965E, 0xC2B9 },
   { 0x965F, 0xCC99 },
   { 0x9662, 0xC6D0 },
   { 0x9663, 0xC9C4 },
   { 0x9664, 0xC81C },
   { 0x966A, 0xBC30 },
   { 0x9670, 0xC74C },
   { 0x9673, 0xC9C4 },
   { 0x9675, 0xB2A5 },
   { 0x9676, 0xB3C4 },
   { 0x9677, 0xD568 },
   { 0x9678, 0xB959 },
   { 0x967D, 0xC591 },
   { 0x9685, 0xC6B0 },
   { 0x9686, 0xB96D },
   { 0x968A, 0xB300 },
   { 0x968B, 0xC218 },
   { 0x968D, 0xD669 },
   { 0x968E, 0xACC4 },
   { 0x9694, 0xACA9 },
   { 0x9695, 0xC6B4 },
   { 0x9698, 0xC560 },
   { 0x9699, 0xADF9 },
   { 0x969B, 0xC81C },
   { 0x969C, 0xC7A5 },
   { 0x96A3, 0xB9B0 },
   { 0x96A7, 0xC218 },
   { 0x96A8, 0xC218 },
   { 0x96AA, 0xD5D8 },
   { 0x96B1, 0xC740 },
   { 0x96B7, 0xB840 },
   { 0x96BB, 0xCC99 },
   { 0x96C0, 0xC791 },
   { 0x96C1, 0xC548 },
   { 0x96C4, 0xC6C5 },
   { 0x96C5, 0xC544 },
   { 0x96C6, 0xC9D1 },
   { 0x96C7, 0xACE0 },
   { 0x96C9, 0xCE58 },
   { 0x96CB, 0xC900 },
   { 0x96CC, 0xC790 },
   { 0x96CD, 0xC639 },
   { 0x96CE, 0xC800 },
   { 0x96D5, 0xC870 },
   { 0x96D6, 0xC218 },
   { 0x96D9, 0xC30D },
   { 0x96DB, 0xCD94 },
   { 0x96DC, 0xC7A1 },
   { 0x96E2, 0xB9AC },
   { 0x96E3, 0xB09C },
   { 0x96E8, 0xC6B0 },
   { 0x96E9, 0xC6B0 },
   { 0x96EA, 0xC124 },
   { 0x96EF, 0xBB38 },
   { 0x96F0, 0xBD84 },
   { 0x96F2, 0xC6B4 },
   { 0x96F6, 0xB839 },
   { 0x96F7, 0xB1CC },
   { 0x96F9, 0xBC15 },
   { 0x96FB, 0xC804 },
   { 0x9700, 0xC218 },
   { 0x9706, 0xC815 },
   { 0x9707, 0xC9C4 },
   { 0x9711, 0xC810 },
   { 0x9713, 0xC608 },
   { 0x9716, 0xB9BC },
   { 0x9719, 0xC601 },
   { 0x971C, 0xC0C1 },
   { 0x971E, 0xD558 },
   { 0x9727, 0xBB34 },
   { 0x9730, 0xC0B0 },
   { 0x9732, 0xB178 },
   { 0x9739, 0xBCBD },
   { 0x973D, 0xC81C },
   { 0x9742, 0xB825 },
   { 0x9744, 0xC560 },
   { 0x9748, 0xB839 },
   { 0x9751, 0xCCAD },
   { 0x9756, 0xC815 },
   { 0x975C, 0xC815 },
   { 0x975E, 0xBE44 },
   { 0x9761, 0xBBF8 },
   { 0x9762, 0xBA74 },
   { 0x9769, 0xD601 },
   { 0x976D, 0xC778 },
   { 0x9774, 0xD654 },
   { 0x9777, 0xC778 },
   { 0x977A, 0xB9D0 },
   { 0x978B, 0xD61C },
   { 0x978D, 0xC548 },
   { 0x978F, 0xACF5 },
   { 0x97A0, 0xAD6D },
   { 0x97A8, 0xAC08 },
   { 0x97AB, 0xAD6D },
   { 0x97AD, 0xD3B8 },
   { 0x97C6, 0xCC9C },
   { 0x97CB, 0xC704 },
   { 0x97D3, 0xD55C },
   { 0x97DC, 0xB3C4 },
   { 0x97F3, 0xC74C },
   { 0x97F6, 0xC18C },
   { 0x97FB, 0xC6B4 },
   { 0x97FF, 0xD5A5 },
   { 0x9800, 0xD638 },
   { 0x9801, 0xD608 },
   { 0x9802, 0xC815 },
   { 0x9803, 0xACBD },
   { 0x9805, 0xD56D },
   { 0x9806, 0xC21C },
   { 0x9808, 0xC218 },
   { 0x980A, 0xC6B1 },
   { 0x980C, 0xC1A1 },
   { 0x9810, 0xC608 },
   { 0x9811, 0xC644 },
   { 0x9812, 0xBC18 },
   { 0x9813, 0xB3C8 },
   { 0x9817, 0xD30C },
   { 0x9818, 0xB839 },
   { 0x982D, 0xB450 },
   { 0x9830, 0xD611 },
   { 0x9838, 0xACBD },
   { 0x9839, 0xD1F4 },
   { 0x983B, 0xBE48 },
   { 0x9846, 0xACFC },
   { 0x984C, 0xC81C },
   { 0x984D, 0xC561 },
   { 0x984E, 0xC545 },
   { 0x9854, 0xC548 },
   { 0x9858, 0xC6D0 },
   { 0x985A, 0xC804 },
   { 0x985E, 0xB958 },
   { 0x9865, 0xD638 },
   { 0x9867, 0xACE0 },
   { 0x986B, 0xC804 },
   { 0x986F, 0xD604 },
   { 0x98A8, 0xD48D },
   { 0x98AF, 0xC0BD },
   { 0x98B1, 0xD0DC },
   { 0x98C4, 0xD45C },
   { 0x98C7, 0xD45C },
   { 0x98DB, 0xBE44 },
   { 0x98DC, 0xBC88 },
   { 0x98DF, 0xC2DD },
   { 0x98E1, 0xC190 },
   { 0x98E2, 0xAE30 },
   { 0x98ED, 0xCE59 },
   { 0x98EE, 0xC74C },
   { 0x98EF, 0xBC18 },
   { 0x98F4, 0xC774 },
   { 0x98FC, 0xC0AC },
   { 0x98FD, 0xD3EC },
   { 0x98FE, 0xC2DD },
   { 0x9903, 0xAD50 },
   { 0x9909, 0xD5A5 },
   { 0x990A, 0xC591 },
   { 0x990C, 0xC774 },
   { 0x9910, 0xCC2C },
   { 0x9913, 0xC544 },
   { 0x9918, 0xC5EC },
   { 0x991E, 0xC804 },
   { 0x9920, 0xBCD1 },
   { 0x9928, 0xAD00 },
   { 0x9945, 0xB9CC },
   { 0x9949, 0xADFC },
   { 0x994B, 0xADA4 },
   { 0x994C, 0xCC2C },
   { 0x994D, 0xC120 },
   { 0x9951, 0xAE30 },
   { 0x9952, 0xC694 },
   { 0x9954, 0xC639 },
   { 0x9957, 0xD5A5 },
   { 0x9996, 0xC218 },
   { 0x9999, 0xD5A5 },
   { 0x999D, 0xD544 },
   { 0x99A5, 0xBCF5 },
   { 0x99A8, 0xD615 },
   { 0x99AC, 0xB9C8 },
   { 0x99AD, 0xC5B4 },
   { 0x99AE, 0xD48D },
   { 0x99B1, 0xD0C0 },
   { 0x99B3, 0xCE58 },
   { 0x99B4, 0xC21C },
   { 0x99B9, 0xC77C },
   { 0x99C1, 0xBC15 },
   { 0x99D0, 0xC8FC },
   { 0x99D1, 0xB178 },
   { 0x99D2, 0xAD6C },
   { 0x99D5, 0xAC00 },
   { 0x99D9, 0xBD80 },
   { 0x99DD, 0xD0C0 },
   { 0x99DF, 0xC0AC },
   { 0x99ED, 0xD574 },
   { 0x99F1, 0xB099 },
   { 0x99FF, 0xC900 },
   { 0x9A01, 0xBE59 },
   { 0x9A08, 0xBCD1 },
   { 0x9A0E, 0xAE30 },
   { 0x9A0F, 0xAE30 },
   { 0x9A19, 0xD3B8 },
   { 0x9A2B, 0xAC74 },
   { 0x9A30, 0xB4F1 },
   { 0x9A36, 0xCD94 },
   { 0x9A37, 0xC18C },
   { 0x9A40, 0xB9E5 },
   { 0x9A43, 0xD45C },
   { 0x9A45, 0xAD6C },
   { 0x9A4D, 0xD6A8 },
   { 0x9A55, 0xAD50 },
   { 0x9A57, 0xD5D8 },
   { 0x9A5A, 0xACBD },
   { 0x9A5B, 0xC5ED },
   { 0x9A5F, 0xCDE8 },
   { 0x9A62, 0xB824 },
   { 0x9A65, 0xAE30 },
   { 0x9A69, 0xD658 },
   { 0x9A6A, 0xB824 },
   { 0x9AA8, 0xACE8 },
   { 0x9AB8, 0xD574 },
   { 0x9AD3, 0xC218 },
   { 0x9AD4, 0xCCB4 },
   { 0x9AD8, 0xACE0 },
   { 0x9AE5, 0xC5FC },
   { 0x9AEE, 0xBC1C },
   { 0x9B1A, 0xC218 },
   { 0x9B27, 0xB8CC },
   { 0x9B2A, 0xD22C },
   { 0x9B31, 0xC6B8 },
   { 0x9B3C, 0xADC0 },
   { 0x9B41, 0xAD34 },
   { 0x9B42, 0xD63C },
   { 0x9B43, 0xBC1C },
   { 0x9B44, 0xBC31 },
   { 0x9B45, 0xB9E4 },
   { 0x9B4F, 0xC704 },
   { 0x9B54, 0xB9C8 },
   { 0x9B5A, 0xC5B4 },
   { 0x9B6F, 0xB178 },
   { 0x9B8E, 0xC810 },
   { 0x9B91, 0xD3EC },
   { 0x9B9F, 0xC548 },
   { 0x9BAB, 0xAD50 },
   { 0x9BAE, 0xC120 },
   { 0x9BC9, 0xB9AC },
   { 0x9BD6, 0xCCAD },
   { 0x9BE4, 0xACE4 },
   { 0x9BE8, 0xACBD },
   { 0x9C0D, 0xCD94 },
   { 0x9C10, 0xC545 },
   { 0x9C12, 0xBCF5 },
   { 0x9C15, 0xD558 },
   { 0x9C25, 0xD658 },
   { 0x9C32, 0xC624 },
   { 0x9C3B, 0xB9CC },
   { 0x9C47, 0xAC15 },
   { 0x9C49, 0xBCC4 },
   { 0x9C57, 0xB9B0 },
   { 0x9CE5, 0xC870 },
   { 0x9CE7, 0xBD80 },
   { 0x9CE9, 0xAD6C },
   { 0x9CF3, 0xBD09 },
   { 0x9CF4, 0xBA85 },
   { 0x9CF6, 0xC5F0 },
   { 0x9D09, 0xC544 },
   { 0x9D1B, 0xC6D0 },
   { 0x9D26, 0xC559 },
   { 0x9D28, 0xC555 },
   { 0x9D3B, 0xD64D },
   { 0x9D51, 0xACAC },
   { 0x9D5D, 0xC544 },
   { 0x9D60, 0xACE1 },
   { 0x9D61, 0xBB34 },
   { 0x9D6C, 0xBD95 },
   { 0x9D72, 0xC791 },
   { 0x9DA9, 0xBAA9 },
   { 0x9DAF, 0xC575 },
   { 0x9DB4, 0xD559 },
   { 0x9DC4, 0xACC4 },
   { 0x9DD7, 0xAD6C },
   { 0x9DF2, 0xCDE8 },
   { 0x9DF8, 0xD73C },
   { 0x9DF9, 0xC751 },
   { 0x9DFA, 0xB178 },
   { 0x9E1A, 0xC575 },
   { 0x9E1E, 0xB09C },
   { 0x9E75, 0xB85C },
   { 0x9E79, 0xD568 },
   { 0x9E7D, 0xC5FC },
   { 0x9E7F, 0xB179 },
   { 0x9E92, 0xAE30 },
   { 0x9E93, 0xB85D },
   { 0x9E97, 0xB824 },
   { 0x9E9D, 0xC0AC },
   { 0x9E9F, 0xB9B0 },
   { 0x9EA5, 0xB9E5 },
   { 0x9EB4, 0xAD6D },
   { 0x9EB5, 0xBA74 },
   { 0x9EBB, 0xB9C8 },
   { 0x9EBE, 0xD718 },
   { 0x9EC3, 0xD669 },
   { 0x9ECD, 0xC11C },
   { 0x9ECE, 0xB824 },
   { 0x9ED1, 0xD751 },
   { 0x9ED4, 0xAC80 },
   { 0x9ED8, 0xBB35 },
   { 0x9EDB, 0xB300 },
   { 0x9EDC, 0xCD9C },
   { 0x9EDE, 0xC810 },
   { 0x9EE8, 0xB2F9 },
   { 0x9EF4, 0xBBF8 },
   { 0x9F07, 0xC624 },
   { 0x9F08, 0xBCC4 },
   { 0x9F0E, 0xC815 },
   { 0x9F13, 0xACE0 },
   { 0x9F20, 0xC11C },
   { 0x9F3B, 0xBE44 },
   { 0x9F4A, 0xC81C },
   { 0x9F4B, 0xC7AC },
   { 0x9F4E, 0xC7AC },
   { 0x9F52, 0xCE58 },
   { 0x9F5F, 0xC800 },
   { 0x9F61, 0xB839 },
   { 0x9F67, 0xC124 },
   { 0x9F6A, 0xCC29 },
   { 0x9F6C, 0xC5B4 },
   { 0x9F77, 0xC545 },
   { 0x9F8D, 0xB8E1 },
   { 0x9F90, 0xBC29 },
   { 0x9F95, 0xAC10 },
   { 0x9F9C, 0xAD6C },
   { 0xF900, 0xAC1C },
   { 0xF901, 0xAC31 },
   { 0xF902, 0xAC70 },
   { 0xF903, 0xACE0 },
   { 0xF904, 0xACE8 },
   { 0xF905, 0xAD00 },
   { 0xF906, 0xADC0 },
   { 0xF907, 0xADC0 },
   { 0xF908, 0xADE0 },
   { 0xF909, 0xAE00 },
   { 0xF90A, 0xAE08 },
   { 0xF90B, 0xB098 },
   { 0xF90C, 0xB098 },
   { 0xF90D, 0xB098 },
   { 0xF90E, 0xB098 },
   { 0xF90F, 0xB098 },
   { 0xF910, 0xB098 },
   { 0xF911, 0xB098 },
   { 0xF912, 0xB098 },
   { 0xF913, 0xB098 },
   { 0xF914, 0xB099 },
   { 0xF915, 0xB099 },
   { 0xF916, 0xB099 },
   { 0xF917, 0xB099 },
   { 0xF918, 0xB099 },
   { 0xF919, 0xB099 },
   { 0xF91A, 0xB099 },
   { 0xF91B, 0xB09C },
   { 0xF91C, 0xB09C },
   { 0xF91D, 0xB09C },
   { 0xF91E, 0xB09C },
   { 0xF91F, 0xB09C },
   { 0xF920, 0xB09C },
   { 0xF921, 0xB0A8 },
   { 0xF922, 0xB0A8 },
   { 0xF923, 0xB0A8 },
   { 0xF924, 0xB0A8 },
   { 0xF925, 0xB0A9 },
   { 0xF926, 0xB0A9 },
   { 0xF927, 0xB0A9 },
   { 0xF928, 0xB0AD },
   { 0xF929, 0xB0AD },
   { 0xF92A, 0xB0AD },
   { 0xF92B, 0xB0AD },
   { 0xF92C, 0xB0AD },
   { 0xF92D, 0xB0B4 },
   { 0xF92E, 0xB0C9 },
   { 0xF92F, 0xB178 },
   { 0xF930, 0xB178 },
   { 0xF931, 0xB178 },
   { 0xF932, 0xB178 },
   { 0xF933, 0xB178 },
   { 0xF934, 0xB178 },
   { 0xF935, 0xB178 },
   { 0xF936, 0xB178 },
   { 0xF937, 0xB178 },
   { 0xF938, 0xB178 },
   { 0xF939, 0xB178 },
   { 0xF93A, 0xB178 },
   { 0xF93B, 0xB179 },
   { 0xF93C, 0xB179 },
   { 0xF93D, 0xB179 },
   { 0xF93E, 0xB179 },
   { 0xF93F, 0xB179 },
   { 0xF940, 0xB179 },
   { 0xF941, 0xB17C },
   { 0xF942, 0xB18D },
   { 0xF943, 0xB18D },
   { 0xF944, 0xB18D },
   { 0xF945, 0xB18D },
   { 0xF946, 0xB1CC },
   { 0xF947, 0xB1CC },
   { 0xF948, 0xB1CC },
   { 0xF949, 0xB1CC },
   { 0xF94A, 0xB204 },
   { 0xF94B, 0xB204 },
   { 0xF94C, 0xB204 },
   { 0xF94D, 0xB204 },
   { 0xF94E, 0xB204 },
   { 0xF94F, 0xB204 },
   { 0xF950, 0xB204 },
   { 0xF951, 0xB204 },
   { 0xF952, 0xB291 },
   { 0xF953, 0xB291 },
   { 0xF954, 0xB2A0 },
   { 0xF955, 0xB2A5 },
   { 0xF956, 0xB2A5 },
   { 0xF957, 0xB2A5 },
   { 0xF958, 0xB2A5 },
   { 0xF959, 0xB2A5 },
   { 0xF95A, 0xB450 },
   { 0xF95B, 0xB77C },
   { 0xF95C, 0xB77D },
   { 0xF95D, 0xB77D },
   { 0xF95E, 0xB780 },
   { 0xF95F, 0xB839 },
   { 0xF960, 0xB85C },
   { 0xF961, 0xB960 },
   { 0xF962, 0xB9AC },
   { 0xF963, 0xBC30 },
   { 0xF964, 0xBC88 },
   { 0xF965, 0xBCC0 },
   { 0xF966, 0xBD80 },
   { 0xF967, 0xBD88 },
   { 0xF968, 0xBE44 },
   { 0xF969, 0xC0AD },
   { 0xF96A, 0xC0AD },
   { 0xF96B, 0xC0BC },
   { 0xF96C, 0xC0C9 },
   { 0xF96D, 0xC0DD },
   { 0xF96E, 0xC12D },
   { 0xF96F, 0xC138 },
   { 0xF970, 0xC1C4 },
   { 0xF971, 0xC2E0 },
   { 0xF972, 0xC2EC },
   { 0xF973, 0xC2ED },
   { 0xF974, 0xC57C },
   { 0xF975, 0xC57D },
   { 0xF976, 0xC57D },
   { 0xF977, 0xC591 },
   { 0xF978, 0xC591 },
   { 0xF979, 0xC591 },
   { 0xF97A, 0xC591 },
   { 0xF97B, 0xC591 },
   { 0xF97C, 0xC591 },
   { 0xF97D, 0xC591 },
   { 0xF97E, 0xC591 },
   { 0xF97F, 0xC5EC },
   { 0xF980, 0xC5EC },
   { 0xF981, 0xC5EC },
   { 0xF982, 0xC5EC },
   { 0xF983, 0xC5EC },
   { 0xF984, 0xC5EC },
   { 0xF985, 0xC5EC },
   { 0xF986, 0xC5EC },
   { 0xF987, 0xC5EC },
   { 0xF988, 0xC5EC },
   { 0xF989, 0xC5EC },
   { 0xF98A, 0xC5ED },
   { 0xF98B, 0xC5ED },
   { 0xF98C, 0xC5ED },
   { 0xF98D, 0xC5ED },
   { 0xF98E, 0xC5F0 },
   { 0xF98F, 0xC5F0 },
   { 0xF990, 0xC5F0 },
   { 0xF991, 0xC5F0 },
   { 0xF992, 0xC5F0 },
   { 0xF993, 0xC5F0 },
   { 0xF994, 0xC5F0 },
   { 0xF995, 0xC5F0 },
   { 0xF996, 0xC5F0 },
   { 0xF997, 0xC5F0 },
   { 0xF998, 0xC5F0 },
   { 0xF999, 0xC5F0 },
   { 0xF99A, 0xC5F0 },
   { 0xF99B, 0xC5F0 },
   { 0xF99C, 0xC5F4 },
   { 0xF99D, 0xC5F4 },
   { 0xF99E, 0xC5F4 },
   { 0xF99F, 0xC5F4 },
   { 0xF9A0, 0xC5F4 },
   { 0xF9A1, 0xC5F4 },
   { 0xF9A2, 0xC5FC },
   { 0xF9A3, 0xC5FC },
   { 0xF9A4, 0xC5FC },
   { 0xF9A5, 0xC5FC },
   { 0xF9A6, 0xC5FC },
   { 0xF9A7, 0xC5FD },
   { 0xF9A8, 0xC601 },
   { 0xF9A9, 0xC601 },
   { 0xF9AA, 0xC601 },
   { 0xF9AB, 0xC601 },
   { 0xF9AC, 0xC601 },
   { 0xF9AD, 0xC601 },
   { 0xF9AE, 0xC601 },
   { 0xF9AF, 0xC601 },
   { 0xF9B0, 0xC601 },
   { 0xF9B1, 0xC601 },
   { 0xF9B2, 0xC601 },
   { 0xF9B3, 0xC601 },
   { 0xF9B4, 0xC601 },
   { 0xF9B5, 0xC608 },
   { 0xF9B6, 0xC608 },
   { 0xF9B7, 0xC608 },
   { 0xF9B8, 0xC608 },
   { 0xF9B9, 0xC624 },
   { 0xF9BA, 0xC694 },
   { 0xF9BB, 0xC694 },
   { 0xF9BC, 0xC694 },
   { 0xF9BD, 0xC694 },
   { 0xF9BE, 0xC694 },
   { 0xF9BF, 0xC694 },
   { 0xF9C0, 0xC694 },
   { 0xF9C1, 0xC694 },
   { 0xF9C2, 0xC694 },
   { 0xF9C3, 0xC694 },
   { 0xF9C4, 0xC6A9 },
   { 0xF9C5, 0xC6B4 },
   { 0xF9C6, 0xC6D0 },
   { 0xF9C7, 0xC720 },
   { 0xF9C8, 0xC720 },
   { 0xF9C9, 0xC720 },
   { 0xF9CA, 0xC720 },
   { 0xF9CB, 0xC720 },
   { 0xF9CC, 0xC720 },
   { 0xF9CD, 0xC720 },
   { 0xF9CE, 0xC720 },
   { 0xF9CF, 0xC720 },
   { 0xF9D0, 0xC720 },
   { 0xF9D1, 0xC721 },
   { 0xF9D2, 0xC721 },
   { 0xF9D3, 0xC721 },
   { 0xF9D4, 0xC724 },
   { 0xF9D5, 0xC724 },
   { 0xF9D6, 0xC724 },
   { 0xF9D7, 0xC724 },
   { 0xF9D8, 0xC728 },
   { 0xF9D9, 0xC728 },
   { 0xF9DA, 0xC728 },
   { 0xF9DB, 0xC728 },
   { 0xF9DC, 0xC735 },
   { 0xF9DD, 0xC774 },
   { 0xF9DE, 0xC774 },
   { 0xF9DF, 0xC774 },
   { 0xF9E0, 0xC774 },
   { 0xF9E1, 0xC774 },
   { 0xF9E2, 0xC774 },
   { 0xF9E3, 0xC774 },
   { 0xF9E4, 0xC774 },
   { 0xF9E5, 0xC774 },
   { 0xF9E6, 0xC774 },
   { 0xF9E7, 0xC774 },
   { 0xF9E8, 0xC774 },
   { 0xF9E9, 0xC774 },
   { 0xF9EA, 0xC774 },
   { 0xF9EB, 0xC775 },
   { 0xF9EC, 0xC775 },
   { 0xF9ED, 0xC778 },
   { 0xF9EE, 0xC778 },
   { 0xF9EF, 0xC778 },
   { 0xF9F0, 0xC778 },
   { 0xF9F1, 0xC778 },
   { 0xF9F2, 0xC778 },
   { 0xF9F3, 0xC778 },
   { 0xF9F4, 0xC784 },
   { 0xF9F5, 0xC784 },
   { 0xF9F6, 0xC784 },
   { 0xF9F7, 0xC785 },
   { 0xF9F8, 0xC785 },
   { 0xF9F9, 0xC785 },
   { 0xF9FA, 0xC7A5 },
   { 0xF9FB, 0xC801 },
   { 0xF9FC, 0xC9C0 },
   { 0xF9FD, 0xC9D1 },
   { 0xF9FE, 0xCC28 },
   { 0xF9FF, 0xCC99 },
   { 0xFA00, 0xCCB4 },
   { 0xFA01, 0xD0C1 },
   { 0xFA02, 0xD0C1 },
   { 0xFA03, 0xD0D5 },
   { 0xFA04, 0xD0DD },
   { 0xFA05, 0xD1B5 },
   { 0xFA06, 0xD3EC },
   { 0xFA07, 0xD3ED },
   { 0xFA08, 0xD56D },
   { 0xFA09, 0xD56D },
   { 0xFA0A, 0xD604 },
   { 0xFA0B, 0xD655 },
   { 0x4E1F, 0xC8FC },
   { 0x4E26, 0xBCD1 },
   { 0x4E2B, 0xC544 },
   { 0x4E30, 0xBD09 },
   { 0x4E31, 0xAD00 },
   { 0x4E67, 0xB458 },
   { 0x4E6C, 0xAC78 },
   { 0x4E7C, 0xC904 },
   { 0x4E8F, 0xC6B0 },
   { 0x4E99, 0xAE0D },
   { 0x4E9F, 0xADF9 },
   { 0x4EB3, 0xBC15 },
   { 0x4EB4, 0xC6B0 },
   { 0x4EB9, 0xBBF8 },
   { 0x4EC6, 0xBD80 },
   { 0x4EDE, 0xC778 },
   { 0x4EE1, 0xD758 },
   { 0x4EEE, 0xAC00 },
   { 0x4EF3, 0xBE44 },
   { 0x4EF5, 0xC624 },
   { 0x4EFF, 0xBC29 },
   { 0x4F00, 0xC885 },
   { 0x4F30, 0xACE0 },
   { 0x4F42, 0xC815 },
   { 0x4F49, 0xAD6C },
   { 0x4F4B, 0xC18C },
   { 0x4F53, 0xBD84 },
   { 0x4F54, 0xC810 },
   { 0x4F56, 0xD544 },
   { 0x4F57, 0xD0C0 },
   { 0x4F5D, 0xAD6C },
   { 0x4F5E, 0xB155 },
   { 0x4F5F, 0xD241 },
   { 0x4F6A, 0xD68C },
   { 0x4F78, 0xAD04 },
   { 0x4F79, 0xADA4 },
   { 0x4F7B, 0xC870 },
   { 0x4F7C, 0xAD50 },
   { 0x4F7D, 0xCC28 },
   { 0x4F89, 0xACFC },
   { 0x4F94, 0xBAA8 },
   { 0x4F97, 0xB3D9 },
   { 0x4F9A, 0xC21C },
   { 0x4F9C, 0xC8FC },
   { 0x4FB2, 0xC9C4 },
   { 0x4FBB, 0xD0C8 },
   { 0x4FC1, 0xC6B0 },
   { 0x4FC5, 0xAD6C },
   { 0x4FCC, 0xBCF4 },
   { 0x4FCF, 0xC18C },
   { 0x4FD0, 0xB9AC },
   { 0x4FD8, 0xBD80 },
   { 0x4FDB, 0xBA74 },
   { 0x4FE3, 0xC624 },
   { 0x4FF0, 0xD654 },
   { 0x4FF4, 0xCC9C },
   { 0x4FF6, 0xC219 },
   { 0x4FFE, 0xBE44 },
   { 0x5000, 0xCC3D },
   { 0x5005, 0xC26C },
   { 0x500F, 0xC219 },
   { 0x5014, 0xAD74 },
   { 0x5018, 0xB2F9 },
   { 0x5022, 0xCCA9 },
   { 0x5025, 0xACF5 },
   { 0x5029, 0xCC9C },
   { 0x502E, 0xB77C },
   { 0x5030, 0xB989 },
   { 0x5044, 0xB09C },
   { 0x504A, 0xC6B0 },
   { 0x504E, 0xC678 },
   { 0x5053, 0xC545 },
   { 0x5056, 0xCC28 },
   { 0x5058, 0xAC04 },
   { 0x5060, 0xC694 },
   { 0x5062, 0xCD08 },
   { 0x506A, 0xD54D },
   { 0x5070, 0xC124 },
   { 0x5072, 0xC2DC },
   { 0x508B, 0xAC15 },
   { 0x5092, 0xD61C },
   { 0x5094, 0xACB8 },
   { 0x5096, 0xCC3D },
   { 0x509A, 0xD6A8 },
   { 0x509B, 0xC6A9 },
   { 0x509D, 0xD0D1 },
   { 0x509E, 0xC0AC },
   { 0x50A2, 0xAC00 },
   { 0x50AE, 0xC870 },
   { 0x50B4, 0xAD6C },
   { 0x50BD, 0xC7A5 },
   { 0x50BF, 0xC5B8 },
   { 0x50C2, 0xB8E8 },
   { 0x50C4, 0xD45C },
   { 0x50DB, 0xAE30 },
   { 0x50E2, 0xCC9C },
   { 0x50E6, 0xCD94 },
   { 0x50E9, 0xD55C },
   { 0x50EC, 0xCD08 },
   { 0x50EE, 0xB3D9 },
   { 0x50F5, 0xAC15 },
   { 0x50FE, 0xC560 },
   { 0x5102, 0xB18D },
   { 0x5103, 0xCC9C },
   { 0x5107, 0xD604 },
   { 0x510B, 0xB2F4 },
   { 0x5110, 0xBE48 },
   { 0x5113, 0xB300 },
   { 0x5114, 0xC8FC },
   { 0x5115, 0xC81C },
   { 0x5117, 0xC758 },
   { 0x5118, 0xC9C4 },
   { 0x511A, 0xB9F9 },
   { 0x511B, 0xBB34 },
   { 0x511C, 0xB155 },
   { 0x5122, 0xB824 },
   { 0x5124, 0xD3EC },
   { 0x5125, 0xC721 },
   { 0x5127, 0xCC2C },
   { 0x512B, 0xD638 },
   { 0x5131, 0xB871 },
   { 0x5133, 0xCC38 },
   { 0x5135, 0xC219 },
   { 0x5139, 0xCC2C },
   { 0x513B, 0xB2F9 },
   { 0x5155, 0xC2DC },
   { 0x5157, 0xC5F0 },
   { 0x515A, 0xB2F9 },
   { 0x5189, 0xC5FC },
   { 0x518F, 0xACBD },
   { 0x5193, 0xAD6C },
   { 0x5198, 0xC720 },
   { 0x51A3, 0xCDE8 },
   { 0x51A4, 0xC6D0 },
   { 0x51B0, 0xBE59 },
   { 0x51B1, 0xD638 },
   { 0x51B2, 0xCDA9 },
   { 0x51C5, 0xACE0 },
   { 0x51CA, 0xCCAD },
   { 0x51D2, 0xC758 },
   { 0x51D4, 0xCC3D },
   { 0x51DB, 0xB984 },
   { 0x51E0, 0xADA4 },
   { 0x51E9, 0xBAA9 },
   { 0x51ED, 0xBE59 },
   { 0x51F3, 0xB4F1 },
   { 0x51F4, 0xBE59 },
   { 0x5201, 0xC870 },
   { 0x5213, 0xC644 },
   { 0x5216, 0xC6D4 },
   { 0x5226, 0xAC81 },
   { 0x5227, 0xAC81 },
   { 0x5231, 0xCC3D },
   { 0x5232, 0xADDC },
   { 0x5233, 0xACE0 },
   { 0x5244, 0xACBD },
   { 0x5249, 0xC88C },
   { 0x5255, 0xBE44 },
   { 0x5257, 0xC794 },
   { 0x525A, 0xC0AC },
   { 0x525E, 0xAE30 },
   { 0x525F, 0xCCA0 },
   { 0x5274, 0xAC1C },
   { 0x5277, 0xC0B0 },
   { 0x527A, 0xB9AC },
   { 0x5282, 0xADA4 },
   { 0x5293, 0xC758 },
   { 0x5297, 0xCC2C },
   { 0x5298, 0xB9C8 },
   { 0x52AC, 0xAD6C },
   { 0x52AD, 0xCD08 },
   { 0x52CC, 0xAD8C },
   { 0x52E0, 0xB959 },
   { 0x52E1, 0xD45C },
   { 0x52E6, 0xCD08 },
   { 0x5301, 0xBB38 },
   { 0x5302, 0xB0B4 },
   { 0x5303, 0xAC1C },
   { 0x530A, 0xAD6D },
   { 0x530C, 0xD569 },
   { 0x5327, 0xD611 },
   { 0x5331, 0xADA4 },
   { 0x5336, 0xAD6C },
   { 0x533D, 0xC5B8 },
   { 0x533E, 0xD3B8 },
   { 0x5345, 0xC0BD },
   { 0x5361, 0xC7A1 },
   { 0x536C, 0xC559 },
   { 0x536E, 0xCE58 },
   { 0x5372, 0xC18C },
   { 0x5373, 0xC989 },
   { 0x5378, 0xC0AC },
   { 0x5379, 0xD73C },
   { 0x537A, 0xADFC },
   { 0x537B, 0xAC01 },
   { 0x537E, 0xC545 },
   { 0x5396, 0xBC29 },
   { 0x539D, 0xC870 },
   { 0x53AA, 0xADFC },
   { 0x53AE, 0xC2DC },
   { 0x53B2, 0xB824 },
   { 0x53B9, 0xAD6C },
   { 0x53C5, 0xCC38 },
   { 0x53DF, 0xC218 },
   { 0x53E6, 0xB839 },
   { 0x53E8, 0xB3C4 },
   { 0x53EE, 0xC815 },
   { 0x53F4, 0xAD6C },
   { 0x53F5, 0xD30C },
   { 0x53F6, 0xD611 },
   { 0x5401, 0xC6B0 },
   { 0x540B, 0xCD0C },
   { 0x542C, 0xC740 },
   { 0x542E, 0xC804 },
   { 0x5436, 0xB20C },
   { 0x543D, 0xD6C4 },
   { 0x5440, 0xD558 },
   { 0x5446, 0xB9E4 },
   { 0x544E, 0xCC99 },
   { 0x545D, 0xC561 },
   { 0x5462, 0xB2C8 },
   { 0x5464, 0xB839 },
   { 0x5466, 0xC720 },
   { 0x546B, 0xCCA9 },
   { 0x5470, 0xC790 },
   { 0x5476, 0xB178 },
   { 0x547F, 0xAC70 },
   { 0x5484, 0xB3CC },
   { 0x5487, 0xD544 },
   { 0x548B, 0xC0AC },
   { 0x548D, 0xD574 },
   { 0x548F, 0xC601 },
   { 0x5496, 0xAC00 },
   { 0x54A0, 0xC9D1 },
   { 0x54A2, 0xC545 },
   { 0x54A5, 0xD76C },
   { 0x54AF, 0xAC01 },
   { 0x54BB, 0xD734 },
   { 0x54BC, 0xAD18 },
   { 0x54BF, 0xC774 },
   { 0x54C2, 0xC2E0 },
   { 0x54C3, 0xB3D9 },
   { 0x54C6, 0xCE58 },
   { 0x54C7, 0xC640 },
   { 0x54E6, 0xC544 },
   { 0x54E9, 0xB9AC },
   { 0x54F1, 0xBC1C },
   { 0x54FD, 0xACBD },
   { 0x54FF, 0xAC00 },
   { 0x5509, 0xC560 },
   { 0x550F, 0xD76C },
   { 0x5514, 0xC624 },
   { 0x552B, 0xAE08 },
   { 0x552E, 0xC218 },
   { 0x5533, 0xB824 },
   { 0x553C, 0xC0BD },
   { 0x5540, 0xC560 },
   { 0x5542, 0xB204 },
   { 0x5557, 0xB2F4 },
   { 0x555C, 0xCCA0 },
   { 0x557B, 0xC2DC },
   { 0x557D, 0xC554 },
   { 0x557E, 0xCD94 },
   { 0x5581, 0xC639 },
   { 0x5583, 0xB0A8 },
   { 0x558B, 0xCCA9 },
   { 0x5591, 0xC74C },
   { 0x5593, 0xC694 },
   { 0x5594, 0xC545 },
   { 0x559E, 0xC989 },
   { 0x559F, 0xC704 },
   { 0x55A3, 0xD6C4 },
   { 0x55A4, 0xD669 },
   { 0x55A8, 0xB7C9 },
   { 0x55B0, 0xC2DD },
   { 0x55C9, 0xC18C },
   { 0x55D1, 0xD569 },
   { 0x55DB, 0xACB8 },
   { 0x55E0, 0xB77D },
   { 0x55E2, 0xC62C },
   { 0x55F7, 0xC624 },
   { 0x55FF, 0xD0D0 },
   { 0x5604, 0xAD50 },
   { 0x5608, 0xC870 },
   { 0x560C, 0xD45C },
   { 0x560D, 0xB8E8 },
   { 0x560E, 0xC54C },
   { 0x5610, 0xAD50 },
   { 0x5612, 0xD61C },
   { 0x5616, 0xCC45 },
   { 0x5629, 0xD654 },
   { 0x562C, 0xCD5C },
   { 0x5637, 0xD638 },
   { 0x5638, 0xBB34 },
   { 0x5639, 0xB8CC },
   { 0x563B, 0xD76C },
   { 0x563F, 0xBB35 },
   { 0x5641, 0xC624 },
   { 0x5642, 0xC900 },
   { 0x5649, 0xB2F4 },
   { 0x564B, 0xD1A4 },
   { 0x564D, 0xCD08 },
   { 0x564E, 0xC5F4 },
   { 0x564F, 0xD761 },
   { 0x5664, 0xAE08 },
   { 0x5665, 0xB18D },
   { 0x5669, 0xC545 },
   { 0x566A, 0xC870 },
   { 0x566C, 0xC11C },
   { 0x566D, 0xAD50 },
   { 0x566F, 0xC560 },
   { 0x5672, 0xCF8C },
   { 0x5676, 0xAC08 },
   { 0x5678, 0xD1A4 },
   { 0x567A, 0xC2E0 },
   { 0x5680, 0xB155 },
   { 0x5684, 0xD68D },
   { 0x5687, 0xD558 },
   { 0x568F, 0xCCB4 },
   { 0x5699, 0xAD50 },
   { 0x569A, 0xC740 },
   { 0x56B3, 0xACE1 },
   { 0x56B6, 0xC575 },
   { 0x56C0, 0xC804 },
   { 0x56C1, 0xC12D },
   { 0x56C2, 0xD6A8 },
   { 0x56C3, 0xC7A1 },
   { 0x56C8, 0xC608 },
   { 0x56C9, 0xB77C },
   { 0x56DF, 0xC2E0 },
   { 0x56E6, 0xC5F0 },
   { 0x56EB, 0xD640 },
   { 0x56EE, 0xC640 },
   { 0x56F7, 0xADE0 },
   { 0x56FF, 0xC720 },
   { 0x5701, 0xC740 },
   { 0x5702, 0xD63C },
   { 0x5709, 0xC5B4 },
   { 0x570A, 0xCCAD },
   { 0x571C, 0xC6D0 },
   { 0x5725, 0xB85D },
   { 0x572C, 0xC624 },
   { 0x572E, 0xBE44 },
   { 0x573E, 0xAE09 },
   { 0x574C, 0xBD84 },
   { 0x574F, 0xBC30 },
   { 0x5767, 0xCC99 },
   { 0x5768, 0xC774 },
   { 0x5769, 0xAC10 },
   { 0x576F, 0xBC30 },
   { 0x5771, 0xC559 },
   { 0x5773, 0xC694 },
   { 0x5777, 0xAC00 },
   { 0x5778, 0xAD6C },
   { 0x577B, 0xC9C0 },
   { 0x578C, 0xB3D9 },
   { 0x5795, 0xD6C4 },
   { 0x579E, 0xD0C0 },
   { 0x57A4, 0xC9C8 },
   { 0x57B8, 0xC644 },
   { 0x57BD, 0xC740 },
   { 0x57C6, 0xAC01 },
   { 0x57C9, 0xD611 },
   { 0x57CF, 0xC5F0 },
   { 0x57D1, 0xCCA0 },
   { 0x57D2, 0xB784 },
   { 0x57DC, 0xC57C },
   { 0x57E4, 0xBE44 },
   { 0x57ED, 0xD0DC },
   { 0x57F3, 0xAC10 },
   { 0x57FB, 0xC900 },
   { 0x57FD, 0xC18C },
   { 0x5803, 0xACE4 },
   { 0x580B, 0xBD95 },
   { 0x5817, 0xB3CC },
   { 0x5819, 0xC778 },
   { 0x581D, 0xACFC },
   { 0x5820, 0xD6C4 },
   { 0x5823, 0xC6B0 },
   { 0x5826, 0xACC4 },
   { 0x5840, 0xBCD1 },
   { 0x5849, 0xCC99 },
   { 0x584C, 0xD0D1 },
   { 0x584D, 0xC2B9 },
   { 0x5850, 0xC18C },
   { 0x5852, 0xC2DC },
   { 0x5859, 0xACE0 },
   { 0x5869, 0xC5FC },
   { 0x587D, 0xC0C1 },
   { 0x5880, 0xC9C0 },
   { 0x5881, 0xB9CC },
   { 0x588A, 0xC810 },
   { 0x588D, 0xAE30 },
   { 0x5890, 0xADFC },
   { 0x589D, 0xC694 },
   { 0x58A1, 0xC120 },
   { 0x58A3, 0xBCF5 },
   { 0x58AB, 0xC900 },
   { 0x58B0, 0xB2F4 },
   { 0x58B1, 0xB4F1 },
   { 0x58C3, 0xAC15 },
   { 0x58D4, 0xB3C4 },
   { 0x58DA, 0xB85C },
   { 0x58DC, 0xB2F4 },
   { 0x58DD, 0xC720 },
   { 0x5906, 0xBD09 },
   { 0x5908, 0xC7AC },
   { 0x5910, 0xD615 },
   { 0x5924, 0xC778 },
   { 0x5925, 0xACFC },
   { 0x592C, 0xCF8C },
   { 0x592F, 0xD56D },
   { 0x5938, 0xACFC },
   { 0x5953, 0xCC28 },
   { 0x5958, 0xC7A5 },
   { 0x5969, 0xB834 },
   { 0x5976, 0xB0B4 },
   { 0x5991, 0xD30C },
   { 0x5992, 0xD22C },
   { 0x599D, 0xC7A5 },
   { 0x59A3, 0xBE44 },
   { 0x59A7, 0xC644 },
   { 0x59AF, 0xCD95 },
   { 0x59B2, 0xB2EC },
   { 0x59C8, 0xB839 },
   { 0x59CD, 0xC0B0 },
   { 0x59D2, 0xC0AC },
   { 0x59DE, 0xAE38 },
   { 0x59E3, 0xAD50 },
   { 0x59E4, 0xAD6C },
   { 0x59E5, 0xBAA8 },
   { 0x59FA, 0xC2E0 },
   { 0x5A09, 0xBE59 },
   { 0x5A13, 0xBBF8 },
   { 0x5A19, 0xD615 },
   { 0x5A23, 0xC81C },
   { 0x5A27, 0xD0DC },
   { 0x5A2D, 0xC560 },
   { 0x5A35, 0xCD94 },
   { 0x5A3F, 0xC544 },
   { 0x5A40, 0xC544 },
   { 0x5A4C, 0xC219 },
   { 0x5A50, 0xC640 },
   { 0x5A63, 0xC778 },
   { 0x5A67, 0xC815 },
   { 0x5A6A, 0xB78C },
   { 0x5A72, 0xD654 },
   { 0x5A77, 0xC815 },
   { 0x5A7F, 0xC11C },
   { 0x5A84, 0xBBF8 },
   { 0x5A8D, 0xBD80 },
   { 0x5A93, 0xD669 },
   { 0x5A95, 0xC554 },
   { 0x5A9F, 0xC124 },
   { 0x5AA2, 0xBAA8 },
   { 0x5AA7, 0xC65C },
   { 0x5AAA, 0xC624 },
   { 0x5AB3, 0xC2DD },
   { 0x5AB5, 0xC789 },
   { 0x5ABA, 0xBBF8 },
   { 0x5ABB, 0xBC18 },
   { 0x5ABC, 0xC628 },
   { 0x5ABD, 0xB9C8 },
   { 0x5ABE, 0xAD6C },
   { 0x5ABF, 0xAD34 },
   { 0x5AC8, 0xC575 },
   { 0x5ACB, 0xB1E8 },
   { 0x5AD6, 0xD45C },
   { 0x5AD7, 0xAD6C },
   { 0x5AD9, 0xC120 },
   { 0x5ADA, 0xB9CC },
   { 0x5ADB, 0xC608 },
   { 0x5AE0, 0xB9AC },
   { 0x5AE2, 0xADDC },
   { 0x5AE3, 0xC5B8 },
   { 0x5AE5, 0xC804 },
   { 0x5AEB, 0xBAA8 },
   { 0x5AED, 0xD638 },
   { 0x5AEE, 0xD638 },
   { 0x5AEF, 0xC624 },
   { 0x5AF6, 0xCD08 },
   { 0x5AFA, 0xD55C },
   { 0x5AFB, 0xD55C },
   { 0x5AFD, 0xB8CC },
   { 0x5B00, 0xADDC },
   { 0x5B08, 0xC694 },
   { 0x5B19, 0xC7A5 },
   { 0x5B1B, 0xD604 },
   { 0x5B25, 0xC870 },
   { 0x5B28, 0xC790 },
   { 0x5B2D, 0xB0B4 },
   { 0x5B30, 0xC601 },
   { 0x5B32, 0xB1E8 },
   { 0x5B34, 0xC601 },
   { 0x5B3E, 0xB780 },
   { 0x5B3F, 0xC5F0 },
   { 0x5B45, 0xC12C },
   { 0x5B4C, 0xB828 },
   { 0x5B56, 0xC790 },
   { 0x5B5B, 0xD328 },
   { 0x5B61, 0xD0DC },
   { 0x5B65, 0xB178 },
   { 0x5B76, 0xC790 },
   { 0x5B7F, 0xC0B0 },
   { 0x5B81, 0xC800 },
   { 0x5B82, 0xC6A9 },
   { 0x5B8A, 0xAC00 },
   { 0x5BD6, 0xCE68 },
   { 0x5BD8, 0xCE58 },
   { 0x5BED, 0xD61C },
   { 0x5BF0, 0xD658 },
   { 0x5C05, 0xADF9 },
   { 0x5C0C, 0xC8FC },
   { 0x5C14, 0xC774 },
   { 0x5C1F, 0xC120 },
   { 0x5C20, 0xC120 },
   { 0x5C2B, 0xC655 },
   { 0x5C41, 0xBE44 },
   { 0x5C47, 0xC804 },
   { 0x5C50, 0xADF9 },
   { 0x5C68, 0xAD6C },
   { 0x5C73, 0xC120 },
   { 0x5C7A, 0xAE30 },
   { 0x5C88, 0xD558 },
   { 0x5C8A, 0xC808 },
   { 0x5C8C, 0xAE09 },
   { 0x5C8F, 0xC644 },
   { 0x5C92, 0xACB8 },
   { 0x5C94, 0xCC28 },
   { 0x5C9D, 0xC791 },
   { 0x5CA3, 0xAD6C },
   { 0x5CA5, 0xD30C },
   { 0x5CA6, 0xB9BD },
   { 0x5CA7, 0xCD08 },
   { 0x5CA8, 0xC800 },
   { 0x5CAA, 0xBD88 },
   { 0x5CAD, 0xB839 },
   { 0x5CD2, 0xB3D9 },
   { 0x5CE9, 0xC544 },
   { 0x5CED, 0xCD08 },
   { 0x5CF1, 0xB178 },
   { 0x5D06, 0xACF5 },
   { 0x5D10, 0xACE4 },
   { 0x5D15, 0xC560 },
   { 0x5D1B, 0xAD74 },
   { 0x5D1F, 0xC74C },
   { 0x5D22, 0xC7C1 },
   { 0x5D24, 0xD6A8 },
   { 0x5D26, 0xC5C4 },
   { 0x5D34, 0xC678 },
   { 0x5D3D, 0xC7AC },
   { 0x5D41, 0xAC10 },
   { 0x5D42, 0xB960 },
   { 0x5D4E, 0xC6B0 },
   { 0x5D53, 0xC554 },
   { 0x5D54, 0xC678 },
   { 0x5D71, 0xC6A9 },
   { 0x5D81, 0xB8E8 },
   { 0x5D82, 0xC7A5 },
   { 0x5D84, 0xCC38 },
   { 0x5D92, 0xC99D },
   { 0x5D94, 0xAE08 },
   { 0x5D95, 0xCD08 },
   { 0x5D99, 0xB9B0 },
   { 0x5DA7, 0xC5ED },
   { 0x5DAB, 0xC5C5 },
   { 0x5DAE, 0xD5D8 },
   { 0x5DB0, 0xD574 },
   { 0x5DB7, 0xC758 },
   { 0x5DC9, 0xCC38 },
   { 0x5DCB, 0xADDC },
   { 0x5DD1, 0xCC2C },
   { 0x5DD3, 0xC804 },
   { 0x5DDA, 0xD5CC },
   { 0x5DF5, 0xCE58 },
   { 0x5DF9, 0xADFC },
   { 0x5E09, 0xBD84 },
   { 0x5E15, 0xB9D0 },
   { 0x5E1A, 0xCD94 },
   { 0x5E28, 0xC138 },
   { 0x5E37, 0xC720 },
   { 0x5E43, 0xC704 },
   { 0x5E4E, 0xBA71 },
   { 0x5E54, 0xB9CC },
   { 0x5E58, 0xCC45 },
   { 0x5E5E, 0xBCF5 },
   { 0x5E68, 0xCCA8 },
   { 0x5E6A, 0xBABD },
   { 0x5E6B, 0xBC29 },
   { 0x5E6C, 0xC8FC },
   { 0x5E70, 0xD5CC },
   { 0x5E71, 0xB780 },
   { 0x5E7A, 0xC694 },
   { 0x5E7F, 0xC5C4 },
   { 0x5E8B, 0xAE30 },
   { 0x5E96, 0xD3EC },
   { 0x5EB3, 0xBE44 },
   { 0x5EBD, 0xC6B0 },
   { 0x5EC1, 0xCE21 },
   { 0x5ECB, 0xC218 },
   { 0x5ED1, 0xADFC },
   { 0x5ED5, 0xC74C },
   { 0x5EDD, 0xC2DC },
   { 0x5EDE, 0xD760 },
   { 0x5EE1, 0xBB34 },
   { 0x5EE5, 0xAD34 },
   { 0x5EE7, 0xC7A5 },
   { 0x5EE8, 0xD574 },
   { 0x5EE9, 0xB984 },
   { 0x5EF1, 0xC639 },
   { 0x5EFF, 0xC785 },
   { 0x5F03, 0xAE30 },
   { 0x5F07, 0xAC10 },
   { 0x5F08, 0xD601 },
   { 0x5F0B, 0xC775 },
   { 0x5F22, 0xB3C4 },
   { 0x5F25, 0xBBF8 },
   { 0x5F2D, 0xBBF8 },
   { 0x5F34, 0xB3C8 },
   { 0x5F40, 0xAD6C },
   { 0x5F46, 0xBCC4 },
   { 0x5F54, 0xB85D },
   { 0x5F58, 0xCCB4 },
   { 0x5F5D, 0xC774 },
   { 0x5F64, 0xB3D9 },
   { 0x5F82, 0xC870 },
   { 0x5F88, 0xD754 },
   { 0x5F89, 0xC591 },
   { 0x5F9C, 0xC0C1 },
   { 0x5FA3, 0xCC28 },
   { 0x5FA7, 0xD3B8 },
   { 0x5FAC, 0xBC29 },
   { 0x5FAD, 0xC694 },
   { 0x5FAF, 0xD61C },
   { 0x5FBC, 0xC694 },
   { 0x5FC9, 0xB3C4 },
   { 0x5FD0, 0xD0D0 },
   { 0x5FD2, 0xD2B9 },
   { 0x5FDD, 0xCCA8 },
   { 0x5FDE, 0xBBFC },
   { 0x5FDF, 0xBBFC },
   { 0x5FE1, 0xCDA9 },
   { 0x5FE4, 0xC624 },
   { 0x5FE8, 0xC644 },
   { 0x5FED, 0xBCC0 },
   { 0x5FEE, 0xAE30 },
   { 0x5FF1, 0xCE68 },
   { 0x5FF8, 0xB274 },
   { 0x5FFB, 0xD754 },
   { 0x5FFC, 0xAC15 },
   { 0x600A, 0xCD08 },
   { 0x600D, 0xC791 },
   { 0x6014, 0xC815 },
   { 0x6015, 0xD30C },
   { 0x6017, 0xCCA9 },
   { 0x6019, 0xD638 },
   { 0x601B, 0xB2EC },
   { 0x6026, 0xD3C9 },
   { 0x6029, 0xB2C8 },
   { 0x6033, 0xD669 },
   { 0x6046, 0xD56D },
   { 0x6047, 0xAD11 },
   { 0x6048, 0xBAA8 },
   { 0x604A, 0xD611 },
   { 0x605A, 0xC5D0 },
   { 0x605F, 0xD749 },
   { 0x6060, 0xAD34 },
   { 0x606B, 0xD1B5 },
   { 0x6081, 0xC5F0 },
   { 0x6083, 0xACE4 },
   { 0x6084, 0xCD08 },
   { 0x608B, 0xB9B0 },
   { 0x608F, 0xD611 },
   { 0x6092, 0xC74D },
   { 0x6095, 0xD76C },
   { 0x6097, 0xBB38 },
   { 0x60A2, 0xB7C9 },
   { 0x60B1, 0xBE44 },
   { 0x60B5, 0xCC3D },
   { 0x60BB, 0xD589 },
   { 0x60BE, 0xACF5 },
   { 0x60C4, 0xB141 },
   { 0x60C6, 0xCD94 },
   { 0x60C9, 0xCCA8 },
   { 0x60CB, 0xC644 },
   { 0x60CF, 0xB78C },
   { 0x60D3, 0xAD8C },
   { 0x60D5, 0xCC99 },
   { 0x60D8, 0xB9DD },
   { 0x60D9, 0xCCA0 },
   { 0x60DB, 0xD63C },
   { 0x60DD, 0xCC3D },
   { 0x60E2, 0xC1C4 },
   { 0x60F2, 0xC6B4 },
   { 0x60F4, 0xCDCC },
   { 0x60F7, 0xC900 },
   { 0x60F8, 0xACBD },
   { 0x60FC, 0xD3B8 },
   { 0x6100, 0xCD08 },
   { 0x6103, 0xC120 },
   { 0x6114, 0xC74C },
   { 0x611C, 0xD611 },
   { 0x612C, 0xC18C },
   { 0x612D, 0xAE30 },
   { 0x6146, 0xB3C4 },
   { 0x614D, 0xC628 },
   { 0x6152, 0xC885 },
   { 0x615A, 0xCC38 },
   { 0x6160, 0xC624 },
   { 0x6171, 0xB2E8 },
   { 0x6173, 0xAC04 },
   { 0x6174, 0xC2B5 },
   { 0x6175, 0xC6A9 },
   { 0x617A, 0xB8E8 },
   { 0x6183, 0xC6A9 },
   { 0x618D, 0xAD50 },
   { 0x6192, 0xADA4 },
   { 0x6196, 0xC740 },
   { 0x61A8, 0xAC10 },
   { 0x61AF, 0xCC38 },
   { 0x61B8, 0xC12C },
   { 0x61BB, 0xD0C4 },
   { 0x61BC, 0xACBD },
   { 0x61C6, 0xC870 },
   { 0x61CC, 0xC5ED },
   { 0x61D5, 0xC5FC },
   { 0x61D7, 0xD558 },
   { 0x61DE, 0xBABD },
   { 0x61DF, 0xB300 },
   { 0x61E3, 0xBB38 },
   { 0x61FD, 0xD658 },
   { 0x61FE, 0xC12D },
   { 0x6214, 0xC794 },
   { 0x6215, 0xC7A5 },
   { 0x621E, 0xC54C },
   { 0x6222, 0xC9D1 },
   { 0x6227, 0xCC3D },
   { 0x6229, 0xC804 },
   { 0x6232, 0xD76C },
   { 0x6233, 0xCC29 },
   { 0x6235, 0xAD6C },
   { 0x6239, 0xC561 },
   { 0x6243, 0xACBD },
   { 0x624A, 0xC5FC },
   { 0x624E, 0xCC30 },
   { 0x6251, 0xBCF5 },
   { 0x6252, 0xBC30 },
   { 0x6257, 0xC7AC },
   { 0x625B, 0xAC15 },
   { 0x6263, 0xAD6C },
   { 0x6268, 0xC778 },
   { 0x6273, 0xBC18 },
   { 0x627A, 0xC9C0 },
   { 0x627E, 0xC870 },
   { 0x6283, 0xBCC0 },
   { 0x6286, 0xBB38 },
   { 0x6294, 0xBD80 },
   { 0x6296, 0xB450 },
   { 0x62A8, 0xD3C9 },
   { 0x62AC, 0xD0DC },
   { 0x62C4, 0xC8FC },
   { 0x62C5, 0xB2E8 },
   { 0x62C6, 0xD0C1 },
   { 0x62CA, 0xBD80 },
   { 0x62D1, 0xACB8 },
   { 0x62D5, 0xD0C0 },
   { 0x62F5, 0xC874 },
   { 0x62F6, 0xCC30 },
   { 0x62FD, 0xC608 },
   { 0x6302, 0xAD18 },
   { 0x630C, 0xACA9 },
   { 0x6310, 0xB098 },
   { 0x6312, 0xB82C },
   { 0x6328, 0xC560 },
   { 0x632A, 0xB098 },
   { 0x6339, 0xC74D },
   { 0x6342, 0xC624 },
   { 0x6343, 0xAD70 },
   { 0x6344, 0xAD6C },
   { 0x6346, 0xACE4 },
   { 0x634D, 0xD55C },
   { 0x634E, 0xC18C },
   { 0x6357, 0xCC99 },
   { 0x6369, 0xB82C },
   { 0x636B, 0xBB38 },
   { 0x6371, 0xC560 },
   { 0x6376, 0xCD94 },
   { 0x6380, 0xD754 },
   { 0x6384, 0xB95C },
   { 0x6387, 0xCCA0 },
   { 0x638A, 0xBD80 },
   { 0x638E, 0xAE30 },
   { 0x638F, 0xB3C4 },
   { 0x639C, 0xC608 },
   { 0x639F, 0xC815 },
   { 0x63AC, 0xAD6D },
   { 0x63BE, 0xC5F0 },
   { 0x63C3, 0xC804 },
   { 0x63C9, 0xC720 },
   { 0x63DF, 0xC11C },
   { 0x63E0, 0xC54C },
   { 0x63E3, 0xCDCC },
   { 0x63E9, 0xAC1C },
   { 0x63EB, 0xCD94 },
   { 0x63F2, 0xC124 },
   { 0x63F5, 0xAC74 },
   { 0x6406, 0xAD6C },
   { 0x6409, 0xAC01 },
   { 0x6412, 0xBC29 },
   { 0x6424, 0xC561 },
   { 0x6425, 0xCD94 },
   { 0x6428, 0xD0D1 },
   { 0x642A, 0xB2F9 },
   { 0x642B, 0xBC18 },
   { 0x642F, 0xB3C4 },
   { 0x6430, 0xACE8 },
   { 0x6436, 0xCC3D },
   { 0x6467, 0xCD5C },
   { 0x646D, 0xCC99 },
   { 0x6473, 0xAD6C },
   { 0x647B, 0xC12C },
   { 0x647D, 0xD45C },
   { 0x6485, 0xADA4 },
   { 0x6490, 0xD0F1 },
   { 0x6495, 0xC11C },
   { 0x6499, 0xC900 },
   { 0x649D, 0xD718 },
   { 0x649F, 0xAD50 },
   { 0x64A9, 0xB8CC },
   { 0x64BC, 0xAC10 },
   { 0x64BE, 0xACFC },
   { 0x64BF, 0xAC80 },
   { 0x64C9, 0xCC29 },
   { 0x64D0, 0xD658 },
   { 0x64D5, 0xD734 },
   { 0x64D7, 0xBCBD },
   { 0x64E0, 0xC81C },
   { 0x64E3, 0xB3C4 },
   { 0x64ED, 0xD654 },
   { 0x64EF, 0xBE48 },
   { 0x64F1, 0xAC01 },
   { 0x6502, 0xB8B0 },
   { 0x6507, 0xD5CC },
   { 0x650A, 0xB825 },
   { 0x650F, 0xB871 },
   { 0x6514, 0xB780 },
   { 0x6519, 0xCC38 },
   { 0x6522, 0xCC2C },
   { 0x6524, 0xD0C4 },
   { 0x6532, 0xAE30 },
   { 0x653D, 0xBC18 },
   { 0x6549, 0xBBF8 },
   { 0x6554, 0xC5B4 },
   { 0x6555, 0xCE59 },
   { 0x655D, 0xD3D0 },
   { 0x6581, 0xB450 },
   { 0x659D, 0xAC00 },
   { 0x65B1, 0xC791 },
   { 0x65B2, 0xCC29 },
   { 0x65BF, 0xC720 },
   { 0x65C2, 0xAE30 },
   { 0x65C3, 0xC804 },
   { 0x65C4, 0xBAA8 },
   { 0x65C6, 0xD328 },
   { 0x65CA, 0xBC29 },
   { 0x65F2, 0xB300 },
   { 0x6600, 0xC724 },
   { 0x6603, 0xCE21 },
   { 0x661B, 0xAC70 },
   { 0x6621, 0xD604 },
   { 0x6624, 0xB839 },
   { 0x662B, 0xAD6C },
   { 0x6635, 0xB2C9 },
   { 0x6637, 0xC628 },
   { 0x6648, 0xAD50 },
   { 0x664C, 0xC0C1 },
   { 0x664E, 0xD64D },
   { 0x6661, 0xD3EC },
   { 0x6662, 0xC808 },
   { 0x666C, 0xC218 },
   { 0x6670, 0xC11D },
   { 0x667B, 0xC554 },
   { 0x668B, 0xBBFC },
   { 0x668C, 0xADDC },
   { 0x669E, 0xAD50 },
   { 0x66A3, 0xAE30 },
   { 0x66AC, 0xC124 },
   { 0x66B1, 0xB2C9 },
   { 0x66B5, 0xD55C },
   { 0x66B8, 0xB8CC },
   { 0x66BF, 0xD76C },
   { 0x66C0, 0xC5D0 },
   { 0x66C1, 0xAE30 },
   { 0x66C5, 0xC5FD },
   { 0x66D3, 0xD3EC },
   { 0x66DA, 0xBABD },
   { 0x66DB, 0xD6C8 },
   { 0x66E3, 0xC5F0 },
   { 0x66E8, 0xB871 },
   { 0x66E9, 0xB0AD },
   { 0x66EA, 0xB77C },
   { 0x66EC, 0xC1C4 },
   { 0x66EE, 0xC5C4 },
   { 0x66EF, 0xCD09 },
   { 0x6705, 0xAC78 },
   { 0x670C, 0xBC18 },
   { 0x6723, 0xB3D9 },
   { 0x6733, 0xD314 },
   { 0x6745, 0xC6B0 },
   { 0x6760, 0xAC15 },
   { 0x676A, 0xCD08 },
   { 0x676C, 0xC6D0 },
   { 0x6772, 0xACE0 },
   { 0x677C, 0xC800 },
   { 0x678C, 0xBD84 },
   { 0x6798, 0xC608 },
   { 0x6799, 0xC640 },
   { 0x67B2, 0xC2DC },
   { 0x67C1, 0xD0C0 },
   { 0x67C5, 0xB2C8 },
   { 0x67CA, 0xC885 },
   { 0x67D7, 0xC1A1 },
   { 0x67D8, 0xC790 },
   { 0x67D9, 0xD569 },
   { 0x67DE, 0xC791 },
   { 0x67DF, 0xB0A8 },
   { 0x67E2, 0xC800 },
   { 0x67F9, 0xC2DC },
   { 0x6803, 0xD68C },
   { 0x681D, 0xAD04 },
   { 0x681E, 0xAC04 },
   { 0x682E, 0xC774 },
   { 0x6831, 0xACF5 },
   { 0x6832, 0xACE0 },
   { 0x6834, 0xC804 },
   { 0x683B, 0xC2DD },
   { 0x6844, 0xAD11 },
   { 0x6846, 0xAD11 },
   { 0x6849, 0xC548 },
   { 0x686F, 0xC815 },
   { 0x6874, 0xBD80 },
   { 0x6877, 0xAC01 },
   { 0x687E, 0xAD70 },
   { 0x6883, 0xC815 },
   { 0x6886, 0xBC29 },
   { 0x689B, 0xB098 },
   { 0x68A0, 0xB824 },
   { 0x68A3, 0xC2EC },
   { 0x68CA, 0xAE30 },
   { 0x68CC, 0xCC44 },
   { 0x68D0, 0xBE44 },
   { 0x68D6, 0xC815 },
   { 0x68E3, 0xCCB4 },
   { 0x68EC, 0xAD8C },
   { 0x68FB, 0xBD84 },
   { 0x68FC, 0xBD84 },
   { 0x6901, 0xACFD },
   { 0x6904, 0xC811 },
   { 0x690B, 0xB7C9 },
   { 0x6911, 0xBE44 },
   { 0x6919, 0xCC3D },
   { 0x6934, 0xB2E8 },
   { 0x6936, 0xC885 },
   { 0x6939, 0xCE68 },
   { 0x6942, 0xC0AC },
   { 0x694F, 0xADDC },
   { 0x695D, 0xB828 },
   { 0x6965, 0xC6D0 },
   { 0x696A, 0xC811 },
   { 0x696C, 0xAC08 },
   { 0x6973, 0xB9E4 },
   { 0x698E, 0xAC00 },
   { 0x6991, 0xBD80 },
   { 0x6994, 0xB791 },
   { 0x6998, 0xAD6C },
   { 0x699F, 0xC7AC },
   { 0x69A4, 0xAC78 },
   { 0x69A6, 0xAC04 },
   { 0x69AD, 0xC0AC },
   { 0x69B0, 0xC9C0 },
   { 0x69B1, 0xCD5C },
   { 0x69B7, 0xAD50 },
   { 0x69BC, 0xD569 },
   { 0x69BE, 0xACE8 },
   { 0x69C0, 0xACE0 },
   { 0x69C7, 0xC804 },
   { 0x69CA, 0xC0AD },
   { 0x69CE, 0xCC28 },
   { 0x69D3, 0xACF5 },
   { 0x69E5, 0xD61C },
   { 0x69E6, 0xC6A9 },
   { 0x69E7, 0xCC38 },
   { 0x69E9, 0xAC1C },
   { 0x69ED, 0xC0C9 },
   { 0x69F2, 0xACE1 },
   { 0x69F9, 0xACE0 },
   { 0x6A00, 0xC801 },
   { 0x6A05, 0xC885 },
   { 0x6A0B, 0xD1B5 },
   { 0x6A12, 0xBC00 },
   { 0x6A14, 0xC18C },
   { 0x6A1B, 0xADDC },
   { 0x6A2B, 0xACAC },
   { 0x6A3B, 0xADA4 },
   { 0x6A43, 0xBC8C },
   { 0x6A47, 0xCDE8 },
   { 0x6A4A, 0xB958 },
   { 0x6A50, 0xD0C1 },
   { 0x6A5A, 0xC219 },
   { 0x6A62, 0xD0C0 },
   { 0x6A66, 0xB3D9 },
   { 0x6A75, 0xC0B0 },
   { 0x6A7F, 0xAC15 },
   { 0x6A90, 0xCCA8 },
   { 0x6A94, 0xB2F9 },
   { 0x6A9D, 0xC999 },
   { 0x6A9F, 0xAC00 },
   { 0x6AA0, 0xACBD },
   { 0x6AAE, 0xB3C4 },
   { 0x6AB6, 0xC5FC },
   { 0x6ABC, 0xC740 },
   { 0x6ABF, 0xC5FC },
   { 0x6ADC, 0xACE0 },
   { 0x6ADD, 0xB3C5 },
   { 0x6ADE, 0xC5F0 },
   { 0x6ADF, 0xB825 },
   { 0x6AEA, 0xB825 },
   { 0x6AEC, 0xCE5C },
   { 0x6AFC, 0xCCA8 },
   { 0x6B02, 0xBC15 },
   { 0x6B03, 0xCC38 },
   { 0x6B11, 0xCC2C },
   { 0x6B1E, 0xB839 },
   { 0x6B2C, 0xD574 },
   { 0x6B37, 0xD76C },
   { 0x6B38, 0xC560 },
   { 0x6B39, 0xC758 },
   { 0x6B3B, 0xD6CC },
   { 0x6B3F, 0xAC10 },
   { 0x6B43, 0xC0BD },
   { 0x6B49, 0xACB8 },
   { 0x6B54, 0xD5C8 },
   { 0x6B59, 0xD761 },
   { 0x6B5A, 0xC120 },
   { 0x6B5B, 0xAC10 },
   { 0x6B60, 0xCCA0 },
   { 0x6B67, 0xAE30 },
   { 0x6B80, 0xC694 },
   { 0x6B82, 0xC870 },
   { 0x6B8D, 0xD45C },
   { 0x6B91, 0xAE0D },
   { 0x6BA2, 0xCCB4 },
   { 0x6BA4, 0xC0C1 },
   { 0x6BAB, 0xD0C4 },
   { 0x6BAD, 0xAC15 },
   { 0x6BB3, 0xC218 },
   { 0x6BBD, 0xD6A8 },
   { 0x6BC4, 0xACA9 },
   { 0x6BDA, 0xCC38 },
   { 0x6BEF, 0xB2F4 },
   { 0x6BF3, 0xCDE8 },
   { 0x6BFF, 0xC0B0 },
   { 0x6C05, 0xCC3D },
   { 0x6C10, 0xC800 },
   { 0x6C1B, 0xBD84 },
   { 0x6C24, 0xC778 },
   { 0x6C33, 0xC628 },
   { 0x6C3F, 0xADA4 },
   { 0x6C43, 0xD314 },
   { 0x6C4B, 0xC791 },
   { 0x6C4F, 0xB300 },
   { 0x6C52, 0xB9DD },
   { 0x6C54, 0xD758 },
   { 0x6C59, 0xC624 },
   { 0x6C5B, 0xC2E0 },
   { 0x6C5C, 0xC0AC },
   { 0x6C74, 0xD310 },
   { 0x6C84, 0xC6B4 },
   { 0x6C89, 0xCE68 },
   { 0x6C8D, 0xD638 },
   { 0x6C98, 0xBE44 },
   { 0x6CAC, 0xB9E4 },
   { 0x6CB0, 0xD0C1 },
   { 0x6CB1, 0xD0C0 },
   { 0x6CC5, 0xC218 },
   { 0x6CC6, 0xC77C },
   { 0x6CD0, 0xB975 },
   { 0x6CD1, 0xC720 },
   { 0x6CD4, 0xAC10 },
   { 0x6CD9, 0xD3C9 },
   { 0x6CDA, 0xC790 },
   { 0x6CDC, 0xC9C0 },
   { 0x6CDD, 0xC18C },
   { 0x6CE0, 0xB839 },
   { 0x6CF1, 0xC559 },
   { 0x6D04, 0xD68C },
   { 0x6D07, 0xC778 },
   { 0x6D0A, 0xCC9C },
   { 0x6D12, 0xC138 },
   { 0x6D1F, 0xC774 },
   { 0x6D2B, 0xD601 },
   { 0x6D2C, 0xC18D },
   { 0x6D2E, 0xB3C4 },
   { 0x6D3A, 0xBA85 },
   { 0x6D3C, 0xC640 },
   { 0x6D61, 0xBC1C },
   { 0x6D64, 0xAD49 },
   { 0x6D65, 0xC74D },
   { 0x6D67, 0xC601 },
   { 0x6D82, 0xB3C4 },
   { 0x6D94, 0xC7A0 },
   { 0x6D96, 0xB9AC },
   { 0x6DAA, 0xBD80 },
   { 0x6DAB, 0xAD00 },
   { 0x6DB4, 0xC644 },
   { 0x6DB7, 0xB3D9 },
   { 0x6DB8, 0xD6C4 },
   { 0x6DBC, 0xB7C9 },
   { 0x6DBF, 0xD0C1 },
   { 0x6DC8, 0xAD74 },
   { 0x6DD2, 0xCC98 },
   { 0x6DD6, 0xB1E8 },
   { 0x6DDD, 0xBE44 },
   { 0x6DE0, 0xBE44 },
   { 0x6DE2, 0xC5ED },
   { 0x6DE4, 0xC5B4 },
   { 0x6DE5, 0xB85D },
   { 0x6DE6, 0xAC10 },
   { 0x6DEC, 0xC26C },
   { 0x6DF6, 0xB798 },
   { 0x6DFC, 0xBB18 },
   { 0x6E1D, 0xD22C },
   { 0x6E28, 0xC678 },
   { 0x6E37, 0xC5F0 },
   { 0x6E45, 0xB828 },
   { 0x6E4E, 0xBA74 },
   { 0x6E51, 0xC11C },
   { 0x6E53, 0xBD84 },
   { 0x6E54, 0xC804 },
   { 0x6E63, 0xBBFC },
   { 0x6E8F, 0xB2F9 },
   { 0x6E95, 0xBABD },
   { 0x6E98, 0xD569 },
   { 0x6EA7, 0xB960 },
   { 0x6EB2, 0xC218 },
   { 0x6EB5, 0xC740 },
   { 0x6EB7, 0xD63C },
   { 0x6EBD, 0xC695 },
   { 0x6EC3, 0xC639 },
   { 0x6EC8, 0xD638 },
   { 0x6ED5, 0xB4F1 },
   { 0x6ED9, 0xD68C },
   { 0x6EEC, 0xD638 },
   { 0x6EED, 0xD544 },
   { 0x6EF5, 0xBC00 },
   { 0x6EF7, 0xB85C },
   { 0x6F04, 0xC560 },
   { 0x6F09, 0xB85D },
   { 0x6F0C, 0xADFC },
   { 0x6F13, 0xB9AC },
   { 0x6F19, 0xB2E8 },
   { 0x6F1A, 0xAD6C },
   { 0x6F2A, 0xC758 },
   { 0x6F2D, 0xB9DD },
   { 0x6F30, 0xBD95 },
   { 0x6F33, 0xC7A5 },
   { 0x6F3C, 0xCD5C },
   { 0x6F3E, 0xC591 },
   { 0x6F4F, 0xC728 },
   { 0x6F59, 0xADDC },
   { 0x6F5C, 0xC7A0 },
   { 0x6F5D, 0xD761 },
   { 0x6F61, 0xB3C8 },
   { 0x6F66, 0xB8CC },
   { 0x6F6F, 0xC2EC },
   { 0x6F74, 0xC800 },
   { 0x6F78, 0xC0B0 },
   { 0x6F82, 0xC9D5 },
   { 0x6F86, 0xC694 },
   { 0x6F89, 0xAC10 },
   { 0x6F8B, 0xD6A1 },
   { 0x6F8C, 0xC2DC },
   { 0x6F92, 0xD64D },
   { 0x6F98, 0xC0B0 },
   { 0x6F9F, 0xB984 },
   { 0x6FA1, 0xC870 },
   { 0x6FA8, 0xC11C },
   { 0x6FB6, 0xC804 },
   { 0x6FC6, 0xBD84 },
   { 0x6FC7, 0xC0C9 },
   { 0x6FC9, 0xC218 },
   { 0x6FD8, 0xB155 },
   { 0x6FDB, 0xBABD },
   { 0x6FDE, 0xBE44 },
   { 0x6FEE, 0xBCF5 },
   { 0x6FF3, 0xC7A0 },
   { 0x6FF4, 0xC601 },
   { 0x6FFA, 0xCC9C },
   { 0x7007, 0xC655 },
   { 0x7012, 0xC0C9 },
   { 0x7013, 0xC9D5 },
   { 0x7026, 0xC800 },
   { 0x7030, 0xBBF8 },
   { 0x7032, 0xB834 },
   { 0x7038, 0xCCA8 },
   { 0x703C, 0xC591 },
   { 0x7044, 0xC12D },
   { 0x704E, 0xC5FC },
   { 0x7053, 0xB780 },
   { 0x705E, 0xD30C },
   { 0x7069, 0xC5FC },
   { 0x706F, 0xC815 },
   { 0x707E, 0xC7AC },
   { 0x7081, 0xAE30 },
   { 0x7086, 0xBB38 },
   { 0x7095, 0xD56D },
   { 0x70AE, 0xD3EC },
   { 0x70B0, 0xD3EC },
   { 0x70CA, 0xC591 },
   { 0x70D3, 0xACC4 },
   { 0x70DC, 0xD6E4 },
   { 0x711C, 0xD63C },
   { 0x7120, 0xC26C },
   { 0x712D, 0xACBD },
   { 0x712E, 0xD754 },
   { 0x712F, 0xC791 },
   { 0x7131, 0xD601 },
   { 0x7146, 0xD558 },
   { 0x7152, 0xC704 },
   { 0x7157, 0xB09C },
   { 0x7162, 0xACBD },
   { 0x7168, 0xC678 },
   { 0x7180, 0xC5FD },
   { 0x7185, 0xC628 },
   { 0x7187, 0xD6A8 },
   { 0x719B, 0xD45C },
   { 0x71A0, 0xC2B5 },
   { 0x71A4, 0xC775 },
   { 0x71A8, 0xC704 },
   { 0x71AF, 0xC120 },
   { 0x71B2, 0xACBD },
   { 0x71CB, 0xCD08 },
   { 0x71D6, 0xC2EC },
   { 0x71D9, 0xD0D5 },
   { 0x71E0, 0xC6B1 },
   { 0x71EC, 0xD6FC },
   { 0x71F9, 0xD76C },
   { 0x7207, 0xC124 },
   { 0x720B, 0xD6C8 },
   { 0x720C, 0xAD11 },
   { 0x720D, 0xC0AD },
   { 0x7214, 0xD76C },
   { 0x7217, 0xC5FD },
   { 0x721A, 0xC57D },
   { 0x721F, 0xAD00 },
   { 0x7225, 0xCD09 },
   { 0x7228, 0xCC2C },
   { 0x7238, 0xD30C },
   { 0x7239, 0xB2E4 },
   { 0x7242, 0xC7A5 },
   { 0x724B, 0xC804 },
   { 0x7253, 0xBC29 },
   { 0x7254, 0xBC15 },
   { 0x7256, 0xC720 },
   { 0x725A, 0xD0F1 },
   { 0x726F, 0xACE0 },
   { 0x7274, 0xC800 },
   { 0x7278, 0xC790 },
   { 0x7287, 0xBD84 },
   { 0x728D, 0xAC74 },
   { 0x7292, 0xD638 },
   { 0x7296, 0xB77D },
   { 0x72B3, 0xC791 },
   { 0x72B4, 0xC548 },
   { 0x72B5, 0xD790 },
   { 0x72C9, 0xBE44 },
   { 0x72D2, 0xBE44 },
   { 0x72E2, 0xD559 },
   { 0x72E5, 0xC21C },
   { 0x72E8, 0xC735 },
   { 0x72F4, 0xD3D0 },
   { 0x72F7, 0xACAC },
   { 0x72FA, 0xC740 },
   { 0x72FB, 0xC0B0 },
   { 0x7309, 0xAE30 },
   { 0x7313, 0xACFC },
   { 0x7317, 0xC758 },
   { 0x7318, 0xC81C },
   { 0x7319, 0xC7C1 },
   { 0x7322, 0xD638 },
   { 0x7327, 0xC640 },
   { 0x7328, 0xC6D0 },
   { 0x7331, 0xB178 },
   { 0x7334, 0xD6C4 },
   { 0x7343, 0xC560 },
   { 0x7358, 0xD3D0 },
   { 0x735C, 0xB9B0 },
   { 0x7360, 0xB8CC },
   { 0x7369, 0xC608 },
   { 0x736B, 0xD5D8 },
   { 0x736C, 0xD574 },
   { 0x736F, 0xD6C8 },
   { 0x7377, 0xAD11 },
   { 0x737C, 0xBBF8 },
   { 0x7381, 0xD5D8 },
   { 0x7388, 0xB85C },
   { 0x7395, 0xAC04 },
   { 0x739E, 0xBD80 },
   { 0x73A0, 0xAC1C },
   { 0x73A6, 0xACB0 },
   { 0x73AB, 0xB9E4 },
   { 0x73B7, 0xC810 },
   { 0x73BB, 0xD30C },
   { 0x73C6, 0xC774 },
   { 0x73C8, 0xAC00 },
   { 0x73D2, 0xC9C4 },
   { 0x73E2, 0xC740 },
   { 0x73EB, 0xCDA9 },
   { 0x73EE, 0xD328 },
   { 0x73F5, 0xC815 },
   { 0x7404, 0xD604 },
   { 0x7424, 0xC7C1 },
   { 0x7431, 0xC870 },
   { 0x7432, 0xBC30 },
   { 0x7445, 0xC81C },
   { 0x7446, 0xC131 },
   { 0x744E, 0xD574 },
   { 0x745D, 0xD669 },
   { 0x7463, 0xC1C4 },
   { 0x746D, 0xB2F9 },
   { 0x7470, 0xAD34 },
   { 0x7471, 0xC804 },
   { 0x7472, 0xCC3D },
   { 0x7473, 0xCC28 },
   { 0x747D, 0xC885 },
   { 0x7480, 0xCD5C },
   { 0x7486, 0xAD6C },
   { 0x748A, 0xBB38 },
   { 0x749D, 0xAD34 },
   { 0x74AB, 0xB2F9 },
   { 0x74DB, 0xD658 },
   { 0x74E9, 0xCC9C },
   { 0x74F2, 0xD1A4 },
   { 0x7503, 0xCD94 },
   { 0x750C, 0xAD6C },
   { 0x750D, 0xB9F9 },
   { 0x750E, 0xC804 },
   { 0x7513, 0xBCBD },
   { 0x751E, 0xC0C1 },
   { 0x753F, 0xB9F9 },
   { 0x754A, 0xACBD },
   { 0x754B, 0xC804 },
   { 0x754E, 0xACAC },
   { 0x755A, 0xBD84 },
   { 0x7560, 0xC804 },
   { 0x7564, 0xCE58 },
   { 0x7567, 0xB7B5 },
   { 0x756B, 0xD654 },
   { 0x7588, 0xBCBD },
   { 0x7594, 0xC815 },
   { 0x7599, 0xD758 },
   { 0x759A, 0xAD6C },
   { 0x75A3, 0xC6B0 },
   { 0x75A9, 0xCDCC },
   { 0x75B4, 0xC544 },
   { 0x75C0, 0xAD6C },
   { 0x75C3, 0xD604 },
   { 0x75CA, 0xC804 },
   { 0x75CE, 0xD574 },
   { 0x75D3, 0xCE58 },
   { 0x75DE, 0xBE44 },
   { 0x75E3, 0xC9C0 },
   { 0x75E4, 0xC88C },
   { 0x75E7, 0xC0AC },
   { 0x75F3, 0xB9BC },
   { 0x75F9, 0xBE44 },
   { 0x75FF, 0xC704 },
   { 0x7601, 0xCDCC },
   { 0x7607, 0xC885 },
   { 0x7608, 0xACC4 },
   { 0x7609, 0xC720 },
   { 0x760B, 0xD48D },
   { 0x7610, 0xC720 },
   { 0x7615, 0xD558 },
   { 0x7627, 0xD559 },
   { 0x762F, 0xC871 },
   { 0x7630, 0xB77C },
   { 0x7633, 0xCD94 },
   { 0x7634, 0xC7A5 },
   { 0x7643, 0xB96D },
   { 0x7646, 0xB85C },
   { 0x7648, 0xD3D0 },
   { 0x7649, 0xB2E8 },
   { 0x7655, 0xC639 },
   { 0x7658, 0xB824 },
   { 0x765C, 0xC804 },
   { 0x7662, 0xC591 },
   { 0x7665, 0xC9D5 },
   { 0x7667, 0xB825 },
   { 0x7668, 0xACFD },
   { 0x766D, 0xC601 },
   { 0x766E, 0xC740 },
   { 0x766F, 0xAD6C },
   { 0x7671, 0xD0C4 },
   { 0x7680, 0xAE09 },
   { 0x7681, 0xC870 },
   { 0x7683, 0xBAA8 },
   { 0x768B, 0xACE0 },
   { 0x7696, 0xD658 },
   { 0x769A, 0xC560 },
   { 0x769B, 0xD6A8 },
   { 0x769C, 0xD638 },
   { 0x769E, 0xD638 },
   { 0x76A4, 0xD30C },
   { 0x76AC, 0xD559 },
   { 0x76B4, 0xC900 },
   { 0x76B6, 0xC0AC },
   { 0x76B8, 0xAD70 },
   { 0x76CC, 0xC644 },
   { 0x76CD, 0xD569 },
   { 0x76CE, 0xC559 },
   { 0x76D4, 0xD68C },
   { 0x76D9, 0xBCF4 },
   { 0x76E5, 0xAD00 },
   { 0x76EA, 0xD0D5 },
   { 0x76EC, 0xACE0 },
   { 0x76F1, 0xC6B0 },
   { 0x76F9, 0xC21C },
   { 0x76FB, 0xD61C },
   { 0x7707, 0xBB18 },
   { 0x770A, 0xBAA8 },
   { 0x770C, 0xD604 },
   { 0x771A, 0xC0DD },
   { 0x771B, 0xB9E4 },
   { 0x7725, 0xC790 },
   { 0x7726, 0xC790 },
   { 0x7728, 0xC7A1 },
   { 0x7734, 0xC21C },
   { 0x773B, 0xC591 },
   { 0x773E, 0xC911 },
   { 0x7746, 0xD658 },
   { 0x7747, 0xC81C },
   { 0x7752, 0xC12C },
   { 0x775A, 0xC560 },
   { 0x775F, 0xC218 },
   { 0x7760, 0xAD8C },
   { 0x7762, 0xC218 },
   { 0x7765, 0xBE44 },
   { 0x7768, 0xC608 },
   { 0x7777, 0xAC74 },
   { 0x777D, 0xADDC },
   { 0x778D, 0xC218 },
   { 0x778E, 0xD560 },
   { 0x7796, 0xC608 },
   { 0x7799, 0xB9C9 },
   { 0x77A0, 0xB2F9 },
   { 0x77A2, 0xBABD },
   { 0x77AA, 0xC9D5 },
   { 0x77B9, 0xC560 },
   { 0x77BD, 0xACE0 },
   { 0x77C7, 0xBABD },
   { 0x77C9, 0xBE48 },
   { 0x77CD, 0xD655 },
   { 0x77D9, 0xAC10 },
   { 0x77DA, 0xCD09 },
   { 0x77DE, 0xC728 },
   { 0x77E1, 0xD655 },
   { 0x77E7, 0xC2E0 },
   { 0x77F0, 0xC99D },
   { 0x77FA, 0xD0C1 },
   { 0x77FB, 0xACE8 },
   { 0x77FC, 0xAC15 },
   { 0x77FD, 0xC11D },
   { 0x780C, 0xCCB4 },
   { 0x780F, 0xBD84 },
   { 0x7811, 0xC544 },
   { 0x7822, 0xB77C },
   { 0x782D, 0xD3C4 },
   { 0x7830, 0xD33D },
   { 0x7843, 0xC8FC },
   { 0x785C, 0xAC31 },
   { 0x7860, 0xB791 },
   { 0x7867, 0xC6A9 },
   { 0x7868, 0xCC28 },
   { 0x786E, 0xD559 },
   { 0x788F, 0xC791 },
   { 0x7893, 0xB300 },
   { 0x789F, 0xC124 },
   { 0x78A4, 0xC601 },
   { 0x78A8, 0xC678 },
   { 0x78AD, 0xD0D5 },
   { 0x78BE, 0xB144 },
   { 0x78C8, 0xC678 },
   { 0x78CF, 0xB834 },
   { 0x78D1, 0xC560 },
   { 0x78D4, 0xCC45 },
   { 0x78D5, 0xAC1C },
   { 0x78DA, 0xC804 },
   { 0x78E0, 0xB1E8 },
   { 0x78E7, 0xC801 },
   { 0x78EA, 0xCD5C },
   { 0x78F4, 0xB4F1 },
   { 0x78F7, 0xB9B0 },
   { 0x78FA, 0xAD11 },
   { 0x78FC, 0xC7A1 },
   { 0x78FD, 0xAD50 },
   { 0x790C, 0xB8B0 },
   { 0x790F, 0xAE09 },
   { 0x7911, 0xB2F9 },
   { 0x7912, 0xC758 },
   { 0x7919, 0xC560 },
   { 0x7927, 0xB8B0 },
   { 0x792D, 0xD655 },
   { 0x7931, 0xB871 },
   { 0x7945, 0xC694 },
   { 0x7946, 0xCC9C },
   { 0x794A, 0xD33D },
   { 0x7953, 0xBD88 },
   { 0x7954, 0xBD80 },
   { 0x7955, 0xBE44 },
   { 0x795F, 0xC218 },
   { 0x7962, 0xB2C8 },
   { 0x7967, 0xC870 },
   { 0x797C, 0xAD00 },
   { 0x7980, 0xD488 },
   { 0x798A, 0xACC4 },
   { 0x798B, 0xC778 },
   { 0x7994, 0xC81C },
   { 0x799D, 0xC9C1 },
   { 0x79A8, 0xAE30 },
   { 0x79AB, 0xB2F4 },
   { 0x79B0, 0xB2C8 },
   { 0x79B4, 0xC57D },
   { 0x79BA, 0xC639 },
   { 0x79BB, 0xB9AC },
   { 0x79C6, 0xAC04 },
   { 0x79E2, 0xB839 },
   { 0x79E3, 0xB9D0 },
   { 0x79EA, 0xC9C0 },
   { 0x79EB, 0xCD9C },
   { 0x79EC, 0xAC70 },
   { 0x79F8, 0xAC08 },
   { 0x7A01, 0xACE0 },
   { 0x7A02, 0xB791 },
   { 0x7A0A, 0xC81C },
   { 0x7A0C, 0xB3C4 },
   { 0x7A1E, 0xACFC },
   { 0x7A27, 0xC124 },
   { 0x7A39, 0xC9C4 },
   { 0x7A45, 0xAC15 },
   { 0x7A60, 0xB18D },
   { 0x7A75, 0xC54C },
   { 0x7A7E, 0xC694 },
   { 0x7A80, 0xB454 },
   { 0x7A82, 0xB85C },
   { 0x7A83, 0xC808 },
   { 0x7A85, 0xC694 },
   { 0x7A86, 0xD3C4 },
   { 0x7A8A, 0xC640 },
   { 0x7A96, 0xAD50 },
   { 0x7A97, 0xCC3D },
   { 0x7A9B, 0xAD6C },
   { 0x7AA0, 0xACFC },
   { 0x7AA3, 0xC194 },
   { 0x7AAC, 0xC720 },
   { 0x7AB3, 0xC720 },
   { 0x7AB6, 0xAD6C },
   { 0x7AB9, 0xC624 },
   { 0x7ABB, 0xCC3D },
   { 0x7ABE, 0xAD00 },
   { 0x7ABF, 0xB96D },
   { 0x7AC8, 0xC870 },
   { 0x7AE2, 0xC0AC },
   { 0x7AE6, 0xC1A1 },
   { 0x7AF8, 0xACBD },
   { 0x7AFD, 0xC6B0 },
   { 0x7B06, 0xD30C },
   { 0x7B08, 0xAE09 },
   { 0x7B0A, 0xC870 },
   { 0x7B0C, 0xC544 },
   { 0x7B12, 0xAE08 },
   { 0x7B18, 0xC810 },
   { 0x7B25, 0xC0AC },
   { 0x7B27, 0xCC45 },
   { 0x7B28, 0xBD84 },
   { 0x7B2F, 0xB178 },
   { 0x7B33, 0xAC00 },
   { 0x7B35, 0xBC94 },
   { 0x7B45, 0xC120 },
   { 0x7B48, 0xAD04 },
   { 0x7B53, 0xACC4 },
   { 0x7B5F, 0xBD80 },
   { 0x7B65, 0xAC70 },
   { 0x7B66, 0xAD00 },
   { 0x7B67, 0xACAC },
   { 0x7B69, 0xD1B5 },
   { 0x7B71, 0xC18C },
   { 0x7B73, 0xC815 },
   { 0x7B8D, 0xACE0 },
   { 0x7B8E, 0xD638 },
   { 0x7B92, 0xCD94 },
   { 0x7B99, 0xBCF5 },
   { 0x7B9C, 0xACF5 },
   { 0x7BA0, 0xCD94 },
   { 0x7BBE, 0xC18C },
   { 0x7BCA, 0xD64D },
   { 0x7BCB, 0xD611 },
   { 0x7BCC, 0xD6C4 },
   { 0x7BD4, 0xC6B4 },
   { 0x7BD9, 0xACE0 },
   { 0x7BDB, 0xC57D },
   { 0x7BDD, 0xAD6C },
   { 0x7BE6, 0xBE44 },
   { 0x7BEA, 0xC9C0 },
   { 0x7BF3, 0xD544 },
   { 0x7BF7, 0xBD09 },
   { 0x7BFE, 0xBA78 },
   { 0x7C00, 0xCC45 },
   { 0x7C09, 0xCD94 },
   { 0x7C0B, 0xADA4 },
   { 0x7C0F, 0xB85D },
   { 0x7C1F, 0xC810 },
   { 0x7C20, 0xBCF4 },
   { 0x7C37, 0xCCA8 },
   { 0x7C38, 0xD30C },
   { 0x7C50, 0xB4F1 },
   { 0x7C52, 0xC8FC },
   { 0x7C54, 0xC218 },
   { 0x7C5B, 0xC804 },
   { 0x7C5C, 0xD0C1 },
   { 0x7C5F, 0xB8B0 },
   { 0x7C65, 0xC57D },
   { 0x7C67, 0xAC70 },
   { 0x7C69, 0xBCC0 },
   { 0x7C72, 0xC720 },
   { 0x7C7E, 0xC778 },
   { 0x7C81, 0xCC9C },
   { 0x7C8D, 0xBAA8 },
   { 0x7CA2, 0xC790 },
   { 0x7CA4, 0xC6D4 },
   { 0x7CA6, 0xB9B0 },
   { 0x7CA8, 0xBC31 },
   { 0x7CBC, 0xB9B0 },
   { 0x7CBD, 0xC885 },
   { 0x7CC5, 0xC720 },
   { 0x7CC6, 0xBA74 },
   { 0x7CD5, 0xACE0 },
   { 0x7CD7, 0xAD6C },
   { 0x7CD9, 0xC870 },
   { 0x7CDA, 0xC7A5 },
   { 0x7CDC, 0xBBF8 },
   { 0x7CDD, 0xC0BC },
   { 0x7CE2, 0xBAA8 },
   { 0x7CE5, 0xB098 },
   { 0x7CEF, 0xB098 },
   { 0x7CF2, 0xB824 },
   { 0x7CF4, 0xC801 },
   { 0x7CF6, 0xC870 },
   { 0x7CF8, 0xBA71 },
   { 0x7CFA, 0xADDC },
   { 0x7D03, 0xC21C },
   { 0x7D13, 0xC11C },
   { 0x7D15, 0xBE44 },
   { 0x7D1C, 0xC6B4 },
   { 0x7D31, 0xBD88 },
   { 0x7D32, 0xC124 },
   { 0x7D49, 0xC220 },
   { 0x7D4D, 0xC784 },
   { 0x7D56, 0xAD11 },
   { 0x7D59, 0xD658 },
   { 0x7D5B, 0xC870 },
   { 0x7D5C, 0xD608 },
   { 0x7D63, 0xBCD1 },
   { 0x7D69, 0xC870 },
   { 0x7D70, 0xC9C8 },
   { 0x7D7A, 0xCE58 },
   { 0x7D83, 0xCD08 },
   { 0x7D86, 0xACBD },
   { 0x7D98, 0xBD09 },
   { 0x7DA3, 0xAD8C },
   { 0x7DA5, 0xAE30 },
   { 0x7DA6, 0xAE30 },
   { 0x7DA7, 0xC900 },
   { 0x7DA9, 0xC6D0 },
   { 0x7DAB, 0xC120 },
   { 0x7DAE, 0xACC4 },
   { 0x7DB0, 0xAD00 },
   { 0x7DC4, 0xACE4 },
   { 0x7DCC, 0xC720 },
   { 0x7DCD, 0xBBFC },
   { 0x7DD7, 0xC0C1 },
   { 0x7DDC, 0xBA74 },
   { 0x7DE6, 0xC2DC },
   { 0x7DF6, 0xD3B8 },
   { 0x7DF9, 0xC81C },
   { 0x7E08, 0xC601 },
   { 0x7E0B, 0xCD94 },
   { 0x7E10, 0xCD94 },
   { 0x7E11, 0xACB8 },
   { 0x7E17, 0xCD5C },
   { 0x7E18, 0xACC4 },
   { 0x7E20, 0xACE1 },
   { 0x7E22, 0xB4F1 },
   { 0x7E32, 0xB958 },
   { 0x7E33, 0xACAC },
   { 0x7E35, 0xB9CC },
   { 0x7E39, 0xD45C },
   { 0x7E3B, 0xBBF8 },
   { 0x7E44, 0xC608 },
   { 0x7E45, 0xC18C },
   { 0x7E48, 0xAC15 },
   { 0x7E50, 0xC138 },
   { 0x7E56, 0xC0B0 },
   { 0x7E57, 0xB9B0 },
   { 0x7E59, 0xBC88 },
   { 0x7E5A, 0xB8CC },
   { 0x7E62, 0xADA4 },
   { 0x7E6F, 0xD604 },
   { 0x7E76, 0xC5B5 },
   { 0x7E7D, 0xBE48 },
   { 0x7E7E, 0xACAC },
   { 0x7E81, 0xD6C8 },
   { 0x7E87, 0xB8B0 },
   { 0x7E88, 0xD790 },
   { 0x7E8A, 0xAD11 },
   { 0x7E8D, 0xB958 },
   { 0x7E94, 0xC7AC },
   { 0x7F37, 0xC0AC },
   { 0x7F3E, 0xBCD1 },
   { 0x7F3F, 0xD56D },
   { 0x7F43, 0xC575 },
   { 0x7F44, 0xACBD },
   { 0x7F45, 0xD558 },
   { 0x7F47, 0xC900 },
   { 0x7F4B, 0xC639 },
   { 0x7F4D, 0xB8B0 },
   { 0x7F4E, 0xB2F4 },
   { 0x7F58, 0xBD80 },
   { 0x7F5D, 0xC800 },
   { 0x7F5F, 0xACE0 },
   { 0x7F60, 0xBBFC },
   { 0x7F61, 0xAC15 },
   { 0x7F63, 0xAD18 },
   { 0x7F66, 0xBD80 },
   { 0x7F68, 0xC5C4 },
   { 0x7F78, 0xBC8C },
   { 0x7F7C, 0xD544 },
   { 0x7F7D, 0xACC4 },
   { 0x7F7E, 0xC99D },
   { 0x7F82, 0xACAC },
   { 0x7F86, 0xBE44 },
   { 0x7F87, 0xAE30 },
   { 0x7F96, 0xACE0 },
   { 0x7F97, 0xAC15 },
   { 0x7F98, 0xC7A5 },
   { 0x7F9D, 0xC800 },
   { 0x7FAB, 0xAC15 },
   { 0x7FAF, 0xAC08 },
   { 0x7FB6, 0xC804 },
   { 0x7FD6, 0xD761 },
   { 0x7FDB, 0xC18C },
   { 0x7FE3, 0xC0BD },
   { 0x7FE4, 0xC2DC },
   { 0x7FE6, 0xC804 },
   { 0x7FEC, 0xD718 },
   { 0x7FEE, 0xD575 },
   { 0x7FF3, 0xC608 },
   { 0x7FFA, 0xACE0 },
   { 0x7FFB, 0xBC88 },
   { 0x7FFE, 0xD604 },
   { 0x8004, 0xBAA8 },
   { 0x8011, 0xB2E8 },
   { 0x8012, 0xB8B0 },
   { 0x8014, 0xC790 },
   { 0x8016, 0xCD08 },
   { 0x8019, 0xD30C },
   { 0x801E, 0xAC00 },
   { 0x8021, 0xC11C },
   { 0x8026, 0xC6B0 },
   { 0x8028, 0xB204 },
   { 0x802C, 0xB8E8 },
   { 0x8030, 0xC6B0 },
   { 0x8052, 0xAD04 },
   { 0x8055, 0xD638 },
   { 0x8071, 0xC624 },
   { 0x8075, 0xC678 },
   { 0x8076, 0xC12D },
   { 0x8093, 0xD669 },
   { 0x8098, 0xC8FC },
   { 0x809A, 0xB450 },
   { 0x80A6, 0xBD84 },
   { 0x80AB, 0xC21C },
   { 0x80AD, 0xB20C },
   { 0x80B5, 0xAE30 },
   { 0x80C6, 0xB2E8 },
   { 0x80CA, 0xAD6C },
   { 0x80D5, 0xBD80 },
   { 0x80D6, 0xBC18 },
   { 0x80D9, 0xC870 },
   { 0x80E0, 0xAC70 },
   { 0x80EF, 0xACE0 },
   { 0x80F7, 0xD749 },
   { 0x80FE, 0xC790 },
   { 0x8109, 0xB9E5 },
   { 0x8116, 0xBC1C },
   { 0x8124, 0xC2E0 },
   { 0x8127, 0xCD5C },
   { 0x8130, 0xB450 },
   { 0x813A, 0xC218 },
   { 0x8141, 0xBCC0 },
   { 0x8146, 0xC804 },
   { 0x814A, 0xC11D },
   { 0x8152, 0xAC70 },
   { 0x8153, 0xBE44 },
   { 0x8160, 0xC8FC },
   { 0x8164, 0xC554 },
   { 0x816D, 0xC545 },
   { 0x8174, 0xC720 },
   { 0x8176, 0xB2E8 },
   { 0x8177, 0xD53D },
   { 0x8182, 0xB824 },
   { 0x8183, 0xC62C },
   { 0x8184, 0xC218 },
   { 0x8186, 0xC18C },
   { 0x818B, 0xB8CC },
   { 0x819E, 0xC804 },
   { 0x81A9, 0xB2C8 },
   { 0x81B0, 0xBC88 },
   { 0x81B4, 0xBB34 },
   { 0x81B8, 0xC218 },
   { 0x81B9, 0xBD84 },
   { 0x81CA, 0xC870 },
   { 0x81CF, 0xBE48 },
   { 0x81D1, 0xB178 },
   { 0x81D9, 0xC5F0 },
   { 0x81DA, 0xB824 },
   { 0x81DD, 0xB77C },
   { 0x81E0, 0xB828 },
   { 0x81EC, 0xC5BC },
   { 0x81F6, 0xCC9C },
   { 0x8201, 0xC5EC },
   { 0x8202, 0xC6A9 },
   { 0x8203, 0xC11D },
   { 0x8210, 0xC9C0 },
   { 0x8216, 0xD3EC },
   { 0x8233, 0xCD95 },
   { 0x8238, 0xAC00 },
   { 0x823D, 0xBC29 },
   { 0x8251, 0xD3B8 },
   { 0x8258, 0xC18C },
   { 0x825A, 0xC870 },
   { 0x825F, 0xB3D9 },
   { 0x8268, 0xBABD },
   { 0x826A, 0xB85C },
   { 0x826B, 0xB85C },
   { 0x8274, 0xBD88 },
   { 0x828A, 0xCC9C },
   { 0x8294, 0xD6FC },
   { 0x8298, 0xBE44 },
   { 0x82A1, 0xAC80 },
   { 0x82A2, 0xC778 },
   { 0x82A3, 0xBD80 },
   { 0x82A7, 0xC11C },
   { 0x82A8, 0xAE09 },
   { 0x82AA, 0xAE30 },
   { 0x82AB, 0xC6D0 },
   { 0x82B0, 0xAE30 },
   { 0x82BE, 0xBE44 },
   { 0x82C5, 0xC608 },
   { 0x82D3, 0xB839 },
   { 0x82DC, 0xBAA9 },
   { 0x82E0, 0xBBFC },
   { 0x82E3, 0xAC70 },
   { 0x82EB, 0xC810 },
   { 0x82F3, 0xB3D9 },
   { 0x82F4, 0xC800 },
   { 0x82F9, 0xD3C9 },
   { 0x82FA, 0xB9E4 },
   { 0x82FB, 0xBD80 },
   { 0x82FF, 0xBBF8 },
   { 0x8300, 0xBD88 },
   { 0x8308, 0xC790 },
   { 0x831B, 0xAC04 },
   { 0x831C, 0xCC9C },
   { 0x831D, 0xCC44 },
   { 0x8323, 0xC624 },
   { 0x832A, 0xAD11 },
   { 0x8332, 0xC790 },
   { 0x8333, 0xAC15 },
   { 0x833C, 0xB3D9 },
   { 0x8343, 0xC804 },
   { 0x8350, 0xCC9C },
   { 0x8385, 0xB9AC },
   { 0x8392, 0xAC70 },
   { 0x8393, 0xB9E4 },
   { 0x839A, 0xC5F0 },
   { 0x839B, 0xC815 },
   { 0x839D, 0xC88C },
   { 0x839F, 0xD568 },
   { 0x83A0, 0xC720 },
   { 0x83A8, 0xB791 },
   { 0x83BE, 0xB9DD },
   { 0x83BF, 0xC790 },
   { 0x83C2, 0xC801 },
   { 0x83D1, 0xCE58 },
   { 0x83D4, 0xBCF5 },
   { 0x83D8, 0xC22D },
   { 0x83DF, 0xB3C4 },
   { 0x83E0, 0xD30C },
   { 0x83E1, 0xD568 },
   { 0x83F6, 0xBD09 },
   { 0x8406, 0xBE44 },
   { 0x8407, 0xC7A5 },
   { 0x840B, 0xCC98 },
   { 0x8435, 0xC640 },
   { 0x8439, 0xD3B8 },
   { 0x843C, 0xC545 },
   { 0x8446, 0xBCF4 },
   { 0x844A, 0xC554 },
   { 0x8451, 0xD48D },
   { 0x845A, 0xC2EC },
   { 0x8469, 0xD30C },
   { 0x846A, 0xACC4 },
   { 0x846D, 0xAC00 },
   { 0x8471, 0xCD1D },
   { 0x8473, 0xC704 },
   { 0x8477, 0xD6C8 },
   { 0x8482, 0xCCB4 },
   { 0x849F, 0xAD6C },
   { 0x84A8, 0xCC9C },
   { 0x84AD, 0xCD94 },
   { 0x84AF, 0xAD34 },
   { 0x84B4, 0xC0AD },
   { 0x84B9, 0xACB8 },
   { 0x84BA, 0xC9C8 },
   { 0x84C1, 0xC9C4 },
   { 0x84CA, 0xC639 },
   { 0x84D0, 0xC695 },
   { 0x84D3, 0xBC30 },
   { 0x84D6, 0xBE44 },
   { 0x84ED, 0xC554 },
   { 0x84EF, 0xCD1D },
   { 0x84F1, 0xD3C9 },
   { 0x84FD, 0xD544 },
   { 0x8500, 0xBD80 },
   { 0x8506, 0xB989 },
   { 0x8515, 0xCCB4 },
   { 0x851F, 0xC8FC },
   { 0x8526, 0xC870 },
   { 0x852A, 0xC810 },
   { 0x8546, 0xCC9C },
   { 0x854A, 0xC608 },
   { 0x854B, 0xC608 },
   { 0x8555, 0xC720 },
   { 0x8556, 0xAC70 },
   { 0x8558, 0xC694 },
   { 0x855E, 0xCCB4 },
   { 0x8561, 0xBD84 },
   { 0x8564, 0xC720 },
   { 0x856B, 0xB3D9 },
   { 0x857A, 0xC999 },
   { 0x857E, 0xB8B0 },
   { 0x8580, 0xC628 },
   { 0x8586, 0xC560 },
   { 0x8589, 0xC608 },
   { 0x858A, 0xACC4 },
   { 0x858C, 0xD5A5 },
   { 0x8597, 0xC6D0 },
   { 0x8599, 0xCE58 },
   { 0x859D, 0xB2F4 },
   { 0x85A4, 0xD574 },
   { 0x85A5, 0xCD09 },
   { 0x85D0, 0xBB18 },
   { 0x85F9, 0xC560 },
   { 0x85FD, 0xCE5C },
   { 0x8600, 0xD0C1 },
   { 0x8604, 0xAE30 },
   { 0x860B, 0xBE48 },
   { 0x8618, 0xC591 },
   { 0x8622, 0xB871 },
   { 0x8627, 0xAC70 },
   { 0x8629, 0xBC88 },
   { 0x862F, 0xD0D5 },
   { 0x863C, 0xBBF8 },
   { 0x8641, 0xAE30 },
   { 0x8653, 0xD6A8 },
   { 0x866B, 0xD6FC },
   { 0x866C, 0xADDC },
   { 0x866F, 0xADDC },
   { 0x8671, 0xC2AC },
   { 0x8678, 0xC790 },
   { 0x867A, 0xD6FC },
   { 0x867B, 0xB9F9 },
   { 0x868B, 0xC608 },
   { 0x868D, 0xBE44 },
   { 0x8695, 0xCC9C },
   { 0x86A8, 0xBD80 },
   { 0x86AA, 0xB450 },
   { 0x86AF, 0xAD6C },
   { 0x86B0, 0xC720 },
   { 0x86B1, 0xCC45 },
   { 0x86B4, 0xC720 },
   { 0x86C0, 0xC8FC },
   { 0x86C5, 0xC810 },
   { 0x86C6, 0xC800 },
   { 0x86C9, 0xB839 },
   { 0x86DE, 0xD65C },
   { 0x86E3, 0xAE38 },
   { 0x86E9, 0xACF5 },
   { 0x86EC, 0xACF5 },
   { 0x86F8, 0xC18C },
   { 0x86F9, 0xC6A9 },
   { 0x86FB, 0xC138 },
   { 0x8706, 0xD604 },
   { 0x8709, 0xBD80 },
   { 0x870A, 0xB9AC },
   { 0x870B, 0xB791 },
   { 0x8711, 0xB2E8 },
   { 0x871D, 0xAE30 },
   { 0x8721, 0xC0AC },
   { 0x8725, 0xC11D },
   { 0x8728, 0xC811 },
   { 0x8729, 0xC870 },
   { 0x8734, 0xCC99 },
   { 0x8735, 0xC5F0 },
   { 0x8737, 0xAD8C },
   { 0x873A, 0xC608 },
   { 0x873B, 0xCCAD },
   { 0x873F, 0xC6D0 },
   { 0x8740, 0xB3D9 },
   { 0x874C, 0xACFC },
   { 0x8759, 0xD3B8 },
   { 0x8760, 0xBCF5 },
   { 0x8764, 0xC720 },
   { 0x8765, 0xBAA8 },
   { 0x876E, 0xBCF5 },
   { 0x8783, 0xBC29 },
   { 0x878C, 0xBC18 },
   { 0x8798, 0xC758 },
   { 0x879E, 0xB9C8 },
   { 0x87A3, 0xB4F1 },
   { 0x87AD, 0xB9AC },
   { 0x87B4, 0xC9C4 },
   { 0x87BB, 0xB8E8 },
   { 0x87BD, 0xC885 },
   { 0x87C0, 0xC194 },
   { 0x87C7, 0xB9C8 },
   { 0x87CA, 0xBAA8 },
   { 0x87CB, 0xC2E4 },
   { 0x87D2, 0xB9DD },
   { 0x87DA, 0xD33D },
   { 0x87DB, 0xD33D },
   { 0x87E3, 0xAE30 },
   { 0x87F7, 0xB2F9 },
   { 0x880D, 0xAC08 },
   { 0x8811, 0xC601 },
   { 0x8815, 0xC5F0 },
   { 0x8821, 0xB824 },
   { 0x8832, 0xACAC },
   { 0x8839, 0xB450 },
   { 0x8844, 0xB275 },
   { 0x884A, 0xBA78 },
   { 0x884E, 0xAC04 },
   { 0x885E, 0xC704 },
   { 0x886E, 0xACE4 },
   { 0x887D, 0xC784 },
   { 0x889B, 0xC800 },
   { 0x889D, 0xBD80 },
   { 0x88A2, 0xBC88 },
   { 0x88AA, 0xAC70 },
   { 0x88C0, 0xC778 },
   { 0x88C5, 0xC7A5 },
   { 0x88CA, 0xB1E8 },
   { 0x88CD, 0xACE4 },
   { 0x88D2, 0xBD80 },
   { 0x88D8, 0xAD6C },
   { 0x88EF, 0xC8FC },
   { 0x88F1, 0xD45C },
   { 0x88F9, 0xACFC },
   { 0x88FE, 0xAC70 },
   { 0x8904, 0xCC98 },
   { 0x890A, 0xD3B8 },
   { 0x890C, 0xACE4 },
   { 0x8915, 0xC720 },
   { 0x891A, 0xC800 },
   { 0x8927, 0xACBD },
   { 0x892B, 0xCE58 },
   { 0x8930, 0xAC74 },
   { 0x893A, 0xCCA9 },
   { 0x894D, 0xC7A1 },
   { 0x8956, 0xC624 },
   { 0x8958, 0xAD34 },
   { 0x895C, 0xCCA8 },
   { 0x895E, 0xBCBD },
   { 0x8960, 0xB2F9 },
   { 0x896D, 0xD790 },
   { 0x896F, 0xCE5C },
   { 0x8974, 0xB780 },
   { 0x8988, 0xD575 },
   { 0x8989, 0xAE30 },
   { 0x8997, 0xC0AC },
   { 0x8998, 0xC810 },
   { 0x89A8, 0xC545 },
   { 0x89AC, 0xAE30 },
   { 0x89AF, 0xAD6C },
   { 0x89B7, 0xCC98 },
   { 0x89BF, 0xC801 },
   { 0x89D4, 0xADFC },
   { 0x89D6, 0xACB0 },
   { 0x89DA, 0xACE0 },
   { 0x89DC, 0xC790 },
   { 0x89DD, 0xC800 },
   { 0x89E5, 0xAD49 },
   { 0x89F1, 0xD544 },
   { 0x89F3, 0xACE1 },
   { 0x8A07, 0xAD49 },
   { 0x8A09, 0xBC94 },
   { 0x8A10, 0xC54C },
   { 0x8A11, 0xC774 },
   { 0x8A14, 0xC740 },
   { 0x8A15, 0xC0B0 },
   { 0x8A22, 0xD754 },
   { 0x8A3C, 0xC815 },
   { 0x8A3E, 0xC790 },
   { 0x8A41, 0xACE0 },
   { 0x8A46, 0xC800 },
   { 0x8A4B, 0xC8FC },
   { 0x8A51, 0xC774 },
   { 0x8A56, 0xD53C },
   { 0x8A57, 0xD615 },
   { 0x8A58, 0xAD74 },
   { 0x8A61, 0xD6C4 },
   { 0x8A6B, 0xD0C0 },
   { 0x8A6C, 0xAD6C },
   { 0x8A7C, 0xD68C },
   { 0x8A7F, 0xAD18 },
   { 0x8A82, 0xC870 },
   { 0x8A84, 0xB8B0 },
   { 0x8A86, 0xAD11 },
   { 0x8A91, 0xAD11 },
   { 0x8A9A, 0xCD08 },
   { 0x8AA2, 0xD604 },
   { 0x8AA7, 0xD3EC },
   { 0x8AC9, 0xC704 },
   { 0x8ADE, 0xD3B8 },
   { 0x8ADF, 0xC2DC },
   { 0x8AE0, 0xD6E4 },
   { 0x8AE4, 0xC545 },
   { 0x8AF0, 0xC2DC },
   { 0x8AF3, 0xC554 },
   { 0x8AF4, 0xD568 },
   { 0x8AFC, 0xD6E4 },
   { 0x8B07, 0xAC74 },
   { 0x8B0C, 0xAC00 },
   { 0x8B11, 0xD61C },
   { 0x8B1C, 0xC6D0 },
   { 0x8B23, 0xC6B0 },
   { 0x8B26, 0xACBD },
   { 0x8B37, 0xC624 },
   { 0x8B3E, 0xB9CC },
   { 0x8B43, 0xD6C4 },
   { 0x8B4C, 0xC640 },
   { 0x8B54, 0xC120 },
   { 0x8B56, 0xCC38 },
   { 0x8B59, 0xCD08 },
   { 0x8B5F, 0xC870 },
   { 0x8B6B, 0xC12C },
   { 0x8B71, 0xC120 },
   { 0x8B7F, 0xD61C },
   { 0x8B89, 0xC720 },
   { 0x8B8C, 0xC5F0 },
   { 0x8B8E, 0xC218 },
   { 0x8B9C, 0xB2F9 },
   { 0x8B9E, 0xC5B8 },
   { 0x8C47, 0xAC15 },
   { 0x8C49, 0xC2DC },
   { 0x8C4E, 0xC218 },
   { 0x8C56, 0xCD95 },
   { 0x8C62, 0xD658 },
   { 0x8C68, 0xD76C },
   { 0x8C6C, 0xC800 },
   { 0x8C73, 0xBE48 },
   { 0x8C78, 0xCE58 },
   { 0x8C83, 0xB9E5 },
   { 0x8C8D, 0xB9AC },
   { 0x8C93, 0xBB18 },
   { 0x8C94, 0xBE44 },
   { 0x8C98, 0xB9E5 },
   { 0x8CB2, 0xC790 },
   { 0x8CBA, 0xD669 },
   { 0x8CC6, 0xBCC0 },
   { 0x8CD9, 0xC8FC },
   { 0x8CE1, 0xAC31 },
   { 0x8CEC, 0xC7A5 },
   { 0x8D0B, 0xC548 },
   { 0x8D0F, 0xC601 },
   { 0x8D10, 0xC2E0 },
   { 0x8D14, 0xBE44 },
   { 0x8D1B, 0xACF5 },
   { 0x8D67, 0xB09C },
   { 0x8D6D, 0xC790 },
   { 0x8D76, 0xAC04 },
   { 0x8D81, 0xC9C4 },
   { 0x8D8E, 0xC8FC },
   { 0x8D90, 0xD608 },
   { 0x8DA0, 0xCD08 },
   { 0x8DAB, 0xAD50 },
   { 0x8DB2, 0xCC2C },
   { 0x8DC2, 0xAE30 },
   { 0x8DCE, 0xD0C0 },
   { 0x8DD5, 0xC811 },
   { 0x8DD6, 0xCC99 },
   { 0x8DD7, 0xBD80 },
   { 0x8DDF, 0xADFC },
   { 0x8DEA, 0xADA4 },
   { 0x8DEB, 0xACF5 },
   { 0x8DEC, 0xADDC },
   { 0x8DF1, 0xCE58 },
   { 0x8DFC, 0xAD6D },
   { 0x8E06, 0xC900 },
   { 0x8E08, 0xC18C },
   { 0x8E09, 0xB7C9 },
   { 0x8E14, 0xD0C1 },
   { 0x8E1D, 0xACFC },
   { 0x8E1F, 0xC9C0 },
   { 0x8E34, 0xC6A9 },
   { 0x8E36, 0xC81C },
   { 0x8E3D, 0xC6B0 },
   { 0x8E40, 0xC811 },
   { 0x8E4C, 0xCC3D },
   { 0x8E4F, 0xC81C },
   { 0x8E55, 0xD544 },
   { 0x8E5C, 0xCD95 },
   { 0x8E63, 0xB9CC },
   { 0x8E64, 0xC885 },
   { 0x8E72, 0xC900 },
   { 0x8E7B, 0xAD50 },
   { 0x8E85, 0xCD09 },
   { 0x8E89, 0xB3C8 },
   { 0x8E8B, 0xC81C },
   { 0x8E90, 0xB835 },
   { 0x8E91, 0xCC99 },
   { 0x8E93, 0xC9C0 },
   { 0x8E94, 0xC804 },
   { 0x8E99, 0xB9B0 },
   { 0x8EA1, 0xC12D },
   { 0x8EA9, 0xACFD },
   { 0x8EB1, 0xD0C0 },
   { 0x8EB3, 0xAD81 },
   { 0x8EC6, 0xCCB4 },
   { 0x8EE8, 0xB839 },
   { 0x8EF9, 0xC9C0 },
   { 0x8EFA, 0xCD08 },
   { 0x8EFC, 0xC77C },
   { 0x8F07, 0xC804 },
   { 0x8F08, 0xC8FC },
   { 0x8F28, 0xAD00 },
   { 0x8F30, 0xC591 },
   { 0x8F40, 0xC628 },
   { 0x8F42, 0xACE1 },
   { 0x8F46, 0xB85D },
   { 0x8F52, 0xBD84 },
   { 0x8F54, 0xB9B0 },
   { 0x8F57, 0xAC10 },
   { 0x8F58, 0xD658 },
   { 0x8F5E, 0xD568 },
   { 0x8F61, 0xBE44 },
   { 0x8F63, 0xB825 },
   { 0x8F64, 0xB85C },
   { 0x8F9F, 0xD53C },
   { 0x8FA2, 0xB784 },
   { 0x8FAE, 0xBCC0 },
   { 0x8FBB, 0xC2ED },
   { 0x8FBF, 0xCC9C },
   { 0x8FC0, 0xAC04 },
   { 0x8FC3, 0xC624 },
   { 0x8FC4, 0xD758 },
   { 0x8FCD, 0xB454 },
   { 0x8FD3, 0xC544 },
   { 0x8FD5, 0xC624 },
   { 0x8FE2, 0xCD08 },
   { 0x8FE4, 0xC774 },
   { 0x8FE5, 0xD615 },
   { 0x8FE8, 0xD0DC },
   { 0x8FEC, 0xC655 },
   { 0x8FF4, 0xD68C },
   { 0x8FF8, 0xBCD1 },
   { 0x8FFA, 0xB0B4 },
   { 0x900C, 0xC720 },
   { 0x9016, 0xC801 },
   { 0x9034, 0xD0C1 },
   { 0x9036, 0xC704 },
   { 0x9049, 0xC815 },
   { 0x904F, 0xC54C },
   { 0x9052, 0xC8FC },
   { 0x9058, 0xAD6C },
   { 0x905B, 0xB958 },
   { 0x9068, 0xC624 },
   { 0x906C, 0xC18D },
   { 0x9076, 0xC694 },
   { 0x9085, 0xC804 },
   { 0x908C, 0xB824 },
   { 0x9090, 0xB9AC },
   { 0x90A0, 0xBE48 },
   { 0x90B3, 0xBE44 },
   { 0x90BD, 0xADDC },
   { 0x90C3, 0xD569 },
   { 0x90C4, 0xADF9 },
   { 0x90C5, 0xC9C8 },
   { 0x90DC, 0xACE0 },
   { 0x90DD, 0xD559 },
   { 0x90E2, 0xC601 },
   { 0x90EA, 0xCC98 },
   { 0x90EB, 0xBE44 },
   { 0x90EF, 0xB2F4 },
   { 0x90F4, 0xCE68 },
   { 0x911E, 0xC740 },
   { 0x9122, 0xC5B8 },
   { 0x9123, 0xC7A5 },
   { 0x9130, 0xB9B0 },
   { 0x9131, 0xD30C },
   { 0x9134, 0xC5C5 },
   { 0x913D, 0xC804 },
   { 0x9148, 0xB825 },
   { 0x9156, 0xD0D0 },
   { 0x9157, 0xD6C4 },
   { 0x9163, 0xAC10 },
   { 0x9164, 0xACE0 },
   { 0x9165, 0xC18C },
   { 0x9172, 0xC815 },
   { 0x9174, 0xB3C4 },
   { 0x9176, 0xB9E4 },
   { 0x9179, 0xB8B0 },
   { 0x9183, 0xC5C4 },
   { 0x9190, 0xD638 },
   { 0x919E, 0xC628 },
   { 0x91A2, 0xD574 },
   { 0x91AA, 0xB8CC },
   { 0x91B2, 0xB18D },
   { 0x91C1, 0xD754 },
   { 0x91C3, 0xC2DC },
   { 0x91C5, 0xC5FC },
   { 0x91E4, 0xC0BC },
   { 0x91E6, 0xAD6C },
   { 0x91ED, 0xACF5 },
   { 0x91FF, 0xADFC },
   { 0x9207, 0xBD80 },
   { 0x9214, 0xCD08 },
   { 0x921C, 0xD6A1 },
   { 0x921F, 0xC870 },
   { 0x9235, 0xBCD1 },
   { 0x9237, 0xACE0 },
   { 0x9238, 0xBC1C },
   { 0x9241, 0xC9C4 },
   { 0x924B, 0xD3EC },
   { 0x924E, 0xC0DD },
   { 0x924F, 0xC11C },
   { 0x9250, 0xC11D },
   { 0x9252, 0xC8FC },
   { 0x9277, 0xD64D },
   { 0x9278, 0xAD50 },
   { 0x927C, 0xBCD1 },
   { 0x927E, 0xBAA8 },
   { 0x928B, 0xC784 },
   { 0x9295, 0xCCA0 },
   { 0x9299, 0xACFC },
   { 0x929A, 0xC870 },
   { 0x929B, 0xC12C },
   { 0x92C6, 0xC724 },
   { 0x92D1, 0xC804 },
   { 0x92D7, 0xD604 },
   { 0x92DF, 0xCE68 },
   { 0x92E5, 0xC815 },
   { 0x92F2, 0xBCD1 },
   { 0x92F9, 0xCC3D },
   { 0x92FA, 0xC6D0 },
   { 0x92FD, 0xC870 },
   { 0x9306, 0xCC3D },
   { 0x930F, 0xC544 },
   { 0x9315, 0xACE4 },
   { 0x9319, 0xCE58 },
   { 0x9323, 0xCCA0 },
   { 0x9327, 0xAD00 },
   { 0x932A, 0xC804 },
   { 0x932C, 0xB3D9 },
   { 0x9349, 0xC2DC },
   { 0x9357, 0xC81C },
   { 0x935C, 0xD558 },
   { 0x935D, 0xC6B0 },
   { 0x9364, 0xC0BD },
   { 0x936B, 0xCD08 },
   { 0x936C, 0xCD08 },
   { 0x9370, 0xD658 },
   { 0x938A, 0xBC29 },
   { 0x9397, 0xC7C1 },
   { 0x939B, 0xBC15 },
   { 0x939F, 0xC0C1 },
   { 0x93A1, 0xC790 },
   { 0x93A4, 0xD669 },
   { 0x93C7, 0xC120 },
   { 0x93C8, 0xB828 },
   { 0x93CA, 0xC624 },
   { 0x93CB, 0xB9CC },
   { 0x93CC, 0xB9C9 },
   { 0x93D6, 0xC624 },
   { 0x93D7, 0xAC31 },
   { 0x93D8, 0xC7A5 },
   { 0x93DC, 0xB2F9 },
   { 0x93DD, 0xB9CC },
   { 0x93DF, 0xC0B0 },
   { 0x93E2, 0xD45C },
   { 0x93E6, 0xCD1D },
   { 0x93E8, 0xCC38 },
   { 0x93FB, 0xB9B0 },
   { 0x9403, 0xB1E8 },
   { 0x940F, 0xC900 },
   { 0x9410, 0xB8CC },
   { 0x9413, 0xB300 },
   { 0x9414, 0xC2EC },
   { 0x9419, 0xB4F1 },
   { 0x942A, 0xB85C },
   { 0x9436, 0xD658 },
   { 0x943A, 0xB2F9 },
   { 0x9442, 0xD6C8 },
   { 0x944A, 0xD655 },
   { 0x944C, 0xBE48 },
   { 0x9455, 0xC9C8 },
   { 0x945E, 0xB78D },
   { 0x9460, 0xC0AD },
   { 0x9462, 0xB824 },
   { 0x9463, 0xD45C },
   { 0x946A, 0xB85C },
   { 0x9470, 0xC57D },
   { 0x9471, 0xCC38 },
   { 0x9472, 0xC591 },
   { 0x9475, 0xAD00 },
   { 0x9477, 0xC12D },
   { 0x947C, 0xB77C },
   { 0x947E, 0xB780 },
   { 0x9588, 0xD55C },
   { 0x958A, 0xC0B0 },
   { 0x958E, 0xAD49 },
   { 0x959F, 0xBE44 },
   { 0x95A9, 0xBBFC },
   { 0x95AB, 0xACE4 },
   { 0x95AC, 0xB791 },
   { 0x95B6, 0xCC3D },
   { 0x95B9, 0xC5C4 },
   { 0x95BD, 0xD63C },
   { 0x95BE, 0xC5ED },
   { 0x95C3, 0xACA9 },
   { 0x95C8, 0xC704 },
   { 0x95CB, 0xACB0 },
   { 0x95CC, 0xB780 },
   { 0x95CD, 0xB3C4 },
   { 0x95D3, 0xAC1C },
   { 0x95DA, 0xADDC },
   { 0x95DE, 0xD568 },
   { 0x95E0, 0xADA4 },
   { 0x95E5, 0xB2EC },
   { 0x9624, 0xCE58 },
   { 0x9628, 0xC561 },
   { 0x962F, 0xC9C0 },
   { 0x9658, 0xD615 },
   { 0x9661, 0xB450 },
   { 0x966C, 0xCD94 },
   { 0x9672, 0xC218 },
   { 0x9674, 0xBE44 },
   { 0x967C, 0xC800 },
   { 0x9684, 0xC81C },
   { 0x9691, 0xAE30 },
   { 0x9697, 0xC678 },
   { 0x96A4, 0xD1F4 },
   { 0x96A9, 0xC624 },
   { 0x96B0, 0xC2B5 },
   { 0x96B3, 0xD734 },
   { 0x96B4, 0xB871 },
   { 0x96B6, 0xC774 },
   { 0x96B8, 0xC608 },
   { 0x96B9, 0xCD94 },
   { 0x96BC, 0xC900 },
   { 0x96DA, 0xAD00 },
   { 0x96DD, 0xC639 },
   { 0x96DE, 0xACC4 },
   { 0x96FA, 0xBABD },
   { 0x9704, 0xC18C },
   { 0x9705, 0xC0BD },
   { 0x9708, 0xD328 },
   { 0x9709, 0xB9E4 },
   { 0x970C, 0xC8FC },
   { 0x970D, 0xACFD },
   { 0x970E, 0xC0BD },
   { 0x970F, 0xBE44 },
   { 0x9714, 0xC8FC },
   { 0x9723, 0xC6B4 },
   { 0x9726, 0xBE48 },
   { 0x972A, 0xC74C },
   { 0x9738, 0xD328 },
   { 0x9746, 0xCCB4 },
   { 0x9749, 0xC560 },
   { 0x974C, 0xBCF4 },
   { 0x975A, 0xC815 },
   { 0x975B, 0xC804 },
   { 0x975D, 0xCC9C },
   { 0x9760, 0xACE0 },
   { 0x9766, 0xC804 },
   { 0x9768, 0xC5FD },
   { 0x9773, 0xADFC },
   { 0x9775, 0xB274 },
   { 0x977C, 0xB2EC },
   { 0x9780, 0xB3C4 },
   { 0x9781, 0xD53C },
   { 0x9784, 0xD3EC },
   { 0x9785, 0xC559 },
   { 0x9798, 0xCD08 },
   { 0x97A3, 0xC720 },
   { 0x97A6, 0xCD94 },
   { 0x97AC, 0xAC74 },
   { 0x97B1, 0xB3C4 },
   { 0x97B4, 0xBE44 },
   { 0x97B8, 0xD544 },
   { 0x97B9, 0xACFD },
   { 0x97C1, 0xAC15 },
   { 0x97C3, 0xB2EC },
   { 0x97CD, 0xBD88 },
   { 0x97D0, 0xAC11 },
   { 0x97D9, 0xC704 },
   { 0x97DD, 0xAD6C },
   { 0x97DE, 0xC628 },
   { 0x97E0, 0xD544 },
   { 0x97E1, 0xC704 },
   { 0x97ED, 0xAD6C },
   { 0x97EE, 0xAD6C },
   { 0x97F1, 0xC12C },
   { 0x97F2, 0xC81C },
   { 0x97F5, 0xC6B4 },
   { 0x97FA, 0xC601 },
   { 0x980D, 0xADDC },
   { 0x980E, 0xAE30 },
   { 0x980F, 0xD56D },
   { 0x9816, 0xBC18 },
   { 0x981E, 0xC54C },
   { 0x9821, 0xD790 },
   { 0x9823, 0xC2E0 },
   { 0x9826, 0xD574 },
   { 0x982B, 0xBD80 },
   { 0x982E, 0xD68C },
   { 0x9837, 0xC554 },
   { 0x983F, 0xC790 },
   { 0x9842, 0xB8B0 },
   { 0x9847, 0xCDCC },
   { 0x9848, 0xACBD },
   { 0x984B, 0xC2DC },
   { 0x9852, 0xC639 },
   { 0x9853, 0xC804 },
   { 0x9859, 0xC0C1 },
   { 0x9866, 0xCD08 },
   { 0x9870, 0xBE48 },
   { 0x9871, 0xB85C },
   { 0x9873, 0xC12D },
   { 0x9874, 0xAD00 },
   { 0x98AD, 0xC810 },
   { 0x98B2, 0xB82C },
   { 0x98B6, 0xAD6C },
   { 0x98BA, 0xC591 },
   { 0x98BC, 0xC218 },
   { 0x98BF, 0xBC94 },
   { 0x98C2, 0xB8CC },
   { 0x98C9, 0xB8CC },
   { 0x98CB, 0xC2E4 },
   { 0x98E6, 0xC804 },
   { 0x98E7, 0xC190 },
   { 0x98EA, 0xC784 },
   { 0x98EB, 0xC5B4 },
   { 0x98F1, 0xC190 },
   { 0x98FB, 0xCCA0 },
   { 0x9912, 0xB1CC },
   { 0x9914, 0xD3EC },
   { 0x9915, 0xC900 },
   { 0x991A, 0xD6A8 },
   { 0x9926, 0xC7A5 },
   { 0x9927, 0xC704 },
   { 0x992A, 0xB09C },
   { 0x992C, 0xD638 },
   { 0x992E, 0xCCA0 },
   { 0x9930, 0xC804 },
   { 0x9931, 0xD6C4 },
   { 0x9933, 0xB2F9 },
   { 0x9939, 0xB2F9 },
   { 0x993C, 0xD76C },
   { 0x993D, 0xADA4 },
   { 0x9942, 0xC628 },
   { 0x9948, 0xC218 },
   { 0x9950, 0xC758 },
   { 0x9955, 0xB3C4 },
   { 0x995C, 0xC5FC },
   { 0x995E, 0xCC38 },
   { 0x9997, 0xADDC },
   { 0x9998, 0xAD35 },
   { 0x99A3, 0xC554 },
   { 0x99B0, 0xC801 },
   { 0x99C4, 0xD0DC },
   { 0x99C8, 0xAD6C },
   { 0x99C9, 0xACBD },
   { 0x99CF, 0xAC70 },
   { 0x99D8, 0xD0DC },
   { 0x99DB, 0xC0AC },
   { 0x99DC, 0xD544 },
   { 0x99DE, 0xD0C0 },
   { 0x99E2, 0xBCC0 },
   { 0x99E8, 0xC21C },
   { 0x99EA, 0xC2E0 },
   { 0x99EE, 0xBC15 },
   { 0x99F8, 0xCE68 },
   { 0x99FB, 0xD55C },
   { 0x99FD, 0xD604 },
   { 0x9A02, 0xC131 },
   { 0x9A03, 0xC560 },
   { 0x9A04, 0xB85D },
   { 0x9A05, 0xCD94 },
   { 0x9A0B, 0xB798 },
   { 0x9A0D, 0xACFC },
   { 0x9A11, 0xBE44 },
   { 0x9A16, 0xBB34 },
   { 0x9A18, 0xCD1D },
   { 0x9A1B, 0xBE44 },
   { 0x9A2D, 0xC990 },
   { 0x9A35, 0xC6D0 },
   { 0x9A38, 0xC120 },
   { 0x9A3E, 0xB77C },
   { 0x9A41, 0xC624 },
   { 0x9A42, 0xCC38 },
   { 0x9A44, 0xCD1D },
   { 0x9A4A, 0xD654 },
   { 0x9A4C, 0xC219 },
   { 0x9A4E, 0xB9B0 },
   { 0x9A4F, 0xC794 },
   { 0x9A52, 0xD0C4 },
   { 0x9A58, 0xB77C },
   { 0x9A64, 0xC591 },
   { 0x9AAA, 0xC704 },
   { 0x9AB0, 0xD22C },
   { 0x9AB9, 0xAD50 },
   { 0x9ABC, 0xACA9 },
   { 0x9ABF, 0xBCC0 },
   { 0x9AC0, 0xBE44 },
   { 0x9AC6, 0xBC15 },
   { 0x9ACF, 0xB8E8 },
   { 0x9AD1, 0xCD09 },
   { 0x9AD6, 0xAD00 },
   { 0x9AD7, 0xB85C },
   { 0x9ADF, 0xD45C },
   { 0x9AE1, 0xACE4 },
   { 0x9AE3, 0xBC29 },
   { 0x9AE6, 0xBAA8 },
   { 0x9AEB, 0xCD08 },
   { 0x9AED, 0xC790 },
   { 0x9AF0, 0xCCB4 },
   { 0x9AF2, 0xD53C },
   { 0x9AF4, 0xBD88 },
   { 0x9AF9, 0xD734 },
   { 0x9AFA, 0xAD04 },
   { 0x9AFB, 0xACC4 },
   { 0x9AFD, 0xC88C },
   { 0x9B02, 0xBE48 },
   { 0x9B05, 0xBD95 },
   { 0x9B06, 0xC1A1 },
   { 0x9B0A, 0xC21C },
   { 0x9B0B, 0xC804 },
   { 0x9B0D, 0xD638 },
   { 0x9B10, 0xAE30 },
   { 0x9B12, 0xC9C4 },
   { 0x9B16, 0xC0BC },
   { 0x9B18, 0xB9CC },
   { 0x9B19, 0xC2B9 },
   { 0x9B1F, 0xD658 },
   { 0x9B22, 0xBE48 },
   { 0x9B23, 0xB835 },
   { 0x9B28, 0xD64D },
   { 0x9B29, 0xD601 },
   { 0x9B2E, 0xAD6C },
   { 0x9B2F, 0xCC3D },
   { 0x9B32, 0xACA9 },
   { 0x9B3A, 0xC0C1 },
   { 0x9B48, 0xC18C },
   { 0x9B4B, 0xCD94 },
   { 0x9B4D, 0xB9DD },
   { 0x9B4E, 0xB7C9 },
   { 0x9B51, 0xB9AC },
   { 0x9B58, 0xC5FC },
   { 0x9B66, 0xC0AC },
   { 0x9B74, 0xBC29 },
   { 0x9B80, 0xD0C0 },
   { 0x9B83, 0xD3C9 },
   { 0x9B92, 0xBD80 },
   { 0x9B93, 0xC790 },
   { 0x9B97, 0xB3D9 },
   { 0x9BA7, 0xC81C },
   { 0x9BA8, 0xC9C0 },
   { 0x9BAA, 0xC720 },
   { 0x9BAD, 0xD574 },
   { 0x9BB9, 0xC18C },
   { 0x9BC1, 0xACBD },
   { 0x9BC6, 0xD3EC },
   { 0x9BCA, 0xC0AC },
   { 0x9BD4, 0xCE58 },
   { 0x9BDB, 0xC870 },
   { 0x9BE2, 0xC608 },
   { 0x9BF7, 0xC81C },
   { 0x9C08, 0xC811 },
   { 0x9C0A, 0xB828 },
   { 0x9C0C, 0xCD94 },
   { 0x9C13, 0xC0C8 },
   { 0x9C24, 0xC0AC },
   { 0x9C2D, 0xAE30 },
   { 0x9C2E, 0xC628 },
   { 0x9C2F, 0xC57D },
   { 0x9C31, 0xB828 },
   { 0x9C35, 0xBBFC },
   { 0x9C39, 0xACAC },
   { 0x9C3A, 0xC18C },
   { 0x9C3E, 0xD45C },
   { 0x9C4F, 0xC2EC },
   { 0x9C52, 0xC900 },
   { 0x9C53, 0xC120 },
   { 0x9C60, 0xD68C },
   { 0x9C63, 0xC804 },
   { 0x9C67, 0xB840 },
   { 0x9C78, 0xB85C },
   { 0x9C7B, 0xC120 },
   { 0x9CE6, 0xC744 },
   { 0x9D03, 0xACA9 },
   { 0x9D06, 0xC9D0 },
   { 0x9D07, 0xBCF4 },
   { 0x9D08, 0xC548 },
   { 0x9D0C, 0xBD09 },
   { 0x9D12, 0xB839 },
   { 0x9D15, 0xD0C0 },
   { 0x9D18, 0xBCC0 },
   { 0x9D19, 0xCE58 },
   { 0x9D1F, 0xCE58 },
   { 0x9D23, 0xACE0 },
   { 0x9D30, 0xAD04 },
   { 0x9D36, 0xC54C },
   { 0x9D41, 0xAD50 },
   { 0x9D42, 0xD734 },
   { 0x9D44, 0xCE58 },
   { 0x9D53, 0xBC1C },
   { 0x9D54, 0xC900 },
   { 0x9D5E, 0xC544 },
   { 0x9D69, 0xBCF5 },
   { 0x9D6F, 0xD544 },
   { 0x9D70, 0xC870 },
   { 0x9D77, 0xC6D0 },
   { 0x9D7B, 0xCD94 },
   { 0x9D7E, 0xACE4 },
   { 0x9D84, 0xCCAD },
   { 0x9D89, 0xC21C },
   { 0x9D96, 0xCD94 },
   { 0x9D9A, 0xC545 },
   { 0x9DA1, 0xAC08 },
   { 0x9DA4, 0xACE4 },
   { 0x9DAC, 0xCC3D },
   { 0x9DB5, 0xCD94 },
   { 0x9DB8, 0xC57D },
   { 0x9DB9, 0xB958 },
   { 0x9DBB, 0xACE8 },
   { 0x9DBF, 0xC790 },
   { 0x9DC1, 0xC775 },
   { 0x9DC2, 0xC694 },
   { 0x9DC7, 0xAD6C },
   { 0x9DD3, 0xC790 },
   { 0x9DD6, 0xC608 },
   { 0x9DD9, 0xC9C0 },
   { 0x9DE6, 0xCD08 },
   { 0x9DE9, 0xBCC4 },
   { 0x9DEA, 0xC575 },
   { 0x9DEB, 0xC219 },
   { 0x9DF0, 0xC5F0 },
   { 0x9DF1, 0xACE0 },
   { 0x9DF3, 0xD55C },
   { 0x9DFD, 0xD559 },
   { 0x9DFF, 0xBCBD },
   { 0x9E07, 0xC804 },
   { 0x9E0F, 0xBABD },
   { 0x9E15, 0xB85C },
   { 0x9E1B, 0xAD00 },
   { 0x9E1C, 0xAD6C },
   { 0x9E77, 0xB839 },
   { 0x9E7B, 0xAC10 },
   { 0x9E80, 0xC6B0 },
   { 0x9E82, 0xADA4 },
   { 0x9E84, 0xCD94 },
   { 0x9E8B, 0xBBF8 },
   { 0x9E8C, 0xC6B0 },
   { 0x9E8F, 0xADE0 },
   { 0x9E91, 0xC608 },
   { 0x9E9E, 0xC7A5 },
   { 0x9EA4, 0xCD94 },
   { 0x9EA9, 0xBD80 },
   { 0x9EAA, 0xBA74 },
   { 0x9EAF, 0xAD6D },
   { 0x9EBD, 0xB9C8 },
   { 0x9EBF, 0xB9C8 },
   { 0x9EC5, 0xAE08 },
   { 0x9ECC, 0xD6A1 },
   { 0x9ECF, 0xC810 },
   { 0x9ED0, 0xB9AC },
   { 0x9ED6, 0xAE30 },
   { 0x9EDA, 0xACB8 },
   { 0x9EDD, 0xC720 },
   { 0x9EE0, 0xD790 },
   { 0x9EE5, 0xACBD },
   { 0x9EEE, 0xB2F4 },
   { 0x9EEF, 0xC554 },
   { 0x9EF2, 0xCC38 },
   { 0x9EF5, 0xB2F4 },
   { 0x9EF6, 0xC5FC },
   { 0x9EF7, 0xB3C5 },
   { 0x9EFA, 0xBD84 },
   { 0x9EFB, 0xBD88 },
   { 0x9EFC, 0xBCF4 },
   { 0x9EFD, 0xBBFC },
   { 0x9EFF, 0xC6D0 },
   { 0x9F00, 0xCD95 },
   { 0x9F02, 0xC870 },
   { 0x9F04, 0xC8FC },
   { 0x9F09, 0xD0C0 },
   { 0x9F0A, 0xBCBD },
   { 0x9F10, 0xB0B4 },
   { 0x9F17, 0xB3C4 },
   { 0x9F19, 0xBE44 },
   { 0x9F22, 0xBD84 },
   { 0x9F2B, 0xC11D },
   { 0x9F2C, 0xC720 },
   { 0x9F2F, 0xC624 },
   { 0x9F34, 0xC5B8 },
   { 0x9F38, 0xACB8 },
   { 0x9F39, 0xC5B8 },
   { 0x9F3E, 0xD55C },
   { 0x9F54, 0xCE5C },
   { 0x9F55, 0xD758 },
   { 0x9F57, 0xC740 },
   { 0x9F60, 0xCD08 },
   { 0x9F66, 0xAC04 },
   { 0x9F69, 0xAD50 },
   { 0x9F6B, 0xACE4 },
   { 0x9F72, 0xC6B0 },
   { 0x9F76, 0xC545 },
   { 0x9F8E, 0xB871 },
   { 0x9F92, 0xB8E1 },
   { 0x9F94, 0xACF5 },
   { 0x9F9D, 0xCD94 },
   { 0x9FA0, 0xC57D },
   { 0x9FA2, 0xD654 },
   { 0x9FA5, 0xC720 },
  
  };
  
  static int hanja_table_size = sizeof(hanja_to_hangul) / sizeof(ConvTbl);
  
  UINT PASCAL
  hanja_search(UINT code)
  {
      int min, max,mid;
      /* binary search in table */
      min = 0;
      max = hanja_table_size;
      while (max >= min) {
          mid = (min + max) / 2;
          if (hanja_to_hangul[mid].key < code)
              min = mid + 1;
          else if (hanja_to_hangul[mid].key > code)
              max = mid - 1;
          else
              return hanja_to_hangul[mid].code;
      }
      return 0;
  }
  
  
  


wkpark      06/10/24 20:33:50

  Added:       resource word.dic
  Log:
  hanja word dic from the libhangul project.
  
  Revision  Changes    Path
  1.1                  saenaru/resource/word.dic
  
  	<<Binary file>>
  
  


wkpark      06/10/26 20:24:24

  Modified:    src      dic.c saenaru.h saenaru.rc sources
  Added:       src      hanjaidx.c
  Log:
  new hanja search routine to support hanja to hangul conversion with the Jinsuk data
  (Unified + Ext A  + Compatible)
  
  Revision  Changes    Path
  1.20      +23 -5     saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- dic.c	24 Oct 2006 11:27:08 -0000	1.19
  +++ dic.c	26 Oct 2006 11:24:24 -0000	1.20
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.19 2006/10/24 11:27:08 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.20 2006/10/26 11:24:24 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -257,6 +257,8 @@
           TCHAR   szKey[128];
           LPTSTR  lpDic;
           TCHAR   szDic[256];
  +        LPTSTR  lpIdx;
  +        TCHAR   szIdx[256];
           INT sz;
   
           if (0x7F > *lpT2) isasc=TRUE;
  @@ -289,15 +291,31 @@
           if (nBufLen < 1 && Mylstrlen(lpT2)==1 &&
                   (*lpT2 < 0xac00 || *lpT2 >=0xd7a8)) {
               // check the hanja_to_hangul table
  -            UINT han;
  -            han = hanja_search(*lpT2);
  -            if (han) {
  +            MYCHAR han[2];
  +
  +            lpIdx = (LPTSTR)&szIdx;
  +            LoadString( hInst, IDS_HIDX_KEY, lpKey, 128);
  +            lpIdx += GetSaenaruDirectory(lpIdx,256);
  +            if (*(lpIdx-1) != TEXT('\\')) *lpIdx++ = TEXT('\\');
  +
  +            sz= GetRegStringValue(TEXT("\\Dictionary"),lpKey,NULL);
  +            if (sz > 2) {
  +                sz= GetRegStringValue(TEXT("\\Dictionary"),(LPTSTR)lpKey,lpIdx);
  +                nBufLen = GetHangulFromHanjaIndex(lpT2, han, 2, (LPTSTR)szIdx);
  +                MyDebugPrint((TEXT("Saenaru: %s Idx %s:%d\n"),lpKey, szIdx,sz));
  +            }
  +#if 0
  +            else 
  +                han[0] = (MYCHAR)hanja_search(*lpT2);
  +#endif
  +            if (han[0]) {
  +                han[1]= 0;
                   //szBuf[0]= (MYCHAR)han; // set hangul
                   //szBuf[1]= MYTEXT(' ');
                   //szBuf[3]= 0;
                   //*lpT2=(MYCHAR)han;
                   // get hanja list for this hangul
  -                nBufLen = GetCandidateStringsFromDictionary((LPWSTR)&han,
  +                nBufLen = GetCandidateStringsFromDictionary(han,
                           szBuf+Mylstrlen(lpT2)+1, 1024, (LPTSTR)szDic);
               }
           }
  
  
  
  1.10      +3 -3      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- saenaru.h	24 Oct 2006 11:27:08 -0000	1.9
  +++ saenaru.h	26 Oct 2006 11:24:24 -0000	1.10
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.9 2006/10/24 11:27:08 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.10 2006/10/26 11:24:24 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -503,8 +503,8 @@
   int PASCAL set_compose(UINT);
   int PASCAL set_automata(UINT);
   
  -/* hanja.c       */
  -UINT PASCAL hanja_search(UINT);
  +/* hanjaidx.c       */
  +int GetHangulFromHanjaIndex(LPMYSTR, LPMYSTR, DWORD, LPTSTR);
   
   /* DIC2.C        */
   BOOL OneCharZenToHan(WCHAR ,WCHAR* ,WCHAR* );
  
  
  
  1.9       +1 -0      saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- saenaru.rc	11 Oct 2006 03:46:34 -0000	1.8
  +++ saenaru.rc	26 Oct 2006 11:24:24 -0000	1.9
  @@ -273,6 +273,7 @@
       IDS_DIC_KEY             ""
       IDS_SYM_KEY             "Symbol"
       IDS_WORD_KEY            "Word"
  +    IDS_HIDX_KEY            "HanjaIndex"
   END
   
   STRINGTABLE DISCARDABLE 
  
  
  
  1.5       +1 -1      saenaru/src/sources
  
  Index: sources
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/sources,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- sources	24 Oct 2006 11:29:05 -0000	1.4
  +++ sources	26 Oct 2006 11:24:24 -0000	1.5
  @@ -35,7 +35,7 @@
           data.c \
           dic.c \
           hangul.c \
  -        hanja.c \
  +        hanjaidx.c \
           saenaru.c \
           reg.c \
           imm.c \
  
  
  
  1.1                  saenaru/src/hanjaidx.c
  
  Index: hanjaidx.c
  ===================================================================
  /*
   * This file is part of Saenaru.
   *
   * Copyright (c) 1990-1998 Microsoft Corporation.
   * Copyright (c) 2006 Hye-Shik Chang <perky@i18n.org>.
   * Copyright (c) 2006 Won-Kyu Park <wkpark@kldp.org>.
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in the
   *    documentation and/or other materials provided with the distribution.
   *
   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   *
   * $Saenaru: saenaru/src/hanjaidx.c,v 1.1 2006/10/26 11:24:24 wkpark Exp $
   */
  
  #include <windows.h>
  #include <immdev.h>
  #include "saenaru.h"
  #include "immsec.h"
  
  #define IDX_COL	32
  #define UNIHAN_UNI 20902
  #define UNIHAN_EXTA 6582
  #define UNIHAN_COMP 301
  #define CRLF 4
  
  UINT PASCAL
  hanja_idx(UINT code)
  {
      UINT offset=0;
  
      UINT numUni=UNIHAN_UNI;
      UINT numExta=UNIHAN_EXTA;
      int tmp;
  
      tmp = numUni % IDX_COL;
      numUni += tmp ? (IDX_COL - tmp):0;
      tmp = numExta % IDX_COL;
      numExta += tmp ? (IDX_COL - tmp):0;
  
      if (code < 0x3400 || code >=0xfaff) return -1;
  
      if (code >= 0xf900) {
      	offset= code - 0xf900;
  	offset += numUni + numExta;
      } else if (code >= 0x4e00) {
      	offset= code - 0x4e00;
  	offset += numExta;
      } else /* if (code >= 0x3400) */ {
      	offset= code - 0x3400;
      }
  
      tmp= offset / IDX_COL;
      offset*=2; /* 2-bytes */
      offset += tmp ? tmp*CRLF:0;
      return offset;
  }
  
  int GetHangulFromHanjaIndex(LPMYSTR lpRead, LPMYSTR lpBuf, DWORD dwBufLen, LPTSTR lpFilename)
  {
      HANDLE hTblFile;
      PSECURITY_ATTRIBUTES psa;
      int nSize = 0;
      DWORD dwFileSize, dwRead;
      LPMYSTR lpDic;
  
      psa = CreateSecurityAttributes();
  
      hTblFile = CreateFile(lpFilename, 
                            GENERIC_READ,
                            FILE_SHARE_READ,
                            NULL, 
                            OPEN_EXISTING,
                            FILE_ATTRIBUTE_NORMAL, 
                            (HANDLE)NULL);
  
      if (hTblFile == INVALID_HANDLE_VALUE) {
          goto Err0;
      }
  
      if (dwBufLen >=1) 
      {
          MYCHAR szBuf[4];
          int hsz=0;
          UINT offset;
  
          lpDic=szBuf;
  
          if (!ReadFile(hTblFile, lpDic, 2, &dwRead, NULL))
              goto Err0;
          if (*lpDic != 0xfeff)
              goto Err1;// bom ?
  
          if (ReadFile(hTblFile, lpDic, 2, &dwRead, NULL))
          {
              if (*lpDic == MYTEXT('#')) { // read some header
                  hsz+=dwRead;
                  while (ReadFile(hTblFile, lpDic, 2, &dwRead, NULL)) {
                      hsz+=dwRead;
                      if (dwRead == 2 && *lpDic == MYTEXT('\n'))
                          break;
                  }
              }
          }
          if (!hsz)
              SetFilePointer(hTblFile, 2, NULL, FILE_BEGIN);
  
          offset=hanja_idx(*lpRead);
  
          SetFilePointer(hTblFile, offset, NULL, FILE_CURRENT);
          if (ReadFile(hTblFile, lpDic, 2, &dwRead, NULL)) {
              *(LPWSTR)(((LPBYTE)lpDic) + 2) = MYTEXT('\0');
              MyDebugPrint((TEXT(" *** Hangul= %x\n"),*lpDic));
              *lpBuf=*lpDic;
              nSize=2;
          }
      }
  
  Err1:
      CloseHandle(hTblFile);
  
  Err0:
      FreeSecurityAttributes(psa);
      return nSize;
  }
  
  /*
   * ex: ts=8 sts=4 sw=4 et
   */
  
  
  


wkpark      06/10/26 20:25:51

  Modified:    src      resource.h
  Log:
  new hanja search routine to support hanja to hangul conversion with the Jinsuk data
  (Unified + Ext A  + Compatible)
  
  Revision  Changes    Path
  1.7       +4 -3      saenaru/src/resource.h
  
  Index: resource.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/resource.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- resource.h	11 Oct 2006 03:46:34 -0000	1.6
  +++ resource.h	26 Oct 2006 11:25:51 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/resource.h,v 1.6 2006/10/11 03:46:34 wkpark Exp $
  + * $Saenaru: saenaru/src/resource.h,v 1.7 2006/10/26 11:25:51 wkpark Exp $
    */
   
   //{{NO_DEPENDENCIES}}
  @@ -81,8 +81,9 @@
   #define IDS_CONFIGNAME              1000
   #define IDS_DICFILENAME             1003
   #define IDS_DIC_KEY                 1005
  -#define IDS_WORD_KEY                1006
  -#define IDS_SYM_KEY                 1007
  +#define IDS_SYM_KEY                 1006
  +#define IDS_WORD_KEY                1007
  +#define IDS_HIDX_KEY                1008
   
   #define IDS_GL_NODICTIONARY         1010
   #define IDS_GL_TYPINGERROR          1011
  
  
  


wkpark      06/10/27 07:37:24

  Modified:    src      hanjaidx.c
  Log:
  fix for multiple comment lines
  
  Revision  Changes    Path
  1.2       +8 -11     saenaru/src/hanjaidx.c
  
  Index: hanjaidx.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hanjaidx.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- hanjaidx.c	26 Oct 2006 11:24:24 -0000	1.1
  +++ hanjaidx.c	26 Oct 2006 22:37:24 -0000	1.2
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hanjaidx.c,v 1.1 2006/10/26 11:24:24 wkpark Exp $
  + * $Saenaru: saenaru/src/hanjaidx.c,v 1.2 2006/10/26 22:37:24 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -108,19 +108,16 @@
           if (*lpDic != 0xfeff)
               goto Err1;// bom ?
   
  -        if (ReadFile(hTblFile, lpDic, 2, &dwRead, NULL))
  -        {
  -            if (*lpDic == MYTEXT('#')) { // read some header
  +        while (ReadFile(hTblFile, lpDic, 2, &dwRead, NULL)) {
  +            if (*lpDic != MYTEXT('#')) break; // read some header
  +            hsz+=dwRead;
  +            while (ReadFile(hTblFile, lpDic, 2, &dwRead, NULL)) {
                   hsz+=dwRead;
  -                while (ReadFile(hTblFile, lpDic, 2, &dwRead, NULL)) {
  -                    hsz+=dwRead;
  -                    if (dwRead == 2 && *lpDic == MYTEXT('\n'))
  -                        break;
  -                }
  +                if (dwRead == 2 && *lpDic == MYTEXT('\n'))
  +                    break;
               }
           }
  -        if (!hsz)
  -            SetFilePointer(hTblFile, 2, NULL, FILE_BEGIN);
  +        SetFilePointer(hTblFile, -2, NULL, FILE_CURRENT);
   
           offset=hanja_idx(*lpRead);
   
  
  
  


wkpark      06/10/28 00:23:17

  Added:       resource jinsuk.dic
  Log:
  add the Jinsuk unihan data (Unified + Ext A  + Compatible)
  
  Revision  Changes    Path
  1.1                  saenaru/resource/jinsuk.dic
  
  	<<Binary file>>
  
  


wkpark      06/10/29 19:50:42

  Modified:    src      dic.c
  Log:
  more fixes to last changes
  
  Revision  Changes    Path
  1.21      +6 -2      saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- dic.c	26 Oct 2006 11:24:24 -0000	1.20
  +++ dic.c	29 Oct 2006 10:50:42 -0000	1.21
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.20 2006/10/26 11:24:24 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.21 2006/10/29 10:50:42 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -310,7 +310,8 @@
   #endif
               if (han[0]) {
                   han[1]= 0;
  -                //szBuf[0]= (MYCHAR)han; // set hangul
  +                szBuf[0]= (MYCHAR)han[0]; // set hangul
  +                szBuf[1]= 0;
                   //szBuf[1]= MYTEXT(' ');
                   //szBuf[3]= 0;
                   //*lpT2=(MYCHAR)han;
  @@ -584,8 +585,11 @@
           // If the selected candidate string is changed, the composition string
           // should be updated.
           //
  +        if (select != -1)
           lpstr = (LPMYSTR)((LPSTR)lpCandList +
                      lpCandList->dwOffset[lpCandList->dwSelection]);
  +        else
  +            lpstr = lpT2;
           goto set_compstr;
   
       }
  
  
  


wkpark      06/11/01 04:14:33

  Modified:    src      config.c resource.h saenaru.h saenaru.rc
  Log:
  added Qwerty shortcut key option for Dvorak.
  
  Revision  Changes    Path
  1.6       +5 -1      saenaru/src/config.c
  
  Index: config.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/config.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- config.c	8 Oct 2006 09:16:02 -0000	1.5
  +++ config.c	31 Oct 2006 19:14:32 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/config.c,v 1.5 2006/10/08 09:16:02 wkpark Exp $
  + * $Saenaru: saenaru/src/config.c,v 1.6 2006/10/31 19:14:32 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -210,6 +210,8 @@
                           dwTemp |= USE_SHIFT_SPACE;
                       if (IsDlgButtonChecked(hDlg, IDC_DVORAK_SUPPORT))
                           dwTemp |= DVORAK_SUPPORT;
  +                    if (IsDlgButtonChecked(hDlg, IDC_QWERTY_HOTKEY_SUPPORT))
  +                        dwTemp |= QWERTY_HOTKEY_SUPPORT;
                       if (IsDlgButtonChecked(hDlg, IDC_ESCENG_SUPPORT))
                           dwTemp |= ESCENG_SUPPORT;
                       dwOptionFlag = dwTemp;
  @@ -287,6 +289,8 @@
                                   (dwOptionFlag & FULL_MULTIJOMO) ? 1 : 0);
               CheckDlgButton(hDlg, IDC_DVORAK_SUPPORT, 
                                   (dwOptionFlag & DVORAK_SUPPORT) ? 1 : 0);
  +            CheckDlgButton(hDlg, IDC_QWERTY_HOTKEY_SUPPORT, 
  +                                (dwOptionFlag & QWERTY_HOTKEY_SUPPORT) ? 1 : 0);
               CheckDlgButton(hDlg, IDC_ESCENG_SUPPORT, 
                                   (dwOptionFlag & ESCENG_SUPPORT) ? 1 : 0);
               CheckDlgButton(hDlg, IDC_USE_SHIFT_SPACE, 
  
  
  
  1.8       +2 -1      saenaru/src/resource.h
  
  Index: resource.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/resource.h,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- resource.h	26 Oct 2006 11:25:51 -0000	1.7
  +++ resource.h	31 Oct 2006 19:14:32 -0000	1.8
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/resource.h,v 1.7 2006/10/26 11:25:51 wkpark Exp $
  + * $Saenaru: saenaru/src/resource.h,v 1.8 2006/10/31 19:14:32 wkpark Exp $
    */
   
   //{{NO_DEPENDENCIES}}
  @@ -76,6 +76,7 @@
   #define IDC_FULL_MULTIJOMO      2006
   #define IDC_USE_SHIFT_SPACE     2007
   #define IDC_ESCENG_SUPPORT      2008
  +#define IDC_QWERTY_HOTKEY_SUPPORT 2009
   
   /* string tables */
   #define IDS_CONFIGNAME              1000
  
  
  
  1.11      +2 -1      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- saenaru.h	26 Oct 2006 11:24:24 -0000	1.10
  +++ saenaru.h	31 Oct 2006 19:14:32 -0000	1.11
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.10 2006/10/26 11:24:24 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.11 2006/10/31 19:14:32 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -67,6 +67,7 @@
   #define USE_SHIFT_SPACE        0x00000080
   #define DVORAK_SUPPORT         0x00000100
   #define ESCENG_SUPPORT         0x00000200
  +#define QWERTY_HOTKEY_SUPPORT  0x00000400
   
   
   /**********************************************************************/
  
  
  
  1.10      +21 -6     saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- saenaru.rc	26 Oct 2006 11:24:24 -0000	1.9
  +++ saenaru.rc	31 Oct 2006 19:14:32 -0000	1.10
  @@ -90,6 +90,18 @@
                       BS_AUTOCHECKBOX | WS_TABSTOP,26,79,53,10
       CONTROL         "ġ (&C)",IDC_CONCURRENT_TYPING,"Button",
                       BS_AUTOCHECKBOX | WS_TABSTOP,83,79,53,10
  +
  +    CONTROL         "ڼ   (&J)", IDC_BACKSPACE_BY_JAMO, "Button",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP, 138, 79, 71, 10 
  +    CONTROL         "<ESC> ȯ (&E)", IDC_ESCENG_SUPPORT, "Button",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP, 26, 103,109, 10 
  +    CONTROL         "<Shift>-<SPACE> /Ű (&H)", IDC_USE_SHIFT_SPACE, "Button",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP, 26, 91, 109, 10 
  +    CONTROL         "庸  (&V)", IDC_DVORAK_SUPPORT, "Button",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP, 138, 91, 70, 10 
  +    CONTROL         "Ƽ Ű (&Q)", IDC_QWERTY_HOTKEY_SUPPORT, "Button",
  +                    BS_AUTOCHECKBOX | WS_TABSTOP, 138, 103, 70, 10 
  +/*
       CONTROL         "庸  (&V)",IDC_DVORAK_SUPPORT,"Button",
                       BS_AUTOCHECKBOX | WS_TABSTOP,138,79,60,10
       CONTROL         "ڼ   (&J)",IDC_BACKSPACE_BY_JAMO,"Button",
  @@ -98,6 +110,7 @@
                       BS_AUTOCHECKBOX | WS_TABSTOP,104, 91,83,10
       CONTROL         "<Shift>-<SPACE> / ȯ (&H)",IDC_USE_SHIFT_SPACE,"Button",
                       BS_AUTOCHECKBOX | WS_TABSTOP,26,103,124,10
  +*/
       CONTROL         "Ȯ(KS X 1002)  (&X)",IDC_KSX1002_SUPPORT,
                       "Button",BS_AUTOCHECKBOX | WS_TABSTOP,26,115,156,10
       CONTROL         "ϼ(KS X 1001) ѱ   (&K)",IDC_KSX1001_SUPPORT,
  @@ -357,15 +370,17 @@
      CONTROL	"Co&llective", IDC_COMPOSITE_TYPING, BUTTON,
   		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,79,53,10 
      CONTROL	"&Concurrent", IDC_CONCURRENT_TYPING, BUTTON,
  -		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,83,79,53,10 
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,83,79,49,10 
      CONTROL	"D&Vorak", IDC_DVORAK_SUPPORT, BUTTON,
  -		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,138,79,60,10 
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,106,91,35,10
  +   CONTROL      "&Qwerty shortcut", IDC_QWERTY_HOTKEY_SUPPORT , BUTTON,
  +                BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,143,91,67,10 
      CONTROL	"Delete by &Jaso unit", IDC_BACKSPACE_BY_JAMO, BUTTON,
  -		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,91,71,10 
  -   CONTROL	"<&ESC> to Ascii mode", IDC_ESCENG_SUPPORT, BUTTON,
  -		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,109,91,88,10 
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,135,79,71,10
  +   CONTROL	"<&ESC> to ENG mode", IDC_ESCENG_SUPPORT, BUTTON,
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,91,79,10 
      CONTROL	"<Shift>-<SPACE> toggle &Han/Eng mode", IDC_USE_SHIFT_SPACE, BUTTON,
  -		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,103,155,10 
  +		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,103,155,10
      CONTROL	"Support e&Xtended Hanja (KS X 1002) ", IDC_KSX1002_SUPPORT, BUTTON,
   		BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP,26,115,156,10 
      CONTROL	"Restrict to Wansung (&KS X 1001) syllables", IDC_KSX1001_SUPPORT, BUTTON,
  
  
  


wkpark      06/11/03 23:36:31

  Modified:    resource word.dic
  Log:
  sync with the hanja.txt of the libhangul
  
  Revision  Changes    Path
  1.2       +3622 -0   saenaru/resource/word.dic
  
  	<<Binary file>>
  
  


wkpark      06/11/04 01:18:07

  Modified:    src      btnime.cpp saenaru.h saenaru.rc
  Log:
  support keyboard type (2set or 3set) icon
  
  Revision  Changes    Path
  1.6       +16 -2     saenaru/src/btnime.cpp
  
  Index: btnime.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btnime.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- btnime.cpp	11 Oct 2006 03:46:34 -0000	1.5
  +++ btnime.cpp	3 Nov 2006 16:18:07 -0000	1.6
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btnime.cpp,v 1.5 2006/10/11 03:46:34 wkpark Exp $
  + * $Saenaru: saenaru/src/btnime.cpp,v 1.6 2006/11/03 16:18:07 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -531,6 +531,8 @@
       } else {
           _Menu_SelectCompose (wID);
       }
  +
  +    UpdateLanguageBar();
       return    S_OK;
   }
   
  @@ -538,12 +540,24 @@
   CLangBarItemImeButton::GetIcon (
       HICON*                    phIcon)
   {
  +    LPCTSTR str = NULL;
  +    HIMC hIMC;
       DEBUGPRINTFEX (100, (TEXT ("CLangBarItemImeButton::GetIcon(%p)\n"), phIcon));
   
       if (phIcon == NULL)
           return    E_INVALIDARG;
   
  -    *phIcon    = (HICON)LoadImage (hInst, TEXT ("INDIC_KEY"), IMAGE_ICON, 16, 16, 0);
  +
  +    hIMC= _GetCurrentHIMC();
  +    str = TEXT("INDIC_KEY");
  +    if (hIMC != NULL) {
  +        if (dwImeFlag & AUTOMATA_3SET)
  +	    str = TEXT("INDIC_3SET");
  +	else
  +	    str = TEXT("INDIC_2SET");
  +    }
  +
  +    *phIcon    = (HICON)LoadImage (hInst, str, IMAGE_ICON, 16, 16, 0);
       return (*phIcon != NULL) ? S_OK : E_FAIL;
   }
   
  
  
  
  1.12      +3 -1      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- saenaru.h	31 Oct 2006 19:14:32 -0000	1.11
  +++ saenaru.h	3 Nov 2006 16:18:07 -0000	1.12
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.11 2006/10/31 19:14:32 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.12 2006/11/03 16:18:07 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -56,6 +56,8 @@
   
   #define SAENARU_ONTHESPOT      0x00020000
   #define SAENARU_MODE_CANDIDATE 0x00040000
  +#define AUTOMATA_2SET          0x00100000
  +#define AUTOMATA_3SET          0x00200000
   
   #define COMPOSITE_TYPING       0x00000001
   #define CONCURRENT_TYPING      0x00000002
  
  
  
  1.11      +2 -0      saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- saenaru.rc	31 Oct 2006 19:14:32 -0000	1.10
  +++ saenaru.rc	3 Nov 2006 16:18:07 -0000	1.11
  @@ -42,6 +42,8 @@
   INDIC_HALF	ICON    DISCARDABLE		"..\\resource\\half.ico"
   INDIC_FULL	ICON    DISCARDABLE		"..\\resource\\full.ico"
   INDIC_PAD	ICON    DISCARDABLE		"..\\resource\\imepad.ico"
  +INDIC_2SET	ICON    DISCARDABLE		"..\\resource\\2set.ico"
  +INDIC_3SET	ICON    DISCARDABLE		"..\\resource\\3set.ico"
   
   /////////////////////////////////////////////////////////////////////////////
   //
  
  
  


wkpark      06/11/04 01:19:36

  Modified:    src      hangul.c
  Log:
  support keyboard type (2set or 3set) icon
  
  Revision  Changes    Path
  1.17      +7 -5      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- hangul.c	23 Oct 2006 07:41:39 -0000	1.16
  +++ hangul.c	3 Nov 2006 16:19:36 -0000	1.17
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.16 2006/10/23 07:41:39 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.17 2006/11/03 16:19:36 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1429,10 +1429,12 @@
   int PASCAL set_automata(UINT type)
   {
       if (type == 0 || type == 1)
  -        return 0;	
  -    if (type == 2)
  -        hangul_automata=hangul_automata2;
  -    else if (type == 3)
  +        return 0;
  +
  +    dwImeFlag &= ~AUTOMATA_3SET;
  +    dwImeFlag &= ~AUTOMATA_2SET;
  +    dwImeFlag|= (type==3) ? AUTOMATA_3SET:AUTOMATA_2SET;
  +    if (type == 3)
           hangul_automata=hangul_automata3;
       else
           hangul_automata=hangul_automata2;
  
  
  


wkpark      06/11/04 01:21:22

  Modified:    src      btncmd.cpp dic.c
  Log:
  use CMODE_HANJACONVERT to support more user friendly hanja mode
  
  Revision  Changes    Path
  1.5       +4 -4      saenaru/src/btncmd.cpp
  
  Index: btncmd.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btncmd.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- btncmd.cpp	11 Oct 2006 03:46:34 -0000	1.4
  +++ btncmd.cpp	3 Nov 2006 16:21:22 -0000	1.5
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btncmd.cpp,v 1.4 2006/10/11 03:46:34 wkpark Exp $
  + * $Saenaru: saenaru/src/btncmd.cpp,v 1.5 2006/11/03 16:21:22 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -352,7 +352,7 @@
   
   	if (ImmGetOpenStatus (hIMC)) {
   		if (ImmGetConversionStatus (hIMC, &dwConversion, &dwSentence)) {
  -			if (dwConversion & IME_CMODE_FULLSHAPE){
  +			if (dwConversion & IME_CMODE_HANJACONVERT){
   				if (dwConversion & IME_CMODE_NATIVE)
   				{
   					str	= TEXT ("INDIC_HANJA") ;
  @@ -458,7 +458,7 @@
   void
   _Menu_ToHanja    (void)
   {
  -	_Menu_ToCMode (IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE) ;
  +	_Menu_ToCMode (IME_CMODE_NATIVE | IME_CMODE_HANJACONVERT) ;
   }
   
   void
  @@ -501,7 +501,7 @@
   	if (! ImmGetConversionStatus (hIMC, &dwConversion, &dwSentense))
   		return	MENU_ITEM_INDEX_CANCEL ;
   
  -	if (dwConversion & IME_CMODE_FULLSHAPE){
  +	if (dwConversion & IME_CMODE_HANJACONVERT){
   		if (dwConversion & IME_CMODE_NATIVE){
   			return	MENU_ITEM_INDEX_HANJA ;
   		} else {
  
  
  
  1.22      +2 -2      saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- dic.c	29 Oct 2006 10:50:42 -0000	1.21
  +++ dic.c	3 Nov 2006 16:21:22 -0000	1.22
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.21 2006/10/29 10:50:42 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.22 2006/11/03 16:21:22 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1461,7 +1461,7 @@
               ImmUnlockIMC(hIMC);
   
               if (IsCompStr(hIMC) &&
  -                    (fdwConversion & IME_CMODE_FULLSHAPE) &&
  +                    (fdwConversion & IME_CMODE_HANJACONVERT) &&
                       (fdwConversion & IME_CMODE_NATIVE)) {
                   hangul_ic_init(&ic);
                   ConvHanja(hIMC,1,0);
  
  
  


wkpark      06/11/04 01:22:50

  Added:       resource 2set.ico 3set.ico
  Log:
  2set.ico 3set.ico added
  
  Revision  Changes    Path
  1.1                  saenaru/resource/2set.ico
  
  	<<Binary file>>
  
  
  1.1                  saenaru/resource/3set.ico
  
  	<<Binary file>>
  
  


wkpark      06/11/04 09:30:04

  Modified:    src      ui.c
  Log:
  added Qwerty shortcut key option for Dvorak
  check kbddv.dll
  
  Revision  Changes    Path
  1.19      +17 -23    saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- ui.c	22 Oct 2006 22:04:28 -0000	1.18
  +++ ui.c	4 Nov 2006 00:30:04 -0000	1.19
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.18 2006/10/22 22:04:28 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.19 2006/11/04 00:30:04 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -202,7 +202,6 @@
       HGLOBAL        hUIExtra;
       LONG           lRet = 0L;
       int            i;
  -    static BOOL    iConsoleHookLoaded=0;
   
       hUICurIMC = (HIMC)GetWindowLongPtr(hWnd,IMMGWLP_IMC);
   
  @@ -1099,9 +1098,8 @@
   
   BOOL WINAPI SetConsoleHookFunc(void)
   {
  -    HMODULE hMod;
  -    hMod = GetModuleHandleA("kernel32");
  -    if((hConsoleHookID=SetWindowsHookEx(WH_KEYBOARD_LL, SAENARUConKbdProc, (HINSTANCE) hInst,  GetCurrentThreadId() )) == NULL)
  +    if((hConsoleHookID=SetWindowsHookEx(WH_KEYBOARD_LL, SAENARUConKbdProc, (HINSTANCE) hInst, 0 )) == NULL) // all
  +    //if((hConsoleHookID=SetWindowsHookEx(WH_KEYBOARD_LL, SAENARUConKbdProc, (HINSTANCE) NULL,  GetCurrentThreadId() )) == NULL)
           return FALSE;
       return TRUE;
   }
  @@ -1223,17 +1221,24 @@
       LPMSG lpmsg;
       UINT vKey;
       SHORT ALT;
  +    HKL hcur;
       BOOL nocheck = FALSE;
  -
       BOOL dvorak = FALSE;
  +    BOOL fDvorak = dwOptionFlag & DVORAK_SUPPORT;
   
       if (code < 0)
           return CallNextHookEx(hHookWnd, code, wParam, lParam);
   
  +    /* check dvorak layout */
  +    /* XXX */
  +    hcur= GetKeyboardLayout(0);
  +    if ((DWORD)hcur == 0xE0130412)
  +        fDvorak = FALSE; // do not convert. It is already dvorak!!
  +
       GetKeyboardState((LPBYTE)&pbKeyState);
       nocheck = pbKeyState[VK_CONTROL] & 0x80 || pbKeyState[VK_MENU] & 0x80;
   
  -    if (dwOptionFlag & DVORAK_SUPPORT) {
  +    if (fDvorak) {
           HWND hwnd = GetFocus ();
           
           dvorak = TRUE;
  @@ -1263,18 +1268,6 @@
           case WM_KEYUP:
               break;
           case WM_KEYDOWN:
  -#if 0
  -            if ((dwImeFlag & SAENARU_DVORAK ) &&
  -                (vKey >= '!' && vKey <= '~'))
  -            {
  -                 WORD dv;
  -                 SHORT sc;
  -                 dv = qwerty2dvorak_table[vKey - '!'];
  -                 sc = VkKeyScan(dv);
  -                 // lpmsg->wParam = sc; XXX
  -            }
  -            else
  -#endif
               //GetKeyboardState((LPBYTE)&pbKeyState);
               if ( vKey == VK_SPACE && dwOptionFlag & USE_SHIFT_SPACE)
               {
  @@ -1295,7 +1288,8 @@
                        lpmsg->lParam=(0xF2<<16) | 0x41000001;
                   }
               } else 
  -            if ( dvorak && pbKeyState[VK_CONTROL] & 0x80) {
  +            if ( dvorak && pbKeyState[VK_CONTROL] & 0x80 &&
  +                    !(dwOptionFlag & QWERTY_HOTKEY_SUPPORT) ) {
                   if (vKey >= VK_OEM_1 && vKey <= VK_OEM_102) {
                       WORD ch;
                       UINT sc;
  @@ -1315,6 +1309,8 @@
               }
               break;
           case WM_SYSCHAR:
  +            if  (dwOptionFlag & QWERTY_HOTKEY_SUPPORT)
  +                break;
           case WM_CHAR:
   #ifndef NO_DVORAK
               if (dvorak &&
  @@ -1399,9 +1395,7 @@
   
   LRESULT CALLBACK SAENARUConKbdProc(int nCode,WPARAM wParam, LPARAM lParam)
   {
  -#define CON_WM_KEYDOWN 0x100
  -
  -    if (nCode >= 0 && wParam == CON_WM_KEYDOWN)
  +    if (nCode >= 0 && wParam == WM_KEYDOWN)
       {
   #if 0
           int vkCode = Marshal.ReadInt32(lParam);
  
  
  


wkpark      06/11/04 09:32:34

  Modified:    src      hangul.c imm.c saenaru.h
  Log:
  kbddv.dll (native dvorak keyboard driver) support added
  
  Revision  Changes    Path
  1.18      +115 -2    saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- hangul.c	3 Nov 2006 16:19:36 -0000	1.17
  +++ hangul.c	4 Nov 2006 00:32:34 -0000	1.18
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.17 2006/11/03 16:19:36 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.18 2006/11/04 00:32:34 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -338,6 +338,104 @@
       return ch;
   }
   
  +// dvorak 2 qwerty mapping for the kbddv.dll driver.
  +static const WCHAR dvorak2qwerty_table[] = {
  +  0x0021,    /* GDK_exclam */
  +  0x0051,    /* GDK_Q */
  +  0x0023,    /* GDK_numbersign */
  +  0x0024,    /* GDK_dollar */
  +  0x0025,    /* GDK_percent */
  +  0x0026,    /* GDK_ampersand */
  +  0x0071,    /* GDK_q */
  +  0x0028,    /* GDK_parenleft */
  +  0x0029,    /* GDK_parenright */
  +  0x002a,    /* GDK_KP_Multiply */
  +  0x007d,    /* GDK_braceright */
  +  0x0077,    /* GDK_w */
  +  0x0027,    /* GDK_quoteright */
  +  0x0065,    /* GDK_e */
  +  0x005b,    /* GDK_bracketleft */
  +  0x0030,    /* GDK_KP_0 */
  +  0x0031,    /* GDK_KP_1 */
  +  0x0032,    /* GDK_KP_2 */
  +  0x0033,    /* GDK_KP_3 */
  +  0x0034,    /* GDK_KP_4 */
  +  0x0035,    /* GDK_KP_5 */
  +  0x0036,    /* GDK_KP_6 */
  +  0x0037,    /* GDK_KP_7 */
  +  0x0038,    /* GDK_KP_8 */
  +  0x0039,    /* GDK_KP_9 */
  +  0x005a,    /* GDK_Z */
  +  0x007a,    /* GDK_z */
  +  0x0057,    /* GDK_W */
  +  0x005d,    /* GDK_bracketright */
  +  0x0045,    /* GDK_E */
  +  0x007b,    /* GDK_braceleft */
  +  0x0040,    /* GDK_at */
  +  0x0041,    /* GDK_A */
  +  0x004e,    /* GDK_N */
  +  0x0049,    /* GDK_I */
  +  0x0048,    /* GDK_H */
  +  0x0044,    /* GDK_D */
  +  0x0059,    /* GDK_Y */
  +  0x0055,    /* GDK_U */
  +  0x004a,    /* GDK_J */
  +  0x0047,    /* GDK_G */
  +  0x0043,    /* GDK_C */
  +  0x0056,    /* GDK_V */
  +  0x0050,    /* GDK_P */
  +  0x004d,    /* GDK_M */
  +  0x004c,    /* GDK_L */
  +  0x0053,    /* GDK_S */
  +  0x0052,    /* GDK_R */
  +  0x0058,    /* GDK_X */
  +  0x004f,    /* GDK_O */
  +  0x003a,    /* GDK_colon */
  +  0x004b,    /* GDK_K */
  +  0x0046,    /* GDK_F */
  +  0x003e,    /* GDK_rightcaret */
  +  0x003c,    /* GDK_leftcaret */
  +  0x0042,    /* GDK_B */
  +  0x0054,    /* GDK_T */
  +  0x003f,    /* GDK_question */
  +  0x002d,    /* GDK_KP_Subtract */
  +  0x005c,    /* GDK_backslash */
  +  0x003d,    /* GDK_KP_Equal */
  +  0x005e,    /* GDK_asciicircum */
  +  0x0022,    /* GDK_quotedbl */
  +  0x0060,    /* GDK_quoteleft */
  +  0x0061,    /* GDK_a */
  +  0x006e,    /* GDK_n */
  +  0x0069,    /* GDK_i */
  +  0x0068,    /* GDK_h */
  +  0x0064,    /* GDK_d */
  +  0x0079,    /* GDK_y */
  +  0x0075,    /* GDK_u */
  +  0x006a,    /* GDK_j */
  +  0x0067,    /* GDK_g */
  +  0x0063,    /* GDK_c */
  +  0x0076,    /* GDK_v */
  +  0x0070,    /* GDK_p */
  +  0x006d,    /* GDK_m */
  +  0x006c,    /* GDK_l */
  +  0x0073,    /* GDK_s */
  +  0x0072,    /* GDK_r */
  +  0x0078,    /* GDK_x */
  +  0x006f,    /* GDK_o */
  +  0x003b,    /* GDK_semicolon */
  +  0x006b,    /* GDK_k */
  +  0x0066,    /* GDK_f */
  +  0x002e,    /* GDK_decimalpoint */
  +  0x002c,    /* GDK_KP_Separator */
  +  0x0062,    /* GDK_b */
  +  0x0074,    /* GDK_t */
  +  0x002f,    /* GDK_KP_Divide */
  +  0x005f,    /* GDK_underbar */
  +  0x007c,    /* GDK_bar */
  +  0x002b,    /* GDK_KP_Add */
  +  0x007e,    /* GDK_asciitilde */
  +};
  +
   // imported from the imhangul 0.9.7
   // s/gunichar/WCHAR/g
   
  @@ -1441,6 +1539,18 @@
       return 0;
   }
   
  +WORD PASCAL checkDvorak(code)
  +WORD code;
  +{
  +    HKL hcur;
  +
  +    /* check dvorak layout */
  +    hcur= GetKeyboardLayout(0);
  +    if ((DWORD)hcur == 0xE0130412 && code >= TEXT('!') && code <= TEXT('~'))
  +	code = dvorak2qwerty_table[code - '!'];
  +    return code;
  +}
  +
   WCHAR PASCAL keyToHangulKey(code)
   WORD code;
   {
  @@ -1472,7 +1582,7 @@
       TRANSMSG GnMsg;
       DWORD dwGCR = 0L;
   
  -    DWORD hkey= code;
  +    DWORD hkey;
       WCHAR cs = 0;
       register BOOL fModeInit = FALSE;
       BOOL capital = lpbKeyState[VK_CAPITAL];
  @@ -1481,6 +1591,9 @@
       // Get ConvMode from IMC.
       fdwConversion = lpIMC->fdwConversion;
   
  +    /* check dvorak layout */
  +    hkey= code = checkDvorak(code);
  +
       if (fdwConversion & IME_CMODE_NATIVE && capital) {
   	WORD ch = code;
   	if (ch >= 'a' && ch <= 'z')
  
  
  
  1.21      +3 -2      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- imm.c	22 Oct 2006 22:05:32 -0000	1.20
  +++ imm.c	4 Nov 2006 00:32:34 -0000	1.21
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.20 2006/10/22 22:05:32 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.21 2006/11/04 00:32:34 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -440,7 +440,8 @@
           ch = 0xff & ch;
           if (ch) {
               WORD nch;
  -            nch=keyToHangulKey((WORD)ch);
  +            nch=checkDvorak(ch);
  +            nch=keyToHangulKey((WORD)nch);
               if ( ch==nch && (ch >= TEXT('!') && ch <= TEXT('~')) )
                   fRet=FALSE;
           }
  
  
  
  1.13      +2 -1      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- saenaru.h	3 Nov 2006 16:18:07 -0000	1.12
  +++ saenaru.h	4 Nov 2006 00:32:34 -0000	1.13
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.12 2006/11/03 16:18:07 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.13 2006/11/04 00:32:34 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -502,6 +502,7 @@
   /* hangul.c       */
   void PASCAL hangulKeyHandler(HIMC,WPARAM,LPARAM,LPBYTE);
   WCHAR PASCAL keyToHangulKey(WCHAR);
  +WORD PASCAL checkDvorak(WORD);
   int PASCAL set_keyboard(UINT);
   int PASCAL set_compose(UINT);
   int PASCAL set_automata(UINT);
  
  
  


wkpark      06/11/04 10:01:13

  Modified:    setup    saenaru.nsi
  Log:
  add a dvorak IME entry
  
  Revision  Changes    Path
  1.7       +18 -6     saenaru/setup/saenaru.nsi
  
  Index: saenaru.nsi
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/saenaru.nsi,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- saenaru.nsi	12 Oct 2006 22:40:05 -0000	1.6
  +++ saenaru.nsi	4 Nov 2006 01:01:13 -0000	1.7
  @@ -1,8 +1,8 @@
   ; Saenaru Installation Script
   ; Written by Hye-Shik Chang <perky@i18n.org>
  -; $Saenaru: saenaru/setup/saenaru.nsi,v 1.6 2006/10/12 22:40:05 wkpark Exp $
  +; $Saenaru: saenaru/setup/saenaru.nsi,v 1.7 2006/11/04 01:01:13 wkpark Exp $
   
  -!define RELVERSION      "061013"
  +!define RELVERSION      "061104"
   !define REGISTRY_PATH   "Software\OpenHangulProject\Saenaru"
   !define DDKBUILDDIR     "..\src\objfre_wxp_x86\i386"
   !define RESOURCEDIR     "..\resource"
  @@ -74,9 +74,10 @@
     SetOverwrite lastused
     SetOutPath "$INSTDIR"
     File "${RESOURCEDIR}\saenaru.dic"
  -;;  File "${RESOURCEDIR}\word.dic"
  +  File "${RESOURCEDIR}\word.dic"
     File "${RESOURCEDIR}\symwin.dic"
     File "${RESOURCEDIR}\nabi.dic"
  +  File "${RESOURCEDIR}\jinsuk.dic"
     File "${RESOURCEDIR}\2set3set.reg"
     File "${RESOURCEDIR}\ahnmatae.reg"
     File /oname=saenaru.ico "${RESOURCEDIR}\about.ico"
  @@ -90,9 +91,16 @@
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "Layout display name" "ѱ Է± ()"
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "IME file" "SAENARU.IME"
   
  +  ; dvorak driver support
  +  WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0130412" "Layout file" "kbdkor.dll"
  +  WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0130412" "Layout text" " ѱ Է±"
  +  WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0130412" "Layout display name" "ѱ Է± ( 庸)"
  +  WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0130412" "IME file" "SAENARU.IME"
  +
     WriteRegStr HKLM "${REGISTRY_PATH}\Dictionary" "" "nabi.dic"
     WriteRegStr HKLM "${REGISTRY_PATH}\Dictionary" "Symbol" "symwin.dic"
  -  ;;WriteRegStr HKLM "${REGISTRY_PATH}\Dictionary" "Word" "word.dic"
  +  WriteRegStr HKLM "${REGISTRY_PATH}\Dictionary" "Word" "word.dic"
  +  WriteRegStr HKLM "${REGISTRY_PATH}\Dictionary" "HanjaIndex" "jinsuk.dic"
     
     ;Create uninstaller
     WriteUninstaller "$INSTDIR\Uninstall.exe"
  @@ -211,7 +219,8 @@
     Delete "$INSTDIR\saenaru.dic"
     Delete "$INSTDIR\nabi.dic"
     Delete "$INSTDIR\winsym.dic"
  -  ;;Delete "$INSTDIR\word.dic"
  +  Delete "$INSTDIR\word.dic"
  +  Delete "$INSTDIR\jinsuk.dic"
   
     Delete "$INSTDIR\Source\DIRS"
     Delete "$INSTDIR\Source\LICENSE"
  @@ -239,7 +248,8 @@
     Delete "$INSTDIR\Source\resource\saenaru.dic"
     Delete "$INSTDIR\Source\resource\winsym.dic"
     Delete "$INSTDIR\Source\resource\nabi.dic"
  -  ;;Delete "$INSTDIR\Source\resource\word.dic"
  +  Delete "$INSTDIR\Source\resource\word.dic"
  +  Delete "$INSTDIR\Source\resource\jinsuk.dic"
     Delete "$INSTDIR\Source\resource\saenaru.dlg"
     Delete "$INSTDIR\Source\resource\saenaru.ico"
     Delete "$INSTDIR\Source\resource\saenaru.rcv"
  @@ -264,6 +274,7 @@
     Delete "$INSTDIR\Source\src\dic2.c"
     Delete "$INSTDIR\Source\src\fdebug.c"
     Delete "$INSTDIR\Source\src\hangul.c"
  +  Delete "$INSTDIR\Source\src\hanjaidx.c"
     Delete "$INSTDIR\Source\src\imm.c"
     Delete "$INSTDIR\Source\src\immsec.c"
     Delete "$INSTDIR\Source\src\immsec.h"
  @@ -305,6 +316,7 @@
     RMDir "${SMPATH}"
   
     DeleteRegKey HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412"
  +  DeleteRegKey HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0130412"
     DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Saenaru"
     DeleteRegKey /ifempty HKLM "${REGISTRY_PATH}"
   
  
  
  


wkpark      06/11/07 17:17:53

  Modified:    src      process.c
  Log:
  enable control-space for 101 Type C keyboard
  
  Revision  Changes    Path
  1.7       +6 -3      saenaru/src/process.c
  
  Index: process.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/process.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- process.c	5 Oct 2006 04:53:52 -0000	1.6
  +++ process.c	7 Nov 2006 08:17:53 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/process.c,v 1.6 2006/10/05 04:53:52 wkpark Exp $
  + * $Saenaru: saenaru/src/process.c,v 1.7 2006/11/07 08:17:53 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -62,7 +62,8 @@
   BYTE bNoCompCtl[] = {   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 00-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 10-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 20-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 30-0F
  +                        0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,        // 30-0F
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 30-0F
                           0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,        // 40-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 50-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 60-0F
  @@ -139,7 +140,9 @@
   BYTE bCompCtl[] = {     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 00-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 10-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 20-0F
  -                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 30-0F
  +                        0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,        // 30-0F
  +                        // VK_SPACE == 0x39
  +                        //0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 30-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 40-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 50-0F
                           0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,        // 60-0F
  
  
  


wkpark      06/11/07 17:23:09

  Modified:    src      dic.c
  Log:
  fixed behavior to open the candidate window immediatly
  
  Revision  Changes    Path
  1.23      +6 -1      saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- dic.c	3 Nov 2006 16:21:22 -0000	1.22
  +++ dic.c	7 Nov 2006 08:23:08 -0000	1.23
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.22 2006/11/03 16:21:22 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.23 2006/11/07 08:23:08 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -319,6 +319,11 @@
                   nBufLen = GetCandidateStringsFromDictionary(han,
                           szBuf+Mylstrlen(lpT2)+1, 1024, (LPTSTR)szDic);
               }
  +        } else { // always open a candidate window with hangul chars
  +            lmemset(GETLPCOMPATTR(lpCompStr),ATTR_TARGET_CONVERTED ,
  +                  Mylstrlen(GETLPCOMPSTR(lpCompStr)));
  +            lmemset(GETLPCOMPREADATTR(lpCompStr),ATTR_TARGET_CONVERTED,
  +                  Mylstrlen(GETLPCOMPREADSTR(lpCompStr)));
           }
       }
   
  
  
  


wkpark      06/11/07 17:24:56

  Modified:    src      imm.c
  Log:
  catch VK_CONTROL to support control-space
  
  Revision  Changes    Path
  1.22      +2 -1      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- imm.c	4 Nov 2006 00:32:34 -0000	1.21
  +++ imm.c	7 Nov 2006 08:24:56 -0000	1.22
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.21 2006/11/04 00:32:34 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.22 2006/11/07 08:24:56 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -384,6 +384,7 @@
               //ChangeMode(hIMC,TO_CMODE_ROMAN);
               break;
           case VK_SHIFT:
  +        case VK_CONTROL:
               ImmUnlockIMC(hIMC);
               return FALSE;
               break;
  
  
  


wkpark      06/11/09 20:45:33

  Modified:    src      btnime.cpp config.c hangul.c saenaru.h
  Log:
  support compose map only input
  
  Revision  Changes    Path
  1.7       +2 -2      saenaru/src/btnime.cpp
  
  Index: btnime.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btnime.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- btnime.cpp	3 Nov 2006 16:18:07 -0000	1.6
  +++ btnime.cpp	9 Nov 2006 11:45:33 -0000	1.7
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btnime.cpp,v 1.6 2006/11/03 16:18:07 wkpark Exp $
  + * $Saenaru: saenaru/src/btnime.cpp,v 1.7 2006/11/09 11:45:33 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -553,7 +553,7 @@
       if (hIMC != NULL) {
           if (dwImeFlag & AUTOMATA_3SET)
   	    str = TEXT("INDIC_3SET");
  -	else
  +	else if (dwImeFlag & AUTOMATA_2SET)
   	    str = TEXT("INDIC_2SET");
       }
   
  
  
  
  1.7       +12 -2     saenaru/src/config.c
  
  Index: config.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/config.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- config.c	31 Oct 2006 19:14:32 -0000	1.6
  +++ config.c	9 Nov 2006 11:45:33 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/config.c,v 1.6 2006/10/31 19:14:32 wkpark Exp $
  + * $Saenaru: saenaru/src/config.c,v 1.7 2006/11/09 11:45:33 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -438,6 +438,7 @@
   #if 1
   #define SAENARU_KEYBOARD_2SET 2
   #define SAENARU_KEYBOARD_3SET 3
  +#define SAENARU_KEYBOARD_RAW  4
   static
   DWORD string_to_hex(TCHAR* p)
   {
  @@ -590,6 +591,10 @@
   }
   #endif
   
  +#define SAENARU_AUTOMATA_NONE 1
  +#define SAENARU_AUTOMATA_2SET 2
  +#define SAENARU_AUTOMATA_3SET 3
  +#define SAENARU_AUTOMATA_RAW  4
   UINT
   load_compose_map_from_reg(LPCTSTR lpszCompose, UINT nCompose, HangulCompose *compose_map)
   {
  @@ -608,6 +613,7 @@
       UINT _key[256];
       WCHAR _code[256];
       UINT id=0,i;
  +    UINT type=SAENARU_AUTOMATA_NONE;
   
       WCHAR achValue[256];
   
  @@ -677,6 +683,10 @@
   		continue;
   	    //compose_map->name = g_strdup(p);
   	    continue;
  +        } else if (Mylstrcmp(p, TEXT("Type0")) == 0) {
  +            type = SAENARU_AUTOMATA_RAW;
  +	    //compose_map->name = g_strdup(p);
  +	    continue;
   	} else {
   	    key1 = string_to_hex(p);
   	    if (key1 == 0)
  @@ -732,7 +742,7 @@
       /* free the list */
       //g_slist_free(list);
   
  -    return TRUE;
  +    return type;
   }
   
   
  
  
  
  1.19      +49 -2     saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- hangul.c	4 Nov 2006 00:32:34 -0000	1.18
  +++ hangul.c	9 Nov 2006 11:45:33 -0000	1.19
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.18 2006/11/04 00:32:34 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.19 2006/11/09 11:45:33 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1412,6 +1412,7 @@
   		}
   		MyDebugPrint((TEXT("compose map size: %d\r\n"), i));
   		compose_table_size = i;
  +		set_automata(atype);
   	    } else {
                   compose_table=(HangulCompose *) compose_table_default;
                   compose_table_size =
  @@ -1534,8 +1535,13 @@
       dwImeFlag|= (type==3) ? AUTOMATA_3SET:AUTOMATA_2SET;
       if (type == 3)
           hangul_automata=hangul_automata3;
  -    else
  +    else if (type == 2)
           hangul_automata=hangul_automata2;
  +    else { // raw automata
  +        hangul_automata=NULL;
  +	dwImeFlag &= ~AUTOMATA_3SET;
  +	dwImeFlag &= ~AUTOMATA_2SET;
  +    }
       return 0;
   }
   
  @@ -1681,6 +1687,35 @@
   
               *lpstr++ = (BYTE)code;
               lpCompStr->dwCursorPos++;
  +	} else if ( hangul_automata == NULL && fdwConversion & IME_CMODE_NATIVE) {
  +	    // RAW automata: composemap only
  +	    WCHAR comb=0;
  +	    if (lpCompStr->dwCursorPos > 0) {
  +                comb = hangul_compose(*(lpstr-1), (WCHAR) hkey);
  +		if (comb) { // composable
  +		    // replace
  +		    cs = *(lpstr-1) = comb;
  +		}
  +	    }
  +	    if (!comb) {
  +		if (dwImeFlag & SAENARU_ONTHESPOT) {
  +		    dwGCR=GCS_RESULTALL;
  +
  +		    MakeResultString(hIMC,FALSE);
  +		    InitCompStr(lpCompStr,CLR_UNDET);
  +
  +		    lpchText = GETLPCOMPSTR(lpCompStr);
  +		    lpstr = lpchText;
  +		    if( lpCompStr->dwCursorPos )
  +			lpstr += lpCompStr->dwCursorPos;
  +		    lpstr = lpchText + Mylstrlen(lpchText);
  +		    lpprev = MyCharPrev( lpchText, lpstr );
  +		}
  +		*lpstr = cs = (WCHAR) hkey;
  +		lpstr++;
  +		lpCompStr->dwCursorPos++;
  +		// emit
  +	    }
   	} else if ( (hkey >= 0x1100 && hkey <= 0x11c2) &&
                      !(dwOptionFlag & FULL_MULTIJOMO) &&
                       (fdwConversion & IME_CMODE_NATIVE) )
  @@ -1727,6 +1762,18 @@
   	{
   	    if (!hkey) hkey = code;	
               MyDebugPrint((TEXT("ascii code: %x\r\n"), (WORD)hkey));
  +	    /* for Hanme Typing tutor */
  +            MakeResultString(hIMC,FALSE);
  +            InitCompStr(lpCompStr,CLR_UNDET);
  +
  +	    dwGCR = GCS_RESULTALL;
  +
  +	    hangul_ic_init(&ic);
  +
  +            lpchText = GETLPCOMPSTR(lpCompStr);
  +            lpstr = lpchText;
  +	    /* */
  +	    /* XXX how to fix EditPlus problem ? */
               *lpstr++ = (WORD)hkey;
               lpCompStr->dwCursorPos++;
   	}
  
  
  
  1.14      +2 -1      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- saenaru.h	4 Nov 2006 00:32:34 -0000	1.13
  +++ saenaru.h	9 Nov 2006 11:45:33 -0000	1.14
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.13 2006/11/04 00:32:34 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.14 2006/11/09 11:45:33 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -58,6 +58,7 @@
   #define SAENARU_MODE_CANDIDATE 0x00040000
   #define AUTOMATA_2SET          0x00100000
   #define AUTOMATA_3SET          0x00200000
  +#define AUTOMATA_NULL          0x00400000
   
   #define COMPOSITE_TYPING       0x00000001
   #define CONCURRENT_TYPING      0x00000002
  
  
  


wkpark      06/11/10 02:13:58

  Modified:    src      hangul.c
  Log:
  add more fixes to last changes
  
  Revision  Changes    Path
  1.20      +19 -2     saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- hangul.c	9 Nov 2006 11:45:33 -0000	1.19
  +++ hangul.c	9 Nov 2006 17:13:57 -0000	1.20
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.19 2006/11/09 11:45:33 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.20 2006/11/09 17:13:57 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -338,6 +338,19 @@
       return ch;
   }
   
  +WCHAR PASCAL
  +hangul_jamo_to_cjamo(WCHAR jamo)
  +{
  +    if (jamo >= 0x1100 && jamo <= 0x1112)
  +        return hangul_choseong_to_cjamo(jamo);
  +    if (jamo >= 0x1161 && jamo <= 0x1175)
  +        return hangul_jungseong_to_cjamo(jamo);
  +    if (jamo >= 0x11a7 && jamo <= 0x11c2)
  +        return hangul_jongseong_to_cjamo(jamo);
  +    // else
  +    return jamo;
  +}
  +
   // dvorak 2 qwerty mapping for the kbddv.dll driver.
   static const WCHAR dvorak2qwerty_table[] = {
     0x0021,    /* GDK_exclam */
  @@ -1699,6 +1712,9 @@
   	    }
   	    if (!comb) {
   		if (dwImeFlag & SAENARU_ONTHESPOT) {
  +		    if (lpCompStr->dwCursorPos > 0)
  +			// check jamos and convert it to compatible jamos
  +			*lpprev = hangul_jamo_to_cjamo((WCHAR) *lpprev);
   		    dwGCR=GCS_RESULTALL;
   
   		    MakeResultString(hIMC,FALSE);
  @@ -1711,7 +1727,8 @@
   		    lpstr = lpchText + Mylstrlen(lpchText);
   		    lpprev = MyCharPrev( lpchText, lpstr );
   		}
  -		*lpstr = cs = (WCHAR) hkey;
  +		*lpstr = (WCHAR) hkey;
  +	        cs = hangul_jamo_to_cjamo((WCHAR) hkey);
   		lpstr++;
   		lpCompStr->dwCursorPos++;
   		// emit
  
  
  


wkpark      06/11/10 19:50:56

  Modified:    src      hangul.c
  Log:
  more fixes to last changes
  
  Revision  Changes    Path
  1.21      +5 -2      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- hangul.c	9 Nov 2006 17:13:57 -0000	1.20
  +++ hangul.c	10 Nov 2006 10:50:56 -0000	1.21
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.20 2006/11/09 17:13:57 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.21 2006/11/10 10:50:56 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1075,6 +1075,7 @@
     { 0x116e1166, 0x1170 }, /* jungseong u      + e	= we		*/
     { 0x116e116e, 0x1172 }, /* jungseong u      + u	= yu		*/
     { 0x116e1175, 0x1171 }, /* jungseong u      + i	= wi		*/
  +  { 0x11731173, 0x1174 }, /* jungseong eu     + eu	= yi		*/
     { 0x11731175, 0x1174 }, /* jungseong eu     + i	= yi		*/
     { 0x11751162, 0x1164 }, /* jungseong i      + ae	= yae		*/
     { 0x11751166, 0x1168 }, /* jungseong i      + e	= ye		*/
  @@ -1123,6 +1124,7 @@
     { 0x116e1166, 0x1170 }, /* jungseong u      + e	= we		*/
     { 0x116e116e, 0x1172 }, /* jungseong u      + u	= yu		*/
     { 0x116e1175, 0x1171 }, /* jungseong u      + i	= wi		*/
  +  { 0x11731173, 0x1174 }, /* jungseong eu     + eu	= yi		*/
     { 0x11731175, 0x1174 }, /* jungseong eu     + i	= yi		*/
     { 0x11751162, 0x1164 }, /* jungseong i      + ae	= yae		*/
     { 0x11751166, 0x1168 }, /* jungseong i      + e	= ye		*/
  @@ -1777,7 +1779,8 @@
           }
   	else
   	{
  -	    if (!hkey) hkey = code;	
  +	    if (!hkey) hkey = code;
  +	    code = (WORD) hkey;
               MyDebugPrint((TEXT("ascii code: %x\r\n"), (WORD)hkey));
   	    /* for Hanme Typing tutor */
               MakeResultString(hIMC,FALSE);
  
  
  


wkpark      06/11/17 17:53:03

  Modified:    src      hangul.c
  Log:
  support more intelligent ssang-choseong typing
  
  Revision  Changes    Path
  1.22      +18 -4     saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- hangul.c	10 Nov 2006 10:50:56 -0000	1.21
  +++ hangul.c	17 Nov 2006 08:53:03 -0000	1.22
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.21 2006/11/10 10:50:56 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.22 2006/11/17 08:53:03 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -2222,6 +2222,7 @@
                   }
                   hangul_jongseong_dicompose(ic->jong, &jong, &cho);
   		if (jong && cho) {
  +		    // ʼ  Ưó
   		    last=ic->last;
   		    if ( hangul_is_jongseong(ic->last) )
   			last = hangul_jongseong_to_choseong(ic->last);
  @@ -2231,12 +2232,24 @@
   		    {
   			ic->jong=jong;
   			jamo= hangul_compose(last,last); // make ssang cho
  +			cho= jamo;
   		    }
  -		}
  +		} else if (ctyping) {
  +		    last = hangul_jongseong_to_choseong(ic->jong);
  +		    comb = hangul_compose(last,jamo);
  +		    if (comb &&
  +			    comb == 0x1101 || comb == 0x1104 ||
  +			    comb == 0x1108 || comb == 0x110a || comb == 0x110d) //     
  +		    {
  +			ic->jong = 0; //  .
  +			cho= comb; // ʼ ġ
  +		    }
  +		} else
  +		    cho= jamo;
                   {
                       // ʼ compose  .
                       *cs = hangul_ic_commit(ic);
  -                    ic->cho=jamo;
  +                    ic->cho=cho;
                       hangul_ic_push(ic,jamo);
                       ic->laststate=1;
                       return -1;
  @@ -2254,7 +2267,8 @@
                       if (last != cho) {
   			WCHAR tmp;
   			tmp = cho;
  -			cho = hangul_jongseong_to_choseong(jong);
  +			//cho = hangul_jongseong_to_choseong(jong);
  +			cho = last;
   			ic->jong = hangul_choseong_to_jongseong(tmp);
   		    } else {
   			ic->jong = jong;
  
  
  


wkpark      06/11/17 17:55:28

  Modified:    src      resource.h saenaru.rc ui.c uistate.c
  Log:
  fixed uistatus wnd
  
  Revision  Changes    Path
  1.9       +19 -4     saenaru/src/resource.h
  
  Index: resource.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/resource.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- resource.h	31 Oct 2006 19:14:32 -0000	1.8
  +++ resource.h	17 Nov 2006 08:55:28 -0000	1.9
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/resource.h,v 1.8 2006/10/31 19:14:32 wkpark Exp $
  + * $Saenaru: saenaru/src/resource.h,v 1.9 2006/11/17 08:55:28 wkpark Exp $
    */
   
   //{{NO_DEPENDENCIES}}
  @@ -120,9 +120,24 @@
   
   #define IDC_STATIC                      -1
   
  -#define IDM_RECONVERT                   40001
  -#define IDM_ABOUT                       40002
  -
  +#define IDM_OLD2BUL		40001
  +#define IDM_3BUL		40002
  +#define IDM_390			40003
  +#define IDM_NEW2BUL		40004
  +#define IDM_NEW3BUL		40005
  +#define IDM_AHNMATAE		40006
  +#define IDM_3SOON		40007
  +#define IDM_USER		40010
  +#define IDM_USER_COMP		40020
  +#define IDM_DVORAK		40031
  +#define IDM_ESC_ASCII		40032
  +#define IDM_WORD_UNIT		40033
  +#define IDM_SHOW_KEYBOARD	40041
  +#define IDM_HANGUL		40051
  +#define IDM_ENG			40052
  +#define IDM_HANJA		40053
  +#define IDM_RECONVERT		40061
  +#define IDM_ABOUT      		40062
   
   #define IDM_SKL1                0x0500
   #define IDM_SKL2                0x0501
  
  
  
  1.12      +25 -2     saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- saenaru.rc	3 Nov 2006 16:18:07 -0000	1.11
  +++ saenaru.rc	17 Nov 2006 08:55:28 -0000	1.12
  @@ -246,8 +246,31 @@
   BEGIN
       POPUP ""
       BEGIN
  -        MENUITEM "Reconversion",                IDM_RECONVERT
  -        MENUITEM "About",                       IDM_ABOUT
  +
  +    	MENUITEM "ȯ漳(&R)",	IDM_ABOUT
  +	MENUITEM SEPARATOR
  +	MENUITEM "ѱ(&H)",		IDM_HANGUL
  +	MENUITEM "(&E)",		IDM_ENG
  +	MENUITEM "(&I)",		IDM_HANJA
  +	MENUITEM SEPARATOR
  +	MENUITEM "ι(&2)",  	IDM_OLD2BUL
  +	MENUITEM "(&3)",  	IDM_3BUL
  +	MENUITEM " 390(&9)",  	IDM_390
  +    	MENUITEM "ι(&D)",		IDM_NEW2BUL
  +    	MENUITEM "(&S)",		IDM_NEW3BUL
  +     	MENUITEM "ȸ(&A)",		IDM_AHNMATAE
  +    	MENUITEM " Ʒ(&N)",	IDM_3SOON
  +    	MENUITEM " (&U)",	IDM_USER
  +    	MENUITEM " (&C)",	IDM_USER_COMP
  +	MENUITEM SEPARATOR
  +    	MENUITEM "庸(&V)",		IDM_DVORAK
  +    	MENUITEM "ESC ȯ(&E)",	IDM_ESC_ASCII
  +    	MENUITEM "ܾ (&W)",	IDM_WORD_UNIT
  +	MENUITEM SEPARATOR
  +    	MENUITEM "Ű ",		IDM_SHOW_KEYBOARD
  +	MENUITEM SEPARATOR
  +        MENUITEM "ȯ(&C)",		IDM_RECONVERT
  +	MENUITEM "(&A)...",	IDM_ABOUT          
       END
   END
   
  
  
  
  1.20      +12 -7     saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- ui.c	4 Nov 2006 00:30:04 -0000	1.19
  +++ ui.c	17 Nov 2006 08:55:28 -0000	1.20
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.19 2006/11/04 00:30:04 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.20 2006/11/17 08:55:28 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -354,6 +354,11 @@
                           HideCandWindow(lpUIExtra);
                           HideCompWindow(lpUIExtra);
                       }
  +
  +                    if (lpUIExtra->uiStatus.bShow == FALSE) {
  +                        ShowWindow(lpUIExtra->uiStatus.hWnd, SW_SHOWNOACTIVATE);
  +                        lpUIExtra->uiStatus.bShow = TRUE;
  +                    }
                       UpdateStatusWindow(lpUIExtra);
                       ImmUnlockIMC(hUICurIMC);
                   }
  @@ -364,8 +369,8 @@
                   }
                   GlobalUnlock(hUIExtra);
               }
  -            //else
  -            //    ShowUIWindows(hWnd, FALSE);
  +            else 
  +               ShowUIWindows(hWnd, FALSE);
               break;
   
   
  @@ -618,7 +623,6 @@
                   lpUIExtra->uiSoftKbd.bShow = FALSE;
               }
   #endif
  -#ifdef USE_STATUS_WIN98_XXX
               if (IsWindow(lpUIExtra->uiStatus.hWnd))
               {
                   GetWindowRect(lpUIExtra->uiStatus.hWnd,(LPRECT)&rc);
  @@ -627,7 +631,6 @@
                   ShowWindow(lpUIExtra->uiStatus.hWnd,SW_HIDE);
                   lpUIExtra->uiStatus.bShow = FALSE;
               }
  -#endif
           break;
           case IMN_OPENSTATUSWINDOW:
   #ifndef NO_USE_SOFTKBD
  @@ -650,13 +653,14 @@
               //lpUIExtra->uiSoftKbd.bShow = TRUE;
               //SetWindowLongPtr(lpUIExtra->uiSoftKbd.hWnd,FIGWL_SVRWND,(LONG_PTR)hWnd);
   #endif
  -#ifdef USE_STATUS_WIN98_XXX
               if (lpUIExtra->uiStatus.pt.x == -1)
               {
                   GetWindowRect(lpIMC->hWnd,&rc);
  -                lpUIExtra->uiStatus.pt.x = rc.right + 1;
  +                lpUIExtra->uiStatus.pt.x = rc.right - 100; // XXX +1 => -100
                   lpUIExtra->uiStatus.pt.y = rc.top;
               }
  +#ifndef USE_STATUS_WIN98_XXX
  +            if (!IsTSFEnabled()) {
               if (!IsWindow(lpUIExtra->uiStatus.hWnd))
               {
                   lpUIExtra->uiStatus.hWnd = 
  @@ -676,6 +680,7 @@
               ShowWindow(lpUIExtra->uiStatus.hWnd,SW_SHOWNOACTIVATE);
               lpUIExtra->uiStatus.bShow = TRUE;
               SetWindowLongPtr(lpUIExtra->uiStatus.hWnd,FIGWL_SVRWND,(LONG_PTR)hWnd);
  +            }
   #endif
               break;
   
  
  
  
  1.4       +466 -30   saenaru/src/uistate.c
  
  Index: uistate.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uistate.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- uistate.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ uistate.c	17 Nov 2006 08:55:28 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uistate.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/uistate.c,v 1.4 2006/11/17 08:55:28 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -89,6 +89,11 @@
   
           case WM_CREATE:
               hbmpStatus = LoadBitmap(hInst,TEXT("STATUSBMP"));
  +/*
  +            hbmpStatus =(HBITMAP)LoadImage(hInst,TEXT("STATUSBMP"),IMAGE_BITMAP,
  +                    0,0,LR_LOADTRANSPARENT);
  +                    */
  +
               SetWindowLongPtr(hWnd,FIGWL_STATUSBMP,(LONG_PTR)hbmpStatus);
               hbmpStatus = LoadBitmap(hInst,TEXT("CLOSEBMP"));
               SetWindowLongPtr(hWnd,FIGWL_CLOSEBMP,(LONG_PTR)hbmpStatus);
  @@ -159,6 +164,111 @@
       }
   
   }
  +
  +void DrawTransBtn(HDC hdc, HDC hdcTemp, int xStart, int yStart,
  +        COLORREF cTransparentColor)
  +{
  +   BITMAP     bm;
  +   COLORREF   cColor;
  +   HBITMAP    bmAndBack, bmAndObject, bmAndMem, bmSave;
  +   HBITMAP    bmBackOld, bmObjectOld, bmMemOld, bmSaveOld;
  +   HDC        hdcMem, hdcBack, hdcObject, hdcSave;
  +   POINT      ptSize;
  +/*
  +   hdcTemp = CreateCompatibleDC(hdc);
  +   SelectObject(hdcTemp, hBitmap);   // Select the bitmap
  +
  +   GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm);
  +   ptSize.x = bm.bmWidth;            // Get width of bitmap
  +   ptSize.y = bm.bmHeight;           // Get height of bitmap
  +   */
  +   ptSize.x = BTX;            // Get width of bitmap
  +   ptSize.y = BTY;            // Get height of bitmap
  +   DPtoLP(hdcTemp, &ptSize, 1);      // Convert from device
  +                                     // to logical points
  +
  +   // Create some DCs to hold temporary data.
  +   hdcBack   = CreateCompatibleDC(hdc);
  +   hdcObject = CreateCompatibleDC(hdc);
  +   hdcMem    = CreateCompatibleDC(hdc);
  +   hdcSave   = CreateCompatibleDC(hdc);
  +
  +   // Create a bitmap for each DC. DCs are required for a number of
  +   // GDI functions.
  +
  +   // Monochrome DC
  +   bmAndBack   = CreateBitmap(ptSize.x, ptSize.y, 1, 1, NULL);
  +
  +   // Monochrome DC
  +   bmAndObject = CreateBitmap(ptSize.x, ptSize.y, 1, 1, NULL);
  +
  +   bmAndMem    = CreateCompatibleBitmap(hdc, ptSize.x, ptSize.y);
  +   bmSave      = CreateCompatibleBitmap(hdc, ptSize.x, ptSize.y);
  +
  +   // Each DC must select a bitmap object to store pixel data.
  +   bmBackOld   = SelectObject(hdcBack, bmAndBack);
  +   bmObjectOld = SelectObject(hdcObject, bmAndObject);
  +   bmMemOld    = SelectObject(hdcMem, bmAndMem);
  +   bmSaveOld   = SelectObject(hdcSave, bmSave);
  +
  +   // Set proper mapping mode.
  +   SetMapMode(hdcTemp, GetMapMode(hdc));
  +
  +   // Save the bitmap sent here, because it will be overwritten.
  +   BitBlt(hdcSave, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCCOPY);
  +
  +   // Set the background color of the source DC to the color.
  +   // contained in the parts of the bitmap that should be transparent
  +   cColor = SetBkColor(hdcTemp, cTransparentColor);
  +
  +   // Create the object mask for the bitmap by performing a BitBlt
  +   // from the source bitmap to a monochrome bitmap.
  +   BitBlt(hdcObject, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0,
  +          SRCCOPY);
  +
  +   // Set the background color of the source DC back to the original
  +   // color.
  +   SetBkColor(hdcTemp, cColor);
  +
  +   // Create the inverse of the object mask.
  +   BitBlt(hdcBack, 0, 0, ptSize.x, ptSize.y, hdcObject, 0, 0,
  +          NOTSRCCOPY);
  +
  +   // Copy the background of the main DC to the destination.
  +   BitBlt(hdcMem, 0, 0, ptSize.x, ptSize.y, hdc, xStart, yStart,
  +          SRCCOPY);
  +
  +   // Mask out the places where the bitmap will be placed.
  +   BitBlt(hdcMem, 0, 0, ptSize.x, ptSize.y, hdcObject, 0, 0, SRCAND);
  +
  +   // Mask out the transparent colored pixels on the bitmap.
  +   BitBlt(hdcTemp, 0, 0, ptSize.x, ptSize.y, hdcBack, 0, 0, SRCAND);
  +
  +   // XOR the bitmap with the background on the destination DC.
  +   BitBlt(hdcMem, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCPAINT);
  +
  +   // Copy the destination to the screen.
  +   BitBlt(hdc, xStart, yStart, ptSize.x, ptSize.y, hdcMem, 0, 0,
  +          SRCCOPY);
  +
  +   // Place the original bitmap back into the bitmap sent here.
  +   BitBlt(hdcTemp, 0, 0, ptSize.x, ptSize.y, hdcSave, 0, 0, SRCCOPY);
  +
  +   // Delete the memory bitmaps.
  +   DeleteObject(SelectObject(hdcBack, bmBackOld));
  +   DeleteObject(SelectObject(hdcObject, bmObjectOld));
  +   DeleteObject(SelectObject(hdcMem, bmMemOld));
  +   DeleteObject(SelectObject(hdcSave, bmSaveOld));
  +
  +   // Delete the memory DCs.
  +   DeleteDC(hdcMem);
  +   DeleteDC(hdcBack);
  +   DeleteDC(hdcObject);
  +   DeleteDC(hdcSave);
  +   //DeleteDC(hdcTemp);
  +}
  +
  +
   /**********************************************************************/
   /*                                                                    */
   /* PaintStatus()                                                      */
  @@ -168,11 +278,12 @@
   {
       HIMC hIMC;
       LPINPUTCONTEXT lpIMC;
  -    HDC hMemDC;
  +    HDC hMemDC,hTempDC,hNewDC;
       HBITMAP hbmpOld;
       int x;
       HWND hSvrWnd;
  -    return; /* XXX */
  +    HBITMAP bmTemp,bmTempOld;
  +    if (IsTSFEnabled()) return;
   
       hSvrWnd = (HWND)GetWindowLongPtr(hStatusWnd,FIGWL_SVRWND);
   
  @@ -180,6 +291,7 @@
       {
           HBITMAP hbmpStatus;
           HBRUSH hOldBrush,hBrush;
  +        COLORREF cColor,cTransColor;
   //      int nCyCap = GetSystemMetrics(SM_CYSMCAPTION);
           int nCyCap = 0;
           RECT rc;
  @@ -187,6 +299,9 @@
           lpIMC = ImmLockIMC(hIMC);
           hMemDC = CreateCompatibleDC(hDC);
   
  +        hTempDC = CreateCompatibleDC(hDC);
  +        hNewDC = CreateCompatibleDC(hDC);
  +
   #if 0
           // Paint Caption.
           hBrush = CreateSolidBrush(GetSysColor(COLOR_ACTIVECAPTION));
  @@ -211,26 +326,53 @@
   #endif
   
           hbmpStatus = (HBITMAP)GetWindowLongPtr(hStatusWnd,FIGWL_STATUSBMP);
  -        SelectObject(hMemDC,hbmpStatus);
  +        hbmpOld = SelectObject(hMemDC,hbmpStatus);
  +        cTransColor= RGB(192,192,192); // XXX
  +
  +        cColor= SetBkColor(hTempDC,cTransColor);
  +        SetBkMode(hTempDC,TRANSPARENT);
   
           // Paint HDR.
           x = BTEMPT;
  -        if (lpIMC->fOpen)
  -            x = 0;
  +        if (lpIMC->fOpen) {
  +            if (lpIMC->fdwConversion & IME_CMODE_HANJACONVERT)
  +                x = 40;
  +            else if (lpIMC->fdwConversion & IME_CMODE_NATIVE)
  +                x = 0;
  +        }
   
  -        if (!(dwPushedStatus & PUSHED_STATUS_HDR))
  -            BitBlt(hDC,0,nCyCap,BTX,BTY,hMemDC,x,0,SRCCOPY);
  -        else
  -            BitBlt(hDC,0,nCyCap,BTX,BTY,hMemDC,x,BTY,SRCCOPY);
  +        bmTemp = CreateCompatibleBitmap(hDC, BTX, BTY);
  +        bmTempOld = SelectObject(hTempDC, bmTemp);
  +
  +        // clear
  +        rc.top = rc.left = 0;
  +        rc.right = BTX*2;
  +        rc.bottom = BTY;
  +        FillRect(hDC,&rc,(HBRUSH) (COLOR_BTNFACE + 1));
  +
  +        if (!(dwPushedStatus & PUSHED_STATUS_HDR)) {
  +            BitBlt(hTempDC,0,0,BTX,BTY,hMemDC,x,0,SRCCOPY);
  +            DrawTransBtn(hDC,hTempDC,0,0,cTransColor);
  +        }
  +        else {
  +            BitBlt(hTempDC,0,0,BTX,BTY,hMemDC,x,BTY,SRCCOPY);
  +            DrawTransBtn(hDC,hTempDC,0,0,cTransColor);
  +        }
   
           // Paint MODE.
           x = BTXFromCmode(lpIMC->fdwConversion);
   
  -        if (!(dwPushedStatus & PUSHED_STATUS_MODE))
  -            BitBlt(hDC,BTX,nCyCap,BTX,BTY,hMemDC,x,0,SRCCOPY);
  -        else
  -            BitBlt(hDC,BTX,nCyCap,BTX,BTY,hMemDC,x,BTY,SRCCOPY);
  +        if (!(dwPushedStatus & PUSHED_STATUS_MODE)) {
  +            BitBlt(hTempDC,0,0,BTX,BTY,hMemDC,x,0,SRCCOPY);
  +            DrawTransBtn(hDC,hTempDC,BTX,nCyCap,cTransColor);
  +        } else {
  +            BitBlt(hTempDC,0,0,BTX,BTY,hMemDC,x,BTY,SRCCOPY);
  +            DrawTransBtn(hDC,hTempDC,BTX,nCyCap,cTransColor);
  +        }
  +
  +        DeleteObject(SelectObject(hTempDC, bmTempOld));
   
  +        SetBkColor(hDC,cColor);
   #if 0
           // Paint Roman MODE.
           x = BTEMPT;
  @@ -242,9 +384,7 @@
           else
               BitBlt(hDC,BTX*2,nCyCap,BTX,BTY,hMemDC,x,BTY,SRCCOPY);
   #endif
  -#if 0
           SelectObject(hMemDC,hbmpOld);
  -#endif
           DeleteDC(hMemDC);
           ImmUnlockIMC(hIMC);
       }
  @@ -259,7 +399,7 @@
   /**********************************************************************/
   DWORD PASCAL GetUINextMode( DWORD fdwConversion, DWORD dwPushed)
   {
  -    DWORD dwTemp;
  +    BOOL fTemp;
       BOOL fFullShape = ((fdwConversion & IME_CMODE_FULLSHAPE) != 0);
   
       //
  @@ -269,10 +409,17 @@
       //     FULLSHAPE -> HALFSHAPE
       //     NATIVE -> ROMAN
       //
  -    if (dwPushed == PUSHED_STATUS_MODE)
  +    if (dwPushed == PUSHED_STATUS_HDR)
  +    {
  +        fTemp = fdwConversion & IME_CMODE_NATIVE;
  +        fdwConversion &= ~IME_CMODE_FULLSHAPE;
  +        if (fTemp) {
  +            fdwConversion &= ~IME_CMODE_NATIVE;
  +        } else {
  +            fdwConversion |= IME_CMODE_NATIVE;
  +        }
  +    } else if (dwPushed == PUSHED_STATUS_MODE)
       {
  -        dwTemp = fdwConversion & IME_CMODE_LANGUAGE;
  -
           if (fFullShape)
           {
               fdwConversion &= ~IME_CMODE_FULLSHAPE;
  @@ -296,7 +443,7 @@
       HDC hDC;
       DWORD dwMouse;
       DWORD dwPushedStatus;
  -    DWORD dwTemp;
  +    DWORD dwTemp=0;
       DWORD fdwConversion;
       HIMC hIMC;
       HWND hSvrWnd;
  @@ -307,6 +454,10 @@
       static    RECT rc;
       static    DWORD dwCurrentPushedStatus;
   
  +    HKEY hKey;
  +    INT i;
  +    INT idLayout;
  +
       hDC = GetDC(hStatusWnd);
       switch (message)
       {
  @@ -323,8 +474,10 @@
                   rc.right -= rc.left;
                   rc.bottom -= rc.top;
                   SetWindowLong(hStatusWnd,FIGWL_MOUSE,FIM_CAPUTURED);
  -                SetWindowLong(hStatusWnd, FIGWL_PUSHSTATUS, dwPushedStatus = CheckPushedStatus(hStatusWnd,&pt));
  -                PaintStatus(hStatusWnd,hDC,&pt, dwPushedStatus);
  +                    SetWindowLong(hStatusWnd, FIGWL_PUSHSTATUS, dwPushedStatus = CheckPushedStatus(hStatusWnd,&pt));
  +                if (HIWORD(lParam) == WM_LBUTTONDOWN) {
  +                    PaintStatus(hStatusWnd,hDC,&pt, dwPushedStatus);
  +                }
                   dwCurrentPushedStatus = dwPushedStatus;
               }
               break;
  @@ -379,13 +532,194 @@
               hSvrWnd = (HWND)GetWindowLongPtr(hStatusWnd,FIGWL_SVRWND);
   
               hMenu = LoadMenu(hInst, TEXT("RIGHTCLKMENU"));
  +            idLayout = dwLayoutFlag - LAYOUT_OLD2BUL;
  +            idLayout += IDM_OLD2BUL;
  +
               if (hMenu && (hIMC = (HIMC)GetWindowLongPtr(hSvrWnd,IMMGWLP_IMC)))
               {
                   int cmd;
                   POINT pt;
                   LPINPUTCONTEXT lpIMC;
  -
  +                BOOL fOpen;
  +                INT idMode,idFlag;
                   HMENU hSubMenu = GetSubMenu(hMenu, 0);
  +                MENUITEMINFO mk;
  +
  +                fOpen = ImmGetOpenStatus(hIMC);
  +                ImmGetConversionStatus(hIMC,&fdwConversion,&dwTemp);
  +
  +                idMode=IDM_ENG;
  +                if (fOpen) {
  +                    if (fdwConversion & IME_CMODE_HANJACONVERT)
  +                        idMode=IDM_HANJA;
  +                    else if (fdwConversion & IME_CMODE_NATIVE)
  +                        idMode=IDM_HANGUL;
  +                }
  +
  +                mk.cbSize = sizeof(MENUITEMINFO);
  +                // check CMODE
  +                GetMenuItemInfo(hSubMenu,idMode,FALSE,&mk);
  +                mk.fMask=MIIM_STATE | MIIM_FTYPE;
  +                mk.fState=MFS_CHECKED;
  +                mk.fType=MFT_RADIOCHECK;
  +                SetMenuItemInfo(hSubMenu,idMode,FALSE,&mk);
  +
  +
  +                if (fdwConversion & IME_CMODE_SOFTKBD) {
  +                    idFlag= IDM_SHOW_KEYBOARD;
  +                    GetMenuItemInfo(hSubMenu,idFlag,FALSE,&mk);
  +                    mk.fMask=MIIM_STATE;
  +                    mk.fState=MFS_CHECKED;
  +                    SetMenuItemInfo(hSubMenu,idFlag,FALSE,&mk);
  +                }
  +
  +                // check Saenaru option flags
  +                if (dwOptionFlag & ESCENG_SUPPORT) {
  +                    idFlag= IDM_ESC_ASCII;
  +                    GetMenuItemInfo(hSubMenu,idFlag,FALSE,&mk);
  +                    mk.fMask=MIIM_STATE;
  +                    mk.fState=MFS_CHECKED;
  +                    SetMenuItemInfo(hSubMenu,idFlag,FALSE,&mk);
  +                }
  +                if (dwOptionFlag & DVORAK_SUPPORT) {
  +                    idFlag= IDM_DVORAK;
  +                    GetMenuItemInfo(hSubMenu,idFlag,FALSE,&mk);
  +                    mk.fMask=MIIM_STATE;
  +                    mk.fState=MFS_CHECKED;
  +                    SetMenuItemInfo(hSubMenu,idFlag,FALSE,&mk);
  +                }
  +                if (!(dwImeFlag & SAENARU_ONTHESPOT)) {
  +                    idFlag= IDM_WORD_UNIT;
  +                    GetMenuItemInfo(hSubMenu,idFlag,FALSE,&mk);
  +                    mk.fMask=MIIM_STATE;
  +                    mk.fState=MFS_CHECKED;
  +                    SetMenuItemInfo(hSubMenu,idFlag,FALSE,&mk);
  +                }
  +
  +                // Layout
  +                GetMenuItemInfo(hSubMenu,idLayout,FALSE,&mk);
  +                mk.fMask=MIIM_STATE;
  +                mk.fState=MFS_CHECKED;
  +                SetMenuItemInfo(hSubMenu,idLayout,FALSE,&mk);
  +
  +                if (idLayout > IDM_3SOON) {
  +                    idLayout = dwLayoutFlag - LAYOUT_USER;
  +                    idLayout += IDM_USER + 1;
  +                }
  +
  +                if (GetRegKeyHandle(TEXT("\\Keyboard"), &hKey)) {
  +                    MENUITEMINFO mif;
  +                    HMENU hKbdMenu;
  +                    INT i;
  +                    INT id=IDM_USER;
  +                    hKbdMenu=CreateMenu();
  +
  +                    GetMenuItemInfo(hSubMenu,IDM_USER,FALSE,&mif);
  +                    mif.fMask =MIIM_SUBMENU;
  +                    mif.hSubMenu =hKbdMenu;
  +
  +                    mif.cbSize = sizeof(MENUITEMINFO);
  +                    for (i=0;i<10;i++) {
  +                        WCHAR achValue[256]; 
  +                        DWORD cchValue = 256;
  +                        DWORD retCode;
  +                        LPCWSTR wstrDesc;
  +                        ULONG nstrDesc;
  +                        ULONG ucheck;
  +    
  +                        achValue[0] = '\0';
  +                        retCode = RegEnumValue(hKey, i, 
  +                            achValue, 
  +                            &cchValue, 
  +                            NULL, 
  +                            NULL,
  +                            NULL,
  +                            NULL);
  +     
  +                        if (retCode != ERROR_SUCCESS ) 
  +                        { 
  +                            MyDebugPrint((TEXT("(%d) %s\n"), i+1, achValue));
  +                            break;
  +                        }
  +                        wstrDesc = achValue;
  +                        nstrDesc = wcslen (wstrDesc);
  +                        achValue[nstrDesc]='\0';
  +                        
  +                        ucheck = MF_STRING|MF_ENABLED;
  +                        if (idLayout == ++id) ucheck |= MF_CHECKED;
  +    
  +                        retCode= AppendMenu(hKbdMenu,ucheck,
  +                                id,
  +                                wstrDesc);
  +                        MyDebugPrint((TEXT("\t*** Append MENU ret (%d)\n"), retCode));
  +                    }
  +                    SetMenuItemInfo(hSubMenu,IDM_USER,FALSE,&mif);
  +                    DestroyMenu(hKbdMenu);
  +                }
  +
  +                if (hKey)
  +                    RegCloseKey (hKey);
  +
  +                hKey = NULL;
  +                if (GetRegKeyHandle(TEXT("\\Compose"), &hKey)) {
  +                    MENUITEMINFO mif;
  +                    HMENU hCompMenu;
  +                    INT i;
  +                    INT id=IDM_USER_COMP;
  +
  +                    INT idCompose;
  +
  +                    idCompose=dwComposeFlag - 3;
  +                    if (idCompose > 0)
  +                        idCompose += IDM_USER_COMP;
  +
  +                    hCompMenu=CreateMenu();
  +
  +                    GetMenuItemInfo(hSubMenu,IDM_USER_COMP,FALSE,&mif);
  +                    mif.fMask =MIIM_SUBMENU;
  +                    mif.hSubMenu =hCompMenu;
  +
  +                    mif.cbSize = sizeof(MENUITEMINFO);
  +                    for (i=0;i<10;i++) {
  +                        WCHAR achValue[256]; 
  +                        DWORD cchValue = 256;
  +                        DWORD retCode;
  +                        LPCWSTR wstrDesc;
  +                        ULONG nstrDesc;
  +                        ULONG ucheck;
  +    
  +                        achValue[0] = '\0';
  +                        retCode = RegEnumValue(hKey, i, 
  +                            achValue, 
  +                            &cchValue, 
  +                            NULL, 
  +                            NULL,
  +                            NULL,
  +                            NULL);
  +     
  +                        if (retCode != ERROR_SUCCESS ) 
  +                        { 
  +                            MyDebugPrint((TEXT("(%d) %s\n"), i+1, achValue));
  +                            break;
  +                        }
  +                        wstrDesc = achValue;
  +                        nstrDesc = wcslen (wstrDesc);
  +                        achValue[nstrDesc]='\0';
  +    
  +                        ucheck = MF_STRING|MF_ENABLED;
  +                        if (idCompose == ++id) ucheck |= MF_CHECKED;
  +
  +                        AppendMenu(hCompMenu,ucheck,
  +                                id,
  +                                wstrDesc);
  +                    }
  +                    SetMenuItemInfo(hSubMenu,IDM_USER_COMP,FALSE,&mif);
  +
  +                    DestroyMenu(hCompMenu);
  +                }
  +
  +                if (hKey)
  +                    RegCloseKey (hKey);
   
                   pt.x = (int)LOWORD(lParam), 
                   pt.y = (int)HIWORD(lParam), 
  @@ -453,12 +787,104 @@
   
                       case IDM_ABOUT:
                           lpIMC = (LPINPUTCONTEXT)ImmLockIMC(hIMC);
  -                        (void) ImeConfigure (GetKeyboardLayout(0), lpIMC->hWnd, IME_CONFIG_GENERAL, NULL);
  +                        //(void) ImeConfigure (GetKeyboardLayout(0), lpIMC->hWnd, IME_CONFIG_GENERAL, NULL);
  +                        ImmConfigureIME(GetKeyboardLayout(0), lpIMC->hWnd, IME_CONFIG_GENERAL, 0);
                           //ImmConfigureIME(GetKeyboardLayout(0), NULL, IME_CONFIG_GENERAL, 0);
                           ImmUnlockIMC(hIMC);
                           break;
   
  +                    case IDM_OLD2BUL:
  +                    case IDM_3BUL:
  +                    case IDM_390:
  +                    case IDM_NEW2BUL:
  +                    case IDM_NEW3BUL:
  +                    case IDM_AHNMATAE:
  +                    case IDM_3SOON:
  +                        dwLayoutFlag = cmd - IDM_OLD2BUL + LAYOUT_OLD2BUL;
  +                        /*
  +                            MENUITEMINFO mk;
  +
  +                            GetMenuItemInfo(hSubMenu,cmd,FALSE,&mk);
  +                            mk.fMask=MIIM_STATE;
  +                            mk.fState=MFS_CHECKED;
  +                            mk.cbSize = sizeof(MENUITEMINFO);
  +                            SetMenuItemInfo(hSubMenu,cmd,FALSE,&mk);
  +                        */
  +                        set_keyboard(dwLayoutFlag);
  +                        break;
  +                    case IDM_HANGUL:
  +                        lpIMC = (LPINPUTCONTEXT)ImmLockIMC(hIMC);
  +                        fdwConversion = lpIMC->fdwConversion;
  +                        fdwConversion &= ~IME_CMODE_HANJACONVERT;
  +                        fdwConversion |= IME_CMODE_NATIVE;
  +                        ImmSetConversionStatus(hIMC,fdwConversion,dwTemp);
  +                        ImmUnlockIMC(hIMC);
  +                        break;
  +                    case IDM_HANJA:
  +                        lpIMC = (LPINPUTCONTEXT)ImmLockIMC(hIMC);
  +                        fdwConversion = lpIMC->fdwConversion;
  +                        if (!(fdwConversion & IME_CMODE_HANJACONVERT)) {
  +                            fdwConversion |= IME_CMODE_HANJACONVERT;
  +                            fdwConversion |= IME_CMODE_NATIVE;
  +                            ImmSetConversionStatus(hIMC,fdwConversion,dwTemp);
  +                        }
  +                        ImmUnlockIMC(hIMC);
  +                        break;
  +                    case IDM_ENG:
  +                        ChangeMode(hIMC,TO_CMODE_ALPHANUMERIC);
  +                        break;
  +
  +                    case IDM_ESC_ASCII:
  +                        if (dwOptionFlag & ESCENG_SUPPORT)
  +                            dwOptionFlag &= ~ESCENG_SUPPORT;
  +                        else
  +                            dwOptionFlag |= ESCENG_SUPPORT;
  +                        break;
  +                    case IDM_DVORAK:
  +                        if (dwOptionFlag & DVORAK_SUPPORT)
  +                            dwOptionFlag &= ~DVORAK_SUPPORT;
  +                        else
  +                            dwOptionFlag |= DVORAK_SUPPORT;
  +                        break;
  +                    case IDM_WORD_UNIT:
  +                        if (dwImeFlag & SAENARU_ONTHESPOT)
  +                            dwImeFlag &= ~SAENARU_ONTHESPOT;
  +                        else
  +                            dwImeFlag |= SAENARU_ONTHESPOT;
  +                        break;
  +                    case IDM_SHOW_KEYBOARD:
  +                        lpIMC = (LPINPUTCONTEXT)ImmLockIMC(hIMC);
  +                        fdwConversion = lpIMC->fdwConversion;
  +                        if (fdwConversion & IME_CMODE_SOFTKBD)
  +                            fdwConversion &= ~IME_CMODE_SOFTKBD;
  +                        else
  +                            fdwConversion |= IME_CMODE_SOFTKBD;
  +
  +                        ImmSetConversionStatus(hIMC,fdwConversion,dwTemp);
  +                        ImmUnlockIMC(hIMC);
  +
  +                        break;
                       default:
  +                        // check some dynamic menu items
  +                        if (cmd > IDM_USER && cmd < IDM_USER_COMP) {
  +                            MENUITEMINFO mk;
  +                            int myLayout;
  +
  +                            myLayout = cmd - IDM_USER;
  +                            myLayout += LAYOUT_USER - 1; // adjust
  +
  +                            dwLayoutFlag = myLayout;
  +                            set_keyboard(dwLayoutFlag);
  +                        } else if (cmd > IDM_USER_COMP && cmd < IDM_DVORAK ) {
  +                            MENUITEMINFO mk;
  +                            int myCompose;
  +
  +                            myCompose = cmd - IDM_USER_COMP + 3; // adjust
  +                            dwComposeFlag = myCompose;
  +                            set_compose(dwComposeFlag);
  +                            MyDebugPrint((TEXT("\t*** Compose (%d)\n"), myCompose));
  +                        }
  +                        MyDebugPrint((TEXT("\t*** RIGHTMENU (%d)\n"), cmd));
                           break;
                   }
   
  @@ -495,15 +921,25 @@
                   } else if (dwPushedStatus == PUSHED_STATUS_HDR)
                   {
                       fOpen = ImmGetOpenStatus(hIMC);
  -                    fOpen = !fOpen;
  -                    ImmSetOpenStatus(hIMC,fOpen);
  -                }
  -                else
  -                {
                       ImmGetConversionStatus(hIMC,&fdwConversion,&dwTemp);
  +                    if (!fOpen)
  +                        ImmSetOpenStatus(hIMC,TRUE);
  +                    else if (fdwConversion & IME_CMODE_NATIVE)
  +                        ImmSetOpenStatus(hIMC,FALSE);
  +
                       fdwConversion = GetUINextMode(fdwConversion,dwPushedStatus);
  +
                       ImmSetConversionStatus(hIMC,fdwConversion,dwTemp);
                   }
  +                else
  +                {
  +                    fOpen = ImmGetOpenStatus(hIMC);
  +                    if (fOpen) {
  +                        ImmGetConversionStatus(hIMC,&fdwConversion,&dwTemp);
  +                        fdwConversion = GetUINextMode(fdwConversion,dwPushedStatus);
  +                        ImmSetConversionStatus(hIMC,fdwConversion,dwTemp);
  +                    }
  +                }
               }
               PaintStatus(hStatusWnd,hDC,NULL,0);
               break;
  
  
  


wkpark      06/11/17 17:58:32

  Modified:    src      btnime.cpp
  Log:
  fixed the menu item of dvorak.
  fixed immlock() etc.
  close regkey properly
  
  Revision  Changes    Path
  1.8       +14 -3     saenaru/src/btnime.cpp
  
  Index: btnime.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btnime.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- btnime.cpp	9 Nov 2006 11:45:33 -0000	1.7
  +++ btnime.cpp	17 Nov 2006 08:58:32 -0000	1.8
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btnime.cpp,v 1.7 2006/11/09 11:45:33 wkpark Exp $
  + * $Saenaru: saenaru/src/btnime.cpp,v 1.8 2006/11/17 08:58:32 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -470,6 +470,7 @@
               //pUserKeyboardMenu->AddMenuItem (idUserKeyboardMenu,
                               dwFlag, NULL, NULL, wstrDesc, nstrDesc, NULL);
           }
  +	RegCloseKey(hKey);
           pUserKeyboardMenu->Release();
       }
       // add User defined Composes (SubMenu)
  @@ -507,6 +508,8 @@
               //pUserKeyboardMenu->AddMenuItem (idUserKeyboardMenu,
                               dwFlag, NULL, NULL, wstrDesc, nstrDesc, NULL);
           }
  +	RegCloseKey(hKey);
  +
           pUserComposeMenu->Release();
       }
       return S_OK;
  @@ -747,12 +750,14 @@
   {
       HIMC    hIMC;
       DWORD    dwConversion, dwSentence;
  +    LPINPUTCONTEXT lpIMC;
   
       hIMC    = _GetCurrentHIMC ();
       if (hIMC == NULL)
           return;
   
  -    if (ImmGetOpenStatus (hIMC) && ImmGetConversionStatus (hIMC, &dwConversion, &dwSentence))
  +    lpIMC = ImmLockIMC (hIMC);
  +    if (ImmGetConversionStatus (hIMC, &dwConversion, &dwSentence))
       {
           if (dwConversion & IME_CMODE_SOFTKBD)
               dwConversion &= ~IME_CMODE_SOFTKBD;
  @@ -760,6 +765,7 @@
               dwConversion |= IME_CMODE_SOFTKBD;
       }
       ImmSetConversionStatus (hIMC, dwConversion, 0);
  +    ImmUnlockIMC (hIMC);
   #if 0
       register BOOL    fShowKeyboardIcon    = TRUE;
       DWORD            dwValue;
  @@ -809,6 +815,11 @@
   DWORD
   _MenuItem_GetToggleDvorakFlag (UINT wID)
   {
  +    HKL hcur;
  +    hcur= GetKeyboardLayout(0);
  +    if ((DWORD)hcur == 0xE0130412)
  +        return TF_LBI_STATUS_DISABLED;
  +
       return (dwOptionFlag & DVORAK_SUPPORT) ? 1 : 0;
   }
   
  @@ -834,7 +845,7 @@
       if (hIMC == NULL)
           return TF_LBI_STATUS_DISABLED;
   
  -    if (ImmGetOpenStatus (hIMC) && ImmGetConversionStatus (hIMC, &dwConversion, &dwSentence))
  +    if (ImmGetConversionStatus (hIMC, &dwConversion, &dwSentence))
           return (dwConversion & IME_CMODE_SOFTKBD) ? TF_LBMENUF_CHECKED: 0;
       else
           //return TF_LBI_STATUS_DISABLED;
  
  
  


wkpark      06/11/17 18:03:23

  Modified:    resource status.bmp
  Log:
  update status img
  
  Revision  Changes    Path
  1.2       +1 -1      saenaru/resource/status.bmp
  
  	<<Binary file>>
  
  


wkpark      06/11/17 21:21:54

  Modified:    src      hangul.c
  Log:
  fixed automata2()
  
  Revision  Changes    Path
  1.23      +3 -2      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- hangul.c	17 Nov 2006 08:53:03 -0000	1.22
  +++ hangul.c	17 Nov 2006 12:21:54 -0000	1.23
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.22 2006/11/17 08:53:03 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.23 2006/11/17 12:21:54 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1979,7 +1979,7 @@
   
   WCHAR PASCAL hangul_ic_get( HangulIC *ic, UINT mode)
   {
  -    WCHAR code;
  +    WCHAR code=0;
   
       if (ic->len > 3 || !ic->syllable) return 0;
   
  @@ -2279,6 +2279,7 @@
                       cho = hangul_jongseong_to_choseong(ic->jong);
   		    if (cho)
   			ic->jong = 0; // .
  +		    hangul_ic_pop(ic);
                   }
   
                   *cs = hangul_ic_commit(ic);
  
  
  


wkpark      06/11/17 22:18:02

  Modified:    src      hangul.c
  Log:
  fix for automata2 with a type3 keyboard
  
  Revision  Changes    Path
  1.24      +20 -10    saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- hangul.c	17 Nov 2006 12:21:54 -0000	1.23
  +++ hangul.c	17 Nov 2006 13:18:02 -0000	1.24
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.23 2006/11/17 12:21:54 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.24 2006/11/17 13:18:02 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -2256,6 +2256,16 @@
                   }
                   break;
               case 2: //  + ߼
  +		if (!ic->jung && ctyping) {
  +		    // XXX
  +		    jong = ic->last;
  +		    ic->jung = jamo;
  +		    hangul_ic_pop(ic);
  +		    hangul_ic_push(ic,jong);
  +		    hangul_ic_push(ic,jamo);
  +		    ic->laststate = 2;
  +                    return 0;
  +		}
                   if (ic->jong != ic->last) {
                       hangul_jongseong_dicompose(ic->jong, &jong, &cho);
   		}
  @@ -2275,21 +2285,21 @@
   		    }
   		} else {
   		    // ص   
  -                    //  + ߼:   ʼ ٲٰ  
  -                    cho = hangul_jongseong_to_choseong(ic->jong);
  +		    //  + ߼:   ʼ ٲٰ  
  +		    cho = hangul_jongseong_to_choseong(ic->jong);
   		    if (cho)
   			ic->jong = 0; // .
   		    hangul_ic_pop(ic);
                   }
   
  -                *cs = hangul_ic_commit(ic);
  -                // XXX
  +		*cs = hangul_ic_commit(ic);
  +		// XXX
   		ic->cho = cho;
  -                ic->jung = jamo;
  -                hangul_ic_push(ic,cho);
  -                hangul_ic_push(ic,jamo);
  -                ic->laststate = 2;
  -                return -1; //  + ΰ commit
  +		ic->jung = jamo;
  +		hangul_ic_push(ic,cho);
  +		hangul_ic_push(ic,jamo);
  +		ic->laststate = 2;
  +		return -1; //  + ΰ commit
                   break;
               default: //  + 
                   // ι 丶Ÿ ó ʿ .
  
  
  


wkpark      06/11/18 10:41:51

  Modified:    src      resource.h saenaru.rc
  Log:
  add a help description
  
  Revision  Changes    Path
  1.10      +2 -1      saenaru/src/resource.h
  
  Index: resource.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/resource.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- resource.h	17 Nov 2006 08:55:28 -0000	1.9
  +++ resource.h	18 Nov 2006 01:41:51 -0000	1.10
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/resource.h,v 1.9 2006/11/17 08:55:28 wkpark Exp $
  + * $Saenaru: saenaru/src/resource.h,v 1.10 2006/11/18 01:41:51 wkpark Exp $
    */
   
   //{{NO_DEPENDENCIES}}
  @@ -80,6 +80,7 @@
   
   /* string tables */
   #define IDS_CONFIGNAME              1000
  +#define IDS_HELP_DESC               1001
   #define IDS_DICFILENAME             1003
   #define IDS_DIC_KEY                 1005
   #define IDS_SYM_KEY                 1006
  
  
  
  1.13      +8 -6      saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- saenaru.rc	17 Nov 2006 08:55:28 -0000	1.12
  +++ saenaru.rc	18 Nov 2006 01:41:51 -0000	1.13
  @@ -301,6 +301,7 @@
   LANGUAGE 0x12, 0x1
   BEGIN
       IDS_CONFIGNAME          " ѱ Է±"
  +    IDS_HELP_DESC           " ѱ Է± (&H)"
   END
   
   
  @@ -320,9 +321,9 @@
       IDS_INPUT_CMODE_DESC        "Է¹"
       IDS_TOGGLE_HALFFULL_DESC    "/ݰ ȯ"
       IDS_KEYBOARD_OPTION_DESC    "ۼ/Է± "
  -    IDS_MENU_HANGUL             "ѱ"
  -    IDS_MENU_ASCII              ""
  -    IDS_MENU_HANJA              ""
  +    IDS_MENU_HANGUL             "ѱ(&H)"
  +    IDS_MENU_ASCII              "(&E)"
  +    IDS_MENU_HANJA              "(&I)"
       IDS_MENU_CANCEL             ""
   END
   
  @@ -440,6 +441,7 @@
   LANGUAGE 0x09, 0x1
   BEGIN
       IDS_CONFIGNAME          "Saenaru Hangul Input Method"
  +    IDS_HELP_DESC           "&Help for Saenaru Hangul IME"
   END
   
   STRINGTABLE DISCARDABLE 
  @@ -470,9 +472,9 @@
       IDS_INPUT_CMODE_DESC        "Input Mode"
       IDS_TOGGLE_HALFFULL_DESC    "Fullwidth/Halfwidth Toggle"
       IDS_KEYBOARD_OPTION_DESC    "Keyboard/InputMethod Options"
  -    IDS_MENU_HANGUL             "Hangul"
  -    IDS_MENU_ASCII              "English"
  -    IDS_MENU_HANJA              "Ideograh"
  +    IDS_MENU_HANGUL             "&Hangul"
  +    IDS_MENU_ASCII              "&English"
  +    IDS_MENU_HANJA              "&Ideograh"
       IDS_MENU_CANCEL             "Cancel"
   END
   
  
  
  


wkpark      06/11/18 10:42:47

  Modified:    src      imm.c ui.c
  Log:
  use UninitLanguageBar()
  
  Revision  Changes    Path
  1.23      +2 -3      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- imm.c	7 Nov 2006 08:24:56 -0000	1.22
  +++ imm.c	18 Nov 2006 01:42:47 -0000	1.23
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.22 2006/11/07 08:24:56 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.23 2006/11/18 01:42:47 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -814,9 +814,8 @@
           ImmUnlockIMC(hIMC);
   #if !defined (NO_TSF)
           if (fSelect) {
  -            if (InitLanguageBar ()) {
  +            if (InitLanguageBar ())
                   ActivateLanguageBar (TRUE) ;
  -            }
           } else {
               ActivateLanguageBar (FALSE) ;
           }
  
  
  
  1.21      +4 -1      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- ui.c	17 Nov 2006 08:55:28 -0000	1.20
  +++ ui.c	18 Nov 2006 01:42:47 -0000	1.21
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.20 2006/11/17 08:55:28 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.21 2006/11/18 01:42:47 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -276,6 +276,7 @@
               MyDebugPrint((TEXT("WM_CREATE\n")));
               SetHookFunc();
               //SetConsoleHookFunc();
  +            InitLanguageBar();
   
               break;
   
  @@ -494,6 +495,8 @@
   
               MyDebugPrint((TEXT("WM_DELETE\n")));
               UnsetHookFunc();
  +            ActivateLanguageBar(FALSE);
  +            UninitLanguageBar();
               //UnsetConsoleHookFunc();
   
               break;
  
  
  


wkpark      06/11/18 10:45:08

  Modified:    src      tsf.cpp tsf.h
  Added:       src      btnhlp.cpp
  Log:
  add btnhlp.cpp to add a help entry using the ITfSystemLangBarItemSink class
  
  Revision  Changes    Path
  1.5       +107 -4    saenaru/src/tsf.cpp
  
  Index: tsf.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- tsf.cpp	8 Oct 2006 09:12:52 -0000	1.4
  +++ tsf.cpp	18 Nov 2006 01:45:08 -0000	1.5
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/tsf.cpp,v 1.4 2006/10/08 09:12:52 wkpark Exp $
  + * $Saenaru: saenaru/src/tsf.cpp,v 1.5 2006/11/18 01:45:08 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -49,10 +49,12 @@
   static    ITfThreadMgr*        _QueryThreadMgr (void);
   static    ITfLangBarItemMgr*    _QueryLangBarItemMgr (void);
   static    BOOL            InitOtherLangBarItem (void);
  +static    void		  _DumpLangBarItem(void);
   
  -static    HMODULE            shMSCTF                = NULL;
  -static    TfClientId        g_tfClientID;
  -static    BOOL            g_fInitTSF            = FALSE;
  +static    HMODULE       shMSCTF            = NULL;
  +static    TfClientId    g_tfClientID;
  +static    BOOL          g_fInitTSF         = FALSE;
  +static    DWORD         g_dwHelpButtonCookie = NULL;
   
   LONG DllAddRef(void)
   {
  @@ -141,6 +143,12 @@
   };
   #endif
   
  +// from _DumpLangBarItem()
  +// {50549ded e6eb 5542 82 89 f8 a3 1e 68 72 28}
  +const GUID c_guidItemButtonHelp = {
  +    0xed9d5450, 0xebe6, 0x4255, { 0x82, 0x89, 0xf8, 0xa3, 0x1e, 0x68, 0x72, 0x28 }
  +};
  +
   BOOL PASCAL
   InitLanguageBar (void)
   {
  @@ -184,6 +192,35 @@
       fRet = TRUE;
       g_fInitTSF = TRUE;
   
  +#define USE_HELPSINK
  +#ifdef USE_HELPSINK
  +    // http://msdn2.microsoft.com/en-us/library/ms628993.aspx
  +    pLangBarItemMgr = _QueryLangBarItemMgr();
  +    if (pLangBarItemMgr != NULL && g_dwHelpButtonCookie == NULL) {
  +        ITfLangBarItem* pItem;
  +        ITfSource* pSource;
  +        
  +        if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonHelp, &pItem)) &&
  +            pItem != NULL) {
  +            if (SUCCEEDED (pItem->QueryInterface (IID_ITfSource,
  +                        (void**)&pSource)) && pSource != NULL) {
  +                ITfSystemLangBarItemSink *pHelpSink;
  +                HRESULT hr;
  +
  +                hr= CreateItemHelp(&pHelpSink);
  +                if (SUCCEEDED(hr)) {
  +                    hr= pSource->AdviseSink(IID_ITfSystemLangBarItemSink,
  +                                        pHelpSink,&g_dwHelpButtonCookie);
  +                    pHelpSink->Release();
  +                }
  +                pSource->Release();
  +            }
  +            pItem->Release();
  +        }
  +        pLangBarItemMgr->Release();
  +    }
  +#endif
  +
    Exit_Func:
       DEBUGPRINTFEX (99, (TEXT ("InitLanguageBar () = %d\n"), fRet));
       if (! fRet)
  @@ -337,6 +374,9 @@
   #if 0
       _ShowKeyboardIcon (fShowKeyboardIcon);
   #endif
  +#if DEBUG
  +    _DumpLangBarItem();
  +#endif
     exit_func:
   #if defined (TSF_NEED_MUTEX)
       ReleaseMutex (hMutex);
  @@ -496,6 +536,29 @@
           return;
       }
   #endif
  +
  +#ifdef USE_HELPSINK
  +    DEBUGPRINTF ((TEXT ("Enter::UninitLanguageBar\n")));
  +    // http://msdn2.microsoft.com/en-us/library/ms628993.aspx
  +    pLangBarItemMgr = _QueryLangBarItemMgr();
  +    if (pLangBarItemMgr != NULL) {
  +        ITfLangBarItem* pItem;
  +        ITfSource* pSource;
  +        
  +        if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidItemButtonHelp, &pItem)) &&
  +            pItem != NULL) {
  +            if (SUCCEEDED (pItem->QueryInterface (IID_ITfSource,
  +                        (void**)&pSource)) && pSource != NULL) {
  +                pSource->UnadviseSink(g_dwHelpButtonCookie);
  +                pSource->Release();
  +                g_dwHelpButtonCookie= NULL;
  +                DEBUGPRINTF ((TEXT ("OK ? ::UninitLanguageBar\n")));
  +            }
  +            pItem->Release();
  +        }
  +        pLangBarItemMgr->Release();
  +    }
  +#endif
       if (shMSCTF != NULL) {
           FreeLibrary (shMSCTF);
           shMSCTF    = NULL;
  @@ -602,6 +665,46 @@
       return    TRUE;
   }
   
  +void
  +_DumpLangBarItem (void)
  +{
  +    register ITfLangBarItemMgr*	pLangBarItemMgr	= NULL;
  +    ITfLangBarItem* pItem;
  +    IEnumTfLangBarItems* pEnum;
  +
  +    pLangBarItemMgr = _QueryLangBarItemMgr();
  +    if (pLangBarItemMgr == NULL) 
  +	return ;
  +
  +    MyDebugPrint((TEXT("--[Enter: _DumpLangBarItem (%d)]--\n"), (int) GetTickCount())); 
  +    if (SUCCEEDED (pLangBarItemMgr->EnumItems(&pEnum))) {
  +	ITfLangBarItem*	rpItems[16]= { NULL };
  +	ULONG cItems = 0 ;
  +	if (SUCCEEDED (pEnum->Next (16, rpItems, &cItems))) {
  +	    ULONG i;
  +	    for (i = 0; i < cItems; i ++) {
  +		TF_LANGBARITEMINFO info;
  +		if (SUCCEEDED (rpItems [i]->GetInfo (&info))) {
  +		    const BYTE*	pBytes = (const BYTE *) &(info.guidItem);
  +		    MyDebugPrint((TEXT("(%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x)\n"),
  +			pBytes [0], pBytes [1], pBytes [2], pBytes [3],
  +			pBytes [4], pBytes [5], pBytes [6], pBytes [7], 
  +			pBytes [8], pBytes [9], pBytes [10], pBytes [11],
  +			pBytes [12], pBytes [13], pBytes [14], pBytes [15]));
  +                    MyDebugPrint((TEXT("Style: %0x\n"),info.dwStyle));
  +                    MyDebugPrint((TEXT("Desc: %s\n"),info.szDescription));
  +		}
  +	    }
  +	    for (i = 0 ; i < cItems ; i ++) {
  +		rpItems [i]->Release ();
  +		rpItems [i] = NULL;
  +	    }
  +	}
  +	pEnum->Release ();
  +    }
  +    return;
  +}
  +
   #endif
   
   /*
  
  
  
  1.5       +3 -1      saenaru/src/tsf.h
  
  Index: tsf.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- tsf.h	11 Oct 2006 03:46:34 -0000	1.4
  +++ tsf.h	18 Nov 2006 01:45:08 -0000	1.5
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/tsf.h,v 1.4 2006/10/11 03:46:34 wkpark Exp $
  + * $Saenaru: saenaru/src/tsf.h,v 1.5 2006/11/18 01:45:08 wkpark Exp $
    */
   
   #if !defined (tsf_h)
  @@ -58,6 +58,7 @@
   extern const GUID c_guidItemButtonShape ;
   extern const GUID c_guidKeyboardItemButton ;
   extern const GUID c_guidItemButtonPad ;
  +extern const GUID c_guidItemButtonMyHelp ;
   
   /* prototypes */
   HIMC _GetCurrentHIMC(void);
  @@ -65,6 +66,7 @@
   BOOL CreateItemButtonIME(ITfLangBarItem** ppLangBarItem);
   BOOL CreateItemButtonShape(ITfLangBarItem** ppLangBarItem);
   BOOL CreateItemButtonPad(ITfLangBarItem** ppLangBarItem);
  +BOOL CreateItemHelp(ITfSystemLangBarItemSink** ppLangBarItemSink);
   BOOL _ShowKeyboardIcon(BOOL fShow) ;
   
   LONG DllAddRef(void);
  
  
  
  1.1                  saenaru/src/btnhlp.cpp
  
  Index: btnhlp.cpp
  ===================================================================
  /*
   * This file is part of Saenaru.
   *
   * Copyright (c) 2006 Hye-Shik Chang <perky@i18n.org>.
   * Copyright (c) 2006 Won-Kyu Park <wkpark@kldp.org>.
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in the
   *    documentation and/or other materials provided with the distribution.
   *
   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   *
   * $Saenaru: saenaru/src/btnhlp.cpp,v 1.1 2006/11/18 01:45:08 wkpark Exp $
   */
  
  #if !defined (NO_TSF)
  #include "windows.h"
  #include "tchar.h"
  #include "immdev.h"
  #include <htmlhelp.h>
  
  #include "objbase.h"
  extern "C" {
  #include "saenaru.h"
  #include "resource.h"
  }
  /*	Platform SDK ݻ¡Platform SDK  include path
   *	תΪުΪ? DDK ˪ header 
   *	ԤƪުΪ
   */
  //#include "c:\Program Files\Microsoft SDK\include\msctf.h"
  #include "msctf.h"
  #include "olectl.h"
  #if !defined (TARGET_WIN2K)
  //#include "c:\Program Files\Microsoft SDK\include\uxtheme.h"
  #include "uxtheme.h"
  #endif
  #include "tsf.h"
  
  #define LANGBAR_ITEM_DESC	L"" // max 32 chars
  
  static	void	_Menu_SaenaruHelp(void);
  
  static	const TSFLBMENUINFO c_rgMenuItems[] = {
  #if 1
  	{ IDS_HELP_DESC, _Menu_SaenaruHelp}
  #endif
  };
  
  /*	CLangBarItemHelpMenu: Help Menu Button
   */
  class	CLangBarItemHelpMenu : public ITfSystemLangBarItemSink
  {
  public:
  	CLangBarItemHelpMenu ();
  	~CLangBarItemHelpMenu ();
  
  	// IUnknown
  	STDMETHODIMP QueryInterface (REFIID riid, void **ppvObj);
  	STDMETHODIMP_(ULONG) AddRef (void);
  	STDMETHODIMP_(ULONG) Release (void);
  	
  	// ITfSystemLangBarItemSink
  	STDMETHODIMP InitMenu (ITfMenu *pMenu);
  	STDMETHODIMP OnMenuSelect (UINT wID);
  
  private:
  	ITfLangBarItemSink*		_pLangBarItemSink;
  	TF_LANGBARITEMINFO		_tfLangBarItemInfo;
  	LONG				_cRef;
  };
  
  /*
   */
  CLangBarItemHelpMenu::CLangBarItemHelpMenu ()
  {
  	//DllAddRef ();
  	//_tfLangBarItemInfo.clsidService	= c_clsidSaenaruTextService;
  	//_tfLangBarItemInfo.clsidService	= CLSID_NULL;
  	//_tfLangBarItemInfo.guidItem		= c_guidItemButtonMyHelp;
  	_tfLangBarItemInfo.dwStyle              = TF_LBI_STYLE_BTN_MENU
                  | TF_LBI_STYLE_SHOWNINTRAY
  	      ;
  	_tfLangBarItemInfo.ulSort	= 1;
  	SafeStringCopy (_tfLangBarItemInfo.szDescription, ARRAYSIZE (_tfLangBarItemInfo.szDescription), LANGBAR_ITEM_DESC);
  	_pLangBarItemSink	= NULL;
  	_cRef			= 1;
  	return;
  }
  
  CLangBarItemHelpMenu::~CLangBarItemHelpMenu ()
  {
  	HRESULT     hr = S_OK;
  	DEBUGPRINTFEX (100, (TEXT ("CLangBarItemHelpMenu::~CLangBarItemHelpMenu (this:%p)\n"), this));
  	//DllRelease ();
  	//
  	return;
  }
  
  STDAPI
  CLangBarItemHelpMenu::QueryInterface (
  	REFIID			riid,
  	void**			ppvObj)
  {
  	if (ppvObj == NULL)
  		return	E_INVALIDARG;
  
  	*ppvObj	= NULL;
  	if (IsEqualIID (riid, IID_IUnknown)) {
  		*ppvObj	= (ITfLangBarItemButton *)this;
  	} else if (IsEqualIID (riid, IID_ITfSource)) {
  		*ppvObj	= (ITfSource *)this;
  	} else if (IsEqualIID (riid, IID_ITfSystemLangBarItemSink)) {
  		*ppvObj	= (ITfSystemLangBarItemSink *)this;
  	}
  	if (*ppvObj != NULL) {
  		AddRef ();
  		return	S_OK;
  	}
  	return	E_NOINTERFACE;
  }
  
  STDAPI_(ULONG)
  CLangBarItemHelpMenu::AddRef ()
  {
  	return	++ _cRef;
  }
  
  STDAPI_(ULONG)
  CLangBarItemHelpMenu::Release ()
  {
  	LONG	cr	= -- _cRef;
  
  	if (_cRef == 0) {
  		delete	this;
  	}
  	return	cr;
  }
  
  /*	ITfLangBarItemButton::InitMenu
   *
   */
  STDAPI
  CLangBarItemHelpMenu::InitMenu (
  	ITfMenu* pMenu)
  {
  	register HIMC		hIMC;
  	register int		i;
  	register DWORD		dwFlag;
  	register LPCWSTR	wstrDesc;
  	register ULONG		nstrDesc;
  
          DEBUGPRINTFEX (100, (TEXT ("CLangBarItemHelpMenu::InitMenu (ITfMenu:%p)\n"), pMenu)) ;
  	if (pMenu == NULL)
  		return	E_INVALIDARG ;
  
  	hIMC	= _GetCurrentHIMC () ;
  	if (hIMC != NULL) {
  		for (i = 0 ; i < ARRAYSIZE (c_rgMenuItems) ; i ++) {
  			LPTSTR lpDesc;
  			TCHAR szDesc[128];
  
  			lpDesc=(LPTSTR)&szDesc;
  			if (c_rgMenuItems [i].chDesc!=NULL)
  				LoadString(hInst,c_rgMenuItems [i].chDesc,lpDesc,128);
  			else
  				lpDesc=NULL;
  			wstrDesc		= (LPCWSTR)lpDesc;
  			//wstrDesc		= c_rgMenuItems [i].pchDesc ;
  			if (wstrDesc != NULL) {
  				nstrDesc	= wcslen (wstrDesc) ;
  				dwFlag		= 0;
  			} else {
  				nstrDesc	= 0 ;
  				dwFlag		= TF_LBMENUF_SEPARATOR ;
  			}
  			pMenu->AddMenuItem (i, dwFlag, NULL, NULL, wstrDesc, nstrDesc, NULL) ;
  		}
  	}
  	return	S_OK ;
  }
  
  STDAPI
  CLangBarItemHelpMenu::OnMenuSelect (
  	UINT wID)
  {
  	if (wID >= ARRAYSIZE (c_rgMenuItems))
  		return	E_FAIL;
  
  	if (c_rgMenuItems [wID].pfnHandler != NULL) {
  		c_rgMenuItems [wID].pfnHandler();
  	}
  	return	S_OK;
  }
  
  /*========================================================================*
   *	private functions
   */
  void
  _Menu_SaenaruHelp (void)
  {
      LPTSTR lpHelp;
      TCHAR szHelp[256];
  
      lpHelp=(LPTSTR)&szHelp;
  
      lpHelp += GetSaenaruDirectory(lpHelp,256);
      if (*(lpHelp-1) != TEXT('\\')) *lpHelp++ = TEXT('\\');
      //LoadString(hInst,c_rgMenuItems [i].chDesc,lpDesc,128);
      lstrcpy (lpHelp, TEXT("help\\saenaru.chm"));
  
      HtmlHelp(0, szHelp, HH_DISPLAY_TOPIC, NULL);
      return;
  }
  
  
  /*========================================================================*
   *	public function interface
   */
  BOOL	PASCAL
  CreateItemHelp (
  	register ITfSystemLangBarItemSink**   ppLangBarSink)
  {
  	if (ppLangBarSink == NULL)
  		return	FALSE;
  	*ppLangBarSink	= new CLangBarItemHelpMenu;
  	return	(*ppLangBarSink != NULL);
  }
  
  #endif
  
  /*
   * ex: ts=8 sts=4 sw=4 et
   */
  
  
  


wkpark      06/11/18 10:47:42

  Modified:    src      sources
  Log:
  add btnhlp.cpp
  
  Revision  Changes    Path
  1.6       +2 -0      saenaru/src/sources
  
  Index: sources
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/sources,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- sources	26 Oct 2006 11:24:24 -0000	1.5
  +++ sources	18 Nov 2006 01:47:42 -0000	1.6
  @@ -57,6 +57,7 @@
   	btnime.cpp \
   	btncmd.cpp \
   	btnpad.cpp \
  +	btnhlp.cpp \
   	btnext.cpp
   
   TSFLIBS= \
  @@ -74,6 +75,7 @@
           $(DDK_LIB_PATH)\imm32.lib \
           $(DDK_LIB_PATH)\kernel32.lib \
           $(DDK_LIB_PATH)\user32.lib \
  +        $(DDK_LIB_PATH)\htmlhelp.lib \
   	$(TSFLIBS)
   
   NTTARGETFILES=copyfile
  
  
  


wkpark      06/11/20 17:42:28

  Modified:    src      resource.h saenaru.rc
  Log:
  update resource
  
  Revision  Changes    Path
  1.11      +3 -1      saenaru/src/resource.h
  
  Index: resource.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/resource.h,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- resource.h	18 Nov 2006 01:41:51 -0000	1.10
  +++ resource.h	20 Nov 2006 08:42:28 -0000	1.11
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/resource.h,v 1.10 2006/11/18 01:41:51 wkpark Exp $
  + * $Saenaru: saenaru/src/resource.h,v 1.11 2006/11/20 08:42:28 wkpark Exp $
    */
   
   //{{NO_DEPENDENCIES}}
  @@ -81,6 +81,7 @@
   /* string tables */
   #define IDS_CONFIGNAME              1000
   #define IDS_HELP_DESC               1001
  +#define IDS_ABOUT                   1002
   #define IDS_DICFILENAME             1003
   #define IDS_DIC_KEY                 1005
   #define IDS_SYM_KEY                 1006
  @@ -121,6 +122,7 @@
   
   #define IDC_STATIC                      -1
   
  +#define IDM_CONFIG     		40000
   #define IDM_OLD2BUL		40001
   #define IDM_3BUL		40002
   #define IDM_390			40003
  
  
  
  1.14      +41 -6     saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- saenaru.rc	18 Nov 2006 01:41:51 -0000	1.13
  +++ saenaru.rc	20 Nov 2006 08:42:28 -0000	1.14
  @@ -123,15 +123,15 @@
   END
   
   DLG_ABOUT DIALOG DISCARDABLE  30, 65, 215, 135
  -STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION
  +STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
   CAPTION "翡 ..."
   FONT 9, ""
   LANGUAGE 0x12, 0x1
   BEGIN
       LTEXT           " ѱ Է±  1.0",IDC_STATIC,63,36,88,8
       ICON            IDI_ABOUT,IDC_STATIC,98,4,20,20
  -    LTEXT           " <perky@FreeBSD.org>  2003-2006",IDC_STATIC,
  -		    33,54,151,8 
  +    LTEXT           ", ڿ  2003-2006",IDC_STATIC,
  +		     59,54,98,8
       LTEXT           " Ʈ ùٸ ̳ Ư  ռ    ""ִ ״"" ˴ϴ.",
                       IDC_STATIC,8,81,198,18
       LTEXT           " Ʈ ѹα ۱ǹ  ȣ˴ϴ. ڼ ۱   Ǵ   Ǵ Ʈ Ȩ(http://saenaru.i18n.org/) Ͻʽÿ.",
  @@ -247,7 +247,7 @@
       POPUP ""
       BEGIN
   
  -    	MENUITEM "ȯ漳(&R)",	IDM_ABOUT
  +    	MENUITEM "ȯ漳(&R)",	IDM_CONFIG
   	MENUITEM SEPARATOR
   	MENUITEM "ѱ(&H)",		IDM_HANGUL
   	MENUITEM "(&E)",		IDM_ENG
  @@ -302,6 +302,7 @@
   BEGIN
       IDS_CONFIGNAME          " ѱ Է±"
       IDS_HELP_DESC           " ѱ Է± (&H)"
  +    IDS_ABOUT               "翡 (&A)..."
   END
   
   
  @@ -417,14 +418,14 @@
   
   
   DLG_ABOUT DIALOG DISCARDABLE  30, 65, 215, 135
  -STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION
  +STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
   CAPTION "About Saenaru..."
   LANGUAGE 0x09, 0x01
   FONT 9, "Tahoma"
   {
      LTEXT	"Saenaru Hangul Input Method ver 1.0", IDC_STATIC, 43,29,126,8 
      ICON		IDI_ABOUT, IDC_STATIC, 98,6,18,18 
  -   LTEXT	"Hye-Sik Chang  <perky@FreeBSD.org> 2003-2006", IDC_STATIC, 26,42,164,8 
  +   LTEXT	"Hye-Sik Chang, Won-Kyu Park 2003-2006", IDC_STATIC, 41,42,136,8 
      LTEXT 	"THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.", IDC_STATIC, 10,59,198,42 
      LTEXT	"The software product is protected by copyright laws in Korea. See the included license along with this program or visit the homepage(http://saenaru.i18n.org/) of this project.", IDC_STATIC,
   		8,102,198,27 
  @@ -432,6 +433,39 @@
   }
   
   
  +RIGHTCLKMENU MENU DISCARDABLE 
  +LANGUAGE 0x09, 0x1
  +BEGIN
  +    POPUP ""
  +    BEGIN
  +
  +    	MENUITEM "Configu&re",		IDM_CONFIG
  +	MENUITEM SEPARATOR
  +	MENUITEM "&Hangul",		IDM_HANGUL
  +	MENUITEM "&English",		IDM_ENG
  +	MENUITEM "&Ideograph",		IDM_HANJA
  +	MENUITEM SEPARATOR
  +	MENUITEM "&2-set",  		IDM_OLD2BUL
  +	MENUITEM "&3-set",  		IDM_3BUL
  +	MENUITEM "3-set 3&90",  	IDM_390
  +    	MENUITEM "New 2-set(&D)",	IDM_NEW2BUL
  +    	MENUITEM "New 3-set(&S)",	IDM_NEW3BUL
  +     	MENUITEM "&Ahnmatae",		IDM_AHNMATAE
  +    	MENUITEM "3-set noshift(&N)",	IDM_3SOON
  +    	MENUITEM "&User keyboard",	IDM_USER
  +    	MENUITEM "&Compose Map",	IDM_USER_COMP
  +	MENUITEM SEPARATOR
  +    	MENUITEM "D&vorak",		IDM_DVORAK
  +    	MENUITEM "&ESC ȯ(&E)",	IDM_ESC_ASCII
  +    	MENUITEM "&Word unit edit",	IDM_WORD_UNIT
  +	MENUITEM SEPARATOR
  +    	MENUITEM "&Show keyboard",	IDM_SHOW_KEYBOARD
  +	MENUITEM SEPARATOR
  +        MENUITEM "Re&Convert",		IDM_RECONVERT
  +	MENUITEM "&About saenaru...",	IDM_ABOUT          
  +    END
  +END
  +
   /////////////////////////////////////////////////////////////////////////////
   //
   // String Table
  @@ -442,6 +476,7 @@
   BEGIN
       IDS_CONFIGNAME          "Saenaru Hangul Input Method"
       IDS_HELP_DESC           "&Help for Saenaru Hangul IME"
  +    IDS_ABOUT               "&About Saenaru..."
   END
   
   STRINGTABLE DISCARDABLE 
  
  
  


wkpark      06/11/20 17:44:02

  Modified:    src      saenaru.h tsf.cpp tsf.h
  Log:
  add IsLangBarEnable() to show the uistatus properly
  
  Revision  Changes    Path
  1.15      +2 -1      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- saenaru.h	9 Nov 2006 11:45:33 -0000	1.14
  +++ saenaru.h	20 Nov 2006 08:44:02 -0000	1.15
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.14 2006/11/09 11:45:33 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.15 2006/11/20 08:44:02 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -575,6 +575,7 @@
   BOOL PASCAL UpdateLanguageBar(void);
   void PASCAL ActivateLanguageBar(BOOL);
   BOOL PASCAL IsTSFEnabled(void);
  +BOOL PASCAL IsLangBarEnabled(void);
   #endif
   
   /*
  
  
  
  1.6       +21 -1     saenaru/src/tsf.cpp
  
  Index: tsf.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- tsf.cpp	18 Nov 2006 01:45:08 -0000	1.5
  +++ tsf.cpp	20 Nov 2006 08:44:02 -0000	1.6
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/tsf.cpp,v 1.5 2006/11/18 01:45:08 wkpark Exp $
  + * $Saenaru: saenaru/src/tsf.cpp,v 1.6 2006/11/20 08:44:02 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -617,6 +617,26 @@
       return    hIMC;
   }
   
  +BOOL PASCAL
  +IsLangBarEnabled(void)
  +{
  +    register ITfLangBarItemMgr* pLangBarItemMgr = NULL;
  +    ITfLangBarItem* pItem;
  +    register BOOL fRet = FALSE;
  +
  +    pLangBarItemMgr = _QueryLangBarItemMgr();
  +    if (pLangBarItemMgr == NULL) 
  +        return FALSE;
  +
  +    if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidKeyboardItemButton, &pItem))) {
  +        pItem->Release();
  +        fRet = TRUE;
  +    }
  +    pLangBarItemMgr->Release();
  +
  +    return fRet;
  +}
  +
   /*    ???ɫ(ޫ?)?/ު?ƪ﷪𪨪??
    *
    *    Text Service Framework ꪵƪ˪ϫ???ɪΫ
  
  
  
  1.6       +2 -2      saenaru/src/tsf.h
  
  Index: tsf.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- tsf.h	18 Nov 2006 01:45:08 -0000	1.5
  +++ tsf.h	20 Nov 2006 08:44:02 -0000	1.6
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/tsf.h,v 1.5 2006/11/18 01:45:08 wkpark Exp $
  + * $Saenaru: saenaru/src/tsf.h,v 1.6 2006/11/20 08:44:02 wkpark Exp $
    */
   
   #if !defined (tsf_h)
  @@ -67,7 +67,7 @@
   BOOL CreateItemButtonShape(ITfLangBarItem** ppLangBarItem);
   BOOL CreateItemButtonPad(ITfLangBarItem** ppLangBarItem);
   BOOL CreateItemHelp(ITfSystemLangBarItemSink** ppLangBarItemSink);
  -BOOL _ShowKeyboardIcon(BOOL fShow) ;
  +BOOL IsLangBarEnabled(VOID);
   
   LONG DllAddRef(void);
   LONG DllRelease(void);
  
  
  


wkpark      06/11/20 17:49:28

  Modified:    src      ui.c uistate.c
  Log:
  use IsLangBarEnabled() to show uistatus correctly
  try to fix softkeyboard behavior
  
  Revision  Changes    Path
  1.22      +30 -8     saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- ui.c	18 Nov 2006 01:42:47 -0000	1.21
  +++ ui.c	20 Nov 2006 08:49:28 -0000	1.22
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.21 2006/11/18 01:42:47 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.22 2006/11/20 08:49:28 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -605,6 +605,7 @@
       LPUIEXTRA lpUIExtra;
       RECT rc;
       LOGFONT lf;
  +    HWND hwndIndicate;
   
       if (!(lpIMC = ImmLockIMC(hUICurIMC)))
           return 0L;
  @@ -650,20 +651,28 @@
                   0, 0);
               }
   
  -            //ShowWindow(lpUIExtra->uiSoftKbd.hWnd,SW_SHOWNOACTIVATE);
  -            ImmShowSoftKeyboard(lpUIExtra->uiSoftKbd.hWnd,SW_HIDE);
  +            if (lpIMC->fdwConversion & IME_CMODE_SOFTKBD ) {
  +                UpdateSoftKeyboard(lpUIExtra, lpIMC->fdwConversion & IME_CMODE_SOFTKBD);
  +                ImmShowSoftKeyboard(lpUIExtra->uiSoftKbd.hWnd,SW_SHOWNOACTIVATE);
  +            } else
  +                ImmShowSoftKeyboard(lpUIExtra->uiSoftKbd.hWnd,SW_HIDE);
   
  -            //lpUIExtra->uiSoftKbd.bShow = TRUE;
  -            //SetWindowLongPtr(lpUIExtra->uiSoftKbd.hWnd,FIGWL_SVRWND,(LONG_PTR)hWnd);
  +            /*
  +            ShowWindow(lpUIExtra->uiSoftKbd.hWnd,SW_SHOWNOACTIVATE);
  +            lpUIExtra->uiSoftKbd.bShow = TRUE;
  +            SetWindowLongPtr(lpUIExtra->uiSoftKbd.hWnd,FIGWL_SVRWND,(LONG_PTR)hWnd);
  +            */
   #endif
               if (lpUIExtra->uiStatus.pt.x == -1)
               {
  -                GetWindowRect(lpIMC->hWnd,&rc);
  +                //GetWindowRect(lpIMC->hWnd,&rc);
  +                GetWindowRect(GetDesktopWindow(),&rc);
                   lpUIExtra->uiStatus.pt.x = rc.right - 100; // XXX +1 => -100
  -                lpUIExtra->uiStatus.pt.y = rc.top;
  +                lpUIExtra->uiStatus.pt.y = rc.bottom - 100;
               }
   #ifndef USE_STATUS_WIN98_XXX
  -            if (!IsTSFEnabled()) {
  +            if (!IsLangBarEnabled()) {
  +                MyDebugPrint((TEXT("***** LangBar NOT Enabled ******\r\n")));
               if (!IsWindow(lpUIExtra->uiStatus.hWnd))
               {
                   lpUIExtra->uiStatus.hWnd = 
  @@ -1090,7 +1099,18 @@
       }
       else
       {
  +        DWORD dwbg;
  +        HBRUSH hbrbg;
           SetSoftKbdData(lpUIExtra->uiSoftKbd.hWnd);
  +        dwbg=GetClassLongPtr(lpUIExtra->uiSoftKbd.hWnd,GCL_HBRBACKGROUND);
  +        MyDebugPrint((TEXT("\tBackground color: 0x%x\r\n"),dwbg));
  +
  +        SetClassLongPtr(lpUIExtra->uiSoftKbd.hWnd,GCL_HBRBACKGROUND,(COLOR_BTNFACE + 1));
  +        //hbrbg = CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
  +        //SetClassLongPtr(lpUIExtra->uiSoftKbd.hWnd,GCL_HBRBACKGROUND,(LONG)hbrbg);
  +        // XXX
  +
  +        //DeleteObject(hbrbg);
   
           ImmShowSoftKeyboard(lpUIExtra->uiSoftKbd.hWnd,SW_SHOWNOACTIVATE);
       }
  @@ -1267,9 +1287,11 @@
       lpmsg = (LPMSG)lParam;
       vKey = lpmsg->wParam;
   
  +#if DEBUG
       if (vKey == VK_PROCESSKEY) {
           MyDebugPrint((TEXT("\tMainProc: VK_PROCESSKEY and 0x%x\r\n"),lpmsg->lParam));
       }
  +#endif
   
       switch (lpmsg->message)
       {
  
  
  
  1.5       +6 -2      saenaru/src/uistate.c
  
  Index: uistate.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uistate.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- uistate.c	17 Nov 2006 08:55:28 -0000	1.4
  +++ uistate.c	20 Nov 2006 08:49:28 -0000	1.5
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uistate.c,v 1.4 2006/11/17 08:55:28 wkpark Exp $
  + * $Saenaru: saenaru/src/uistate.c,v 1.5 2006/11/20 08:49:28 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -283,7 +283,6 @@
       int x;
       HWND hSvrWnd;
       HBITMAP bmTemp,bmTempOld;
  -    if (IsTSFEnabled()) return;
   
       hSvrWnd = (HWND)GetWindowLongPtr(hStatusWnd,FIGWL_SVRWND);
   
  @@ -545,6 +544,11 @@
                   HMENU hSubMenu = GetSubMenu(hMenu, 0);
                   MENUITEMINFO mk;
   
  +                if (gfSaenaruSecure) {
  +                    EnableMenuItem(hSubMenu,IDM_CONFIG,MF_GRAYED);
  +                    EnableMenuItem(hSubMenu,IDM_RECONVERT,MF_GRAYED);
  +                }
  +
                   fOpen = ImmGetOpenStatus(hIMC);
                   ImmGetConversionStatus(hIMC,&fdwConversion,&dwTemp);
   
  
  
  


wkpark      06/11/20 17:51:05

  Modified:    src      btnhlp.cpp config.c
  Log:
  add a "about" menu
  
  Revision  Changes    Path
  1.2       +14 -3     saenaru/src/btnhlp.cpp
  
  Index: btnhlp.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/btnhlp.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- btnhlp.cpp	18 Nov 2006 01:45:08 -0000	1.1
  +++ btnhlp.cpp	20 Nov 2006 08:51:05 -0000	1.2
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/btnhlp.cpp,v 1.1 2006/11/18 01:45:08 wkpark Exp $
  + * $Saenaru: saenaru/src/btnhlp.cpp,v 1.2 2006/11/20 08:51:05 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -56,10 +56,12 @@
   #define LANGBAR_ITEM_DESC	L"" // max 32 chars
   
   static	void	_Menu_SaenaruHelp(void);
  +static	void	_Menu_About(void);
   
   static	const TSFLBMENUINFO c_rgMenuItems[] = {
   #if 1
  -	{ IDS_HELP_DESC, _Menu_SaenaruHelp}
  +	{ IDS_ABOUT, _Menu_About},
  +	{ IDS_HELP_DESC, _Menu_SaenaruHelp},
   #endif
   };
   
  @@ -92,7 +94,8 @@
   {
   	//DllAddRef ();
   	//_tfLangBarItemInfo.clsidService	= c_clsidSaenaruTextService;
  -	//_tfLangBarItemInfo.clsidService	= CLSID_NULL;
  +	_tfLangBarItemInfo.clsidService	= CLSID_NULL;
  +	_tfLangBarItemInfo.guidItem	= GUID_NULL;
   	//_tfLangBarItemInfo.guidItem		= c_guidItemButtonMyHelp;
   	_tfLangBarItemInfo.dwStyle              = TF_LBI_STYLE_BTN_MENU
                   | TF_LBI_STYLE_SHOWNINTRAY
  @@ -229,6 +232,14 @@
       return;
   }
   
  +void
  +_Menu_About(void)
  +{
  +    HWND hWnd= GetFocus();
  +    DialogBox(hInst, MAKEINTRESOURCE(DLG_ABOUT), hWnd, AboutDlgProc);
  +    return;
  +}
  +
   
   /*========================================================================*
    *	public function interface
  
  
  
  1.8       +2 -1      saenaru/src/config.c
  
  Index: config.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/config.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- config.c	9 Nov 2006 11:45:33 -0000	1.7
  +++ config.c	20 Nov 2006 08:51:05 -0000	1.8
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/config.c,v 1.7 2006/11/09 11:45:33 wkpark Exp $
  + * $Saenaru: saenaru/src/config.c,v 1.8 2006/11/20 08:51:05 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -158,6 +158,7 @@
               break;
   
           case WM_COMMAND:
  +            EndDialog(hDlg, wParam); 
               break;
   
           default:
  
  
  


wkpark      06/11/20 17:53:02

  Modified:    src      uicand.c
  Log:
  update
  
  Revision  Changes    Path
  1.9       +3 -1      saenaru/src/uicand.c
  
  Index: uicand.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicand.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- uicand.c	18 Oct 2006 00:12:47 -0000	1.8
  +++ uicand.c	20 Nov 2006 08:53:02 -0000	1.9
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicand.c,v 1.8 2006/10/18 00:12:47 wkpark Exp $
  + * $Saenaru: saenaru/src/uicand.c,v 1.9 2006/11/20 08:53:02 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -369,9 +369,11 @@
   
           lpUIExtra->uiCand.hWnd = 
                   CreateWindowEx(WS_EX_WINDOWEDGE|
  +#if 0
   #if (WINVER >= 0x0500)
                                WS_EX_COMPOSITED|
   #endif
  +#endif
                                WS_EX_RIGHTSCROLLBAR,
                                (LPTSTR)szCandClassName,NULL,
                                WS_COMPNODEFAULT|
  
  
  


wkpark      06/11/20 19:04:49

  Modified:    src      hangul.c
  Log:
  fixed last changes
  
  Revision  Changes    Path
  1.25      +6 -6      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- hangul.c	17 Nov 2006 13:18:02 -0000	1.24
  +++ hangul.c	20 Nov 2006 10:04:49 -0000	1.25
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.24 2006/11/17 13:18:02 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.25 2006/11/20 10:04:49 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -2060,7 +2060,7 @@
   int hangul_automata2( HangulIC *ic, WCHAR jamo, WCHAR *cs )
   {
       int kind;
  -    WCHAR comb=0, cho=0, jong=0, last=0;
  +    WCHAR comb=0, cho=0, jong=0, last=0, tmp=0;
       BOOL ctyping=0;
   
       *cs = 0;
  @@ -2203,6 +2203,7 @@
               // 
               switch(kind) {
               case 1: // ʼ  ٲ㼭
  +		cho = jamo;
                   jong = hangul_choseong_to_jongseong(jamo);
                   comb = hangul_compose(ic->jong, jong);
   		// ġ   ٲ㼭 + 
  @@ -2220,8 +2221,8 @@
                           return 0;
                       }
                   }
  -                hangul_jongseong_dicompose(ic->jong, &jong, &cho);
  -		if (jong && cho) {
  +                hangul_jongseong_dicompose(ic->jong, &jong, &tmp);
  +		if (jong && tmp) {
   		    // ʼ  Ưó
   		    last=ic->last;
   		    if ( hangul_is_jongseong(ic->last) )
  @@ -2244,8 +2245,7 @@
   			ic->jong = 0; //  .
   			cho= comb; // ʼ ġ
   		    }
  -		} else
  -		    cho= jamo;
  +		}
                   {
                       // ʼ compose  .
                       *cs = hangul_ic_commit(ic);
  
  
  


wkpark      06/11/21 17:25:00

  Modified:    src      hangul.c
  Log:
  fixed 3-set automata under the concurrent typing
  
  Revision  Changes    Path
  1.26      +2 -2      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- hangul.c	20 Nov 2006 10:04:49 -0000	1.25
  +++ hangul.c	21 Nov 2006 08:25:00 -0000	1.26
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.25 2006/11/20 10:04:49 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.26 2006/11/21 08:25:00 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -2587,7 +2587,7 @@
                   }
                   //    ä ְ
                   // ʼ Էµ ̶ 
  -                else if (ic->cho && hangul_is_jongseong(ic->last) && ctyping) {
  +                else if (!ic->cho && hangul_is_jongseong(ic->last) && ctyping) {
   		    if (ic->jong != ic->last) {
   			WCHAR j1,j2;
   			MyDebugPrint((TEXT("CON cho !!: %x\r\n"), jamo));
  
  
  


wkpark      06/11/21 17:25:34

  Modified:    src      imm.c
  Log:
  auto toggle han/eng mode with the MS Word
  
  Revision  Changes    Path
  1.24      +7 -1      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- imm.c	18 Nov 2006 01:42:47 -0000	1.23
  +++ imm.c	21 Nov 2006 08:25:34 -0000	1.24
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.23 2006/11/18 01:42:47 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.24 2006/11/21 08:25:34 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -327,6 +327,12 @@
   
       fOpen = lpIMC->fOpen;
   
  +    // support auto hangul/english toggle with M$ Word
  +    if (!fOpen && ImmGetConversionStatus (hIMC, &dwConversion, &dwSentense) && dwConversion & IME_CMODE_NATIVE) {
  +        ImmSetOpenStatus(hIMC,TRUE);
  +        fOpen = TRUE;
  +    }
  +
       switch ( ( LOWORD(vKey) & 0x00FF ) ) {
   #if 1
           case VK_HANJA:
  
  
  


wkpark      06/11/21 21:14:52

  Modified:    src      dic.c
  Log:
  fixed ConvHanja() for only registered in the jinsuk.dic
  
  Revision  Changes    Path
  1.24      +5 -1      saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- dic.c	7 Nov 2006 08:23:08 -0000	1.23
  +++ dic.c	21 Nov 2006 12:14:52 -0000	1.24
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.23 2006/11/07 08:23:08 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.24 2006/11/21 12:14:52 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -318,6 +318,10 @@
                   // get hanja list for this hangul
                   nBufLen = GetCandidateStringsFromDictionary(han,
                           szBuf+Mylstrlen(lpT2)+1, 1024, (LPTSTR)szDic);
  +                if (nBufLen == 0) {
  +                    nBufLen=1;
  +                    szBuf[2]= 0; // double terminate
  +                }
               }
           } else { // always open a candidate window with hangul chars
               lmemset(GETLPCOMPATTR(lpCompStr),ATTR_TARGET_CONVERTED ,
  
  
  


wkpark      06/11/21 22:05:00

  Modified:    resource penindic.ico
  Log:
  update
  
  Revision  Changes    Path
  1.3       +8 -10     saenaru/resource/penindic.ico
  
  	<<Binary file>>
  
  


wkpark      06/11/21 22:05:49

  Modified:    resource nabi.dic
  Log:
  fixed
  
  Revision  Changes    Path
  1.2       +3 -1      saenaru/resource/nabi.dic
  
  	<<Binary file>>
  
  


wkpark      06/11/22 00:21:08

  Modified:    src      saenaru.c saenaru.h
  Log:
  add some definitions
  
  Revision  Changes    Path
  1.8       +2 -2      saenaru/src/saenaru.c
  
  Index: saenaru.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- saenaru.c	10 Oct 2006 11:08:38 -0000	1.7
  +++ saenaru.c	21 Nov 2006 15:21:08 -0000	1.8
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.c,v 1.7 2006/10/10 11:08:38 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.c,v 1.8 2006/11/21 15:21:08 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -79,7 +79,7 @@
   #if 1
               psa = CreateSecurityAttributes();
               if ( psa != NULL ) {
  -                 hMutex = CreateMutex( psa, FALSE, TEXT("SaeNaru_Mutex"));
  +                 hMutex = CreateMutex( psa, FALSE, SAENARU_MUTEX_NAME);
                    FreeSecurityAttributes( psa );
                    if ( hMutex == NULL ) {
                    // Failed
  
  
  
  1.16      +9 -8      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- saenaru.h	20 Nov 2006 08:44:02 -0000	1.15
  +++ saenaru.h	21 Nov 2006 15:21:08 -0000	1.16
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.15 2006/11/20 08:44:02 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.16 2006/11/21 15:21:08 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -44,6 +44,14 @@
   #define LOGF_APIOUT         0x00000004
   #define LOGF_KEY            0x00000008
   
  +/**********************************************************************/
  +/*                                                                    */
  +/*      Define                                                        */
  +/*                                                                    */
  +/**********************************************************************/
  +
  +#define SAENARU_MUTEX_NAME  TEXT("SaeNaru_Mutex")
  +
   #define LAYOUT_OLD2BUL      0x00000001
   #define LAYOUT_3FIN         0x00000002
   #define LAYOUT_390	    0x00000003
  @@ -72,13 +80,6 @@
   #define ESCENG_SUPPORT         0x00000200
   #define QWERTY_HOTKEY_SUPPORT  0x00000400
   
  -
  -/**********************************************************************/
  -/*                                                                    */
  -/*      Define                                                        */
  -/*                                                                    */
  -/**********************************************************************/
  -
   /* for Unicode SAENARU */
   typedef LPTSTR            LPMYSTR;
   typedef TCHAR             MYCHAR;
  
  
  


wkpark      06/11/22 00:21:24

  Modified:    src      tsf.cpp tsf.h
  Log:
  cleanup
  
  Revision  Changes    Path
  1.7       +10 -67    saenaru/src/tsf.cpp
  
  Index: tsf.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- tsf.cpp	20 Nov 2006 08:44:02 -0000	1.6
  +++ tsf.cpp	21 Nov 2006 15:21:24 -0000	1.7
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/tsf.cpp,v 1.6 2006/11/20 08:44:02 wkpark Exp $
  + * $Saenaru: saenaru/src/tsf.cpp,v 1.7 2006/11/21 15:21:24 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -171,7 +171,7 @@
       }
   #endif
   #if defined (TSF_NEED_MUTEX)
  -    hMutex = saenaruCreateMutex (SKKIME_MUTEX_NAME);
  +    hMutex = SaenaruCreateMutex (SAENARU_MUTEX_NAME);
       if (!hMutex) 
           return FALSE;
   
  @@ -283,7 +283,7 @@
   #endif
       register DWORD  dwValue;
       register BOOL   fRetval = FALSE;
  -    register BOOL   fShowKeyboardIcon, fShowIMEIcon, fShowInputModeIcon, fShowShapeIcon, fShowPadIcon;
  +    register BOOL   fShowIMEIcon, fShowInputModeIcon, fShowShapeIcon, fShowPadIcon;
   
   #if 1
       if (gfSaenaruSecure)
  @@ -291,7 +291,7 @@
   #endif
   
   #if defined (TSF_NEED_MUTEX)
  -    hMutex    = saenaruCreateMutex (SKKIME_MUTEX_NAME);
  +    hMutex    = SaenaruCreateMutex (SAENARU_MUTEX_NAME);
       if (!hMutex) 
           return    FALSE;
   
  @@ -305,12 +305,10 @@
       DEBUGPRINTFEX (100, (TEXT ("UpdateLanguageBar ()\n")));
   
       /*    ?ޫ쫸ȫ?ΪΪ᪷Ϊ */
  -    fShowKeyboardIcon = fShowIMEIcon = fShowInputModeIcon = fShowShapeIcon = TRUE;
  +    fShowIMEIcon = fShowInputModeIcon = fShowShapeIcon = TRUE;
       fShowPadIcon = TRUE;
   #if 0
   #if !defined (NO_TOUCH_REGISTRY)
  -    if (GetRegDwordValue (TEXT ("\\CICERO"), TEXT(REGKEY_SHOWKEYBRDICON), &dwValue))
  -        fShowKeyboardIcon    = (BOOL) dwValue;
       if (GetRegDwordValue (TEXT ("\\CICERO"), TEXT(REGKEY_SHOWIMEICON), &dwValue))
           fShowIMEIcon        = (BOOL) dwValue;
       if (GetRegDwordValue (TEXT ("\\CICERO"), TEXT(REGKEY_SHOWINPUTMODEICON), &dwValue))
  @@ -371,9 +369,6 @@
   
           pLangBarItemMgr->Release ();
       }
  -#if 0
  -    _ShowKeyboardIcon (fShowKeyboardIcon);
  -#endif
   #if DEBUG
       _DumpLangBarItem();
   #endif
  @@ -398,7 +393,7 @@
       register HANDLE                hMutex;
   #endif
       register DWORD                dwValue;
  -    register BOOL                fShowKeyboardIcon, fShowIMEIcon, fShowInputModeIcon ,fShowShapeIcon, fShowPadIcon;
  +    register BOOL               fShowIMEIcon, fShowInputModeIcon ,fShowShapeIcon, fShowPadIcon;
       
       TF_LANGBARITEMINFO MypInfo;
   #if 1
  @@ -407,7 +402,7 @@
   #endif
   
   #if defined (TSF_NEED_MUTEX)
  -    hMutex    = saenaruCreateMutex (SKKIME_MUTEX_NAME);
  +    hMutex    = SaenaruCreateMutex (SAENARU_MUTEX_NAME);
       if (!hMutex) 
           return;
   
  @@ -422,13 +417,11 @@
       DEBUGPRINTFEX (100, (TEXT ("ActivateLanguageBar (Select:%d)\n"), fSelect));
   
       /*    ?ޫ쫸ȫ?ΪΪ᪷Ϊ */
  -    fShowKeyboardIcon = fShowIMEIcon = fShowInputModeIcon = fShowShapeIcon = TRUE;
  +    fShowIMEIcon = fShowInputModeIcon = fShowShapeIcon = TRUE;
       fShowPadIcon = FALSE;
       if (fSelect) {
   #if 0
   #if !defined (NO_TOUCH_REGISTRY)
  -        if (GetRegDwordValue (TEXT ("\\CICERO"), TEXT(REGKEY_SHOWKEYBRDICON), &dwValue))
  -            fShowKeyboardIcon    = (BOOL) dwValue;
           if (GetRegDwordValue (TEXT ("\\CICERO"), TEXT(REGKEY_SHOWIMEICON), &dwValue))
               fShowIMEIcon        = (BOOL) dwValue;
           if (GetRegDwordValue (TEXT ("\\CICERO"), TEXT(REGKEY_SHOWINPUTMODEICON), &dwValue))
  @@ -512,10 +505,6 @@
   #endif
           pLangBarItemMgr->Release ();
       }
  -#if 0
  -    if (fSelect)
  -        _ShowKeyboardIcon (fShowKeyboardIcon);
  -#endif
     Exit_Func:
   #if defined (TSF_NEED_MUTEX)
       ReleaseMutex (hMutex);
  @@ -637,54 +626,7 @@
       return fRet;
   }
   
  -/*    ???ɫ(ޫ?)?/ު?ƪ﷪𪨪??
  - *
  - *    Text Service Framework ꪵƪ˪ϫ???ɪΫ
  - *    ?ƪ몬Ǫʪ˪ IME ICON Ī誦Ǫ롣
  - */
  -BOOL
  -_ShowKeyboardIcon (
  -    register BOOL        fShow)
  -{
  -    register ITfLangBarItemMgr*    pLangBarItemMgr            = NULL;
  -    ITfLangBarItem*                    pItem;
  -
  -    pLangBarItemMgr    = _QueryLangBarItemMgr ();
  -    if (pLangBarItemMgr == NULL) 
  -        return    FALSE;
  -
  -    if (SUCCEEDED (pLangBarItemMgr->GetItem (c_guidKeyboardItemButton, &pItem))) {
  -        if (fShow) {
  -            ITfSystemLangBarItem*            pSysItem;
  -            ITfSystemDeviceTypeLangBarItem*    pSysDevItem;
  -
  -            if (SUCCEEDED (pItem->QueryInterface (IID_ITfSystemDeviceTypeLangBarItem, (void**)&pSysDevItem)) && pSysDevItem != NULL) {
  -                pSysDevItem->SetIconMode (0);
  -                pSysDevItem->Release ();
  -            }
  -
  -            /*    Text Service Framework  IME ꪵƪʪ˪ϡ
  -             *    IME Icon ?ƪƪު쪬 Button 1Īʪ
  -             *    ˡ???ɫ?ڪ롣
  -             */
  -#if defined (not_integrate_tsf) || 0
  -            if (SUCCEEDED (pItem->QueryInterface (IID_ITfSystemLangBarItem, (void**)&pSysItem)) && pSysItem != NULL) {
  -                register HICON    hIcon;
  -                hIcon    = (HICON) LoadImage (hInst, TEXT ("INDICOPENICON"), IMAGE_ICON, 16, 16, 0);
  -                if (hIcon != NULL) {
  -                    pSysItem->SetIcon (hIcon);
  -                }
  -                pSysItem->Release ();
  -            }
  -#endif
  -        }
  -        pItem->Show (fShow);
  -        pItem->Release ();
  -    }
  -    pLangBarItemMgr->Release ();
  -    return    TRUE;
  -}
  -
  +#if DEBUG
   void
   _DumpLangBarItem (void)
   {
  @@ -724,6 +666,7 @@
       }
       return;
   }
  +#endif
   
   #endif
   
  
  
  
  1.7       +1 -3      saenaru/src/tsf.h
  
  Index: tsf.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- tsf.h	20 Nov 2006 08:44:02 -0000	1.6
  +++ tsf.h	21 Nov 2006 15:21:24 -0000	1.7
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/tsf.h,v 1.6 2006/11/20 08:44:02 wkpark Exp $
  + * $Saenaru: saenaru/src/tsf.h,v 1.7 2006/11/21 15:21:24 wkpark Exp $
    */
   
   #if !defined (tsf_h)
  @@ -56,9 +56,7 @@
   extern const GUID c_guidItemButtonCMode ;
   extern const GUID c_guidItemButtonIME ;
   extern const GUID c_guidItemButtonShape ;
  -extern const GUID c_guidKeyboardItemButton ;
   extern const GUID c_guidItemButtonPad ;
  -extern const GUID c_guidItemButtonMyHelp ;
   
   /* prototypes */
   HIMC _GetCurrentHIMC(void);
  
  
  


wkpark      06/11/23 00:32:02

  Modified:    src      imm.c
  Log:
  revert last changes
  
  Revision  Changes    Path
  1.25      +3 -1      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- imm.c	21 Nov 2006 08:25:34 -0000	1.24
  +++ imm.c	22 Nov 2006 15:32:02 -0000	1.25
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.24 2006/11/21 08:25:34 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.25 2006/11/22 15:32:02 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -328,10 +328,12 @@
       fOpen = lpIMC->fOpen;
   
       // support auto hangul/english toggle with M$ Word
  +#if 0
       if (!fOpen && ImmGetConversionStatus (hIMC, &dwConversion, &dwSentense) && dwConversion & IME_CMODE_NATIVE) {
           ImmSetOpenStatus(hIMC,TRUE);
           fOpen = TRUE;
       }
  +#endif
   
       switch ( ( LOWORD(vKey) & 0x00FF ) ) {
   #if 1
  
  
  


wkpark      06/11/23 00:32:34

  Modified:    src      dic.c hanjaidx.c
  Log:
  check code range correctly
  
  Revision  Changes    Path
  1.25      +12 -5     saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- dic.c	21 Nov 2006 12:14:52 -0000	1.24
  +++ dic.c	22 Nov 2006 15:32:34 -0000	1.25
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.24 2006/11/21 12:14:52 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.25 2006/11/22 15:32:34 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -288,10 +288,13 @@
           nBufLen = GetCandidateStringsFromDictionary(lpT2,
                   szBuf+Mylstrlen(lpT2)+1, 1024, (LPTSTR)szDic);
   
  -        if (nBufLen < 1 && Mylstrlen(lpT2)==1 &&
  -                (*lpT2 < 0xac00 || *lpT2 >=0xd7a8)) {
  -            // check the hanja_to_hangul table
  +        while (nBufLen < 1 && Mylstrlen(lpT2)==1) {
               MYCHAR han[2];
  +            han[0]=0;
  +
  +            if (*lpT2 < 0x3400 || *lpT2 >=0xfaff) break;
  +            if (*lpT2 >= 0xa000 && *lpT2 <=0xf8ff) break;
  +            // check the hanja_to_hangul table
   
               lpIdx = (LPTSTR)&szIdx;
               LoadString( hInst, IDS_HIDX_KEY, lpKey, 128);
  @@ -323,7 +326,11 @@
                       szBuf[2]= 0; // double terminate
                   }
               }
  -        } else { // always open a candidate window with hangul chars
  +            break;
  +        }
  +        
  +        if (nBufLen > 1 && *lpT2 >= 0xac00 && *lpT2 <= 0xd7a8) {
  +            // always open a candidate window with hangul chars
               lmemset(GETLPCOMPATTR(lpCompStr),ATTR_TARGET_CONVERTED ,
                     Mylstrlen(GETLPCOMPSTR(lpCompStr)));
               lmemset(GETLPCOMPREADATTR(lpCompStr),ATTR_TARGET_CONVERTED,
  
  
  
  1.3       +3 -1      saenaru/src/hanjaidx.c
  
  Index: hanjaidx.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hanjaidx.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- hanjaidx.c	26 Oct 2006 22:37:24 -0000	1.2
  +++ hanjaidx.c	22 Nov 2006 15:32:34 -0000	1.3
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hanjaidx.c,v 1.2 2006/10/26 22:37:24 wkpark Exp $
  + * $Saenaru: saenaru/src/hanjaidx.c,v 1.3 2006/11/22 15:32:34 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -56,6 +56,7 @@
       numExta += tmp ? (IDX_COL - tmp):0;
   
       if (code < 0x3400 || code >=0xfaff) return -1;
  +    if (code >=0xa000 && code <=0xf8ff) return -1;
   
       if (code >= 0xf900) {
       	offset= code - 0xf900;
  @@ -120,6 +121,7 @@
           SetFilePointer(hTblFile, -2, NULL, FILE_CURRENT);
   
           offset=hanja_idx(*lpRead);
  +        if (offset == -1) goto Err1;
   
           SetFilePointer(hTblFile, offset, NULL, FILE_CURRENT);
           if (ReadFile(hTblFile, lpDic, 2, &dwRead, NULL)) {
  
  
  


wkpark      06/11/24 20:01:07

  Modified:    src      hangul.c
  Log:
  fixed concurrent typing bug with repeated double consonants
  
  Revision  Changes    Path
  1.27      +12 -5     saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- hangul.c	21 Nov 2006 08:25:00 -0000	1.26
  +++ hangul.c	24 Nov 2006 11:01:07 -0000	1.27
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.26 2006/11/21 08:25:00 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.27 2006/11/24 11:01:07 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1745,6 +1745,9 @@
   
               ret = hangul_automata(&ic, (WCHAR) hkey, &cs);
               ic.lastvkey = (UINT)VkKeyScan(code);
  +            MyDebugPrint((TEXT(" * last vkey: 0x%x\r\n"), ic.lastvkey));
  +            MyDebugPrint((TEXT(" * last scancode: 0x%x\r\n"), lParam >> 16));
  +
   	    if (cs)
   	    {
   		// not composable. emit hangul syllable
  @@ -2070,8 +2073,8 @@
       else if (jamo >= 0x11a8 && jamo <= 0x11f9) kind=3;
       else return -1;
   
  -    ctyping = (dwOptionFlag & CONCURRENT_TYPING) &&
  -              (GetKeyState(ic->lastvkey) & 0x80000000);
  +    ctyping = (dwOptionFlag & CONCURRENT_TYPING) && (ic->last != jamo) &&
  +              (GetAsyncKeyState(ic->lastvkey) & 0x80000000);
   
       if (ic->laststate)
       {
  @@ -2144,6 +2147,7 @@
                   if (jong && hangul_jamo_to_syllable(ic->cho,ic->jung,jong)) {
                       ic->jong=jong;
                       hangul_ic_push(ic,jong);
  +		    ic->last=jamo; // XXX
                       ic->laststate=3;
                       return 0;
                   } else {
  @@ -2227,17 +2231,20 @@
   		    last=ic->last;
   		    if ( hangul_is_jongseong(ic->last) )
   			last = hangul_jongseong_to_choseong(ic->last);
  +		    //     .    ̰
  +		    //   ...   
   		    if (jong != 0x11af && last == jamo &&
   			(jamo == 0x1100 || jamo == 0x1103 ||
  -			 jamo == 0x1107 || jamo == 0x110c )) //    
  +			 jamo == 0x1107 )) //   
   		    {
   			ic->jong=jong;
   			jamo= hangul_compose(last,last); // make ssang cho
   			cho= jamo;
   		    }
  -		} else if (ctyping) {
  +		} else if (ctyping) { // for ahnmatae
   		    last = hangul_jongseong_to_choseong(ic->jong);
   		    comb = hangul_compose(last,jamo);
  +		    MyDebugPrint((TEXT("ssang cho ?: %x\r\n"), comb));
   		    if (comb &&
   			    comb == 0x1101 || comb == 0x1104 ||
   			    comb == 0x1108 || comb == 0x110a || comb == 0x110d) //     
  
  
  


wkpark      06/11/24 20:41:37

  Modified:    src      hangul.c
  Log:
  fixed dvorak problem with the ESC_ENG option
  
  Revision  Changes    Path
  1.28      +5 -2      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- hangul.c	24 Nov 2006 11:01:07 -0000	1.27
  +++ hangul.c	24 Nov 2006 11:41:37 -0000	1.28
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.27 2006/11/24 11:01:07 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.28 2006/11/24 11:41:37 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -1613,7 +1613,10 @@
       fdwConversion = lpIMC->fdwConversion;
   
       /* check dvorak layout */
  -    hkey= code = checkDvorak(code);
  +    if (fdwConversion & IME_CMODE_NATIVE)
  +	hkey= code = checkDvorak(code);
  +    else
  +	hkey= code;
   
       if (fdwConversion & IME_CMODE_NATIVE && capital) {
   	WORD ch = code;
  
  
  


wkpark      06/11/24 20:43:31

  Modified:    src      uistate.c
  Log:
  fixed WINVER related things
  
  Revision  Changes    Path
  1.6       +6 -2      saenaru/src/uistate.c
  
  Index: uistate.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uistate.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- uistate.c	20 Nov 2006 08:49:28 -0000	1.5
  +++ uistate.c	24 Nov 2006 11:43:31 -0000	1.6
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uistate.c,v 1.5 2006/11/20 08:49:28 wkpark Exp $
  + * $Saenaru: saenaru/src/uistate.c,v 1.6 2006/11/24 11:43:31 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -563,9 +563,13 @@
                   mk.cbSize = sizeof(MENUITEMINFO);
                   // check CMODE
                   GetMenuItemInfo(hSubMenu,idMode,FALSE,&mk);
  +#if (WINVER >= 0x0500)
                   mk.fMask=MIIM_STATE | MIIM_FTYPE;
  -                mk.fState=MFS_CHECKED;
                   mk.fType=MFT_RADIOCHECK;
  +#else
  +                mk.fMask=MIIM_STATE;
  +#endif
  +                mk.fState=MFS_CHECKED;
                   SetMenuItemInfo(hSubMenu,idMode,FALSE,&mk);
   
   
  
  
  


wkpark      06/11/24 20:44:04

  Modified:    src      dic.c input.c ui.c uicomp.c
  Log:
  cleanup debug outputs
  
  Revision  Changes    Path
  1.26      +15 -22    saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- dic.c	22 Nov 2006 15:32:34 -0000	1.25
  +++ dic.c	24 Nov 2006 11:44:04 -0000	1.26
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.25 2006/11/22 15:32:34 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.26 2006/11/24 11:44:04 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -373,7 +373,6 @@
               lmemset(GETLPCOMPREADATTR(lpCompStr),ATTR_TARGET_CONVERTED,
                     Mylstrlen(GETLPCOMPREADSTR(lpCompStr)));
   
  -            OutputDebugString(TEXT("ConvHanja #1\r\n"));
               GnMsg.message = WM_IME_COMPOSITION;
               GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
               //GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
  @@ -444,13 +443,7 @@
                   //
                   // Generate messages.
                   // XXX
  -#ifdef DEBUG
  -                {
  -                    TCHAR szDev[80];
  -                    wsprintf(szDev, TEXT(" *** ConvHanja: dwCompStrLen %d\r\n"), lpCompStr->dwCompStrLen);
  -                    OutputDebugString(szDev);
  -                }
  -#endif
  +                MyDebugPrint((TEXT(" *** ConvHanja: dwCompStrLen %d\r\n"), lpCompStr->dwCompStrLen));
   #if 1
                   if (lpCompStr->dwCompStrLen > 1 || isasc) {
                       GnMsg.message = WM_IME_COMPOSITION;
  @@ -458,7 +451,7 @@
                       GnMsg.lParam = GCS_COMPALL | GCS_CURSORPOS | GCS_DELTASTART;
                       //GnMsg.lParam = GCS_COMPSTR | GCS_COMPATTR; // ѱ IME 2002,2003
                       GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  -                    OutputDebugString(TEXT(" *** ConvHanja: GnMsg > 1\r\n"));
  +                    MyDebugPrint((TEXT(" *** ConvHanja: GnMsg > 1\r\n")));
                   } else
   #endif
                   {
  @@ -469,10 +462,12 @@
                       if (dwImeFlag & SAENARU_ONTHESPOT)
                           GnMsg.lParam |= CS_INSERTCHAR | CS_NOMOVECARET;
                       GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  -                    OutputDebugString(TEXT(" *** ConvHanja: GnMsg == 1\r\n"));
  +                    MyDebugPrint((TEXT(" *** ConvHanja: GnMsg == 1\r\n")));
                   }
  +#if DEBUG
                   MyOutputDebugString(lpmystr);
  -                OutputDebugString(TEXT("\r\n *** ConvHanja: Pre candidate\r\n"));
  +                MyDebugPrint((TEXT("\r\n *** ConvHanja: Pre candidate\r\n")));
  +#endif
   
                   bRc = TRUE;
                   goto cvk_exit40;
  @@ -499,7 +494,7 @@
               GnMsg.wParam = IMN_OPENCANDIDATE;
               GnMsg.lParam = 1L;
               GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  -            OutputDebugString(TEXT("ConvHanja: OpenCandidate\r\n"));
  +            MyDebugPrint((TEXT("ConvHanja: OpenCandidate\r\n")));
           }
   
           //
  @@ -595,7 +590,7 @@
           GnMsg.wParam = IMN_CHANGECANDIDATE;
           GnMsg.lParam = 1L;
           GenerateMessage(hIMC, lpIMC, lpCurTransKey,(LPTRANSMSG)&GnMsg);
  -        OutputDebugString(TEXT("ConvHanja: ChangeCandidate\r\n"));
  +        MyDebugPrint((TEXT("ConvHanja: ChangeCandidate\r\n")));
   
           //
           // If the selected candidate string is changed, the composition string
  @@ -1213,15 +1208,18 @@
                       // check application names
                       int i;
                       LPTSTR lpFname;
  -
  +#if DEBUG
                       OutputDebugString(szFname); // application path.
  +#endif
   
                       for (i=ns;i>0;i--) {
                           if (szFname[i] == TEXT('\\')) break;
                       }
                       if (i>0) {
                           lpFname=szFname + i + 1;
  +#if DEBUG
                           OutputDebugString(lpFname); // application real name
  +#endif
                       }
                   }
   
  @@ -1622,7 +1620,7 @@
           case VK_RBUTTON:
           case VK_MBUTTON:
               // for mozilla
  -            OutputDebugString(TEXT(" *** VK_LBUTTON\r\n"));
  +            MyDebugPrint((TEXT(" *** VK_LBUTTON\r\n")));
               if (IsCompStr(hIMC)) {
                   MakeResultString(hIMC,TRUE);
                   hangul_ic_init(&ic);
  @@ -1645,12 +1643,7 @@
           return( FALSE );
       }
       else {
  -#ifdef DEBUG
  -        TCHAR szDev[80];
  -
  -        wsprintf(szDev, TEXT("code: %x\r\n"), wParam);
  -        OutputDebugString(szDev);
  -#endif
  +        MyDebugPrint((TEXT("code: %x\r\n"), wParam));
           return( TRUE );
       }
   }
  
  
  
  1.4       +2 -5      saenaru/src/input.c
  
  Index: input.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/input.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- input.c	26 Dec 2003 09:26:33 -0000	1.3
  +++ input.c	24 Nov 2006 11:44:04 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/input.c,v 1.3 2003/12/26 09:26:33 perky Exp $
  + * $Saenaru: saenaru/src/input.c,v 1.4 2006/11/24 11:44:04 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -65,10 +65,7 @@
   
           default:
               if( !DicKeydownHandler( hIMC, wVKey, lParam, lpbKeyState ) ) {
  -                TCHAR szDev[80];
  -
  -                wsprintf(szDev, TEXT("Vkey: %x\r\n"), wVKey);
  -                OutputDebugString(szDev);
  +                MyDebugPrint((TEXT("Vkey: %x\r\n"), wVKey));
                   // This WM_IMEKEYDOWN has actual character code in itself.
                   hangulKeyHandler( hIMC, wParam, lParam, lpbKeyState );
                   //AddChar( hIMC,  HIWORD(wParam));
  
  
  
  1.23      +6 -11     saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- ui.c	20 Nov 2006 08:49:28 -0000	1.22
  +++ ui.c	24 Nov 2006 11:44:04 -0000	1.23
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.22 2006/11/20 08:49:28 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.23 2006/11/24 11:44:04 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -237,7 +237,7 @@
   #endif
                   return 0L;
               default:
  -                OutputDebugString((LPTSTR)TEXT("hUICurIMC == NULL\r\n"));
  +                MyDebugPrint((TEXT("hUICurIMC == NULL\r\n")));
                   break;
           }
       }
  @@ -873,14 +873,12 @@
               break;
   
           case IMC_SETCOMPOSITIONFONT:
  -            wsprintf((LPTSTR)szDev,TEXT("SETCOMPOSITIONFONT\r\n"));
  -            OutputDebugString((LPTSTR)szDev);
  +            MyDebugPrint((TEXT("SETCOMPOSITIONFONT\r\n")));
   
               break;
   
           case IMC_GETCOMPOSITIONWINDOW:
  -            wsprintf((LPTSTR)szDev,TEXT("GETCOMPOSITIONWINDOW\r\n"));
  -            OutputDebugString((LPTSTR)szDev);
  +            MyDebugPrint((TEXT("GETCOMPOSITIONWINDOW\r\n")));
   
               *(LPCOMPOSITIONFORM)lParam  = lpIMC->cfCompForm; 
               lRet = 0;
  @@ -1302,14 +1300,11 @@
               if ( vKey == VK_SPACE && dwOptionFlag & USE_SHIFT_SPACE)
               {
                  // SHORT ShiftState = (GetAsyncKeyState(VK_LSHIFT) >> 31) & 1;
  -                TCHAR szDev[80];
                   SHORT ShiftState;
                   ShiftState = pbKeyState[VK_LSHIFT] & 0x80;
   
  -                wsprintf((LPTSTR)szDev,TEXT("ShiftState is %x\r\n"),ShiftState);
  -                OutputDebugString((LPTSTR)szDev);
  -                wsprintf((LPTSTR)szDev,TEXT(" * VKey %x\r\n"),lpmsg->wParam);
  -                OutputDebugString((LPTSTR)szDev);
  +                MyDebugPrint((TEXT("ShiftState is %x\r\n"),ShiftState));
  +                MyDebugPrint((TEXT(" * VKey %x\r\n"),lpmsg->wParam));
                   MyDebugPrint((TEXT("\t** ShiftState is 0x%x\r\n"),ShiftState));
                   if (ShiftState)
                   {
  
  
  
  1.9       +2 -3      saenaru/src/uicomp.c
  
  Index: uicomp.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uicomp.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- uicomp.c	15 Oct 2006 11:36:03 -0000	1.8
  +++ uicomp.c	24 Nov 2006 11:44:04 -0000	1.9
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uicomp.c,v 1.8 2006/10/15 11:36:03 wkpark Exp $
  + * $Saenaru: saenaru/src/uicomp.c,v 1.9 2006/11/24 11:44:04 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -75,7 +75,6 @@
               break;
   
           case WM_MOVE:
  -            OutputDebugString(TEXT("MOVE\r\n"));
               hUIWnd = (HWND)GetWindowLongPtr(hWnd,FIGWL_SVRWND);
               if (IsWindow(hUIWnd))
                   SendMessage(hUIWnd,WM_UI_DEFCOMPMOVE,wParam,lParam);
  @@ -738,7 +737,7 @@
           if (IsWindow(lpUIExtra->uiComp[i].hWnd))
               SetWindowLongPtr(lpUIExtra->uiComp[i].hWnd,FIGWL_FONT,(LONG_PTR)lpUIExtra->hFont);
   
  -    OutputDebugString(TEXT("SetFontCompWindow\r\n"));
  +    MyDebugPrint((TEXT("SetFontCompWindow\r\n")));
   }
   
   /*
  
  
  


wkpark      06/11/25 07:58:53

  Modified:    src      dic.c
  Log:
  show a candidate window immediatly
  
  Revision  Changes    Path
  1.27      +5 -3      saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- dic.c	24 Nov 2006 11:44:04 -0000	1.26
  +++ dic.c	24 Nov 2006 22:58:53 -0000	1.27
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.26 2006/11/24 11:44:04 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.27 2006/11/24 22:58:53 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -260,6 +260,7 @@
           LPTSTR  lpIdx;
           TCHAR   szIdx[256];
           INT sz;
  +        BOOL    fHanja=FALSE;
   
           if (0x7F > *lpT2) isasc=TRUE;
           MyDebugPrint((TEXT(" * Dic: %x\n"), *lpT2));
  @@ -321,15 +322,16 @@
                   // get hanja list for this hangul
                   nBufLen = GetCandidateStringsFromDictionary(han,
                           szBuf+Mylstrlen(lpT2)+1, 1024, (LPTSTR)szDic);
  -                if (nBufLen == 0) {
  +                if (nBufLen == 0) { // not found in the dic
                       nBufLen=1;
                       szBuf[2]= 0; // double terminate
                   }
  +                fHanja=TRUE;
               }
               break;
           }
           
  -        if (nBufLen > 1 && *lpT2 >= 0xac00 && *lpT2 <= 0xd7a8) {
  +        if (nBufLen > 1 && !fHanja) {
               // always open a candidate window with hangul chars
               lmemset(GETLPCOMPATTR(lpCompStr),ATTR_TARGET_CONVERTED ,
                     Mylstrlen(GETLPCOMPSTR(lpCompStr)));
  
  
  


wkpark      06/11/25 08:00:37

  Modified:    src      hangul.c
  Log:
  fixed last changes: set ctyping properly to workaround for double consonants
  
  Revision  Changes    Path
  1.29      +6 -6      saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- hangul.c	24 Nov 2006 11:41:37 -0000	1.28
  +++ hangul.c	24 Nov 2006 23:00:37 -0000	1.29
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.28 2006/11/24 11:41:37 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.29 2006/11/24 23:00:37 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -2066,7 +2066,7 @@
   int hangul_automata2( HangulIC *ic, WCHAR jamo, WCHAR *cs )
   {
       int kind;
  -    WCHAR comb=0, cho=0, jong=0, last=0, tmp=0;
  +    WCHAR comb=0, cho=0, jong=0, last=0, tmp=0,tmp2=0;
       BOOL ctyping=0;
   
       *cs = 0;
  @@ -2150,7 +2150,6 @@
                   if (jong && hangul_jamo_to_syllable(ic->cho,ic->jung,jong)) {
                       ic->jong=jong;
                       hangul_ic_push(ic,jong);
  -		    ic->last=jamo; // XXX
                       ic->laststate=3;
                       return 0;
                   } else {
  @@ -2228,8 +2227,9 @@
                           return 0;
                       }
                   }
  -                hangul_jongseong_dicompose(ic->jong, &jong, &tmp);
  -		if (jong && tmp) {
  +                hangul_jongseong_dicompose(ic->jong, &tmp, &tmp2);
  +		if (tmp && tmp2) {
  +		    jong= tmp;
   		    // ʼ  Ưó
   		    last=ic->last;
   		    if ( hangul_is_jongseong(ic->last) )
  @@ -2244,7 +2244,7 @@
   			jamo= hangul_compose(last,last); // make ssang cho
   			cho= jamo;
   		    }
  -		} else if (ctyping) { // for ahnmatae
  +		} else if (ctyping && ic->last != jong) { // for ahnmatae
   		    last = hangul_jongseong_to_choseong(ic->jong);
   		    comb = hangul_compose(last,jamo);
   		    MyDebugPrint((TEXT("ssang cho ?: %x\r\n"), comb));
  
  
  


wkpark      06/11/25 08:04:02

  Modified:    src      ui.c
  Log:
  hide the status window and use a registry entry "ShowStatus"
  
  Revision  Changes    Path
  1.24      +45 -7     saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ui.c	24 Nov 2006 11:44:04 -0000	1.23
  +++ ui.c	24 Nov 2006 23:04:02 -0000	1.24
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.23 2006/11/24 11:44:04 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.24 2006/11/24 23:04:02 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -501,6 +501,15 @@
   
               break;
   
  +        case WM_UI_STATEHIDE:
  +            hUIExtra = (HGLOBAL)GetWindowLongPtr(hWnd,IMMGWLP_PRIVATE);
  +            lpUIExtra = (LPUIEXTRA)GlobalLock(hUIExtra);
  +            if (IsWindow (lpUIExtra->uiStatus.hWnd))
  +                ShowWindow(lpUIExtra->uiStatus.hWnd, SW_HIDE);
  +            lpUIExtra->uiStatus.bShow= FALSE ;
  +            GlobalUnlock(hUIExtra);
  +            break;
  +
           case WM_UI_STATEMOVE:
               //
               // Set the position of the status window to UIExtra.
  @@ -510,6 +519,9 @@
               lpUIExtra = (LPUIEXTRA)GlobalLock(hUIExtra);
               lpUIExtra->uiStatus.pt.x = (long)LOWORD(lParam);
               lpUIExtra->uiStatus.pt.y = (long)HIWORD(lParam);
  +
  +            SetDwordToSetting(TEXT("StatusPos"),lParam);
  +
               GlobalUnlock(hUIExtra);
               break;
   
  @@ -666,13 +678,23 @@
               if (lpUIExtra->uiStatus.pt.x == -1)
               {
                   //GetWindowRect(lpIMC->hWnd,&rc);
  -                GetWindowRect(GetDesktopWindow(),&rc);
  -                lpUIExtra->uiStatus.pt.x = rc.right - 100; // XXX +1 => -100
  -                lpUIExtra->uiStatus.pt.y = rc.bottom - 100;
  +                DWORD pos;
  +                pos=GetDwordFromSetting(TEXT("StatusPos"));
  +                if (pos) {
  +                    lpUIExtra->uiStatus.pt.x = pos & 0xffff;
  +                    lpUIExtra->uiStatus.pt.y = pos >> 16;
  +                } else {
  +                    GetWindowRect(GetDesktopWindow(),&rc);
  +                    lpUIExtra->uiStatus.pt.x = rc.right - 100; // XXX +1 => -100
  +                    lpUIExtra->uiStatus.pt.y = rc.bottom - 100;
  +                    pos=(lpUIExtra->uiStatus.pt.y << 16)
  +                        & lpUIExtra->uiStatus.pt.x;
  +                    SetDwordToSetting(TEXT("StatusPos"),pos);
  +                }
               }
   #ifndef USE_STATUS_WIN98_XXX
  -            if (!IsLangBarEnabled()) {
  -                MyDebugPrint((TEXT("***** LangBar NOT Enabled ******\r\n")));
  +            if (GetDwordFromSetting(TEXT("ShowStatus")) ||!IsLangBarEnabled()) {
  +            //    MyDebugPrint((TEXT("***** LangBar NOT Enabled ******\r\n")));
               if (!IsWindow(lpUIExtra->uiStatus.hWnd))
               {
                   lpUIExtra->uiStatus.hWnd = 
  @@ -694,6 +716,7 @@
               SetWindowLongPtr(lpUIExtra->uiStatus.hWnd,FIGWL_SVRWND,(LONG_PTR)hWnd);
               }
   #endif
  +            MyDebugPrint((TEXT("IMN_OPENSTATUSWINDOW\r\n")));
               break;
   
           case IMN_SETCONVERSIONMODE:
  @@ -745,6 +768,7 @@
               break;
   
           case IMN_SETOPENSTATUS:
  +            MyDebugPrint((TEXT("IMN_SETOPENSTATUS\r\n")));
               UpdateStatusWindow(lpUIExtra);
               UpdateSoftKeyboard(lpUIExtra,
               lpIMC->fdwConversion & IME_CMODE_SOFTKBD);
  @@ -885,9 +909,23 @@
               break;
   
           case IMC_GETSTATUSWINDOWPOS:
  -            lRet = (lpUIExtra->uiStatus.pt.x  << 16) & lpUIExtra->uiStatus.pt.x;
  +            lRet = (lpUIExtra->uiStatus.pt.y  << 16) & lpUIExtra->uiStatus.pt.x;
               break;
   
  +        case IMC_CLOSESTATUSWINDOW:
  +            MyDebugPrint((TEXT("IMC_CLOSESTATUSWINDOW\r\n")));
  +            if (IsWindow (lpUIExtra->uiStatus.hWnd))
  +                ShowWindow(lpUIExtra->uiStatus.hWnd, SW_HIDE);
  +            lpUIExtra->uiStatus.bShow= FALSE ;
  +
  +            lRet = 0;
  +            break;
  +        case IMC_OPENSTATUSWINDOW:
  +            MyDebugPrint((TEXT("IMC_OPENSTATUSWINDOW\r\n")));
  +            if (IsWindow (lpUIExtra->uiStatus.hWnd))
  +                ShowWindow(lpUIExtra->uiStatus.hWnd,SW_SHOWNOACTIVATE);
  +            lpUIExtra->uiStatus.bShow = TRUE;
  +            lRet = 0;
           default:
               break;
       }
  
  
  


wkpark      06/11/25 08:05:05

  Modified:    src      saenaru.h uistate.c
  Log:
  more fix for the status window
  
  Revision  Changes    Path
  1.17      +3 -1      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- saenaru.h	21 Nov 2006 15:21:08 -0000	1.16
  +++ saenaru.h	24 Nov 2006 23:05:05 -0000	1.17
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.16 2006/11/21 15:21:08 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.17 2006/11/24 23:05:05 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -123,6 +123,7 @@
   #define WM_UI_DEFCOMPMOVE (WM_USER+602)
   #define WM_UI_CANDMOVE    (WM_USER+603)
   #define WM_UI_GUIDEMOVE   (WM_USER+604)
  +#define WM_UI_STATEHIDE   (WM_USER+605)
   
   /* Escape Functions */
   #define IME_ESC_PRI_GETDWORDTEST (IME_ESC_PRIVATE_FIRST + 0)
  @@ -537,6 +538,7 @@
   
   /* reg.C      */
   void SetDwordToSetting(LPCTSTR lpszFlag, DWORD dwFlag);
  +DWORD PASCAL GetDwordFromSetting(LPTSTR lpszFlag);
   long PASCAL GetRegMultiStringValue (LPCTSTR,LPCTSTR,LPTSTR);
   void SetRegMultiString(LPCTSTR lpszFlag, DWORD dwFlag);
   long PASCAL GetRegStringValue (LPCTSTR,LPCTSTR,LPTSTR);
  
  
  
  1.7       +5 -2      saenaru/src/uistate.c
  
  Index: uistate.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uistate.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- uistate.c	24 Nov 2006 11:43:31 -0000	1.6
  +++ uistate.c	24 Nov 2006 23:05:05 -0000	1.7
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uistate.c,v 1.6 2006/11/24 11:43:31 wkpark Exp $
  + * $Saenaru: saenaru/src/uistate.c,v 1.7 2006/11/24 23:05:05 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -105,7 +105,10 @@
               hbmpStatus = (HBITMAP)GetWindowLongPtr(hWnd,FIGWL_CLOSEBMP);
               DeleteObject(hbmpStatus);
               break;
  -
  +        case WM_UI_HIDE:
  +            ShowWindow(hWnd,SW_HIDE);
  +            return 0;
  +            break;
           default:
               if (!MyIsIMEMessage(message))
                   return DefWindowProc(hWnd,message,wParam,lParam);
  
  
  


wkpark      06/11/25 08:53:52

  Modified:    src      tsf.cpp ui.c
  Log:
  check CFT reg entry to show/hide the status window.
  check the "HideStatus" setting
  
  Revision  Changes    Path
  1.8       +24 -5     saenaru/src/tsf.cpp
  
  Index: tsf.cpp
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/tsf.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- tsf.cpp	21 Nov 2006 15:21:24 -0000	1.7
  +++ tsf.cpp	24 Nov 2006 23:53:52 -0000	1.8
  @@ -26,7 +26,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/tsf.cpp,v 1.7 2006/11/21 15:21:24 wkpark Exp $
  + * $Saenaru: saenaru/src/tsf.cpp,v 1.8 2006/11/24 23:53:52 wkpark Exp $
    */
   
   #if !defined (NO_TSF)
  @@ -609,9 +609,28 @@
   BOOL PASCAL
   IsLangBarEnabled(void)
   {
  -    register ITfLangBarItemMgr* pLangBarItemMgr = NULL;
  +    HKEY    hKey;
  +    DWORD   dwRegType, dwData, dwDataSize, dwRet;
  +    BOOL    fRet = TRUE;
  +
  +    if (gfSaenaruSecure)
  +        return FALSE;
  +
  +    dwData = 0;
  +    dwDataSize = sizeof(DWORD);
  +    if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\CTF"),
  +                0, KEY_READ,&hKey) == ERROR_SUCCESS) {
  +        dwRet = RegQueryValueEx(hKey, TEXT("Disable Thread Input Manager"),
  +                NULL, &dwRegType, (LPBYTE)&dwData, &dwDataSize);
  +        RegCloseKey(hKey);
  +        if (dwRet == ERROR_SUCCESS && dwRegType == REG_DWORD)
  +             fRet = (dwData == 0);
  +    }
  +    return  fRet;
  +    /*
  +    ITfLangBarItemMgr* pLangBarItemMgr = NULL;
       ITfLangBarItem* pItem;
  -    register BOOL fRet = FALSE;
  +    BOOL fRet = FALSE;
   
       pLangBarItemMgr = _QueryLangBarItemMgr();
       if (pLangBarItemMgr == NULL) 
  @@ -622,10 +641,10 @@
           fRet = TRUE;
       }
       pLangBarItemMgr->Release();
  -
  -    return fRet;
  +    */
   }
   
  +
   #if DEBUG
   void
   _DumpLangBarItem (void)
  
  
  
  1.25      +4 -3      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- ui.c	24 Nov 2006 23:04:02 -0000	1.24
  +++ ui.c	24 Nov 2006 23:53:52 -0000	1.25
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.24 2006/11/24 23:04:02 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.25 2006/11/24 23:53:52 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -693,8 +693,9 @@
                   }
               }
   #ifndef USE_STATUS_WIN98_XXX
  -            if (GetDwordFromSetting(TEXT("ShowStatus")) ||!IsLangBarEnabled()) {
  -            //    MyDebugPrint((TEXT("***** LangBar NOT Enabled ******\r\n")));
  +            if (!GetDwordFromSetting(TEXT("HideStatus"))
  +                    && !IsLangBarEnabled()) {
  +                MyDebugPrint((TEXT("***** LangBar NOT Enabled ******\r\n")));
               if (!IsWindow(lpUIExtra->uiStatus.hWnd))
               {
                   lpUIExtra->uiStatus.hWnd = 
  
  
  


wkpark      06/11/25 18:35:16

  Modified:    src      imm.c
  Log:
  fixed ctrl-home,a problem reported by nethyun9 and anonymous donor.
  
  Revision  Changes    Path
  1.26      +10 -6     saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- imm.c	22 Nov 2006 15:32:02 -0000	1.25
  +++ imm.c	25 Nov 2006 09:35:16 -0000	1.26
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.25 2006/11/22 15:32:02 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.26 2006/11/25 09:35:16 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -438,6 +438,15 @@
                   fRet = (BOOL)bNoComp[vKey];
           }
   
  +        if (!fRet && IsCompStr(hIMC)) {
  +            UINT wParam;
  +            wParam=LOWORD(vKey) & 0x00FF;
  +            MakeResultString(hIMC,TRUE);
  +            hangul_ic_init(&ic);
  +            keybd_event( (BYTE)wParam, 0x0, 0, 0 ); // simulate key
  +            fRet=TRUE;
  +        }
  +
           if (lpCompStr)
               ImmUnlockIMCC(lpIMC->hCompStr);
   
  @@ -455,11 +464,6 @@
                   fRet=FALSE;
           }
       }
  -    
  -    if (!fRet && IsCompStr(hIMC)) {
  -        MakeResultString(hIMC,TRUE);
  -        hangul_ic_init(&ic);
  -    }
       ImmUnlockIMC(hIMC);
       return fRet;
   }
  
  
  


wkpark      06/11/26 19:41:22

  Modified:    src      uistate.c
  Log:
  just change the color pallete of the status bmp.
  
  Revision  Changes    Path
  1.8       +42 -125   saenaru/src/uistate.c
  
  Index: uistate.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/uistate.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- uistate.c	24 Nov 2006 23:05:05 -0000	1.7
  +++ uistate.c	26 Nov 2006 10:41:22 -0000	1.8
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/uistate.c,v 1.7 2006/11/24 23:05:05 wkpark Exp $
  + * $Saenaru: saenaru/src/uistate.c,v 1.8 2006/11/26 10:41:22 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -88,22 +88,50 @@
               break;
   
           case WM_CREATE:
  -            hbmpStatus = LoadBitmap(hInst,TEXT("STATUSBMP"));
  -/*
  +            /*hbmpStatus = LoadBitmap(hInst,TEXT("STATUSBMP")); */
               hbmpStatus =(HBITMAP)LoadImage(hInst,TEXT("STATUSBMP"),IMAGE_BITMAP,
  -                    0,0,LR_LOADTRANSPARENT);
  -                    */
  +                    0,0,LR_LOADTRANSPARENT|LR_CREATEDIBSECTION);
  +
  +            if (hbmpStatus) {
  +                HDC hdc = CreateCompatibleDC(NULL);
  +                COLORREF cTransColor;
  +                DWORD dwColor= GetSysColor(COLOR_BTNFACE);
  +                cTransColor= RGB(192,192,192);
  +                if (hdc) {
  +                    UINT iColor;
  +                    HBITMAP hbmPrev = SelectObject(hdc, hbmpStatus);
  +                    RGBQUAD rgbColors[256];
  +                    UINT cColors = GetDIBColorTable(hdc, 0, 256, rgbColors);
  +                    for (iColor = 0; iColor < cColors; iColor++) {
  +                        if (rgbColors[iColor].rgbRed == 192 &&
  +                            rgbColors[iColor].rgbGreen == 192 &&
  +                            rgbColors[iColor].rgbBlue == 192) {
  +                            rgbColors[iColor].rgbRed=GetRValue(dwColor);
  +                            rgbColors[iColor].rgbGreen=GetGValue(dwColor);
  +                            rgbColors[iColor].rgbBlue=GetBValue(dwColor);
  +                            break;
  +                        }
  +                    }
  +                    SetDIBColorTable(hdc, 0, cColors, rgbColors);
  +                    SelectObject(hdc, hbmPrev);
  +                    DeleteDC(hdc);
  +                }
  +            }
   
               SetWindowLongPtr(hWnd,FIGWL_STATUSBMP,(LONG_PTR)hbmpStatus);
  +            /*
               hbmpStatus = LoadBitmap(hInst,TEXT("CLOSEBMP"));
               SetWindowLongPtr(hWnd,FIGWL_CLOSEBMP,(LONG_PTR)hbmpStatus);
  +            */
               break;
   
           case WM_DESTROY:
               hbmpStatus = (HBITMAP)GetWindowLongPtr(hWnd,FIGWL_STATUSBMP);
               DeleteObject(hbmpStatus);
  +            /*
               hbmpStatus = (HBITMAP)GetWindowLongPtr(hWnd,FIGWL_CLOSEBMP);
               DeleteObject(hbmpStatus);
  +            */
               break;
           case WM_UI_HIDE:
               ShowWindow(hWnd,SW_HIDE);
  @@ -168,110 +196,6 @@
   
   }
   
  -void DrawTransBtn(HDC hdc, HDC hdcTemp, int xStart, int yStart,
  -        COLORREF cTransparentColor)
  -{
  -   BITMAP     bm;
  -   COLORREF   cColor;
  -   HBITMAP    bmAndBack, bmAndObject, bmAndMem, bmSave;
  -   HBITMAP    bmBackOld, bmObjectOld, bmMemOld, bmSaveOld;
  -   HDC        hdcMem, hdcBack, hdcObject, hdcSave;
  -   POINT      ptSize;
  -/*
  -   hdcTemp = CreateCompatibleDC(hdc);
  -   SelectObject(hdcTemp, hBitmap);   // Select the bitmap
  -
  -   GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm);
  -   ptSize.x = bm.bmWidth;            // Get width of bitmap
  -   ptSize.y = bm.bmHeight;           // Get height of bitmap
  -   */
  -   ptSize.x = BTX;            // Get width of bitmap
  -   ptSize.y = BTY;            // Get height of bitmap
  -   DPtoLP(hdcTemp, &ptSize, 1);      // Convert from device
  -                                     // to logical points
  -
  -   // Create some DCs to hold temporary data.
  -   hdcBack   = CreateCompatibleDC(hdc);
  -   hdcObject = CreateCompatibleDC(hdc);
  -   hdcMem    = CreateCompatibleDC(hdc);
  -   hdcSave   = CreateCompatibleDC(hdc);
  -
  -   // Create a bitmap for each DC. DCs are required for a number of
  -   // GDI functions.
  -
  -   // Monochrome DC
  -   bmAndBack   = CreateBitmap(ptSize.x, ptSize.y, 1, 1, NULL);
  -
  -   // Monochrome DC
  -   bmAndObject = CreateBitmap(ptSize.x, ptSize.y, 1, 1, NULL);
  -
  -   bmAndMem    = CreateCompatibleBitmap(hdc, ptSize.x, ptSize.y);
  -   bmSave      = CreateCompatibleBitmap(hdc, ptSize.x, ptSize.y);
  -
  -   // Each DC must select a bitmap object to store pixel data.
  -   bmBackOld   = SelectObject(hdcBack, bmAndBack);
  -   bmObjectOld = SelectObject(hdcObject, bmAndObject);
  -   bmMemOld    = SelectObject(hdcMem, bmAndMem);
  -   bmSaveOld   = SelectObject(hdcSave, bmSave);
  -
  -   // Set proper mapping mode.
  -   SetMapMode(hdcTemp, GetMapMode(hdc));
  -
  -   // Save the bitmap sent here, because it will be overwritten.
  -   BitBlt(hdcSave, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCCOPY);
  -
  -   // Set the background color of the source DC to the color.
  -   // contained in the parts of the bitmap that should be transparent
  -   cColor = SetBkColor(hdcTemp, cTransparentColor);
  -
  -   // Create the object mask for the bitmap by performing a BitBlt
  -   // from the source bitmap to a monochrome bitmap.
  -   BitBlt(hdcObject, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0,
  -          SRCCOPY);
  -
  -   // Set the background color of the source DC back to the original
  -   // color.
  -   SetBkColor(hdcTemp, cColor);
  -
  -   // Create the inverse of the object mask.
  -   BitBlt(hdcBack, 0, 0, ptSize.x, ptSize.y, hdcObject, 0, 0,
  -          NOTSRCCOPY);
  -
  -   // Copy the background of the main DC to the destination.
  -   BitBlt(hdcMem, 0, 0, ptSize.x, ptSize.y, hdc, xStart, yStart,
  -          SRCCOPY);
  -
  -   // Mask out the places where the bitmap will be placed.
  -   BitBlt(hdcMem, 0, 0, ptSize.x, ptSize.y, hdcObject, 0, 0, SRCAND);
  -
  -   // Mask out the transparent colored pixels on the bitmap.
  -   BitBlt(hdcTemp, 0, 0, ptSize.x, ptSize.y, hdcBack, 0, 0, SRCAND);
  -
  -   // XOR the bitmap with the background on the destination DC.
  -   BitBlt(hdcMem, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCPAINT);
  -
  -   // Copy the destination to the screen.
  -   BitBlt(hdc, xStart, yStart, ptSize.x, ptSize.y, hdcMem, 0, 0,
  -          SRCCOPY);
  -
  -   // Place the original bitmap back into the bitmap sent here.
  -   BitBlt(hdcTemp, 0, 0, ptSize.x, ptSize.y, hdcSave, 0, 0, SRCCOPY);
  -
  -   // Delete the memory bitmaps.
  -   DeleteObject(SelectObject(hdcBack, bmBackOld));
  -   DeleteObject(SelectObject(hdcObject, bmObjectOld));
  -   DeleteObject(SelectObject(hdcMem, bmMemOld));
  -   DeleteObject(SelectObject(hdcSave, bmSaveOld));
  -
  -   // Delete the memory DCs.
  -   DeleteDC(hdcMem);
  -   DeleteDC(hdcBack);
  -   DeleteDC(hdcObject);
  -   DeleteDC(hdcSave);
  -   //DeleteDC(hdcTemp);
  -}
  -
  -
   /**********************************************************************/
   /*                                                                    */
   /* PaintStatus()                                                      */
  @@ -293,7 +217,6 @@
       {
           HBITMAP hbmpStatus;
           HBRUSH hOldBrush,hBrush;
  -        COLORREF cColor,cTransColor;
   //      int nCyCap = GetSystemMetrics(SM_CYSMCAPTION);
           int nCyCap = 0;
           RECT rc;
  @@ -329,10 +252,6 @@
   
           hbmpStatus = (HBITMAP)GetWindowLongPtr(hStatusWnd,FIGWL_STATUSBMP);
           hbmpOld = SelectObject(hMemDC,hbmpStatus);
  -        cTransColor= RGB(192,192,192); // XXX
  -
  -        cColor= SetBkColor(hTempDC,cTransColor);
  -        SetBkMode(hTempDC,TRANSPARENT);
   
           // Paint HDR.
           x = BTEMPT;
  @@ -346,19 +265,13 @@
           bmTemp = CreateCompatibleBitmap(hDC, BTX, BTY);
           bmTempOld = SelectObject(hTempDC, bmTemp);
   
  -        // clear
  -        rc.top = rc.left = 0;
  -        rc.right = BTX*2;
  -        rc.bottom = BTY;
  -        FillRect(hDC,&rc,(HBRUSH) (COLOR_BTNFACE + 1));
  -
           if (!(dwPushedStatus & PUSHED_STATUS_HDR)) {
               BitBlt(hTempDC,0,0,BTX,BTY,hMemDC,x,0,SRCCOPY);
  -            DrawTransBtn(hDC,hTempDC,0,0,cTransColor);
  +            BitBlt(hDC,0,0,BTX,BTY,hTempDC,0,0,SRCCOPY);
           }
           else {
               BitBlt(hTempDC,0,0,BTX,BTY,hMemDC,x,BTY,SRCCOPY);
  -            DrawTransBtn(hDC,hTempDC,0,0,cTransColor);
  +            BitBlt(hDC,0,0,BTX,BTY,hTempDC,0,0,SRCCOPY);
           }
   
           // Paint MODE.
  @@ -366,15 +279,14 @@
   
           if (!(dwPushedStatus & PUSHED_STATUS_MODE)) {
               BitBlt(hTempDC,0,0,BTX,BTY,hMemDC,x,0,SRCCOPY);
  -            DrawTransBtn(hDC,hTempDC,BTX,nCyCap,cTransColor);
  +            BitBlt(hDC,BTX,nCyCap,BTX,BTY,hTempDC,0,0,SRCCOPY);
           } else {
               BitBlt(hTempDC,0,0,BTX,BTY,hMemDC,x,BTY,SRCCOPY);
  -            DrawTransBtn(hDC,hTempDC,BTX,nCyCap,cTransColor);
  +            BitBlt(hDC,BTX,nCyCap,BTX,BTY,hTempDC,0,0,SRCCOPY);
           }
   
           DeleteObject(SelectObject(hTempDC, bmTempOld));
   
  -        SetBkColor(hDC,cColor);
   #if 0
           // Paint Roman MODE.
           x = BTEMPT;
  @@ -803,6 +715,11 @@
                           //ImmConfigureIME(GetKeyboardLayout(0), NULL, IME_CONFIG_GENERAL, 0);
                           ImmUnlockIMC(hIMC);
                           break;
  +                    case IDM_CONFIG:
  +                        lpIMC = (LPINPUTCONTEXT)ImmLockIMC(hIMC);
  +                        (void) ImeConfigure (GetKeyboardLayout(0), lpIMC->hWnd, IME_CONFIG_GENERAL, NULL);
  +                        ImmUnlockIMC(hIMC);
  +                        break;
   
                       case IDM_OLD2BUL:
                       case IDM_3BUL:
  
  
  


wkpark      06/11/26 19:42:29

  Modified:    resource close.bmp status.bmp
  Log:
  make dib bmp
  
  Revision  Changes    Path
  1.2       +1 -1      saenaru/resource/close.bmp
  
  	<<Binary file>>
  
  
  1.3       +1 -1      saenaru/resource/status.bmp
  
  	<<Binary file>>
  
  


wkpark      06/12/16 18:30:24

  Modified:    src      dic.c hangul.c saenaru.h
  Log:
  fixed automata3 with the KSX1001_SUPPORT option reported by Fe.head
  
  Revision  Changes    Path
  1.28      +18 -3     saenaru/src/dic.c
  
  Index: dic.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/dic.c,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- dic.c	24 Nov 2006 22:58:53 -0000	1.27
  +++ dic.c	16 Dec 2006 09:30:24 -0000	1.28
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/dic.c,v 1.27 2006/11/24 22:58:53 wkpark Exp $
  + * $Saenaru: saenaru/src/dic.c,v 1.28 2006/12/16 09:30:24 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -37,6 +37,10 @@
   #include "vksub.h"
   #include "immsec.h"
   
  +#define hangul_is_choseong(ch)	((ch) >= 0x1100 && (ch) <= 0x1159)
  +#define hangul_is_jungseong(ch)	((ch) >= 0x1161 && (ch) <= 0x11a2)
  +#define hangul_is_jongseong(ch)	((ch) >= 0x11a7 && (ch) <= 0x11f9)
  +
   int GetCandidateStringsFromDictionary(LPWSTR lpString, LPWSTR lpBuf, DWORD dwBufLen, LPTSTR szDicFileName);
   
   BOOL GetAnsiPathName(LPCWSTR lpszUniPath,LPSTR lpszAnsiPath,UINT nMaxLen)
  @@ -669,8 +673,19 @@
   
           if ( ic.len && (dwOptionFlag & BACKSPACE_BY_JAMO)) {
               // Delete jamos
  -            if (--ic.len > 0) {
  -                ic.laststate--;    
  +            if (ic.len-1 > 0) {
  +                WCHAR last;
  +                hangul_ic_pop(&ic); // delete
  +                last= hangul_ic_peek(&ic); // delete
  +                if (ic.laststate == 1) ic.cho=0;
  +                else if (ic.laststate == 2) ic.jung=0;
  +                else if (ic.laststate == 3) ic.jong=0;
  +
  +                if (hangul_is_choseong(last)) ic.laststate=1;
  +                else if (hangul_is_jungseong(last)) ic.laststate=2;
  +                else if (hangul_is_jongseong(last)) ic.laststate=3;
  +
  +                //ic.laststate--;
                   *lpptr = cs = hangul_ic_get(&ic,0);
               } else {
                   hangul_ic_init(&ic);
  
  
  
  1.30      +24 -5     saenaru/src/hangul.c
  
  Index: hangul.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/hangul.c,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- hangul.c	24 Nov 2006 23:00:37 -0000	1.29
  +++ hangul.c	16 Dec 2006 09:30:24 -0000	1.30
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/hangul.c,v 1.29 2006/11/24 23:00:37 wkpark Exp $
  + * $Saenaru: saenaru/src/hangul.c,v 1.30 2006/12/16 09:30:24 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -2590,10 +2590,20 @@
               case 1: //  + ʼ
                   if (!ic->cho &&
                       ( (dwOptionFlag & COMPOSITE_TYPING) || ctyping ) ) {
  +                    if (hangul_jamo_to_syllable(jamo,ic->jung ? ic->jung:0x1161,ic->jong)){
  +			// XXX
  +			ic->cho=jamo;
  +			hangul_ic_pop(ic);
  +			hangul_ic_push(ic,jamo);
  +			hangul_ic_push(ic,ic->jong); // fix order
  +			ic->laststate=3;
  +			return 0;
  +		    }
  +                    *cs = hangul_ic_commit(ic);
                       ic->cho=jamo;
                       hangul_ic_push(ic,jamo);
  -                    ic->laststate=3;
  -                    return 0;
  +		    ic->laststate=1;
  +		    return -1;
                   }
                   //    ä ְ
                   // ʼ Էµ ̶ 
  @@ -2643,10 +2653,19 @@
               case 2: //  + ߼
                   if (!ic->jung &&
                       ( (dwOptionFlag & COMPOSITE_TYPING) || ctyping ) ) {
  +                    if (hangul_jamo_to_syllable(ic->cho ? ic->cho:0x110b,jamo,ic->jong)) {
  +			ic->jung=jamo;
  +			hangul_ic_pop(ic);
  +			hangul_ic_push(ic,jamo);
  +			hangul_ic_push(ic,ic->jong); // fix order
  +			ic->laststate=3;
  +			return 0;
  +		    }
  +                    *cs = hangul_ic_commit(ic);
                       ic->jung=jamo;
                       hangul_ic_push(ic,jamo);
  -                    ic->laststate=3;
  -                    return 0;
  +		    ic->laststate=2;
  +		    return -1;
                   }
                   //    ä ְ
                   // ߼ Էµ ̶ 
  
  
  
  1.18      +3 -1      saenaru/src/saenaru.h
  
  Index: saenaru.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.h,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- saenaru.h	24 Nov 2006 23:05:05 -0000	1.17
  +++ saenaru.h	16 Dec 2006 09:30:24 -0000	1.18
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.h,v 1.17 2006/11/24 23:05:05 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.h,v 1.18 2006/12/16 09:30:24 wkpark Exp $
    */
   
   #include <indicml.h>
  @@ -492,6 +492,8 @@
   
   void PASCAL AddChar(HIMC,WORD);
   WCHAR PASCAL hangul_ic_get(HangulIC*, UINT);
  +WCHAR PASCAL hangul_ic_pop(HangulIC*);
  +WCHAR PASCAL hangul_ic_peek(HangulIC*);
   void PASCAL  hangul_ic_init(HangulIC*);
   
   BOOL PASCAL ConvHanja(HIMC, int, UINT);
  
  
  


wkpark      06/12/30 10:48:44

  Modified:    setup    saenaru.nsi
  Log:
  release 1.0
  
  Revision  Changes    Path
  1.8       +10 -6     saenaru/setup/saenaru.nsi
  
  Index: saenaru.nsi
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/saenaru.nsi,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- saenaru.nsi	4 Nov 2006 01:01:13 -0000	1.7
  +++ saenaru.nsi	30 Dec 2006 01:48:44 -0000	1.8
  @@ -1,11 +1,12 @@
   ; Saenaru Installation Script
   ; Written by Hye-Shik Chang <perky@i18n.org>
  -; $Saenaru: saenaru/setup/saenaru.nsi,v 1.7 2006/11/04 01:01:13 wkpark Exp $
  +; $Saenaru: saenaru/setup/saenaru.nsi,v 1.8 2006/12/30 01:48:44 wkpark Exp $
   
  -!define RELVERSION      "061104"
  +!define RELVERSION      "1.0"
   !define REGISTRY_PATH   "Software\OpenHangulProject\Saenaru"
   !define DDKBUILDDIR     "..\src\objfre_wxp_x86\i386"
   !define RESOURCEDIR     "..\resource"
  +!define HELPDIR         "..\help"
   !define SRCROOTDIR      ".."
   !define SMPATH          "$SMPROGRAMS\"
   
  @@ -21,6 +22,8 @@
     ;General
     Name "  ${RELVERSION}"
     OutFile "Saenaru-${RELVERSION}.exe"
  +  !define MUI_ICON "install.ico"
  +  !define MUI_UNICON "install.ico"
   
     ;Folder selection page
     InstallDir "$WINDIR\IME\Saenaru"
  @@ -72,6 +75,8 @@
   
     SaenaruDone:
     SetOverwrite lastused
  +  SetOutPath "$INSTDIR\help"
  +  File "${HELPDIR}\saenaru.chm"
     SetOutPath "$INSTDIR"
     File "${RESOURCEDIR}\saenaru.dic"
     File "${RESOURCEDIR}\word.dic"
  @@ -92,7 +97,7 @@
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0120412" "IME file" "SAENARU.IME"
   
     ; dvorak driver support
  -  WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0130412" "Layout file" "kbdkor.dll"
  +  WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0130412" "Layout file" "kbddv.dll"
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0130412" "Layout text" " ѱ Է±"
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0130412" "Layout display name" "ѱ Է± ( 庸)"
     WriteRegStr HKLM "System\CurrentControlSet\Control\Keyboard Layouts\E0130412" "IME file" "SAENARU.IME"
  @@ -221,6 +226,7 @@
     Delete "$INSTDIR\winsym.dic"
     Delete "$INSTDIR\word.dic"
     Delete "$INSTDIR\jinsuk.dic"
  +  Delete "$INSTDIR\help\saenaru.chm"
   
     Delete "$INSTDIR\Source\DIRS"
     Delete "$INSTDIR\Source\LICENSE"
  @@ -242,8 +248,8 @@
     Delete "$INSTDIR\Source\resource\full_old.ico"
     Delete "$INSTDIR\Source\resource\general.ico"
     Delete "$INSTDIR\Source\resource\half.ico"
  -  Delete "$INSTDIR\Source\resource\half_old.ico"
     Delete "$INSTDIR\Source\resource\keyboard.ico"
  +  Delete "$INSTDIR\Source\resource\imepad.ico"
     Delete "$INSTDIR\Source\resource\penindic.ico"
     Delete "$INSTDIR\Source\resource\saenaru.dic"
     Delete "$INSTDIR\Source\resource\winsym.dic"
  @@ -253,9 +259,7 @@
     Delete "$INSTDIR\Source\resource\saenaru.dlg"
     Delete "$INSTDIR\Source\resource\saenaru.ico"
     Delete "$INSTDIR\Source\resource\saenaru.rcv"
  -  Delete "$INSTDIR\Source\resource\saenaru0.dic"
     Delete "$INSTDIR\Source\resource\status.bmp"
  -  Delete "$INSTDIR\Source\resource\status_old.bmp"
     Delete "$INSTDIR\Source\resource\text\engkey.ico"
     Delete "$INSTDIR\Source\resource\text\hanjakey.ico"
     Delete "$INSTDIR\Source\resource\text\hankey.ico"
  
  
  


wkpark      06/12/30 10:48:59

  Modified:    .        Makefile
  Log:
  release 1.0
  
  Revision  Changes    Path
  1.4       +2 -2      saenaru/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/Makefile,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Makefile	12 Oct 2006 22:13:53 -0000	1.3
  +++ Makefile	30 Dec 2006 01:48:59 -0000	1.4
  @@ -1,10 +1,10 @@
   #
   # Maintainer Buildtool for nmake
   #
  -# $Saenaru: saenaru/Makefile,v 1.3 2006/10/12 22:13:53 wkpark Exp $
  +# $Saenaru: saenaru/Makefile,v 1.4 2006/12/30 01:48:59 wkpark Exp $
   #
   
  -RELVERSION=	061013
  +RELVERSION=	1.0
   SETUPEXE=	setup\Saenaru-$(RELVERSION).exe
   IMEBUILDDIR=	src\objfre_wxp_x86\i386
   NSISDIR=	C:\Program Files\NSIS
  
  
  


wkpark      06/12/30 10:49:18

  Modified:    src      sources version.h
  Log:
  release 1.0
  
  Revision  Changes    Path
  1.7       +1 -1      saenaru/src/sources
  
  Index: sources
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/sources,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- sources	18 Nov 2006 01:47:42 -0000	1.6
  +++ sources	30 Dec 2006 01:49:18 -0000	1.7
  @@ -6,7 +6,7 @@
   DLLBASE=0x00500000
   
   #C_DEFINES=-DWINVER=0x501
  -C_DEFINES=-DWINVER=0x501
  +C_DEFINES=-DWINVER=0x500
   
   #
   #C_DEFINES=-DWINVER=0x40A -DNO_TSF
  
  
  
  1.3       +4 -4      saenaru/src/version.h
  
  Index: version.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/version.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- version.h	12 Oct 2006 22:08:57 -0000	1.2
  +++ version.h	30 Dec 2006 01:49:18 -0000	1.3
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/version.h,v 1.2 2006/10/12 22:08:57 wkpark Exp $
  + * $Saenaru: saenaru/src/version.h,v 1.3 2006/12/30 01:49:18 wkpark Exp $
    */
   
   #define VER_MAJOR	 1
  @@ -35,9 +35,9 @@
   #define VER_MINOR	 0
   #define VER_MINOR_STR	"0"
   
  -#define VER_BUILD	 1013
  -#define VER_BUILD_STR	"1013"
  +#define VER_BUILD	 1226
  +#define VER_BUILD_STR	"1226"
   #define VER_PATCHLEVEL	     0
   #define VER_PATCHLEVEL_STR  "0"
   
  -#define VER_SNAPSHOT	"snapshot"
  +#define VER_SNAPSHOT	"release 1.0"
  
  
  


wkpark      06/12/30 10:51:05

  Removed:     resource full_old.ico half_old.ico status_old.bmp
  Log:
  remove not used imgs


wkpark      07/10/21 23:11:21

  Modified:    src      ui.c
  Log:
  fixed nateon flickering
  
  Revision  Changes    Path
  1.26      +5 -2      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- ui.c	24 Nov 2006 23:53:52 -0000	1.25
  +++ ui.c	21 Oct 2007 14:11:21 -0000	1.26
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.25 2006/11/24 23:53:52 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.26 2007/10/21 14:11:21 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -180,6 +180,8 @@
           return FALSE;
   #endif
   
  +    hangul_ic_init(&ic); // init hangul
  +
       return TRUE;
   }
   
  @@ -414,7 +416,8 @@
               }
               //
               MoveCompWindow(lpUIExtra,lpIMC);
  -            MoveCandWindow(hWnd,lpIMC,lpUIExtra, FALSE);
  +            MoveCandWindow(hWnd,lpIMC,lpUIExtra, TRUE);
  +            //MoveCandWindow(hWnd,lpIMC,lpUIExtra, FALSE); // NateOn flicking
               //MoveCandWindow(hWnd,lpIMC,lpUIExtra, TRUE); // EditPlus problem
               GlobalUnlock(hUIExtra);
               ImmUnlockIMC(hUICurIMC);
  
  
  


wkpark      07/10/22 23:54:38

  Modified:    resource symwin.dic
  Log:
  fixed PR #302375
  
  Revision  Changes    Path
  1.2       +1 -1      saenaru/resource/symwin.dic
  
  	<<Binary file>>
  
  


wkpark      07/10/27 20:48:13

  Modified:    src      saenaru.c ui.c
  Log:
  fixed PR #304605 reported by whitewar
  
  Revision  Changes    Path
  1.9       +4 -1      saenaru/src/saenaru.c
  
  Index: saenaru.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- saenaru.c	21 Nov 2006 15:21:08 -0000	1.8
  +++ saenaru.c	27 Oct 2007 11:48:12 -0000	1.9
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/saenaru.c,v 1.8 2006/11/21 15:21:08 wkpark Exp $
  + * $Saenaru: saenaru/src/saenaru.c,v 1.9 2007/10/27 11:48:12 wkpark Exp $
    */
   
   #include <windows.h>
  @@ -133,6 +133,9 @@
               wsprintf(szDev,TEXT("DLLEntry Process Detach hInst is %lx"),hInst);
               ImeLog(LOGF_ENTRY, szDev);
   #endif
  +#if !defined (NO_TSF)
  +            UninitLanguageBar();
  +#endif
               break;
   
           case DLL_THREAD_ATTACH:
  
  
  
  1.27      +3 -3      saenaru/src/ui.c
  
  Index: ui.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/ui.c,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- ui.c	21 Oct 2007 14:11:21 -0000	1.26
  +++ ui.c	27 Oct 2007 11:48:13 -0000	1.27
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/ui.c,v 1.26 2007/10/21 14:11:21 wkpark Exp $
  + * $Saenaru: saenaru/src/ui.c,v 1.27 2007/10/27 11:48:13 wkpark Exp $
    */
   
   /**********************************************************************/
  @@ -498,8 +498,8 @@
   
               MyDebugPrint((TEXT("WM_DELETE\n")));
               UnsetHookFunc();
  -            ActivateLanguageBar(FALSE);
  -            UninitLanguageBar();
  +            //XXX ActivateLanguageBar(FALSE);
  +            //XXX UninitLanguageBar();
               //UnsetConsoleHookFunc();
   
               break;
  
  
  


wkpark      07/12/30 01:50:28

  Modified:    src      imm.c
  Log:
  fixed http://kldp.org/node/87483#comment-415073
  
  Revision  Changes    Path
  1.27      +3 -3      saenaru/src/imm.c
  
  Index: imm.c
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/imm.c,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- imm.c	25 Nov 2006 09:35:16 -0000	1.26
  +++ imm.c	29 Dec 2007 16:50:28 -0000	1.27
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/imm.c,v 1.26 2006/11/25 09:35:16 wkpark Exp $
  + * $Saenaru: saenaru/src/imm.c,v 1.27 2007/12/29 16:50:28 wkpark Exp $
    */
   
   #include "windows.h"
  @@ -336,7 +336,7 @@
   #endif
   
       switch ( ( LOWORD(vKey) & 0x00FF ) ) {
  -#if 1
  +#if 0
           case VK_HANJA:
               if (IsCompStr(hIMC)) {
                   ImmUnlockIMC(hIMC);
  @@ -823,7 +823,6 @@
                   ImmUnlockIMCC(lpIMC->hCandInfo);
               }
           }
  -        ImmUnlockIMC(hIMC);
   #if !defined (NO_TSF)
           if (fSelect) {
               if (InitLanguageBar ())
  @@ -832,6 +831,7 @@
               ActivateLanguageBar (FALSE) ;
           }
   #endif
  +        ImmUnlockIMC(hIMC);
       }
   
       return TRUE;
  
  
  


wkpark      07/12/30 01:50:50

  Modified:    src      version.h
  Log:
  version up
  
  Revision  Changes    Path
  1.4       +4 -4      saenaru/src/version.h
  
  Index: version.h
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/version.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- version.h	30 Dec 2006 01:49:18 -0000	1.3
  +++ version.h	29 Dec 2007 16:50:50 -0000	1.4
  @@ -27,7 +27,7 @@
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
  - * $Saenaru: saenaru/src/version.h,v 1.3 2006/12/30 01:49:18 wkpark Exp $
  + * $Saenaru: saenaru/src/version.h,v 1.4 2007/12/29 16:50:50 wkpark Exp $
    */
   
   #define VER_MAJOR	 1
  @@ -35,9 +35,9 @@
   #define VER_MINOR	 0
   #define VER_MINOR_STR	"0"
   
  -#define VER_BUILD	 1226
  -#define VER_BUILD_STR	"1226"
  +#define VER_BUILD	 1230
  +#define VER_BUILD_STR	"1230"
   #define VER_PATCHLEVEL	     0
   #define VER_PATCHLEVEL_STR  "0"
   
  -#define VER_SNAPSHOT	"release 1.0"
  +#define VER_SNAPSHOT	"release 1.0.1"
  
  
  


wkpark      07/12/30 01:51:03

  Modified:    .        Makefile
  Log:
  version up
  
  Revision  Changes    Path
  1.5       +2 -2      saenaru/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/Makefile,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Makefile	30 Dec 2006 01:48:59 -0000	1.4
  +++ Makefile	29 Dec 2007 16:51:03 -0000	1.5
  @@ -1,10 +1,10 @@
   #
   # Maintainer Buildtool for nmake
   #
  -# $Saenaru: saenaru/Makefile,v 1.4 2006/12/30 01:48:59 wkpark Exp $
  +# $Saenaru: saenaru/Makefile,v 1.5 2007/12/29 16:51:03 wkpark Exp $
   #
   
  -RELVERSION=	1.0
  +RELVERSION=	1.0.1
   SETUPEXE=	setup\Saenaru-$(RELVERSION).exe
   IMEBUILDDIR=	src\objfre_wxp_x86\i386
   NSISDIR=	C:\Program Files\NSIS
  
  
  


wkpark      07/12/30 01:52:04

  Modified:    setup    saenaru.nsi
  Log:
  version up
  
  Revision  Changes    Path
  1.9       +3 -3      saenaru/setup/saenaru.nsi
  
  Index: saenaru.nsi
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/saenaru.nsi,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- saenaru.nsi	30 Dec 2006 01:48:44 -0000	1.8
  +++ saenaru.nsi	29 Dec 2007 16:52:04 -0000	1.9
  @@ -1,8 +1,8 @@
   ; Saenaru Installation Script
   ; Written by Hye-Shik Chang <perky@i18n.org>
  -; $Saenaru: saenaru/setup/saenaru.nsi,v 1.8 2006/12/30 01:48:44 wkpark Exp $
  +; $Saenaru: saenaru/setup/saenaru.nsi,v 1.9 2007/12/29 16:52:04 wkpark Exp $
   
  -!define RELVERSION      "1.0"
  +!define RELVERSION      "1.0.1"
   !define REGISTRY_PATH   "Software\OpenHangulProject\Saenaru"
   !define DDKBUILDDIR     "..\src\objfre_wxp_x86\i386"
   !define RESOURCEDIR     "..\resource"
  @@ -20,7 +20,7 @@
   ;Configuration
   
     ;General
  -  Name "  ${RELVERSION}"
  +  Name "  ${RELVERSION}"
     OutFile "Saenaru-${RELVERSION}.exe"
     !define MUI_ICON "install.ico"
     !define MUI_UNICON "install.ico"
  
  
  


wkpark      07/12/30 01:59:10

  Modified:    src      saenaru.rc
  Log:
  version up
  
  Revision  Changes    Path
  1.15      +5 -5      saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- saenaru.rc	20 Nov 2006 08:42:28 -0000	1.14
  +++ saenaru.rc	29 Dec 2007 16:59:10 -0000	1.15
  @@ -128,9 +128,9 @@
   FONT 9, ""
   LANGUAGE 0x12, 0x1
   BEGIN
  -    LTEXT           " ѱ Է±  1.0",IDC_STATIC,63,36,88,8
  +    LTEXT           " ѱ Է±  1.0.1",IDC_STATIC,63,36,88,8
       ICON            IDI_ABOUT,IDC_STATIC,98,4,20,20
  -    LTEXT           ", ڿ  2003-2006",IDC_STATIC,
  +    LTEXT           ", ڿ  2003-2007",IDC_STATIC,
   		     59,54,98,8
       LTEXT           " Ʈ ùٸ ̳ Ư  ռ    ""ִ ״"" ˴ϴ.",
                       IDC_STATIC,8,81,198,18
  @@ -183,10 +183,10 @@
           BEGIN
               VALUE "Comments", " ѱ Է±\0"
               VALUE "CompanyName", "Open Hangul Project\0"
  -            VALUE "FileDescription", " 1.0\0"
  +            VALUE "FileDescription", " 1.0.1\0"
               VALUE "FileVersion", VER_MAJOR_STR "." VER_MINOR_STR "\0"
               VALUE "InternalName", "SAENARU\0"
  -            VALUE "LegalCopyright", "Copyright (C) 2003-2006 .\0"
  +            VALUE "LegalCopyright", "Copyright (C) 2003-2007 .\0"
               VALUE "LegalTrademarks", "\0"
               VALUE "OriginalFilename", "SAENARU.IME\0"
   #ifdef VER_SNAPSHOT
  @@ -423,7 +423,7 @@
   LANGUAGE 0x09, 0x01
   FONT 9, "Tahoma"
   {
  -   LTEXT	"Saenaru Hangul Input Method ver 1.0", IDC_STATIC, 43,29,126,8 
  +   LTEXT	"Saenaru Hangul Input Method ver 1.0.1", IDC_STATIC, 43,29,126,8 
      ICON		IDI_ABOUT, IDC_STATIC, 98,6,18,18 
      LTEXT	"Hye-Sik Chang, Won-Kyu Park 2003-2006", IDC_STATIC, 41,42,136,8 
      LTEXT 	"THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.", IDC_STATIC, 10,59,198,42 
  
  
  


wkpark      07/12/30 02:01:01

  Modified:    setup    LICENSE.txt
  Log:
  version up
  
  Revision  Changes    Path
  1.6       +2 -2      saenaru/setup/LICENSE.txt
  
  Index: LICENSE.txt
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/setup/LICENSE.txt,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- LICENSE.txt	8 Oct 2006 09:19:29 -0000	1.5
  +++ LICENSE.txt	29 Dec 2007 17:01:01 -0000	1.6
  @@ -9,7 +9,7 @@
   硻  ҽ ۹̸, ۱ǹ ؼ   ࿡ 
   ô 쿡 Ͻ  ֽϴ. (2 BSD ̼ ¿ Ǿϴ.)
   
  - (C) 2003-2006 ڿ, , ȯ.
  + (C) 2003-2007 ڿ, , ȯ.
    (C) 1990-1998 Microsoft Corporation.
    Ʈ  ۱ ȣ.
   
  @@ -39,4 +39,4 @@
       ׿ ؼ  ѱ Ʈ Ʈ ڵ
   å ϴ.
   
  -$Saenaru: saenaru/setup/LICENSE.txt,v 1.5 2006/10/08 09:19:29 wkpark Exp $
  +$Saenaru: saenaru/setup/LICENSE.txt,v 1.6 2007/12/29 17:01:01 wkpark Exp $
  
  
  


wkpark      07/12/30 02:07:03

  Modified:    src      saenaru.rc
  Log:
  fixed resource
  
  Revision  Changes    Path
  1.16      +1 -1      saenaru/src/saenaru.rc
  
  Index: saenaru.rc
  ===================================================================
  RCS file: /cvsroot/saenaru/saenaru/src/saenaru.rc,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- saenaru.rc	29 Dec 2007 16:59:10 -0000	1.15
  +++ saenaru.rc	29 Dec 2007 17:07:03 -0000	1.16
  @@ -128,7 +128,7 @@
   FONT 9, ""
   LANGUAGE 0x12, 0x1
   BEGIN
  -    LTEXT           " ѱ Է±  1.0.1",IDC_STATIC,63,36,88,8
  +    LTEXT           " ѱ Է±  1.0.1",IDC_STATIC,61,36,98,8
       ICON            IDI_ABOUT,IDC_STATIC,98,4,20,20
       LTEXT           ", ڿ  2003-2007",IDC_STATIC,
   		     59,54,98,8
  
  
  


