public KeyAction(string keys, bool keyDown) { List <INPUT> eventList = new List <INPUT>(); int length = keys.Length; for (int index = 0; index < length; index++) { char character = keys[index]; if (character.Equals('{')) { int endIndex = keys.IndexOf('}', index + 1); if (endIndex > -1) { string keycode = keys.Substring(index + 1, endIndex - index - 1); if (keycodes.ContainsKey(keycode)) { eventList.Add(CreateInput(keycodes[keycode], keyDown)); } else { TouchPal.Warn("Bad keycode value:" + keycode); } index = endIndex; } else { TouchPal.Warn("Unterminated keycode!"); index = length + 1; } } eventList.Add(CreateInput((ushort)VkKeyScan(character), keyDown)); } keyEvents = eventList.ToArray(); }
private void OnDataReceived(IAsyncResult asyn) { try { int iRx = 0; iRx = socket.EndReceiveFrom(asyn, ref client); char[] chars = new char[iRx - 1]; System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder(); int charLen = d.GetChars(dataBuffer, 0, iRx - 1, chars, 0); String szData = new System.String(chars); if (szData[0].Equals('*')) { if (szData[1].Equals('C')) { string id = szData.Substring(2); if (!id.Equals(clientID)) { clientID = id; SendData("A\n"); TouchPal.Debug("Client (" + id + ") connected."); manager.ClientConnected(); } } if (szData[1].Equals('R') && manager != null) { manager.ResetControls(); SendData("A\n"); } } else if (manager != null) { string[] controlUpdates = szData.Split(new Char[] { ':' }); foreach (string controlUpdate in controlUpdates) { string[] values = controlUpdate.Split(new Char[] { '=' }); if (values.Count() == 2) { try { int networkID = Convert.ToInt32(values[0]); manager.UpdateControl(networkID, values[1]); SendData("A\n"); } catch (FormatException fe) { TouchPal.Error("Bad network id value (" + values[0] + ") received from client - " + fe.Message); } } } } WaitForData(); } catch (SocketException se) { Console.WriteLine(se.Message); } }
public Image getImage(string filename) { if (filename == null || "".Equals(filename)) { return(null); } if (imageCache.ContainsKey(filename)) { return(imageCache[filename]); } Image newImage = null; if (File.Exists(filename)) { TouchPal.Debug("Loading Image:" + filename); newImage = Image.FromFile(filename); imageCache.Add(filename, newImage); } else { TouchPal.Warn("Missing Image:" + filename); } return(newImage); }
void IAction.Execute(ControlManager manager) { uint result = SendInput((uint)keyEvents.Length, keyEvents, Marshal.SizeOf(keyEvents[0])); if (result != (uint)keyEvents.Length) { TouchPal.Error("SendInput did not process all key events."); } }
private void OnDataReceived(IAsyncResult asyn) { try { int iRx = 0; iRx = clientSocket.EndReceive(asyn); char[] chars = new char[iRx + 1]; System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder(); int charLen = d.GetChars(dataBuffer, 0, iRx, chars, 0); String szData = new System.String(chars); if (szData[0].Equals('*')) { if (szData[1].Equals('Q')) { clientSocket.Close(); WaitForConnect(); } else if (szData[1].Equals('R') && manager != null) { manager.ResetControls(); } } else if (manager != null) { string[] controlUpdates = szData.Split(new Char[] { ':' }); foreach (string controlUpdate in controlUpdates) { string[] values = controlUpdate.Split(new Char[] { '=' }); if (values.Count() == 2) { try { int networkID = Convert.ToInt32(values[0]); manager.UpdateControl(networkID, values[1]); } catch (FormatException fe) { TouchPal.Error("Bad network id value (" + values[0] + ") received from client - " + fe.Message); } } } } WaitForData(); } catch (ObjectDisposedException) { WaitForConnect(); } catch (SocketException se) { Console.WriteLine(se.Message); } }
public ControlManager(INetConnection connection, IImageCache imageCache, string[] startActions, string[] resetActions, CockpitXML.CockpitControls controls) { this.connection = connection; this.imageCache = imageCache; connection.Manager = this; // Load start actions if (startActions != null) { foreach (string action in startActions) { this.startActions.Add(ActionFactory.CreateAction(action)); } } if (resetActions != null) { foreach (string action in resetActions) { if (action.StartsWith("RS:")) { TouchPal.Error("Reset CommandAction cannot be used as a ResetAction."); } else { this.resetActions.Add(ActionFactory.CreateAction(action)); } } } // Load all of the controls defined if (controls.Button != null) { foreach (CockpitXML.CockpitControlsButton control in controls.Button) { TouchPal.Debug("Loading button control: " + control.Name); ButtonCockpitControl item = new ButtonCockpitControl(this, control); this.controls.Add(control.Name, item); } } // Load all of the controls defined if (controls.Text != null) { foreach (CockpitXML.CockpitControlsText control in controls.Text) { TouchPal.Debug("Loading text control: " + control.Name); TextCockpitControl item = new TextCockpitControl(this, control); this.controls.Add(control.Name, item); } } }
public ChangeValueAction(string change) { string[] values = change.Split(new Char[] { '=' }); try { networkID = Convert.ToInt32(values[0]); value = values[1]; } catch (FormatException fe) { TouchPal.Warn("Bad network id value (" + values[0] + ") - " + fe.Message); } }
public static IAction CreateAction(string description) { if (description == null || description.Equals("")) { return(null); } if (description[2].Equals(':')) { string command = description.Substring(0, 2); string commandValue = description.Substring(3); if (command.Equals("NS")) { return(new NetworkSendAction(commandValue)); } if (command.Equals("KD")) { return(new KeyAction(commandValue, true)); } if (command.Equals("KU")) { return(new KeyAction(commandValue, false)); } if (command.Equals("CV")) { return(new ChangeValueAction(commandValue)); } if (command.Equals("EX")) { return(new ExitAction()); } if (command.Equals("RS")) { return(new ResetAction()); } if (command.Equals("PH")) { return(new PanelVisibleAction(commandValue, false)); } if (command.Equals("PS")) { return(new PanelVisibleAction(commandValue, true)); } } TouchPal.Warn("Invalid action definition: " + description); return(null); }
public void UpdateControl(int networkID, string value) { bool controlUpdated = false; foreach (KeyValuePair <string, ICockpitControl> kvp in controls) { if (kvp.Value.NetworkID == networkID) { controlUpdated = true; kvp.Value.Value = value; } } if (!controlUpdated) { TouchPal.Debug("NetworkID " + networkID + " recieved with value " + value + " but there are no matching controls."); } }
private void OnClientConnect(IAsyncResult asyn) { try { TouchPal.Debug("Client connected."); clientSocket = mainSocket.EndAccept(asyn); WaitForData(); if (manager != null) { manager.ClientConnected(); } } catch (ObjectDisposedException) { WaitForConnect(); } catch (SocketException se) { Console.WriteLine(se.Message); } }
private void WaitForConnect() { clientSocket = null; mainSocket.BeginAccept(socketConnectCallback, null); TouchPal.Debug("Waiting on client connect on TCP port 9089."); }
static private void serializer_UnknownNode (object sender, XmlNodeEventArgs e) { TouchPal.Log(LOG_LEVEL.WARN, "Unknown Node:" + e.Name + "\t" + e.Text); }
public void StartConnection() { TouchPal.Debug("Starting TCP Connection"); WaitForConnect(); }
static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); int forceX = -1; int forceY = -1; string profile = "TouchPal.xml"; foreach (string argument in args) { if (argument.StartsWith("-log=")) { string level = argument.Substring(5).ToLower(); if (logLevels.ContainsKey(level)) { logLevel = logLevels[level]; } } if (argument.StartsWith("-profile=")) { profile = argument.Substring(9); } if (argument.StartsWith("-homedir=")) { touchPalDirectory = argument.Substring(9); } if (argument.StartsWith("-tcp")) { udp = false; } if (argument.StartsWith("-udp")) { udp = true; } if (argument.StartsWith("-x=")) { forceX = Convert.ToInt32(argument.Substring(3)); TouchPal.Debug("Forceing window x to " + argument.Substring(3)); } if (argument.StartsWith("-y=")) { forceY = Convert.ToInt32(argument.Substring(3)); TouchPal.Debug("Forceing window y to " + argument.Substring(3)); } } ResetEnvironment(); INetConnection connection = null; if (udp) { connection = new UDPNetConnection(); } else { connection = new TCPNetConnection(); } IImageCache cache = new BasicImageCache(); try { TouchPal.Debug("Parsing profile " + profile); CockpitXML.Cockpit co = ReadConfig(profile); TouchPal.Debug("Loading controls"); ControlManager manager = new ControlManager(connection, cache, co.StartAction, co.ResetAction, co.Controls); connection.StartConnection(); TouchPal.Debug("Setting up form"); CockpitForm form = new CockpitForm(manager, cache, co.Layout, forceX, forceY); Application.Run(form); } catch (XmlSchemaException e) { TouchPal.Log(LOG_LEVEL.ERROR, "Error parsing profile at position " + e.LinePosition + " on line " + e.LineNumber + " {" + e.Message + "}"); } }
void IAction.Execute(ControlManager manager) { TouchPal.Debug("Exit action fired."); manager.Exit(); }
public void StartConnection() { TouchPal.Debug("Starting UDP server."); WaitForData(); }
static private void serializer_UnknownAttribute (object sender, XmlAttributeEventArgs e) { System.Xml.XmlAttribute attr = e.Attr; TouchPal.Log(LOG_LEVEL.WARN, "Unknown attribute " + attr.Name + "='" + attr.Value + "'"); }