Very simple. The USB Serial amplification subdivision resources in the 0000X01 to 000X45 memory banks hold a specific coupling charge at a normal state. When a USB devise is plugged in, banks -01 to -4 read "high," (bit 2, which is 0001), from the capacitor discharge from the motherboard's on-board USB card. The computer drivers then relay out a multitude of carrier messeges at voltages of -5 and +5v, (0v sent back to the computer indicates the USB devise being removed), as a primary connection-start signal. The USB devise sends back information about iself, in this case, an optical mouse.Dealing with the mouse part, a micro-diode ArSGa lazer element is powered by the USB power, which reflects on a prism, currently positioned to do nothing but let the laser hits the table below. When the laser reflects the table, it converges with the prism, then hitting a M-MOSFET CCD (Micro Metal Oxide Semiconductor Feild-Effect Transistor Charge-Coupled Device)camera element. The CCD usually has anywhere from 25 to about 100 pixel in order to find minute changes in the reflected laser, indicating the below surface shifting, or technically, the mouse shifting above the surface. Using Mendler's Law, UF/A^2=sqrt(FN)2, the mouses microprossesor can easily find the exact location of the specs on the reflected light and their XY coordinates. It works similarly to the old-school ball mouses with their IR emmitters and detectors, except that the mocrocontroller is deally with both axis, not one at a time.Going back to software, every 40th of a second or so, the computer, through, duplexed-style USB transfer, asks for the change in XY coordinates, (∆X,∆Y). The mouse then relays that back to the computer, which sends that data to algorithms, most notalbliy darwinsky's, to then send the appropriate *current* coodinates the the OS level of the computer, which gets relayed to the program level as either a courser movement on the window program, or nearly anything else as programmed into another program.It's interesting to note that when a program-level application asks for change in mouse movement, it is actually given variables which are converted *twice,* from change, to current location, to change. This is because change is only given to the computer at the OS level. If your wondering why the GE MED-Care robot was recalled, this is excactly why. That milisecond delay between "translations" wasn't snyconised with the reset of the running processes. GE is now using the ultra-fast PCI-EU (PCI Express Ultra) to communicate between mouse and computer, so the problem is now gone.Other than optics, the rest of hardware is pretty simple. The mouse relays LEFT_DOWN, LEFT_UP, RIGHT_DOWN, RIGHT_UP, MID_DOWN, MID_UP, and SCROLLCH (change in the scroll-wheel's position), along with the CHANGE_XY variable we I discussed earlier, to the OS level, and has the same changes as with CHANGE_XY.