Skip to main content

Some info on USB and usb-keyboards

USB -- Universal Serial Bus

USB is a communications architecture that gives a personal
computer (PC) the ability to interconnect a variety of devices using a simple four-wire cable. The USB is actually a two-wire serial communication link that runs at either 1.5 or 12 megabits per second (mbs). USB protocols can configure devices at startup or when they are plugged in at run time.

These devices are broken into  various device classes. Each device class defines the common behaviour and protocol for devices that serve similar functions.
The HID class consists primarily of devices that are used by humans to control
the operation of computer systems. Typical examples of HID class devices
include:
  • Keyboards and pointing devices—for example, standard mouse devices, trackballs, and joysticks.
  • Front-panel controls—for example: knobs, switches, buttons, and sliders.
  • Controls that might be found on devices such as telephones, VCR remote controls, games or simulation devices—for example: data gloves, throttles, steering wheels, and rudder pedals.
  • Devices that may not require human interaction but provide data in a similar format to HID class devices—for example, bar-code readers, thermometers, or voltmeters.
HID1_11 PDF
==>page no. 9
====>Protocol codes

A variety of protocols are supported HID devices. The bInterfaceProtocol
member of an Interface descriptor only has meaning if the bInterfaceSubClass
member declares that the device supports a boot interface, otherwise it is 0.

Code for a USB Keyboard Driver from scratch

Code and Instructions to make this work is available on my github profile.

Much more information and many links are available there..

Comments

Popular posts from this blog

Von Neumann machine

Von Neumann Machine is the basic architecture of the modern computer as it laid the foundation for same memory usage for program and data. The Von Neumann Machine consists of three main components : Main Memory C.P.U I/O devices There is already a caption As you can see the C.P.U is also sub divided into two parts : Arithmetic Logic Unit Program Control Unit This allowed the architecture designers to work on different capabilities of the C.P.U. separately. Now we have the control unit and ALU different.. We need to get some instructions to work and some data to work upon. We can get all that data and instructions from Common Memory. Since the processing is fast compared to data retrieval. We need some device to hold data and instructions from memory for processing at the same speed the Processor works... Thus Registers came into play... A processor register is a quickly accessible location available to a digital processor 's central processin...

Threading!

What is Threading? Threads are a relatively lightweight way to implement multiple paths of execution inside of an application. At the system level, programs run side by side, with the system doling out execution time to each program based on its needs and the needs of other programs. Inside each program, however, exists one or more threads of execution, which can be used to perform different tasks simultaneously or in a nearly simultaneous manner. The system itself actually manages these threads of execution, scheduling them to run on the available cores and preemptively interrupting them as needed to allow other threads to run. From a technical standpoint, a thread is a combination of the kernel-level and application-level data structures needed to manage the execution of code. The kernel-level structures coordinate the dispatching of events to the thread and the preemptive scheduling of the thread on one of the available cores. The application-level structures include the call st...

Python + network [One]

Already installed Pycharm community edition. Now writing my first script. It is saved as first.py in Pycharm Projects... I already know how to program and have some experience in python so i'm pretty much up and running for this course. next i did how to run scripts from command line to run from command line one must have to set the executable bit 'on' of the file... here's how to do it chmod +x first.py then we can run first.py by simply typing "' ./"' in front of the file to be exected.... Now what does "." means.... "." Dot represent current directory in Linux and Unix ".." Double Dot represent the upper working directory Now for the second program i wrote was on variable...(simple basic stuff) but had to get hands on so i wrote it and no errors at all... it is saved as var.py Next program is loops.py All i wrote was some for statements and some while statements..... for "FOR" i used multi...