Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop 2002 1/22 September 10, 2002 Supporting Multiple Pointing Devices in.

Slides:



Advertisements
Similar presentations
CIMCO Integration Software Products
Advertisements

Operating System.
Operating System Structures
Operating Systems Manage system resources –CPU scheduling –Process management –Memory management –Input/Output device management –Storage device management.
Computer Hardware & Systems
EEE 435 Principles of Operating Systems Operating System Concepts (Modern Operating Systems 1.5)
Lecture 12 Page 1 CS 111 Online Devices and Device Drivers CS 111 On-Line MS Program Operating Systems Peter Reiher.
MotoHawk Training Model-Based Design of Embedded Systems.
Computer Systems/Operating Systems - Class 8
MCITP Guide to Microsoft Windows Server 2008 Server Administration (Exam #70-646) Chapter 11 Windows Server 2008 Virtualization.
Android Fragments.
Operating Systems High Level View Chapter 1,2. Who is the User? End Users Application Programmers System Programmers Administrators.
Department of Information Science and Telecommunications Interactive Systems Michael B. Spring Department of Information Science and Telecommunications.
INTRODUCTION OS/2 was initially designed to extend the capabilities of DOS by IBM and Microsoft Corporations. To create a single industry-standard operating.
Final Presentation Spring 2003 Project ID: D0822 Project Name: WinCE integrating BT media share application Supervisor: Evgeny Rivkin Performed by: Maya.
Chapter 6: An Introduction to System Software and Virtual Machines
Chapter 2 Introduction to Systems Architecture. Chapter goals Discuss the development of automated computing Describe the general capabilities of a computer.
Device Driver Presented By: Syed Zulfiqar Ali Qurat Ul Ain Aslam
Programming Handheld and Mobile devices 1 Programming of Handheld and Mobile Devices Lecture 19 Microsoft’s Approach 1 –.NET Mobile Framework part 2 Rob.
DT265-2 Object Oriented Software Development 2 Lecture 3 : Windows Programming Lecturer Pat Browne
Windows Tutorial 9 Maintaining Hardware and Software
TM Freescale, the Freescale logo, AltiVec, C-5, CodeTest, CodeWarrior, ColdFire, C-Ware, mobileGT, PowerQUICC, StarCore, and Symphony are trademarks of.
Drivers & Installation. In computing, a device driver is a computer program that operates or controls a particular type of device that is attached to.
Working with Drivers and Printers Lesson 6. Skills Matrix Technology SkillObjective DomainObjective # Understanding Drivers and Devices Install and configure.
So what makes me so smart about GPS? Lifelong fascination with maps & navigation Extensive experience with navigation in aviation, marine and vehicular.
Real-time Systems Lab, Computer Science and Engineering, ASU Linux Input Systems (ESP – Fall 2014) Computer Science & Engineering Department Arizona State.
Libwww, the W3C protocol library libwww - The W3C Protocol Library „Großes Schwerpunktseminar WI“ University of Applied Sciences Gießen-Friedberg.
1 Kyung Hee University Diagram Editor : Implementation View Spring 2001.
Gary MarsdenSlide 1University of Cape Town Human-Computer Interaction - 3 Programmer Support Gary Marsden ( ) July 2002.
April 2000Dr Milan Simic1 Network Operating Systems Windows NT.
Windows XP. History Windows XP is based on the NT kernel developed in 1988 Windows XP is based on the NT kernel developed in 1988 XP was originally sold.
ProShell Procedure Framework Status MedAustron Control System Week 3 December 8 th, 2010 Roland Moser PR a-RMO, December 8 th, 2010 Roland Moser.
OBJECTIVE  After completing this Lab, students will upgrade their knowledge in the field of VC++.  Students will also get the clear view about the concepts.
Windows NT Operating System. Windows NT Models Layered Model Client/Server Model Object Model Symmetric Multiprocessing.
Programming Handheld and Mobile devices 1 Programming of Handheld and Mobile Devices Lecture 17 Microsoft’s Approach 1 –.NET Mobile Framework Rob Pooley.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
C# and.NET programming – introduction 1 Introduction A course in C# and.NET programming Associated book:
Chapter 2 Introduction to Systems Architecture. Chapter goals Discuss the development of automated computing Describe the general capabilities of a computer.
X-WindowsP.K.K.Thambi The X Window System Module 5.
1 Threads, SMP, and Microkernels Chapter Multithreading Operating system supports multiple threads of execution within a single process MS-DOS.
P3 - prepare a computer for installation/upgrade By Ridjauhn Ryan.
HOME AUTOMATION: WEB BASED CONTROL Anthony Campbell Eric Poynter EKU, Dept. of Technology Computer Electronic Networking.
Derek Wright Computer Sciences Department University of Wisconsin-Madison Condor and MPI Paradyn/Condor.
Silberschatz, Galvin and Gagne  Operating System Concepts UNIT II Operating System Services.
Overview of Operating Systems Introduction to Operating Systems: Module 0.
Department of Computer Science and Software Engineering
Customer and Partner Connections Design and Develop Assess and Certify.
Input/Output Problems Wide variety of peripherals —Delivering different amounts of data —At different speeds —In different formats All slower than CPU.
Chapter Eleven Windows XP Professional Application Support.
ProShell Procedure Framework Status MedAustron Control System Week 2 October 7 th, 2010 Roland Moser PR a-RMO, October 7 th, 2010 Roland Moser 1.
Unit 3: Text, Fields & Tables DT2510: Advanced CAD Methods.
Lecture Set 2 Part A: Creating an Application with Visual Studio – Solutions, Projects, Files 8/10/ :35 PM.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All rights reserved. 1 Chapter 15 Event-Driven Programming and.
System Programming Basics Cha#2 H.M.Bilal. Operating Systems An operating system is the software on a computer that manages the way different programs.
Events. Slide 2©SoftMoore Consulting Events Events are generated when a user interacts with the view objects of an application. Examples –button clicked–
NxWM Threading Model Main Thread NX Server Thread CCallback Touchscreen Listener Thread NX Event Callback Messages Mouse Events Hardware Touchscreen Events.
Active-HDL Server Farm Course 11. All materials updated on: September 30, 2004 Outline 1.Introduction 2.Advantages 3.Requirements 4.Installation 5.Architecture.
OPERATING SYSTEMS (OS) By the end of this lesson you will be able to explain: 1. What an OS is 2. The relationship between the OS & application programs.
Operating System Basics. Outline The User Interface Running Programs Managing Files Managing Hardware Utility Software.
How to develop a VoIP softphone in C# by using OZEKI VoIP SIP SDK This presentation demonstrates the first steps concerning to how to develop a fully-functional.
A+ Guide to Managing and Maintaining Your PC, 7e Chapter 2 Introducing Operating Systems.
Supporting Multiple Pointing Devices in Microsoft Windows
Chapter Objectives In this chapter, you will learn:
EE 200 Design Tools Laboratory 14
Introduction to Event-Driven Programming
Cooper Part III Interaction Details Designing for the Desktop
Module 1: Getting Started
Chapter 2: System Structures
Tonya Easterwood HRMS Trainer
Presentation transcript:

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22 September 10, 2002 Supporting Multiple Pointing Devices in Microsoft Windows Michael Westergaard Department of Computer Science University of Aarhus Denmark

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Outline Why multiple pointing devices? Requirements Architecture –Framework –High-level API –Low-level API –Device driver –Example

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Why Multiple Pointing Devices Demonstration

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Why Multiple Pointing Devices (2) Advanced interaction techniques –Multiple hand interactions Two-handed resize/zoom Two handed rotation of 3D objects Three handed zoom + move + rotate –Different mice for different tasks –Floating palettes –Tool glasses Move work from one hand to another  reduce risk of cumulative trauma disorders Cooperative work (for example on a wall PC)

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Requirements Earlier: External application directly polling hardware. This requires exclusive access to the (serial) port Support arbitrarily many mice Treat USB, serial, and PS/2 mice alike Wish to use mouse in “old” Windows applications Generic solution not tied to a specific application or framework

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Architecture Hardware dependent driver Device driver Low-level API High-level API Framework Windows mouse subsystem Framework ApplicationLow-level API Main topic of article Octopus CPN Tools

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Architecture Framework Hardware dependent driver Device driver Low-level API High-level API Framework Windows mouse subsystem Framework ApplicationLow-level API

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Framework Provide widget-like interface (for example one can override the OnMouseDown event of a Button ) Must also provide information about what mouse was clicked (this can be obtained by adding a Mouse property to the MouseEventArgs along with information about all mice on the system ) Must also provide information about other mice working with an element (just another property of MouseEventArgs ) in order to allow exclusive access to an element and to allow multiple hand actions Give mouse back to Windows when it leaves application window (only when no native support is available, of course)

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Architecture Device Driver Hardware dependent driver Device driver Low-level API High-level API Framework Windows mouse subsystem Framework ApplicationLow-level API

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Device Driver Windows does not distinguish between different mice Install filter between hardware dependent driver and Windows Mouse subsystem –We do not have to deal with hardware differences –We can select whether to send a mouse event to Windows Keep driver as simple as possible to avoid bugs in kernel-mode code –Use callback to send data to user-mode –Communicate by creating files in the drivers namespace

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Device Driver (2) Interface A finite state machine is implemented NameDescription GetHook up a mouse for use by an application, register a callback, stop sending Windows mouse events UnGetRelease a mouse, drop the callback and start sending Windows events again SuspendTemporarily suspend a mouse, keep the callback but start sending Windows events UnSuspendStop sending Windows events

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Device Driver (3)

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Architecture Low-level API Hardware dependent driver Device driver Low-level API High-level API Framework Windows mouse subsystem Framework ApplicationLow-level API

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Low-level API Hide operating system specific support (for multiple mice) from higher levels –Simple C interface rather than operating system specific calls to communicate with device driver –If generic Windows support is developed only the low-level API needs to be changed Simplify identification of mice Add simple error handling Calls are not thread-safe Designed to be statically linked to a specific application

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Low-level API (2) Interface The provided callback does not have to be thread-safe NameDescription RegisterCallbackRegister a callback GetMiceHook up a specified number of mice HasMouseQuery if we have hooked a mouse with a specified number UnGetMouseRelease a specified mouse SuspendMousePassed to the device driver UnSuspendMousePassed to the device driver UnRegisterCallbackDrop a previously registered callback UnGetAllMiceRelease all hooked mice

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Architecture High-level API Hardware dependent driver Device driver Low-level API High-level API Framework Windows mouse subsystem Framework ApplicationLow-level API

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 High-level API Hide the underlying operating system from the framework Build on top of low-level API Spawn a thread to listen for callbacks from the low- level API Send “mouse events” to application Calls are thread-safe Draw mouse cursors Accelerate mouse Offer polling interface Like low-level API designed to be statically linked to an application

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 High-level API (2) Interface NameDescription InitialiseStart up the listener thread and do some other initialising CleanupKill the listener thread and cleanup other allocated resources SuspendMouse Thread-safe version of corresponding low-level functions UnsuspendMouse GetRelativePositionGet mouse movement since last call GetAbsolutePositionGet the position of the mouse SetAbsolutePositionSet the position of the mouse SetCursorSet the cursor for a specified mouse LockCanvasUsed for drawing cursors UpdateCursorsUsed for drawing cursors

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Architecture Example -- Startup ApplicationFrameworkH-APIL-APIDriverUser Start Initialise GetMice Get n times n spawn n ok

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Architecture Example -- Suspend ApplicationFrameworkH-APIL-APIDriverUser Move mouse Mouse moved callback Mouse moved event Mouse is moved out of window Suspend

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Future Work More control of what mice are hooked by GetMice function (by number, name, position on bus, or capabilities) Be able to handle multiple applications sharing mice Higher-level API: DLL/System service Port the needed layers to also support Windows 9x/ME/NT, Unix, and Mac

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Conclusions During this talk we have… seen how multiple mice can be useful (advanced interaction techniques, cooperative work) seen requirements for an architecture supporting multiple mice (work with any kind of mouse, backwards compatibility, not tied to an application) seen requirements for a framework supporting multiple mice seen a device driver and two supporting APIs that can satisfy the needs of a framework supporting multiple mice

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Framework Widgets With Events public class MyButton: Button { protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if (e.Button == left) { MessageBox.Show("Button pressed", ""); } } }

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Framework Knowledge of Active Mouse public class MyButton: Button { protected override void OnMouseDown(MyMouseEventArgs e) { base.OnMouseDown(e); if (e.Mouse == Mice[1]) { MessageBox.Show("Mouse 1 pressed", ""); } } }

Supporting Multiple Pointing Devices in Microsoft WindowsSummer Research Workshop /22September 10, 2002 Framework Knowledge of Other Mice public class MyButton: Button { protected override void OnMouseDown(MyMouseEventArgs e) { base.OnMouseDown(e); if (e.OtherMice.Length == 0) { MessageBox.Show(“Only one mouse pressed the button", ""); } } }