GB2363481A - Multi-user computer - Google Patents
Multi-user computer Download PDFInfo
- Publication number
- GB2363481A GB2363481A GB0014459A GB0014459A GB2363481A GB 2363481 A GB2363481 A GB 2363481A GB 0014459 A GB0014459 A GB 0014459A GB 0014459 A GB0014459 A GB 0014459A GB 2363481 A GB2363481 A GB 2363481A
- Authority
- GB
- United Kingdom
- Prior art keywords
- application
- display
- data
- input
- dynamic link
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1423—Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
- G06F3/1438—Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display using more than one graphics controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
- Position Input By Displaying (AREA)
Abstract
A personal computer may be adapted to run different applications on two or more different displays by providing two or more sets of input devices, each set including a keyboard and a mouse. Within the operating system the user and Gdi dynamic links are surrounded by custom dynamic links which filter out SetFocus messages where data is received for applications running on a different screen from the last data received. A custom shell launches applications and also identifies the display from which the application was launched and creates a handle for that application including an identification of that display. In a second embodiment an application wrapper is launched within a second display and the application shell is launched from that wrapper. When the application is then launched, the wrapper can gain control of the application edit controls allowing input data and commands to be redirected from the second input device to the second application.
Description
2363481 MULTI-USER COMPUTER This invention relates to computers and in
particular to home and office computers such as PCs. It is particularly concerned with PC's running Microsoft Windows 98 (RTM) operating system. The invention is applicable to other operating systems and to stand alone or networked computers.
Existing computers such as stand alone PC's are intended to be used by a single person at a given time and are supplied from retail outlets with a single set of 1/0 10 devices (display, keyboard, mouse, etc.) Typically, software applications are initiated and interacted with by the user through graphics user interface (GUI) such as Windows '95 (RTM) or Windows '98 (RTM). Methods to support multiple screens on a single PC are well known and additional is software and hardware is required to reproduce the main display, or parts of the main display, on extra displays connected to the PC. It is well known that may PC' s can be placed on a network to run applications from a server computer.
20 Modern PC' s are suf f iciently powerful to be able to run more that one application at the same time. However, at present, two separate computers are required if two users want to work at the same time.
We have appreciated that it would be desirable for a computer to have a number of 1/0 Devices which allow two or more users to run the same or different applications at the same time. For example, one user may, via a first keyboard, mouse and display, use a word processing application while a second surfs the Internet.
3 01 It is therefore an aim of the present invention to provide a computer system which enables two or more users to run two or more applications as a computer at the same time.
It is a further aim of the invention to provide a computer operating system which allows two or more applications to be run concurrently with input and outputs to two or more sets of 1/0 devices.
In its broadest form the invention provides a personal computer or the like having at least two input devices and 5 two displays and which can run two applications simultaneously, one on each of the displays with each of the displays being associated with an input device.
More specifically there is provided a personal computer comprising a processor under the control of an operating 10 system and configurable to run a plurality of application programs, at least two input devices and at least two displays, each input device having an associated display, wherein the operating system includes means for two or more application programs at the same time, each application 15 program being associated with one of the input devices and associated displays, and including means for identifying the input device from which data is input and directing that data to the associated application.
The invention also resides in a computer operating 20 system for a personal computer having a processor configurable to run a plurality of application programs, at least two input devices and at least two displays, each input device having an associated display, the operating system comprising means for running at least two application 25 programs at the same time, each of the application programs being associated with one of the input devices and associated displays, and means for identifying the input device from which data is input and directing that data to the associated application.
30 Furthermore, the invention provides a computer program product stored on computer usable medium, comprising computer readable program means for causing of personal computer having a processor configurable to run a plurality of application programs, at least two input devices and at least two displays, each input device having an associated display to run at least two application programs at the same time on two displays, each of the application programs being associated with one of the input devices and associated displays to identify the input device from which data is input, and t 0 direct that data t 0 the associated application.
5 The invention further resides in a method of operating a computer havinq a central processor under the control of an operating system and configurable to run a plurality of application programs, at least two input devices and at least two displays, each input device having an associated 10 display, the method comprising running at least two application programs at the same time on different displays, associating each of the at least two application programs with one of the input devices and associated displays, identifying the input device from which data is input and is directing that data to the associated application.
Preferably, the operating system includes a shell program including means for identifying the application to be launched, means for identifying the displays from which the application was launched and means for creating a handle 20 for that application which includes an identification of the displays on which it is running.
This preferred embodiment of the invention has the advantage that in a Windows operating system the custom shell may be set as the shell in the system.ini file 25 allowing a separate desktop per display.
Preferably the operating system includes a dynamic link library including a user link for communicating calls between the input devices and the applications, the user link being embedded in a dynamic link program for filtering 30 data input from the input device to maintain focus to a given application running on a given display when data is inQut to a different application running on a different display from a different input device.
This embodiment of the invention has the advantage that all input from the keyboard and access to the graphical user interface by changing the user= and Gdi= settings in the system. ini file to custom versions which filter the required functions before passing them onto the user.exe and Gdi.exe files. This enables data to be sent to anapplication running on a second screen without the application running on the first screen to which data was previously sent, 5 losing focus.
Preferably, the system further includes a graphical user interface (GUI), and the dynamic link library further includes a graphical display interface link Gdi, for communicating between the displays and the applications, the 10 Gdi being embedded in a dynamic link program for filtering access to the GUI to maintain focus to a given application running on a given display when data is input to a different display running a different application.
This embodiment of the invention has the advantage that 15 information about the desktop can be filtered when an application makes queries about it so avoiding the problem of dragging application windows overlapping one another on a second screen.
Preferably, the computer further comprises a plurality 20 of buses and the least two input devices are coupled to different ones of said buses.
It is preferred that one of these buses includes a Universal Series bus. A keyboard plugged into the Universal Series bus will provide untranslated keyboard data to the 2 5 application and it is preferred that data detected as having been supplied from an input device connected to the USB is first passed through the keyboard dynamic link for translation.
Embodiments of the invention will now be described, 30 will reference to the accompanying drawings in which:
Figure 1 is a schematic view of portions of a known personal computer running the Windows '98 operating system; Figure 2 is a similar schematic view to figure 1 showing an embodiment of the invention; 3 r Figure 3 is a schematic view of the hardware configuration of the embodiment of the invention; Figure 4 is a block diagram showing how data from a keyboard is handled; Figure 5 is a flow diagram showing how a custom shell program launches an application program; Figure 6 is a schematic view similar to figure 1 of a second embodiment of the invention; and Figures 7a and 7b are flow diagrams illustrating operation of the second embodiment.
Referring to figure 1 a conventional personal computer 10 comprises a main processor, random access memory, a read only memory such as a hard disc, input devices including a keyboard and a mouse and other pointer, an output device such as a display and a printer. Applications to be run reside on the hard disk and are loaded into the RAM as 15 required under the control of a disc operating system such as MS-DOS sold by Microsoft Corporation. Typically, a graphical user interface such as Microsoft Windows 98 is interposed above the disc operating system to enable the user to send commands to the processor by manipulating at a 20 pointing device across the display rather than having to type in complex commands.
In figure 1, the keyboard is shown as PS/2 compliant keyboard 12 and the pointer as PS/2 compliant mouse 14. These two physical devices are managed by virtual device 2 _5 drivers of which VKD 16 is a keyboard driver and VMD 18 is a mouse driver. The purpose of the device driver is to handle communications between the device and the processor.
The disk operating system is shown as DOS boxes 20, 22 and the Windows '98 GUI generally shown as box 24. The GUI includes drives for each of the 1/0 devices including keyboard.drv. driver 26, mouse.drv 28 and display, drv 30. These drivers interact with the virtual device drivers 16, 18.
Th e GUI contains a suite 0 f execution programs -1 F Explorer.exe 32. This suite contains execution programs which cause the computer to run a selected application. In figure 1 a sample three execution programs are shown as Appl. exe 34, App2.exe 36 and App3.exe 38. Logically interposed between the application execution programs are the user.exe 40 and Gdi.exe 42 programs. These are execution programs from the dynamic link library. User.exe receives keyboard and k mouse commands from the keyboard and mouse drivers and assigns these, as appropriate. Gdi.exe handles data to be displayed communicating with display.drv.
It will be appreciated that figure 1 only shows the elements of the operating system and GUI necessary to launch 10 an application. All other features of the operating system and the GUI are well known to those skilled in the art and do not need further explanation.
The procedure to launch an application will now be described. When a user double clicks on an icon on the 15 display, or starts a program from the menu, the Explorer.exe shell 32 launches the application through the appropriate app.exe program. When the application has started, the Explorer.exe shell 32 makes calls to Gdi.exe 42 to determine the display screen size and resolution. The shell then 20 creates the appropriately sized windows. The application then looks for inputs from the keyboard and mouse input devices by making GetMessage calls to user.exe 40.
GetMeS3age simply asks user.exe whether there has been any keyboard/mouse input and, if so, retrieves that input. The 25 GetMessage call will be blocked unless two conditions have been met. First, the current application must have focus.
Although Windows '98 allows a number of applications to run at the same time, the processor will only attend to one of these at any given time. This is the application that has 30 focus and all incoming messages from the input devices are treated as intended for that application. The application with focus appears as the active window to the user. The second condition is whether there is any data in the input queue. if both these criteria are true, the GetMessage 3 routine returns with the keyboard data. That data flows from the keyboard, through the virtual keyboard driver VKD 16 and through the keyboard.drv in Windows '98, at which point the keyboard codes are translated. The translated codes are then passed to u5er.exe and then to the application.
All mouse events are sent to user.exe via the virtual mouse driver VMD 18 and the mouse driver in Windows '98.
5 Mouse events are then passed to the window which the mouse is entering, leaving or moving over. If there are two users, the applications see mouse enters and leaves instead of mouse enter, mouse move, mouse move etc.
Figure 2 shows how the model of figure 1 may be 10 modified to provide two users running two applications simultaneously under a singe version of the DOS and Windows '98 operating system. In order to understand figure 2 it is helpful to consider why the model of figure 1 cannot be made to support two independent users running two separate applications.
Windows '98 has the capacity to display all applications over several display screens. However, if two dif ferent applications were to be displayed there is no way of knowing on which display it was first started. Thus, the 20 prior art model does not provide for the association of an application with a display.
In any of the Windows operating systems such as Windows 3-x, Windows 195 and Windows '98 the user can open several applications at the same time but only one application can 25 have focus at any one time. The user can switch between applications, for example by clicking on the relevant icon on the taskbar in Windows '98 and that application will gain the focus. The keyboard focus transfers from the current application to the new application. This causes problems on 30 the second screen as the user at a second screen will take the focus from the first screen when selecting an item running in their desktop area. This prevents the user on the first screen from inputting further data.
With the present arrangement, dragging an application window will overlap onto the other screen. A user can select an application and drag it across to the other screen affecting the user of the other screen. This happens as the two or more screens are treated by the operating system as displaying portions of the same desktop. Thus, as an application window is dragged around the desktop it can be crossed over from one display to the next.
The Windows '98 system only has the idea of a single mouse. This is incompatible with two applications running simultaneously each of which may try to get the position of the mouse. Of course in some applications a mouse is not essential or required, for example where the displays are io touch screens.
Some applications only allow one instance of the application to be run. If a second instance is run, for example when the two users both want to run the same application independently of each other, the second version 15 of the application will see that the first already exists and sets the focus to the first application.
Existing PCs and the like only have provision for a single keyboard and pointer device.
In figure 2, items already referred to in relation to 20 figure 1 are given the same reference number. In short, the embodiment of the invention adds a further set of input devices. In the preferred embodiment shown these comprise a USB keyboard 40 and a USB mouse 42. An additional Virtual device driver is included. In this case VUSBD 44 which provides a virtual device driver from the USB keyboard and the USB mouse. In Windows '98 the user.exe is surrounded by a custom shell shown as XNUSER.EXE 46 and Gdi.exe is surrounded by a custom shell shown as XNGDI. exe 48. The purpose of these two shells will be explained. Finally, the 31 explorer.exe shell is replaced by a new shell XNSHELL.exe 50 which is a version of explorer.exe modified in view of XNUSER.exe and XNGDI.exe.
Before discussing the software in further detaiL it is useful to consider the hardware necessary to run different applications as different screens. Although Windows '98 can support two displays, existing hardware architecture cannot.
Our cc-pending application PCT/GB99/02854 discloses how multiple screens may run from a conventional PCrunning under, for example, Windows '98. Figure 3 shows the hardware configuration required to provide a separate display, keyboard and mouse for each independent user.
5 In essence, PCT/GB99/02854 contemplates providing second and further displays by connecting one or more display controllers to a dedicated graphics bus such as the AGP (accelerated graphics port) bus. Referring to figure 3 the processor 60, which may for example be a Pentium II (TM) 10 processor manufactured by Intel Corporation is connected to the system or CPU bus 64. The CPU bus may operate at, for example, 66, 75, 83 or 100 MHz and at 1/0 voltages of 3.3V, 2.5V or 1.9v. A second level cache memory and the system chipset 62 are also connected to the CPU bus 64. The system is chipset comprises a pair of chip sets forming a north south bridge. one example of a suitable chipset is the VIA Apollo MVP3 chipset available from Via Corporation. This is a high performance and energy efficient chipset intended for implementation of AGP, PCI and ISA buses in PC systems from 20 66 MHz to 100 MHz based on the 64 bit Socket-7 Super-Scalar processors. Both the north and south bridges act as routers routing data from one bus to another. The north bridge takes the heavy traffic and the south bridge routes in to a lot of different lighter traffic. As can be seen from figure 4, the 2-5 north bridge, comprising chip VT82C598, identified by numeral 63, is connected via memory bus 66 to the dynamic random access memory DRAM 68 and also to the AGP bus 70. The PCI (peripheral component interconnect) bus 72 is connected between the north and south bridges and the south bridge, 3 0 implemented here as chip VT82C58CB identified by reference numeral 65, is connected to the keyboard and mouse, the USB (Universal Serial Bus) bus, the DPID, IDE and ISA (Industry Standard Architecture) buses. It will be seen that the south bridge also acts as a PCI to ISA bridge. The PCI bus is one 3 a example of a general purpose bus which routes data to and from the processor and peripherals on the system.
The AGP bus relieves the PCI bus of graphics data to enable it to concentrate on duties such as transfer of data from disc drives. Thus, the AGP bus is a graphics bus which is intended to perform a dedicated graphics function and is connected to a 3D graphics controller (not shown). on a conventional PC, a device on a single card can be attached to the AGP bus whereas up to four expansion slots can be attached to the PCI bus. The addressing for these additional devices is controlled by the systems BIOS (Basis 10 Input/Output Software) which is held in ROM and once set cannot be changed.
The north bridge chip supports standard fast pulse mode (FPM), extended data output (EDO), SDIM and DDR SDRAM. The system controller also complies with Accelerated Graphics 15 Port specification 1:0 and supports 66/75/83/100 MHz CPU frequencies and 66 MHz AGP bus frequency. The PCI integrated peripheral controller forms a part of the chipset and supports Intel and non-Intel based processors to PCI bus bridge functionality to make a complete Microsoft PC97 20 compliant PCI/ISA system. The peripheral controller provides ISA extension bus functionality and includes a number of intelligent peripheral controllers including a master code IDE (Illustrated Drive Electronics) controlled with dual channel DMA (Direct Memory Access) engine and interlaced 25 dual channel commands. High performance transfers between devices connected to the PCI and IDE buses can be achieved through a dedicated FIFO coupled with scatter and gather master mode operation. Further intelligent peripheral controllers includes a USB controller; a keyboard controller 30 with PS2 mouse support; a real time clock with 256 extended bite cmos; power management functionality which is compliant with ACPI (Advanced Configuration and Power Interface) and legacy APM (Advanced Power Management) requirements; distributed DMA capacity for support of ISA legacy DMA over -1 ' the PCI bus; plug and play control allowing steerability of all interrupts on the PCI bus to any interrupts channels; three additional screenable interrupt channels are provided to allow plug and play and reconfigurability of on-board peripherals for Windows compliance and external IOAPIC support is provided for link- compliant symmetrical mount processor systems.
-tached to the in figure 3 the bios ROM 74, is shown at south chip 65 and a first display controller 76 is attached to the PCI bus. An MPEG 2 decoder is also attached to that bus and a second display controller 80 is attached to the AGP bus. The AGP display controller 80 is also attached to 10 the MPEG 2 decoder and to an external memory 82.
Although not shown, the hardware includes a hard disc drive and input devices such as a floppy disc drive, a CDRom drive and a DVD drive.
In order to provide an additional keyboard and mouse is for a second user without affecting the existing PS/2 mouse and keyboard that is currently installed, a USB keyboard and mouse is attached to the USB bus, 84. By using the USB port on a conventional PC and plugging into a hub to give four ports to the USB both a USB and mouse and keyboard can 20 easily be accommodated. In figure 3 the USB is identified by reference numeral 84, the USB hub by 86, the USB keyboard by numeral 88 and the USB mouse by numeral 90.
Referring back to figure 2, applications are launched by xnshell.exe which is configured to be able to determine 23 which screen/user has initiated the application launch. Xnsheil.exe then communicates with xnuser.exe and xngdi.exe to monitor all events that the application makes. When the application makes calls to xngdi.exe to determine screen size and origin, it returns restricted information that ties 3 IJ that application to the single screen on which it is running. When calls are then made to xnuser.exe, GetMessage calls xnuser to check the associated keyboard for data. If -he associated keyboard is the default keyboard, processing will continue as usual. If the associated keyboard is the second keyboard, data from the USB keyboard will be used. Data received from the USB keyboard is reflected back into the standard keyboard driver for international translation before being passed back to the application.
Mouse notifications to xnuser.exe from the two mice will he capped to the relevant screen dimensions and passed 5 on to the Gdi.exe for screen processing of mouse pointers.
Messages sent by user.exe to the application are handled by xnuser.exe.
To avoid the problem of focus being lost at one application when the second user clicks on an application, 10 xnuser.exe filters out SetFocus messages which otherwise change which application has the keyboard focus. However, xnuser.exe allows a set focus call between applications in the same screen desktop area.
To an application, xnuser.exe looks the same as 15 user.exe. In other words, the xnuser.exe shell is transparent to the application. Most calls will go straight through xnuser.exe but when focus changes, key data is obtained from the second keyboard device.
The user.exe and Gdi.exe are both examples of dynamic 20 links from the dynamic link library (DLL) within Windows 198. The additional shells xnuser.exe and xnGdi.exe are also DLL programs which form an outer layer for user.exe and Gdi.exe respectively forming two layers of programming. User.exe and Gdi.exe may be viewed as embedded in xnuser.exe 25 and xnGdi.exe respectively.
Xnshell monitors all calls that the applications make and communicates with the xnuser.exe and xnGdi.exe shells. Xnshell.exe assigns a handle to all application communication calls, the handle containing a code 30 identifying the application making the call. The call including the handle is passed to the appropriate DLL shell, xnuser.exe or xnGdi.exe. The outer layer shell strips off the handle and retains it but passes the call to the inner DLL such as user.exe or Gdi.exe. The call is then processed -35 in the same way as in the prior art. In this manner, xnshell is wholly transparent to the call itself but the handle enables xnshell to determine to which application a call -3 relates thus enabling xnshell to determine which of the input devices it should look for data.
Calls returning from applications or input devices are transferred from the inner layer DLL programs to the outer 5 layer DLL shells such as xnuser.exe. The outer layer reattaches the handle to the call and then passes it to xnshell.exe. Xnshell.exe reads the code in the handle and then determines to which of the applications the call is to be forwarded.
10 Windows '98 has a pre-emptive multi-tasking doctrine allowing several applications to make use of a single DLL program at the same time. This means that the same DLL program may be called by different applications while still communicating with another application. Each call is is prioritised and/or allocated a time slice of the DLL program's run time.
The addition input devices, USB keyboard and USB mouse are provided with separate virtual device drivers. In figure 2 these are shown as the VUSBD but it will be understood 20 that they comprises separate keyboard and mouse drivers. This ensures that the additional keyboard and mouse do not affect other devices. It is preferred that the additional input devices use the USB bus as USB drivers and ports are now common and compliant peripheral devices are inexpensive.
2 5 Furthermore, the USB currently allows for up to 128 devices to be attached to it without additional hardware or software. However, the additional input devices could be attached in other ways.
The user keyboards and mice are configured to be linked 3 G to their associated display. The custom shell xnshell.exe and DLL programs use a register entry to determine which keyboard is assigned to which display. All new keyboards will present their keyboard number to xnuser.exe so that it can identify which keyboard is sending data. Xri. 5hell.exe communicates to xnuser.exe to which handle r-he data belongs. This information is provided to xnshell.exe by the register.
Thus, when a first user starts an application by double clicking an icon on its screen or with a keyboard command, xnshell.exe can determine that the application is initiated on that given screen, xnshell.exe knows which keyboard is associated with that screen from the register data and informs xnuser that that application has started and is using that keyboard. As a result, data from that keyboard will be transferred to that application whilst that application has focus on that screen.
10 Data from a standard PS/2 keyboard will be translated into international key codes when it arrives at xnuser. Data from the additional USB keyboard/ keyboards attached to the system will arrive via direct communications from the keyboard itself. This data will need to be translated at the 15 xnuser stage before it is passed on to the application. This is achieved by xnuser.exe passing the data from USB keyboards through the keyboard DLL for translation before it is passed on to the application.
Figure 4 is useful in understanding how xnuser.exe 20 handles keyboard inputs. At step 100, xnuser.exe receives a key press notification. Xnuser at step 102 decides whether the keyboard is a standard PS/2 compliant keyboard. If it is, the screen handler for the keyboard is obtained at step 104. The keystroke data is then passed at step 106 to the 25 application within the screen which has focus. If xnuser identifies the keyboard as being standard it passes the key data at step 108 to the keyboard DLL for translation and then at step 110 obtains the screen handler for that keyboard and passes the key to the application within the 3 01 screen which has focus at step 106.
Figure 5 shows how xnshell.exe handles launch of a program. In the prior art, program launch is handled by explorer.exe which needs a double click on an icon on the screen and selects the application which is associated with that icon. At step 120 in figure 5 the user double clicks the desktop icon. At step 122 xnshell.exe works out from which screen the icon has been double clicked. At step 124 xnshell.exe notifies the two upper level DLL programs xnuser.exe and xnGdi.exe of the application handle andthe screen on which it is running. At step 126 xnshell.exe then allows the application to run in the same way as under 5 explorer.exe. In the system described, each screen has a separate desktop. Windows '98 is a 32 bit system but at the driver level is a 16 bit operating system and uses the features in system.ini of previous versions of Windows such as Windows '95 and Windows 3.1. The default shell run at 10 startup comes from this file in the form of a setting "shell equals". In Windows '98 this setting is set to explorer. By changing this setting to "custom", that is the xnshell it is possible to generate a separate desktop for each screen.
The system.ini program also contains the settings for is user=user.exe and Gdi=Gdi.exe. Again, by changing the setting to xnuser.exe and xnGdi.exe, the custom DLL's, xnuser.exe and xnGdi.exe can be set up to filter all inputs from the keyboard and the mouse as well as access to the GUI before passing them on to user.exe and Gdi.exe respectively.
20 Thus, the problem of a user losing focus when an input is received from a second user is avoided as xnuser.exe identifies that second input as relating to a second screen. However, xnuser.exe does not interfere with user.exe changing focus when there is an input to a different 25 application being run by the same user.
Similarly, the problem with dragging application windows overlapping onto the other screen is avoided by use of the xnGdi.exe DLL making it possible to filter information about the desktop when an application makes 30 queries about it.
The problem with a single mouse in Windows '98 is also overcome by the use of xnuser.exe routine as all mouse notifications within Windows '98 are passed to user.exe. Thus, all mouse notifications will be received by xnuser.exe which can filter/change the information which is reported to the application as necessary.
Figure 6 illustrates a second embodiment of the invention which is intended to be more simple that the embodiment described. Whereas the previous embodiment allowed control of the desktop by two or more users, the figure 6 embodiment permits control of applications rather than the desktop. In the embodiment to be described, commands may be entered either from a second keyboard or from a second touch screen.
In the previous embodiment, use was made of the io Explorer Shell which was replaced by an XNshell. In the figure 6 embodiment the Explorer shell is retained and a separate program, XNPUMP.exe used to launch the application to be controlled by the second user. XNPUMP.exe then behaves as a shell within the Explorer shell and, once launched, can 15 control the running of the application or other program.
In the previous embodiment, XNUser.exe and XnGdi.exe were dll routines. In the figure 6 embodiment XNPUMP.exe is used to redirect keyboard input from the second keyboard, as touch screen input to edit controls within the application 20 program to be controlled from the second input device.
XNPUMP achieves this by searching the window tree of the controlled program for all edit controls and the redirecting the second keyboard or touch sQreen input to the edit window which last had the focus.
25 In the previous embodiment, new keys were forced through the default keyboard driver to obtain keyboard mapping. In the figure 6 embodiment, a look up table is employed by XNPUMP. The look up table contains translation codes from keyboard scan codes to windows keyboard codes.
30 Turning now to figure 6, features common to figures 1 or 2 and 6 have the same reference numerals. The additional USB keyboard 40, USB mouse 42 and VSB drivers USBD 44 are provided but instead of explorer.exe being replaced by XNShell.exe, and user.exe and Gdi.exe being enclosed within 33 XNUser.exe and xnGdi.exe respectively, the application to be launched is simply enclosed within XNPUMP.exe. Thus, figure 6 shows application Appl.exe as being launched. Application 2 has not been launched and is therefore not enveloped by XNPUMP.exe. By placing a wrapper around the program running on the second screen one can control what is sent to it and the ability to send the second keyboard data.
5 For a second user to launch an application from the second scree, XNPUMP.exe is first launched within that second screen. The user then uses XNPUMP.exe to launch Explorer.exe (not shown in figure 6). XNPUMP.exe then makes explorer one of its children using the windows SetParent 10 call so that Explorer is running within XNPUMP. XNPUMP can then look for edit controls within explorer and subclasses those edit controls 82 so that it has control over those edit controls. When a user selects the control with the mouse, XNPUMP will note which control has gained focus and 15 then returns focus to the control that has just lost it.
XNPUMP can then force keyboard input using the WM-CHAR, WM_KEYDOWN and WM_KEYUP messages into the edit control with data that is read from the second keyboard device.
Figures 7a and 7b illustrates, in flow diagram form, 20 the operation of the second embodiment. A separate thread is created for each keyboard. At step 200 in figure 7a, a thread is created for a given keyboard, keyboard n. At step 202, the system waits for the user, from that keyboard, to select a new program for launch. At step 204, with a new 25 program selected, the applications message queue is hooked and at step 206 the system waits for the application to make a request to the GetMessage routine. In a conventional system an application will call the operating system for instructions. In the method described the applications 3 message queue is hooked so tht calls to the operating systems are diverted to the wrapper XNPUMOP. The calls to the operating system may then be examined and passed onto the system as usual or, if there is keyboard data from the n keyboard thread that data can be forced to the figure 7b shows how data input from a 3 51 application. Thus, L given keyboard is handled. At steps 214 the relevant keyboard thread opens the keyboard, there being a keyboard thread for each keyboard. At step 216, the program looks for input from that keyboard. If there is no input, the routine simply loops around until keyboard input is detected. If there is keyboard input, that input is 5 translated at step 218, using the look up table referred to previously such that the input key codes, which may for example be ASCII codes, are translated into MS Windows 0 codes. Finally, at step 330 the translated key data is stored in the keyboard queue.
10 Although this embodiment has been described with reference to input from a second keyboard, it is to be understood that the second user may input data from a second touch screen with the first device either being a touch screen or a physical keyboard. The manner of operation is 15 the same whichever us used.
It will be seen that the embodiment of figures 6 and 7 is much more simple than that of the previous embodiment and does not change the core configuration of the machine. As a result, there are less side-effects with the rest of the 20 operating system.
Embodiments of the invention have the advantage that two or more users can run their own applications on the PC at the same time. This is ideal for a family or office environment and can greatly reduce the overheads of computer 25 hardware systems. Embodiments of the invention allow two web browsers to be run at the same time whiist using a single phone line, in countries where Internet access calls are charged this can save considerable call charges.
Claims (1)
- A personal computer comprising a processor under the control of an operating system and configurable to run a plurality of application programs, at least two input 5 devices for inputting data and commands to the processor and at least two displays, each input device having an associated display, wherein the operating system includes means for running two or more application programs at the same time, each application program being associated with 10 one of the input devices and associated displays, and including means for identifying the input device from which data and commands is input and directing that data to the associated application.2. A personal computer according to claim 1, wherein 15 the input device associated with each display includes a keyboard.3. A personal computer according to claim 2, wherein the input device associated with each display further includes a mouse.20 4. A personal computer according to claims 1, 2 or 3, wherein the input device associated with at least one display comprises a touch screen.5. A personal computer according to any of claims 1 to 4, wherein the operating system includes a shell program 25 including means for identifying the application to be launched, means for identifying the display from which the application was launched and means for creating a handle for that application which includes an identification of the displays on which it is running.30 6. A personal computer according to any of claims 1 to 5, wherein the operating system includes a dynamic link library including a user link for communicating calls between the input devices and the applications, the user link being embedded in a dynamic link program for filtering 5 data input from the input device to maintain focus to a given application running on a given display when data is input to a different application running on a different display from a different input device.7. A personal computer according to claim 6, wherein 10 the filtering link program filter data inputs from keyboard and mouse inputs.8. A personal computer according to claim 6 or 7, wherein data from the input device to the user dynamic link passes transparently through the filtering dynamic link.15 9. A personal computer according to any of claims 6, 7 or 8 wherein the system further includes a graphical user interface (GUI), the dynamic link library further includes a graphical display interface link Gdi for communicating between the displays and the applications, the 20 Gdi being embedded in a dynamic link program for filtering access to the GUI to maintain focus to a given application running on a given display when data is input to a different display running a different application.10. A personal computer according to claim 9. wherein 25 data from the applications to the Gdi dynamic link is passed transparency through the filtering dynamic link.11. A personal computer according to any of claims 1 to 3, wherein the operating system includes a wrapper for an application to be launched form the second display, the 30 wrapper including means for redirecting data and commands from the second input device to edit controls within the application launched from the second display.12. A personal computer according to claim 11 wherein the wrapper includes means for searching the window tree of the controlled application to find edit controls and means for redirecting the second input device input to the edit 5 window which last had focus.13. A personal computer according to claim 11 or 12, comprising a plurality of displays each having an associated input device, wherein each display after the first has an associated wrapper for launch of applications from that wrapper, 14. A personal computer according to any preceding claim, wherein the computer further comprises a plurality of buses and the least two input devices are coupled to 15 different ones of said buses.15. A personal computer according to claim 14, wherein one of said plurality of buses comprises a universal series bus (USB).16. A personal computer according to claim 15, 20 further comprising a USB port.17. A personal computer according to claim 14 or 15 and 6 comprising translation means for translating data received at the user dynamic link from the input device connected to the USB.25 18. A computer operating system for a personal computer having a processor configurable to run a plurality of application programs, at least two input devices and at least two displays, each input device having an associated display, the operating system comprising means for running 30 at least two application programs at the same time, each of the application programs being associated with one of the input devices and associated displays, and means for identifying the input device from which data is input and directing that data to the associated application.19. A computer operating system according to claim 18, wherein the input devices associated with each display 5 comprises a keyboard, the system further comprising a shell program for launching a selected application, the shell program including means for identifying the display from which the application was launched, and means for creating a handle for that application which includes an 10 identification of the display on which it is running.20. A computer operating system according to claim 18 or 19, comprising a dynamic link library including a user link for communicating calls between the input devices and the applications, the user link being embedded in a dynamic link program for filtering data input from the input device to maintain focus to a given application running on a given display when data is input to a different display.21. A computer operating system according to claim 20 wherein, the filtering link program filters data inputs form 20 keyboard and mouse input devices.22. A computer operating system according to claim 20 or 21, wherein the data from the input device to the user dynamic link passes transparently through the filtering dynamic link.25 23. A computer operating system according to claim 20, 21 or 22 including a graphical user interface (GUI), wherein the dynamic link library further includes a graphical display interface link Gdi for communicating between the displays and the applications, the Gdi being 30 embedded in a dynamic link program for filtering access to the GUI to maintain focus to a given application running on a given display when data is output to a different display running a different application.24. A computer operating system according to claim 23 wherein data from the applications to the Gdi dynamic link 5 pass transparently through the filtering dynamic link.25. A computer operating system according to any of claims 20 to 24 wherein the computer further includes a plurality of buses, and the at least two input devices are coupled to different buses, the operating system further 10 comprising translating means for translating data received at the user dynamic link from the input device connected to one of the buses.26. A computer operating system according to claim 18, further comprising a wrapper for an application to be 15 launched from the second display, the wrapper including means for redirecting data and commands from the second input device to the edit controls within the application launched from the second display.27. A computer operating system according to claim 20 26, wherein the wrapper includes means for searching the window tree of the controlled application to find edit controls and means for redirecting the second input device input to the edit window which last had focus.28. A computer operating system according to claims 25 26 or 27 comprising a plurality of displays each having an associated input device, wherein each display after the first has an associated wrapper for launch of applications from that wrapper.29. A computer operating system according to claim 25 30 wherein the one bus is a Universal Serial Bus (USB) 30. A computer program product stored on computer usable medium, comprising computer readable program means for causing of personal computer having a processor configurable to run a plurality of application programs, at least two input devices and at least two displays, each input device having an associated display to run at least two application programs at the same time on two displays, each of the application programs being associated with one of the input devices and associated displays to identify the 10 input device from which data is input, and to direct that data to the associated application.31. A computer program, comprising computer readable program means for causing of personal computer having a processor configurable to run a plurality of application programs, at least two input devices and at least two displays, each input device having an associated display to run at least two application programs at the same time on two displays, each of the application programs being associated with one of the input devices and associated 20 displays to identify the input device from which data is input, and to direct that data to the associated application.32. A computer program product according to claim 30 or 31, further comprising a shell program for causing the 2 5 computer to launch a selected application, to identify the display from which the application was launched, and to create a handle for that application which includes an identification of the displays on which it is running.33. A computer program product according to claim 32 30 further comprising a dynamic link program for causing data input from an input device to a user dynamic link in the computer operating system to be filtered to maintain focus to a given application running on a given display when data is input to a different display.34. A method of operating a computer having a central processor under the control of an operating system and configurable to run a plurality of application programs, at least two input devices and at least two displays, each 5 input device having an associated display, the method comprising running at least two application programs at the same time on different displays, associating each of the at least two application programs with one of the input devices and associated displays, identifying the input device from io which data is input and directing that data to the associated application.35. A method of operating a computer according to claim 34, comprising launching an application from a shell program including identifying the application to be 15 launched, identifying the display from which the application was launched and creating a handle for that application which includes an identification of the display on which it is running.36. A method of operating a computer according to 20 claim 35, comprising providing a dynamic link surrounding the operating system user dynamic link communicating calls between the input devices and the applications, and filtering data input from the input devices to maintain focus to a given application running on a given display when 25 data is input to a different display, the data passing transparently through the filtering dynamic link to the user dynamic link.37. A method of operating a computer according to claim 36, wherein the filtering dynamic link filters out -i I SetFocus messages when data is input to a different display.38. A method of operating a computer according to claim 36 or 37, comprising providing a dynamic link surrounding the operating system graphical display interface dynamic link Gdi communicating between the displays and the applications, and filtering access to the graphical user interface to maintain focus to a given application running on a given display when data is input to a different display, the data passing transparently through the filtering dynamic link to the Gdi dynamic link.39. A method of operating a computer according to claim 38, wherein the filtering dynamic link filters out SetFocus messages when access is requested to a different display.40. A method of operating a computer according to claim 34, comprising launching a wrapper within the second display for the application to be run within the second display, and launching the application to be run within the 15 second display within the wrapper, the wrapper redirecting data and commands from the second input device to edit controls within the application launched within the second display.41. A method of operating a computer according to 20 claim 40, comprising launching an application shell from the wrapper, setting the application shell as the child of the wrapper, searching for edit controls within the application shell and gaining control over the edit controls found by the search.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0014459A GB2363481A (en) | 2000-06-13 | 2000-06-13 | Multi-user computer |
AU2000256911A AU2000256911A1 (en) | 2000-06-13 | 2000-06-20 | Multi-user computer |
PCT/GB2000/002386 WO2001097022A2 (en) | 2000-06-13 | 2000-06-20 | Multi-user computer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0014459A GB2363481A (en) | 2000-06-13 | 2000-06-13 | Multi-user computer |
Publications (2)
Publication Number | Publication Date |
---|---|
GB0014459D0 GB0014459D0 (en) | 2000-08-09 |
GB2363481A true GB2363481A (en) | 2001-12-19 |
Family
ID=9893578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
GB0014459A Withdrawn GB2363481A (en) | 2000-06-13 | 2000-06-13 | Multi-user computer |
Country Status (3)
Country | Link |
---|---|
AU (1) | AU2000256911A1 (en) |
GB (1) | GB2363481A (en) |
WO (1) | WO2001097022A2 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101965556A (en) * | 2008-01-07 | 2011-02-02 | 智能技术Ulc公司 | Method of launching a selected application in a multi-monitor computer system and multi-monitor computer system employing the same |
US8139072B2 (en) | 2008-04-14 | 2012-03-20 | Mcgowan Scott James | Network hardware graphics adapter compression |
US10715584B2 (en) | 2016-06-28 | 2020-07-14 | Microsoft Technology Licensing, Llc | Multiuser application platform |
CN114595013A (en) * | 2020-11-30 | 2022-06-07 | 华为云计算技术有限公司 | Application control method of terminal equipment and related equipment thereof |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2225136A (en) * | 1988-11-17 | 1990-05-23 | Rupert Alexander Riley | Keyboard selection |
GB2313682A (en) * | 1996-05-29 | 1997-12-03 | Icl Personal Systems Oy | Personal computer system for two or more users |
US5790201A (en) * | 1996-08-08 | 1998-08-04 | Antos; Jeffrey David | Television and computer capability integration |
-
2000
- 2000-06-13 GB GB0014459A patent/GB2363481A/en not_active Withdrawn
- 2000-06-20 WO PCT/GB2000/002386 patent/WO2001097022A2/en active Application Filing
- 2000-06-20 AU AU2000256911A patent/AU2000256911A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2225136A (en) * | 1988-11-17 | 1990-05-23 | Rupert Alexander Riley | Keyboard selection |
GB2313682A (en) * | 1996-05-29 | 1997-12-03 | Icl Personal Systems Oy | Personal computer system for two or more users |
US5790201A (en) * | 1996-08-08 | 1998-08-04 | Antos; Jeffrey David | Television and computer capability integration |
Also Published As
Publication number | Publication date |
---|---|
GB0014459D0 (en) | 2000-08-09 |
WO2001097022A2 (en) | 2001-12-20 |
AU2000256911A1 (en) | 2001-12-24 |
WO2001097022A8 (en) | 2002-05-30 |
WO2001097022A3 (en) | 2003-12-24 |
AU2000256911A8 (en) | 2002-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7735081B2 (en) | Method, apparatus and system for transparent unification of virtual machines | |
US9086839B2 (en) | Multiple user computing method and system for same | |
US7519809B2 (en) | Operating system-wide sandboxing via switchable user skins | |
US7545361B2 (en) | Automatically switching input and display devices between multiple workstations | |
US5546583A (en) | Method and system for providing a client/server interface in a programming language | |
JP4201875B2 (en) | Modality changeable device and change method | |
US8996864B2 (en) | System for enabling multiple execution environments to share a device | |
US7987432B1 (en) | Seamless integration and installation of non-native application into native operating system | |
US7356677B1 (en) | Computer system capable of fast switching between multiple operating systems and applications | |
US8627342B2 (en) | Multi-machine shell | |
US20070288941A1 (en) | Sharing kernel services among kernels | |
US8046692B2 (en) | User interface mapping modules to deployment targets | |
JPH09231037A (en) | Method for providing shared menu bar and computer system | |
JPH09244848A (en) | Method and device for facilitating interaction between source object and target object | |
JPH09190267A (en) | System and method for dynamically reconstituting keyboard allocation based on external event | |
GB2331168A (en) | Modifiable partition boot record | |
US6141008A (en) | Method and system for providing size adjustment for a maximized window in a computer system graphical user interface | |
US20050156925A1 (en) | Graphical user interface for pre-boot operating environment | |
US20050165863A1 (en) | File recovery under Linux operating system | |
GB2363481A (en) | Multi-user computer | |
US7096294B2 (en) | Method and computer program product for graphically providing interrupt request (IRQ) routing information | |
JP2000242473A (en) | Computer | |
KR20070091882A (en) | Variable method for source path of operating system and the computer system for it | |
Stein | Unix survival guide | |
Epstein | Fifteen years after tx: A look back at high assurance multi-level secure windowing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WAP | Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1) |