📄 config.c
字号:
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 + -