⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.c

📁 手机上的韩文输入法 saenaru20031212.zip
💻 C
📖 第 1 页 / 共 2 页
字号:
	    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:
            break;

        case WM_HELP:
            break;

        case WM_CONTEXTMENU:   // right mouse click
            break;

        case WM_COMMAND:
            dwTemp = LAYOUT_NEW2BUL;
            //SetDwordToSetting(TEXT("Layout"), dwLayoutFlag);
            break;

        default:
            return FALSE;

    }
    return TRUE;
} 

/**********************************************************************/
/*                                                                    */
/*      DebugOptionDlgProc()                                          */
/*                                                                    */
/**********************************************************************/
INT_PTR CALLBACK DebugOptionDlgProc(HWND hDlg, UINT message , WPARAM wParam, LPARAM lParam)
{
    DWORD dwTemp;
    TCHAR szBuf[128];
    NMHDR FAR *lpnm;
    LPPROPSHEETPAGE lpPropSheet = (LPPROPSHEETPAGE)(GetWindowLongPtr(hDlg, DWLP_USER));

    switch(message)
    {
        case WM_NOTIFY:
            lpnm = (NMHDR FAR *)lParam;
            switch(lpnm->code)
            {
                case PSN_SETACTIVE:
                    break;
        
                case PSN_KILLACTIVE:
                    break;
        
                case PSN_APPLY:
#ifdef DEBUG
                    dwTemp = 0;
                    if (IsDlgButtonChecked(hDlg, IDC_LOGF_ENTRY))
                        dwTemp |= LOGF_ENTRY;
                    if (IsDlgButtonChecked(hDlg, IDC_LOGF_API))
                        dwTemp |= LOGF_API;
                    if (IsDlgButtonChecked(hDlg, IDC_LOGF_KEY))
                        dwTemp |= LOGF_KEY;
                    dwLogFlag = dwTemp;

                    dwTemp = 0;
                    if (IsDlgButtonChecked(hDlg, IDC_DEBF_THREADID))
                        dwTemp |= DEBF_THREADID;
                    if (IsDlgButtonChecked(hDlg, IDC_DEBF_GUIDELINE))
                        dwTemp |= DEBF_GUIDELINE;
                    dwDebugFlag = dwTemp;

                    SetDwordToSetting(TEXT("LogFlag"), dwLogFlag);
                    SetDwordToSetting(TEXT("DebugFlag"), dwDebugFlag);
#endif

                    break;

                case PSN_RESET:
                    break;

                case PSN_HELP:
                    break;

                default:
                    return FALSE;
            }
            break;

        case WM_INITDIALOG:
            SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR) lParam);
            lpPropSheet = (LPPROPSHEETPAGE)lParam;

#ifdef DEBUG
            CheckDlgButton(hDlg, IDC_LOGF_ENTRY, 
                                (dwLogFlag & LOGF_ENTRY) ? 1 : 0);
            CheckDlgButton(hDlg, IDC_LOGF_API, 
                                (dwLogFlag & LOGF_API) ? 1 : 0);
            CheckDlgButton(hDlg, IDC_LOGF_KEY, 
                                (dwLogFlag & LOGF_KEY) ? 1 : 0);
            
            CheckDlgButton(hDlg, IDC_DEBF_THREADID, 
                                (dwDebugFlag & DEBF_THREADID) ? 1 : 0);
            CheckDlgButton(hDlg, IDC_DEBF_GUIDELINE, 
                                (dwDebugFlag & DEBF_GUIDELINE) ? 1 : 0);
#endif
            break;

        case WM_DESTROY:
            break;

        case WM_HELP:
            break;

        case WM_CONTEXTMENU:   // right mouse click
            break;

        case WM_COMMAND:
            break;

        default:
            return FALSE;

    }
    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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -