ソースを参照

Excluding the shift key when IsLetterOrDigit, IsSymbol and IsPunctuation.

BDisp 2 年 前
コミット
1dd9ae1266

+ 1 - 1
Terminal.Gui/ConsoleDrivers/FakeDriver/FakeDriver.cs

@@ -377,7 +377,7 @@ namespace Terminal.Gui {
 			}
 			}
 			if (keyInfo.Key == ConsoleKey.Packet) {
 			if (keyInfo.Key == ConsoleKey.Packet) {
 				var ckiChar = keyInfo.KeyChar;
 				var ckiChar = keyInfo.KeyChar;
-				if (char.IsLetter (ckiChar)) {
+				if (char.IsLetterOrDigit (ckiChar) || char.IsSymbol (ckiChar) || char.IsPunctuation (ckiChar)) {
 					return false;
 					return false;
 				}
 				}
 			}
 			}

+ 1 - 1
Terminal.Gui/ConsoleDrivers/WindowsDriver.cs

@@ -1392,7 +1392,7 @@ namespace Terminal.Gui {
 			}
 			}
 			if (keyInfo.Key == ConsoleKey.Packet) {
 			if (keyInfo.Key == ConsoleKey.Packet) {
 				var ckiChar = keyInfo.KeyChar;
 				var ckiChar = keyInfo.KeyChar;
-				if (char.IsLetter (ckiChar)) {
+				if (char.IsLetterOrDigit (ckiChar) || char.IsSymbol (ckiChar) || char.IsPunctuation (ckiChar)) {
 					return false;
 					return false;
 				}
 				}
 			}
 			}

+ 42 - 10
UnitTests/ConsoleDriverTests.cs

@@ -625,22 +625,54 @@ namespace Terminal.Gui.ConsoleDrivers {
 		[InlineData ('z', true, false, false, Key.z)]
 		[InlineData ('z', true, false, false, Key.z)]
 		[InlineData ('z', true, true, false, Key.z | Key.AltMask)]
 		[InlineData ('z', true, true, false, Key.z | Key.AltMask)]
 		[InlineData ('z', true, true, true, Key.z | Key.AltMask | Key.CtrlMask)]
 		[InlineData ('z', true, true, true, Key.z | Key.AltMask | Key.CtrlMask)]
-		[InlineData ('=', false, false, false, (Key)'=')]
-		[InlineData ('=', true, false, false, (Key)'=' | Key.ShiftMask)]
-		[InlineData ('=', true, true, false, (Key)'=' | Key.ShiftMask | Key.AltMask)]
-		[InlineData ('=', true, true, true, (Key)'=' | Key.ShiftMask | Key.AltMask | Key.CtrlMask)]
 		[InlineData ('英', false, false, false, (Key)'英')]
 		[InlineData ('英', false, false, false, (Key)'英')]
 		[InlineData ('英', true, false, false, (Key)'英')]
 		[InlineData ('英', true, false, false, (Key)'英')]
 		[InlineData ('英', true, true, false, (Key)'英' | Key.AltMask)]
 		[InlineData ('英', true, true, false, (Key)'英' | Key.AltMask)]
 		[InlineData ('英', true, true, true, (Key)'英' | Key.AltMask | Key.CtrlMask)]
 		[InlineData ('英', true, true, true, (Key)'英' | Key.AltMask | Key.CtrlMask)]
 		[InlineData ('+', false, false, false, (Key)'+')]
 		[InlineData ('+', false, false, false, (Key)'+')]
-		[InlineData ('+', true, false, false, (Key)'+' | Key.ShiftMask)]
-		[InlineData ('+', true, true, false, (Key)'+' | Key.ShiftMask | Key.AltMask)]
-		[InlineData ('+', true, true, true, (Key)'+' | Key.ShiftMask | Key.AltMask | Key.CtrlMask)]
+		[InlineData ('+', true, false, false, (Key)'+')]
+		[InlineData ('+', true, true, false, (Key)'+' | Key.AltMask)]
+		[InlineData ('+', true, true, true, (Key)'+' | Key.AltMask | Key.CtrlMask)]
 		[InlineData ('0', false, false, false, Key.D0)]
 		[InlineData ('0', false, false, false, Key.D0)]
-		[InlineData ('0', true, false, false, Key.D0 | Key.ShiftMask)]
-		[InlineData ('0', true, true, false, Key.D0 | Key.ShiftMask | Key.AltMask)]
-		[InlineData ('0', true, true, true, Key.D0 | Key.ShiftMask | Key.AltMask | Key.CtrlMask)]
+		[InlineData ('=', true, false, false, (Key)'=')]
+		[InlineData ('0', true, true, false, Key.D0 | Key.AltMask)]
+		[InlineData ('0', true, true, true, Key.D0 | Key.AltMask | Key.CtrlMask)]
+		[InlineData ('1', false, false, false, Key.D1)]
+		[InlineData ('!', true, false, false, (Key)'!')]
+		[InlineData ('1', true, true, false, Key.D1 | Key.AltMask)]
+		[InlineData ('1', true, true, true, Key.D1 | Key.AltMask | Key.CtrlMask)]
+		[InlineData ('2', false, false, false, Key.D2)]
+		[InlineData ('"', true, false, false, (Key)'"')]
+		[InlineData ('2', true, true, false, Key.D2 | Key.AltMask)]
+		[InlineData ('2', true, true, true, Key.D2 | Key.AltMask | Key.CtrlMask)]
+		[InlineData ('3', false, false, false, Key.D3)]
+		[InlineData ('#', true, false, false, (Key)'#')]
+		[InlineData ('3', true, true, false, Key.D3 | Key.AltMask)]
+		[InlineData ('3', true, true, true, Key.D3 | Key.AltMask | Key.CtrlMask)]
+		[InlineData ('4', false, false, false, Key.D4)]
+		[InlineData ('$', true, false, false, (Key)'$')]
+		[InlineData ('4', true, true, false, Key.D4 | Key.AltMask)]
+		[InlineData ('4', true, true, true, Key.D4 | Key.AltMask | Key.CtrlMask)]
+		[InlineData ('5', false, false, false, Key.D5)]
+		[InlineData ('%', true, false, false, (Key)'%')]
+		[InlineData ('5', true, true, false, Key.D5 | Key.AltMask)]
+		[InlineData ('5', true, true, true, Key.D5 | Key.AltMask | Key.CtrlMask)]
+		[InlineData ('6', false, false, false, Key.D6)]
+		[InlineData ('&', true, false, false, (Key)'&')]
+		[InlineData ('6', true, true, false, Key.D6 | Key.AltMask)]
+		[InlineData ('6', true, true, true, Key.D6 | Key.AltMask | Key.CtrlMask)]
+		[InlineData ('7', false, false, false, Key.D7)]
+		[InlineData ('/', true, false, false, (Key)'/')]
+		[InlineData ('7', true, true, false, Key.D7 | Key.AltMask)]
+		[InlineData ('7', true, true, true, Key.D7 | Key.AltMask | Key.CtrlMask)]
+		[InlineData ('8', false, false, false, Key.D8)]
+		[InlineData ('(', true, false, false, (Key)'(')]
+		[InlineData ('8', true, true, false, Key.D8 | Key.AltMask)]
+		[InlineData ('8', true, true, true, Key.D8 | Key.AltMask | Key.CtrlMask)]
+		[InlineData ('9', false, false, false, Key.D9)]
+		[InlineData (')', true, false, false, (Key)')')]
+		[InlineData ('9', true, true, false, Key.D9 | Key.AltMask)]
+		[InlineData ('9', true, true, true, Key.D9 | Key.AltMask | Key.CtrlMask)]
 		[InlineData ('\0', false, false, false, (Key)'\0')]
 		[InlineData ('\0', false, false, false, (Key)'\0')]
 		[InlineData ('\0', true, false, false, (Key)'\0' | Key.ShiftMask)]
 		[InlineData ('\0', true, false, false, (Key)'\0' | Key.ShiftMask)]
 		[InlineData ('\0', true, true, false, (Key)'\0' | Key.ShiftMask | Key.AltMask)]
 		[InlineData ('\0', true, true, false, (Key)'\0' | Key.ShiftMask | Key.AltMask)]