[Ttssh2-commit] [9289] keyboard.cfg 読み込み内部処理をすべて Unicode 化

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2021年 5月 27日 (木) 23:15:25 JST


Revision: 9289
          https://osdn.net/projects/ttssh2/scm/svn/commits/9289
Author:   zmatsuo
Date:     2021-05-27 23:15:25 +0900 (Thu, 27 May 2021)
Log Message:
-----------
keyboard.cfg 読み込み内部処理をすべて Unicode 化

- キーワードをUnicode化、テーブル化
- ファイル名だけ非Unicode

Modified Paths:
--------------
    trunk/teraterm/ttpset/ttset_keyboard.c

-------------- next part --------------
Modified: trunk/teraterm/ttpset/ttset_keyboard.c
===================================================================
--- trunk/teraterm/ttpset/ttset_keyboard.c	2021-05-27 14:15:12 UTC (rev 9288)
+++ trunk/teraterm/ttpset/ttset_keyboard.c	2021-05-27 14:15:25 UTC (rev 9289)
@@ -38,31 +38,147 @@
 #include "codeconv.h"
 #include "../teraterm/keyboard_i.h"
 
-#define INI_FILE_IS_UNICODE 1
+typedef struct {
+	int key_id;
+	const wchar_t *key_str;
+} keymap_list_t;
 
-#define VTEditor "VT editor keypad"
-#define VTNumeric "VT numeric keypad"
-#define VTFunction "VT function keys"
-#define XFunction "X function keys"
-#define ShortCut "Shortcut keys"
+static void ReadList(PKeyMap KeyMap, const wchar_t *section, const keymap_list_t *list, size_t count, const wchar_t *FName)
+{
+	size_t i;
+	const keymap_list_t *p = list;
+	for (i = 0; i < count; i++) {
+		wchar_t Temp[11];
+		WORD Num;
+		GetPrivateProfileStringW(section, p->key_str, L"", Temp, _countof(Temp), FName);
+		if (Temp[0] == 0)
+			Num = 0xFFFF;
+		else if (_wcsicmp(Temp, L"off") == 0)
+			Num = 0xFFFF;
+		else if (swscanf(Temp, L"%hd", &Num) != 1)
+			Num = 0xFFFF;
 
-static void GetInt(PKeyMap KeyMap, int KeyId, const char *SectA, const char *KeyA, const wchar_t *FName)
+		KeyMap->Map[p->key_id - 1] = Num;
+	}
+}
+
+static void ReadKeyboardMap(PKeyMap KeyMap, const wchar_t* FName)
 {
-	wchar_t Temp[11];
-	WORD Num;
-	wchar_t *SectW = ToWcharA(SectA);
-	wchar_t *KeyW = ToWcharA(KeyA);
-	GetPrivateProfileStringW(SectW, KeyW, L"", Temp, _countof(Temp), FName);
-	free(SectW);
-	free(KeyW);
-	if (Temp[0] == 0)
-		Num = 0xFFFF;
-	else if (_wcsicmp(Temp, L"off") == 0)
-		Num = 0xFFFF;
-	else if (swscanf(Temp, L"%hd", &Num) != 1)
-		Num = 0xFFFF;
+	static const keymap_list_t vteditor_list[] = {
+		// VT editor keypad
+		{ IdUp, L"Up" },
+		{ IdDown, L"Down" },
+		{ IdRight, L"Right" },
+		{ IdLeft, L"Left" },
+		{ IdFind, L"Find" },
+		{ IdInsert, L"Insert" },
+		{ IdRemove, L"Remove" },
+		{ IdSelect, L"Select" },
+		{ IdPrev, L"Prev" },
+		{ IdNext, L"Next" },
+	};
 
-	KeyMap->Map[KeyId - 1] = Num;
+	static const keymap_list_t vtnumeric_list[] = {
+		// VT numeric keypad
+		{ Id0, L"Num0" },
+		{ Id1, L"Num1" },
+		{ Id2, L"Num2" },
+		{ Id3, L"Num3" },
+		{ Id4, L"Num4" },
+		{ Id5, L"Num5" },
+		{ Id6, L"Num6" },
+		{ Id7, L"Num7" },
+		{ Id8, L"Num8" },
+		{ Id9, L"Num9" },
+		{ IdMinus, L"NumMinus" },
+		{ IdComma, L"NumComma" },
+		{ IdPeriod, L"NumPeriod" },
+		{ IdEnter, L"NumEnter" },
+		{ IdSlash, L"NumSlash" },
+		{ IdAsterisk, L"NumAsterisk" },
+		{ IdPlus, L"NumPlus" },
+		{ IdPF1, L"PF1" },
+		{ IdPF2, L"PF2" },
+		{ IdPF3, L"PF3" },
+		{ IdPF4, L"PF4" },
+	};
+
+	static const keymap_list_t vtfunction_list[] = {
+		// VT function keys
+		{ IdHold, L"Hold" },
+		{ IdPrint, L"Print" },
+		{ IdBreak, L"Break" },
+		{ IdF6, L"F6" },
+		{ IdF7, L"F7" },
+		{ IdF8, L"F8" },
+		{ IdF9, L"F9" },
+		{ IdF10, L"F10" },
+		{ IdF11, L"F11" },
+		{ IdF12, L"F12" },
+		{ IdF13, L"F13" },
+		{ IdF14, L"F14" },
+		{ IdHelp, L"Help" },
+		{ IdDo, L"Do" },
+		{ IdF17, L"F17" },
+		{ IdF18, L"F18" },
+		{ IdF19, L"F19" },
+		{ IdF20, L"F20" },
+
+		// UDK
+		{ IdUDK6, L"UDK6" },
+		{ IdUDK7, L"UDK7" },
+		{ IdUDK8, L"UDK8" },
+		{ IdUDK9, L"UDK9" },
+		{ IdUDK10, L"UDK10" },
+		{ IdUDK11, L"UDK11" },
+		{ IdUDK12, L"UDK12" },
+		{ IdUDK13, L"UDK13" },
+		{ IdUDK14, L"UDK14" },
+		{ IdUDK15, L"UDK15" },
+		{ IdUDK16, L"UDK16" },
+		{ IdUDK17, L"UDK17" },
+		{ IdUDK18, L"UDK18" },
+		{ IdUDK19, L"UDK19" },
+	};
+
+	static const keymap_list_t xterm_list[] = {
+		// XTERM function / extended keys
+		{ IdXF1, L"XF1" },
+		{ IdXF2, L"XF2" },
+		{ IdXF3, L"XF3" },
+		{ IdXF4, L"XF4" },
+		{ IdXF5, L"XF5" },
+		{ IdXBackTab, L"XBackTab" },
+	};
+
+	static const keymap_list_t shortcut_list[] = {
+		// accelerator keys
+		{ IdCmdEditCopy, L"EditCopy" },
+		{ IdCmdEditPaste, L"EditPaste" },
+		{ IdCmdEditPasteCR, L"EditPasteCR" },
+		{ IdCmdEditCLS, L"EditCLS" },
+		{ IdCmdEditCLB, L"EditCLB" },
+		{ IdCmdCtrlOpenTEK, L"ControlOpenTEK" },
+		{ IdCmdCtrlCloseTEK, L"ControlCloseTEK" },
+		{ IdCmdLineUp, L"LineUp" },
+		{ IdCmdLineDown, L"LineDown" },
+		{ IdCmdPageUp, L"PageUp" },
+		{ IdCmdPageDown, L"PageDown" },
+		{ IdCmdBuffTop, L"BuffTop" },
+		{ IdCmdBuffBottom, L"BuffBottom" },
+		{ IdCmdNextWin, L"NextWin" },
+		{ IdCmdPrevWin, L"PrevWin" },
+		{ IdCmdNextSWin, L"NextShownWin" },
+		{ IdCmdPrevSWin, L"PrevShownWin" },
+		{ IdCmdLocalEcho, L"LocalEcho" },
+		{ IdCmdScrollLock, L"ScrollLock" },
+	};
+
+	ReadList(KeyMap, L"VT editor keypad", vteditor_list, _countof(vteditor_list), FName);
+	ReadList(KeyMap, L"VT numeric keypad", vtnumeric_list, _countof(vtnumeric_list), FName);
+	ReadList(KeyMap, L"VT function keys", vtfunction_list, _countof(vtfunction_list), FName);
+	ReadList(KeyMap, L"X function keys", xterm_list, _countof(xterm_list), FName);
+	ReadList(KeyMap, L"Shortcut keys", shortcut_list, _countof(shortcut_list), FName);
 }
 
 static void ReadUserkeysSection(const wchar_t *FName, PKeyMap KeyMap)
@@ -111,7 +227,7 @@
 				KeyMap->UserKeyData = UserKeyData;
 				KeyMap->UserKeyCount++;
 
-				KeyMap->Map[ttkeycode - 1] = keycode;
+				KeyMap->Map[ttkeycode - 1] = (WORD)keycode;
 			}
 		}
 	}
@@ -126,198 +242,12 @@
 __declspec(dllexport) void ReadKeyboardCnfExe(PCHAR FNameA, PKeyMap KeyMap, BOOL ShowWarning)
 {
 	int i, j;
-#if	INI_FILE_IS_UNICODE
 	const wchar_t *FName = ToWcharA(FNameA);
-#else
-	const char *FName = FNameA;
-#endif
 
-	// VT editor keypad
-	GetInt(KeyMap, IdUp, VTEditor, "Up", FName);
-
-	GetInt(KeyMap, IdDown, VTEditor, "Down", FName);
-
-	GetInt(KeyMap, IdRight, VTEditor, "Right", FName);
-
-	GetInt(KeyMap, IdLeft, VTEditor, "Left", FName);
-
-	GetInt(KeyMap, IdFind, VTEditor, "Find", FName);
-
-	GetInt(KeyMap, IdInsert, VTEditor, "Insert", FName);
-
-	GetInt(KeyMap, IdRemove, VTEditor, "Remove", FName);
-
-	GetInt(KeyMap, IdSelect, VTEditor, "Select", FName);
-
-	GetInt(KeyMap, IdPrev, VTEditor, "Prev", FName);
-
-	GetInt(KeyMap, IdNext, VTEditor, "Next", FName);
-
-	// VT numeric keypad
-	GetInt(KeyMap, Id0, VTNumeric, "Num0", FName);
-
-	GetInt(KeyMap, Id1, VTNumeric, "Num1", FName);
-
-	GetInt(KeyMap, Id2, VTNumeric, "Num2", FName);
-
-	GetInt(KeyMap, Id3, VTNumeric, "Num3", FName);
-
-	GetInt(KeyMap, Id4, VTNumeric, "Num4", FName);
-
-	GetInt(KeyMap, Id5, VTNumeric, "Num5", FName);
-
-	GetInt(KeyMap, Id6, VTNumeric, "Num6", FName);
-
-	GetInt(KeyMap, Id7, VTNumeric, "Num7", FName);
-
-	GetInt(KeyMap, Id8, VTNumeric, "Num8", FName);
-
-	GetInt(KeyMap, Id9, VTNumeric, "Num9", FName);
-
-	GetInt(KeyMap, IdMinus, VTNumeric, "NumMinus", FName);
-
-	GetInt(KeyMap, IdComma, VTNumeric, "NumComma", FName);
-
-	GetInt(KeyMap, IdPeriod, VTNumeric, "NumPeriod", FName);
-
-	GetInt(KeyMap, IdEnter, VTNumeric, "NumEnter", FName);
-
-	GetInt(KeyMap, IdSlash, VTNumeric, "NumSlash", FName);
-
-	GetInt(KeyMap, IdAsterisk, VTNumeric, "NumAsterisk", FName);
-
-	GetInt(KeyMap, IdPlus, VTNumeric, "NumPlus", FName);
-
-	GetInt(KeyMap, IdPF1, VTNumeric, "PF1", FName);
-
-	GetInt(KeyMap, IdPF2, VTNumeric, "PF2", FName);
-
-	GetInt(KeyMap, IdPF3, VTNumeric, "PF3", FName);
-
-	GetInt(KeyMap, IdPF4, VTNumeric, "PF4", FName);
-
-	// VT function keys
-	GetInt(KeyMap, IdHold, VTFunction, "Hold", FName);
-
-	GetInt(KeyMap, IdPrint, VTFunction, "Print", FName);
-
-	GetInt(KeyMap, IdBreak, VTFunction, "Break", FName);
-
-	GetInt(KeyMap, IdF6, VTFunction, "F6", FName);
-
-	GetInt(KeyMap, IdF7, VTFunction, "F7", FName);
-
-	GetInt(KeyMap, IdF8, VTFunction, "F8", FName);
-
-	GetInt(KeyMap, IdF9, VTFunction, "F9", FName);
-
-	GetInt(KeyMap, IdF10, VTFunction, "F10", FName);
-
-	GetInt(KeyMap, IdF11, VTFunction, "F11", FName);
-
-	GetInt(KeyMap, IdF12, VTFunction, "F12", FName);
-
-	GetInt(KeyMap, IdF13, VTFunction, "F13", FName);
-
-	GetInt(KeyMap, IdF14, VTFunction, "F14", FName);
-
-	GetInt(KeyMap, IdHelp, VTFunction, "Help", FName);
-
-	GetInt(KeyMap, IdDo, VTFunction, "Do", FName);
-
-	GetInt(KeyMap, IdF17, VTFunction, "F17", FName);
-
-	GetInt(KeyMap, IdF18, VTFunction, "F18", FName);
-
-	GetInt(KeyMap, IdF19, VTFunction, "F19", FName);
-
-	GetInt(KeyMap, IdF20, VTFunction, "F20", FName);
-
-	// UDK
-	GetInt(KeyMap, IdUDK6, VTFunction, "UDK6", FName);
-
-	GetInt(KeyMap, IdUDK7, VTFunction, "UDK7", FName);
-
-	GetInt(KeyMap, IdUDK8, VTFunction, "UDK8", FName);
-
-	GetInt(KeyMap, IdUDK9, VTFunction, "UDK9", FName);
-
-	GetInt(KeyMap, IdUDK10, VTFunction, "UDK10", FName);
-
-	GetInt(KeyMap, IdUDK11, VTFunction, "UDK11", FName);
-
-	GetInt(KeyMap, IdUDK12, VTFunction, "UDK12", FName);
-
-	GetInt(KeyMap, IdUDK13, VTFunction, "UDK13", FName);
-
-	GetInt(KeyMap, IdUDK14, VTFunction, "UDK14", FName);
-
-	GetInt(KeyMap, IdUDK15, VTFunction, "UDK15", FName);
-
-	GetInt(KeyMap, IdUDK16, VTFunction, "UDK16", FName);
-
-	GetInt(KeyMap, IdUDK17, VTFunction, "UDK17", FName);
-
-	GetInt(KeyMap, IdUDK18, VTFunction, "UDK18", FName);
-
-	GetInt(KeyMap, IdUDK19, VTFunction, "UDK19", FName);
-
-	GetInt(KeyMap, IdUDK20, VTFunction, "UDK20", FName);
-
-	// XTERM function / extended keys
-	GetInt(KeyMap, IdXF1, XFunction, "XF1", FName);
-
-	GetInt(KeyMap, IdXF2, XFunction, "XF2", FName);
-
-	GetInt(KeyMap, IdXF3, XFunction, "XF3", FName);
-
-	GetInt(KeyMap, IdXF4, XFunction, "XF4", FName);
-
-	GetInt(KeyMap, IdXF5, XFunction, "XF5", FName);
-
-	GetInt(KeyMap, IdXBackTab, XFunction, "XBackTab", FName);
-
-	// accelerator keys
-	GetInt(KeyMap, IdCmdEditCopy, ShortCut, "EditCopy", FName);
-
-	GetInt(KeyMap, IdCmdEditPaste, ShortCut, "EditPaste", FName);
-
-	GetInt(KeyMap, IdCmdEditPasteCR, ShortCut, "EditPasteCR", FName);
-
-	GetInt(KeyMap, IdCmdEditCLS, ShortCut, "EditCLS", FName);
-
-	GetInt(KeyMap, IdCmdEditCLB, ShortCut, "EditCLB", FName);
-
-	GetInt(KeyMap, IdCmdCtrlOpenTEK, ShortCut, "ControlOpenTEK", FName);
-
-	GetInt(KeyMap, IdCmdCtrlCloseTEK, ShortCut, "ControlCloseTEK", FName);
-
-	GetInt(KeyMap, IdCmdLineUp, ShortCut, "LineUp", FName);
-
-	GetInt(KeyMap, IdCmdLineDown, ShortCut, "LineDown", FName);
-
-	GetInt(KeyMap, IdCmdPageUp, ShortCut, "PageUp", FName);
-
-	GetInt(KeyMap, IdCmdPageDown, ShortCut, "PageDown", FName);
-
-	GetInt(KeyMap, IdCmdBuffTop, ShortCut, "BuffTop", FName);
-
-	GetInt(KeyMap, IdCmdBuffBottom, ShortCut, "BuffBottom", FName);
-
-	GetInt(KeyMap, IdCmdNextWin, ShortCut, "NextWin", FName);
-
-	GetInt(KeyMap, IdCmdPrevWin, ShortCut, "PrevWin", FName);
-
-	GetInt(KeyMap, IdCmdNextSWin, ShortCut, "NextShownWin", FName);
-
-	GetInt(KeyMap, IdCmdPrevSWin, ShortCut, "PrevShownWin", FName);
-
-	GetInt(KeyMap, IdCmdLocalEcho, ShortCut, "LocalEcho", FName);
-
-	GetInt(KeyMap, IdCmdScrollLock, ShortCut, "ScrollLock", FName);
-
+	ReadKeyboardMap(KeyMap, FName);
 	ReadUserkeysSection(FName, KeyMap);
 
+	// \x8Fd\x95\xA1\x83`\x83F\x83b\x83N
 	for (j = 1; j <= IdKeyMax - 1; j++)
 		if (KeyMap->Map[j] != 0xFFFF)
 			for (i = 0; i <= j - 1; i++)
@@ -327,14 +257,12 @@
 						_snprintf_s(TempStr, sizeof(TempStr), _TRUNCATE,
 						            "Keycode %d is used more than once",
 						            KeyMap->Map[j]);
-						MessageBox(0, TempStr,
-						           "Tera Term: Error in keyboard setup file",
-						           MB_ICONEXCLAMATION);
+						MessageBoxA(NULL, TempStr,
+									"Tera Term: Error in keyboard setup file",
+									MB_ICONEXCLAMATION);
 					}
 					KeyMap->Map[i] = 0xFFFF;
 				}
 
-#if	INI_FILE_IS_UNICODE
 	free((void *)FName);
-#endif
 }


Ttssh2-commit メーリングリストの案内
Back to archive index