#region --- License --- /* Copyright (c) 2006, 2007 Stefanos Apostolopoulos * See license.txt for license info */ #endregion using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using OpenTK; using OpenTK.Platform; using OpenTK.Input; using System.Diagnostics; using System.Threading; namespace Examples.Tests { public partial class S04_Input_Logger : Form//, IExample { Thread thread; GameWindow hidden; bool start; Dictionary keyboardListBoxes = new Dictionary(4); public S04_Input_Logger() { InitializeComponent(); thread = new Thread(LaunchGameWindow); thread.Start(); } void LaunchGameWindow() { hidden = new GameWindow(new DisplayMode(30, 30), "OpenTK | Hidden input window"); hidden.Load += hidden_Load; hidden.Run(60.0, 1.0); } void hidden_Load(object sender, EventArgs e) { start = true; } protected override void OnLoad(EventArgs e) { base.OnLoad(e); while (!start) { Thread.Sleep(100); } WindowInfo info = new WindowInfo(this); keyboardListBoxes.Add(hidden.Keyboard.DeviceID, listBox1); // Add available mice to the mouse input logger. ChooseMouse.Items.Add(String.Format("Mouse {0} ({1})", 0, hidden.Mouse.Description)); hidden.Mouse.ButtonDown += LogMouseButtonDown; hidden.Mouse.ButtonUp += LogMouseButtonUp; hidden.Keyboard.KeyDown += LogKeyDown; hidden.Keyboard.KeyUp += LogKeyUp; //Application.Idle += new EventHandler(UpdateDevices); hidden.UpdateFrame += hidden_UpdateFrame; } void hidden_UpdateFrame(object sender, UpdateFrameEventArgs e) { //hidden.Poll(); // Update mouse coordinates. MouseXText.Text = hidden.Mouse.X.ToString(); MouseYText.Text = hidden.Mouse.Y.ToString(); MouseDXText.Text = hidden.Mouse.XDelta.ToString(); MouseDYText.Text = hidden.Mouse.YDelta.ToString(); MouseWheelText.Text = hidden.Mouse.Wheel.ToString(); //MouseWheelDelta.Text = driver.Mouse[ChooseMouse.SelectedIndex].WheelDelta.ToString(); } void LogMouseButtonDown(MouseDevice sender, MouseButton button) { //Trace.WriteLine(String.Format("Mouse button down: {0} on device: {1}", button, sender.DeviceID)); if (sender.DeviceID == hidden.Mouse.DeviceID) MouseButtons.Items.Add(button); } void LogMouseButtonUp(MouseDevice sender, MouseButton button) { //Trace.WriteLine(String.Format("Mouse button up: {0} on device: {1}", button, sender.DeviceID)); if (sender.DeviceID == hidden.Mouse.DeviceID) MouseButtons.Items.Remove(button); } void LogKeyDown(KeyboardDevice sender, Key key) { Trace.WriteLine(String.Format("Key down: {0} on device: {1}", key, (sender as KeyboardDevice).DeviceID)); keyboardListBoxes[(sender as KeyboardDevice).DeviceID].Items.Add(key); } void LogKeyUp(KeyboardDevice sender, Key key) { Trace.WriteLine(String.Format("Key up: {0} on device: {1}", key, (sender as KeyboardDevice).DeviceID)); keyboardListBoxes[(sender as KeyboardDevice).DeviceID].Items.Remove(key); } #region IExample Members public void Launch() { // Empty } public static readonly int order = 2; #endregion private void ChooseMouse_SelectedIndexChanged(object sender, EventArgs e) { MouseButtons.Items.Clear(); } } }