Meet the new Microsoft® Surface® Input Simulator

One of my favorite features of the new Microsoft Surface 2 SDK being released this summer is the new Microsoft Surface Input Simulator, because it enables me to write Surface applications on any Windows 7 machine. That means I don’t have to be in the office next to the Surface unit, I can enjoy creating Surface applications even while I am on a plane using my laptop – even if my laptop is not touch enabled.

The Simulator allows you to do a few things:


Simulate different types of input
You can simulate fingers, tags and blobs on your monitor.  You control whether a given input device is down by holding down your left mouse button.

You can also stamp input devices. For instance, if you want to resize a ScatterViewItem, all you would need to do stamp one finger (right click while the finger is down), and then move a second finger  to cause the resizing, as shown in the figure below.


The pictures below show how you can simulate blobs of different sizes and tags.

Simulate the tilt of the Surface device

Samsung SUR 40 for Microsoft Surface can be placed both vertically and horizontally. Thanks to a sensor on the device, we can detect the tilt of the hardware. When you write applications, you should take the tilt angle of the device into consideration. For instance, if the tilt of the device is 0 degrees (a horizontal deployment) you want to allow for usage of your application from any side of the surface. Such layout may not make sense if the device is tilted 90 degrees (a vertical deployment).  Either way, you don’t need to write two different binaries as you can dynamically query the tilt of the device before you layout the UI.

Code example of how you would query the tilt of the device:

            if (InteractiveSurface.PrimarySurfaceDevice.Tilt == Tilt.Horizontal)


                // layout using 360 degree UI




                // Orient all items in the same direction



If you want to test the functionality of your application, all you need to do is move the tilt control to the desired angle. (No need to be moving the actual physical unit during development).



Simulate hardware capabilities

As the Microsoft Surface 2 SDK will allow you to write applications that target both Microsoft Surface Hardware and Windows Touch Enabled PCs, we also provided a mechanism for you to simulate different hardware capabilities. You do that by clicking on the Settings… button, and then applying any changes you make to the Hardware capabilities.

One of the cool things about our new Simulator is that it will work on any Windows 7 machine. In the past there was a minimum monitor resolution requirement of 1280 by 960. This is exciting for me as I do most of my development on my laptop.


Don’t forget to test in the real environment!
Note that even though you can actually write the application using the simulator, a great Surface application requires proper testing with real people on a real Surface device. That is the only way you will get real data of how people react to your application.

Comments (9)

  1. Paulo Quicoli says:

    Great!  Waiting for it  🙂

  2. Scatterview says:

    Hi there,

    In the beta version of the Surface, when using a scatterview, I can't select a record or scroll datagrid by touch. Also I cant select a text box. Are these issues resolved in the new release? Also, which all new surface controls are included in the new release?



  3. Luis Cabrera says:

    Sonny, please take a look at the MIX presentation we just gave for more information on the controls we will have on our v2 sdk:…/DVC07

    Regarding data-grid… Are you referring to System.Web.UI.WebControls.DataGrid ? That is not a Surface control per say — so it will work with the manner that it work on WPF 4.

    For the v2 SDK, we have included a SurfaceTextBox control that should work better than using a TextBox in the the Toolkit beta release.


    -Luis Cabrera

  4. Steve says:

    Hi, is it possible to upgrade a Surface v1 box to use the Surface v2 SDK? I.e. Install Win 7 and the new SDK and for it to all work nicely?


  5. Nicolas Calvi says:

    You can install both SDK, i.e.  Surface V1 and Surface V2 on the same Windows 7 PC. But the V2 simulator don't work with the V1 application. 🙂

  6. Steve says:

    So, if you have a Surface v1 hardware table you can install v2 SDK onto it and the hardware will carry on working but we can utilise the new SDK features?

  7. Nicolas Calvi says:

    No, the V1 unit is under Microsoft Windows Vista, this OS is not compatible with the Touch SDK, this SDK is only compatible with Microsoft Windows 7.

    The V1 unit cannot be upgraded, just turn to the future, the V2 unit 🙂

  8. sergecal says:

    hello luis,

    In v1 application I have seen most of the time application deisgn with rounded corner edges which render the interface less agressive as we heard. Now on V2 design we can see user control back to sharpe edges, is it part of the metro style ? Does this is done to be more integrated based on the surface V2 shape comapre to v1 shape with rounded corner table top ?



  9. I am trying to use Microsoft.Surface.HidSupport.dll [that comes along with the installation of SDK] in one of my applications [using Kinect SDK], it says it is inaccessible due to its protection level. when I changed my output assembly to InputSimulator [one of the dlls, to which this is accessible], it throws an error " Friend access was granted to 'InputSimulator, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9', but the output assembly is named 'InputSimulator, Version=, Culture=neutral, PublicKeyToken=null'. Try adding a reference to 'InputSimulator, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9' or changing the output assembly name to match."

    Is there a way I can use this HidSupport.dll in my apps or is it only with Surface dlls…Can somebody give me an insight…