Patent Publication Number: US-9892064-B2

Title: Universal input device

Description:
BACKGROUND OF THE INVENTION 
     Despite the common use of touchscreen technology in computing devices, many users still prefer to use a physical input device (e.g., keyboard, mouse) for data entry into their computing devices. For some, virtual keyboards that are provided on computing devices can be inconvenient or difficult to use. For example, the virtual keyboard on a smart phone may be too small for entering significant amounts of text via the virtual keyboard. Similarly, some users may prefer to use other types of input devices, such as a wireless mouse or touchpad, to interact with and navigate the display screen of computing devices. 
     It is also typical for users to have a multitude of computing devices that they use on a regular basis, and even simultaneously. For example, a single user may have a desktop, laptop, smart phone, and tablet computer. Each of these devices may also be running a different operating system (OS) (e.g., Microsoft Windows, Apple iOS, Apple Mac OSX, Android, Linux, ChromeOS). 
     As a result, users may often interface with more than one of these computing devices at a time. For example, a user may be using a laptop computer for business purposes and a tablet computer for entertainment purposes. It would be cumbersome for a user to carry separate input devices for each computing device and physically move from one input device connected to one computing device to second input device connected to a second computing device in order to utilize both computing devices. Some alternatives allow reusing a single input device for data entry to multiple computing devices. However, these solutions are not without their drawbacks. 
     In prior solutions, the input device could be paired with computing devices operating different operating systems. However, in these solutions, each time the user wanted to change the host computing device, or host, paired with the input device, the user would be required to toggle a switch on the input device to select the appropriate operating system of the computing device, and then go through a discovery and pairing process with the computing device. 
     While these input devices may be convenient for pairing with and connecting to one computing device at a time, switching connections between multiple computing devices can present their own share of difficulties. For example, each time the user may want the connection switched between computing devices, the reconnection process has to be performed. If the user often switches between computing devices, this can become an inconvenient experience for the user. 
     In addition, in prior solutions, a standard input device would be paired with the host computing device without any regard for what operating system was running on the host computing device. While different operating systems may have different functionalities (and different operations based on key selection), prior solutions did not address this, resulting in improper or incorrect mapping of key inputs to operating system instructions. 
     Based on the foregoing, there is a need in the art for improved methods and systems to be able to use an input device with multiple computing devices running different operating systems. 
     SUMMARY OF THE INVENTION 
     The present invention relates generally to input devices, such as human interface devices, configured for use with electronics or computing devices. More specifically, the present invention relates to methods and systems for using a single input device (e.g., keyboard, mouse, or touchpad devices) with multiple host computing devices that may be running different operating systems, and efficiently switching the single input device between the multiple host computing devices. 
     The present invention further relates to automatically detecting a type of operating system that the host computing device is running based on the detection and analysis of one or more host computing device indicators. Examples of host computing device indicators may include, but are not limited to, host computing device name, services offered to the input device by the host computing device, and active pipes (e.g., data connections) between the host computing device and the input device. In some embodiments of the present invention, the input device may analyze the host computing device indicators to make a determination as to the operating system of the host computing device. 
     The present invention further provides the ability to send keycodes corresponding to the determined operating system, which allows the input device to provide greater functionality and a better user experience over prior art. By configuring the input device to be able to send operating system-specific instructions/commands, the functionality of specific keys can be altered depending on the operating system. 
     Embodiment of the present invention may provide a method of establishing a wireless connection between a data input device and a host computing device. The method comprises receiving, by an input module, data indicating the selection of the host computing device. The method further comprises initiating, by a communications module, a pairing process with the host computing device through a data communications connection. The method further comprises receiving, by the communications module, one or more host computing device indicators from the host computing device, and analyzing the one or more host computing device indicators to automatically determine an operating system associated with the host computing device. When the operating system associated with the host computing device is automatically determined, the method further comprises associating the determined operating system with the selected host computing device. 
     In some embodiments, the method may further comprise, establishing the data communications connection between the host computing device and the data input device, and storing data indicating the determined operating system and data communications connection between the host computing device and the data input device. 
     In some embodiments, analyzing the one or more host computing device indicators to automatically determine the operating system associated with the host computing device may further comprise, determining a probability of the operating system associated with the host computing device based on the one or more host computing device indicators, and comparing the determined probability with a predetermined threshold. In such embodiments, the host computing device may be automatically determined when the determined probability exceeds the predetermined threshold. The host computing device indicators may include device name, active data pipes data, device drivers data, and services running on the host computing device. 
     In some embodiments, associating the determined operating system with the selected host computing device may further comprise sending a set of keycodes from the data input device to the host computing device, wherein the set of keycodes are associated to the determined operating system. 
     In some embodiments, the method may further comprise, associating a default operating system with the selected host computing device when the operating system associated with the host computing device is not automatically determined. 
     In some embodiments, the method may further comprise, receiving, by the input module, data indicating the selection by a user of the operating system running on the host computing device when the operating system associated with the host computing device is not automatically determined 
     In some embodiments, the method further comprises determining a customized mapping of a set of input members disposed on the data input device based on the determined operating system and host computing device specific data. 
     In some embodiments, the data communications connection is one of a Bluetooth™ and Bluetooth LE™ communications protocol. 
     In some embodiments, the data input device is one of a keyboard, a mouse, or a touchpad device. 
     Embodiments of the present invention may further provide a system comprising a host computing device, the host computing device running an operating system, and a data input device, wherein the data input device is connected to the host computing device. The data input device may be connected to the host computing device using a method comprising, receiving, by an input module, data indicating the selection of the host computing device. The method further comprises initiating, by a communications module, a pairing process with the host computing device through a data communications connection. The method further comprises receiving, by the communications module, one or more host computing device indicators from the host computing device, and analyzing the one or more host computing device indicators to automatically determine an operating system associated with the host computing device. When the operating system associated with the host computing device is automatically determined, the method further comprises associating the determined operating system with the selected host computing device. 
     Embodiment of the present invention may provide a method of establishing a wireless connection between a data input device and a host computing device. The method comprises receiving, by an input module, data indicating the selection of the host computing device. The method further comprises initiating, by a communications module, a pairing process with the host computing device through a data communications connection. The method further comprises receiving, by the input module, data indicating the selection of a first operating system running on the host computing device, and associating the first operating system with the selected host computing device. 
     In some embodiments, the method further comprises receiving, by the input module, data indicating the selection of a second operating system. The method further comprises associating the second operating system with the selected host computing device while maintaining the wireless connection between the data input device and the host computing device. 
     In some embodiments, initiating the pairing process with the host computing device through the data communications connection may further comprise detecting, by the input module, a selection of one of a plurality of operating system selection keys, wherein a length of time of the selection exceeds a predetermined threshold. 
     In some embodiments, associating the first operating system with the selected host computing device may further comprise, sending a set of keycodes from the data input device to the host computing device, wherein the set of keycodes are associated with the first operating system. 
     In some embodiments, the data indicating the selection of the first operating system running on the host computer device is received via a user input. 
     In some embodiments, receiving data indicating the selection of the first operating system may further comprise, analyzing one or more host computing device indicators to automatically determine the operating system associated with the host computing device. 
     Embodiment of the present invention may provide a method of establishing a wireless connection between a data input device and a host computing device. The method comprises receiving, by the input module, data indicating the selection of a first operating system running on the host computing device, and associating the first operating system with the selected host computing device. 
     These and other embodiments of the invention along with many of its advantages and features are described in more detail in conjunction with the text below and attached figures. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a diagram of a computer system according to an embodiment of the present invention. 
         FIG. 2  is a simplified block diagram of an input device according to an embodiment of the present invention. 
         FIG. 3A  is a top view of a keyboard device according to an embodiment of the present invention. 
         FIG. 3B  is a bottom view of a keyboard device according to an embodiment of the present invention. 
         FIG. 3C  is a cross-sectional view of a concavity portion of a keyboard device according to an embodiment of the present invention. 
         FIGS. 4A-4C  illustrate examples of host operating system indicators according to an embodiment of the present invention. 
         FIG. 5  is a flow diagram for establishing a pairing and connection between a keyboard device and a host computing device using an automatic operating system determination. 
         FIG. 6  is a flow diagram for establishing a pairing between a keyboard device and a host computing device using a manual operating system determination. 
         FIG. 7  is a flow diagram for an alternative method of establishing a pairing and connection between a keyboard device and a host computing device using a manual operating system determination. 
         FIG. 8  is a flow diagram for an alternative method of establishing a pairing and connection between a keyboard device and a host computing device using a manual selection. 
     
    
    
     DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS 
     Embodiments of the invention are generally directed to systems and methods for operating a universal wireless input device. Embodiments are described with respect to a multi-universal wireless input device in the form of a computer keyboard device. However, embodiments of the invention are not limited to input devices in the form of computer keyboard devices. Other embodiments contemplate input devices in other forms, including, but not limited to, mouse input devices and touchpad input devices. 
     Embodiments of the invention are also directed to automatically determining an operating system running on a paired host computing device by analyzing host operating system indicators received during a pairing process between the host computing device and the input device. 
     I. Exemplary Systems 
       FIG. 1  is a diagram of a computer system  100  according to an embodiment of the present invention. Computer system  100  includes a computer  110 , a monitor  120 , a keyboard device  130 , and a mouse input device  140 . In some embodiments, the mouse input device  140  is a multi-modal mouse input device. In some embodiments, input device may refer to either or both the keyboard device  130  and a mouse input device  140 . In some embodiments, the input device may also be referred to as a data input device. For computer system  100 , the keyboard device  130  and mouse input device  140  are configured to control various aspects of computer  110  and monitor  120 . Computer  110  may include a non-transitory computer-readable storage medium (not shown) that is configured to store computer code, such as keyboard driver software, mouse input device driver software, and the like, where the computer code is executable by a processor (not shown) of the computer  110  to affect control of the computer  110  by the mouse input device  140  and keyboard device  130 . In some embodiments, the keyboard device  130  and the mouse input device  140  may be hardwired, wirelessly coupled, or integrated into the computer  110  (e.g., a touchpad region on the computer  110 ). 
     In addition to providing data input to a computer system  100 , the keyboard device  130  can be utilized in any number of configurations and systems (e.g., personal computers, servers, terminals, etc.) as would be appreciated by one of ordinary skill in the art. For example, the keyboard device  130  may wirelessly connect to and provide input to a smart phone  150  and/or a tablet computer  160 . The computer  110 , smart phone  150  and tablet computer  160  may be collectively or individually referred to as host computing devices. 
       FIG. 1  illustrates the keyboard device  130  with pairings to the smart phone  150 , the tablet computer  160 , and computer  110  over wireless connections  170 . In some embodiments, the wireless connections  170  may use a Bluetooth™ connection. Bluetooth™ is a wireless technology standard for exchanging data over short distances between fixed and mobile devices. Some embodiments can include other means for providing short-range contact or contactless communications capability, such as RFID, infra-red, or other data transfer capability that can be used to exchange data between the keyboard device  130  and the host computing device. In other embodiments, communications between the keyboard device  130  and the host computing device may be conducted using a communications protocol. For example, the communications protocol may be operating at 2.4 GHz or 5.8 GHz. 
       FIG. 2  is a simplified block diagram of an input device  200  according to an embodiment of the present invention. The input device  200  may be in the form of a keyboard device  130 . In other embodiments, the input device  200  may be a keyboard device  130 , a mouse input device  140 , touchpad device, stylus device, or any other device that can provide inputs to a host computing device. The input device  200  may include a bus  205 , an input module  210 , a control circuit  220 , a power source  230  configured to provide power to the input device  200 , a memory component  240 , an input/output (I/O) and communications system  250 , a power management system  260 , and a decision engine  270 . In some embodiments, the control circuit  220 , power source  230 , memory component  240 , input/output (I/O) and communications system  250 , power management system  260 , and the decision engine  270  may be in electronic communication with one another via the bus  205 . The input module  210  may be independently connected to the control circuit  220  and power management block  260 . In some embodiments, the input module  210  may be connected to the other modules via the bus  205 . It should be noted that many other bus  205  configurations for an input device may be used that may include or exclude any of the various system elements shown in  FIG. 2 , as would be known by one of ordinary skill in the art. 
     In some embodiments, the input module  210  may be configured to receive inputs from a plurality of keystroke input elements or devices. In such embodiments, the input module  210  may be operable to receive input in response to a user pressing an alphanumeric key (e.g., QWERTY keys, function keys, numeral or number pad keys, operating system selection keys, etc.), or other suitable input element or device such as a media control button, voice-over-internet-protocol (VoIP) button, touch sensors (e.g., touch pads) and the like. The input module  210  may be capable of generating character data associated with the pressed keystroke input elements and sending the character data to the control circuit  220 . 
     In embodiments of the present invention, the keycodes sent to the host computing device by the input device  200  are dependent on the operating system running on the host computing device. The behavior of the input device  200  is dependent on the operating system. Different keycodes corresponding to the plurality of keystroke input elements may be operating system-specific. For example, selecting the “Home” key results in different functions on different operating systems (e.g., the Home Screen in iOS, the Home Page in the Internet Explorer browser in Windows). The ability to send keycodes corresponding to the determined operating system allows the input device  200  to provide greater functionality and a better user experience. 
     In some embodiments, the input module  210  may receive inputs in response to a user rotating an input element in the form of a host selector dial  130   b . In such embodiments, the position of the host selector dial  130   b  may be an indicator to the input module  210  of a user selection (e.g., a selection of a host computing device the input device is connected to). In other embodiments, the input element used for host selection may be in additional forms, including, but not limited to, a switch. 
     In some embodiments, the control circuit  220  may comprise one or more microprocessors (μCs), and the control circuit  220  is configured to control the operation of input device  200 . Alternatively, the control circuit  220  may include one or more microcontrollers (MCUs), digital signal processors (DSPs), field programmable gate arrays (FGPA), programmable logic devices (PLDs), or the like, with supporting hardware/firmware (e.g., memory, programmable I/Os, etc.), as would be appreciated by one of ordinary skill in the art with the benefit of this disclosure. Alternatively, MCUs, μCs, DSPs, and the like, may be configured in other system blocks of system  100 , outside of input device  200 . For example, a microprocessor in computer  110  can be configured to process keyboard input commands from the input module  210  via a wireless or hardwired connection. 
     The memory component  240  may be configured to store data. In some embodiments, the data may include connection and pairing data including, for example, the address of the selected host computing device. In some embodiments, the memory component  240  may be a non-volatile memory. The connection and pairing data may be stored in the memory component  240  even when the keyboard device  130  is powered down, such that when the keyboard device  130  is reactivated, the previously stored pairing data may be restored (e.g., the previously stored data may be used to re-establish the connection between the input device and the host(s)). 
     The I/O and communications block  250  may be configured to provide input/output capabilities to the input device  200 . For example, the I/O and communications block  250  can route data from the input module  210  to the computer system  100 , and from the computer system  100  to the input module  210 , via a hardwire link or wireless connection. The I/O and communications block  250  can route alphanumeric key data, number pad key data, operating system selection data, host selection data, media control data, VoIP data, touch sensor data, and the like, to the computer  110  for further processing. The wireless connection can be Bluetooth™ or any other wireless standard or proprietary wireless network protocol. In some embodiments, the communications block  250  can maintain a wireless connection with multiple hosts such as host computing devices  110 ,  150 , and  160  of  FIG. 1 , either with one host computing device a time or with multiple host computing devices at the same time. In some embodiments, even where the connection is maintained with multiple host computing devices at the same time, the input data may only be sent to one host computing device at a time (e.g., the host computing device currently selected with the host selector dial  130   b ). 
     The power management block  260  may be configured to manage the electrical power supplied by the power source  230  (e.g., batteries, solar panels). In some embodiments, the power management block  260  can route power directly from the power source  230  to the other components of the input device  200 . The power management block  260  can further distribute power from the power source  230  to the other system components (e.g., control circuit  220 , I/O and communications block  250  and the input module  210 , or any combination thereof). 
     In some embodiments, the input device  200  can utilize other energy sources in addition to the power source  230 , including but not limited to, a USB power source, an AC or DC power source, or the like as would be understood by one of ordinary skill in the art. In some embodiments, the input device  200  may receive electrical power from a plurality of sources. 
     The decision engine  270  may comprise code for determining the operating system running on a host computing device. In some embodiments, the input device  200  may receive or retrieve a plurality of host operating system indicators (which may also be referred to as host computing device indicators) from the host computing device. The plurality of host operating system indicators may be processed by the decision engine  270  and the control circuit  220 . In some embodiments, the decision engine  270  may be programmed with an algorithm for analyzing the one or more host operating system indicators to determine the operating system. In some embodiments, the algorithm may weigh each host operating system indicator uniformly. In some embodiments, the decision engine  270  may be programmed to weigh each host operating system indicator differently based on a probability associated with each host operating system indicator on how likely the host operating system indicator indicates one operating system over another operating system. 
     In some embodiments, the algorithm for analyzing the host operating system indicators may be modified and updated (e.g., via a firmware update). 
     The input device  200  may also include a non-transitory computer-readable storage medium comprising a plurality of computer-readable instructions tangibly embodied on the computer-readable storage medium, executable by a data processor. 
       FIG. 3A  is a top view of keyboard device  130  according to an embodiment of the present invention. The input device in  FIG. 3A  is in the form of a keyboard device  130 . In other embodiments, the input device may be a mouse input device, a touchpad device, a stylus, etc. The keyboard device  130  may include a keyboard housing  130   a  (which can also be referred to as a housing), a host selector dial  130   b , operating system selection keys  130   c , and a concavity  130   e  (e.g., slot) in the keyboard housing  130   a  configured to hold a host computing device (e.g., a smart phone  150 , a tablet computer  160 ). 
     In some embodiments, the concavity  130   e  may be configured to hold more than one host computing device. The shape and length of the concavity  130   e  in the keyboard housing  130   a  is for illustrative purposes only. The shape of the keyboard housing  130   a  is for illustrative purposes only. In some embodiments, the shape of the concavity  130   e  and the keyboard housing  130   a  may be different from that depicted in  FIG. 3A . In some embodiments, the concavity  130   e  may be sized to different types of host computing device from different manufacturers. 
       FIG. 3C  is a cross-sectional view of a concavity portion  130   e  of a keyboard device  130  according to an embodiment of the present invention. The walls of the concavity  130   e  may be angled to hold the host computing device between an angle of 45 degrees and 70 degrees. In some embodiments, the angles of the walls of the concavity  130   e  may be different angles or the same angles. For example, an angle of the front wall of the concavity  130   e  (e.g., the wall closer to the input members) may be 70 degrees, while an angle of the rear wall of the concavity  130   e  (e.g., the wall further away from the input members) may be 66 degrees. The angles of the front wall and the rear wall of the concavity  130   e  may be different angles that would allow the host computing device, when inserted in the concavity  130   e  to be held at an angle away from a user using the host computing device. 
     In some embodiments, the length of the concavity  130   e  may be 260 mm. In some embodiments, the width of the concavity  130   e  may be 12.7 mm. In some embodiments, the concavity  130   e  may taper as the depth increases. For example, the width of the concavity  130   e  may be 12.7 mm at the top of the concavity  130   e  and 10.6 mm at the bottom of the concavity  130   e . In some embodiments, the depth of the concavity  130   e  may be 11 mm. 
     In some embodiments, the concavity  130   e  may be formed by an injected molding process. In some embodiments, the concavity  130   e  may be formed by a double injected molding process with a softer or pliable material (e.g., rubber) layer overlain on a plastic molding material. 
     In addition, a plurality of input members or input keys may also be disposed on the surface of the keyboard housing  130   a . The plurality of input members may include alphanumeric keys, VoIP control keys, media control keys, function keys, number pad keys, and the like. The layout of the input keys shown in  FIG. 3A  is merely for illustration. In some embodiments, the layout of the input keys may be different from the layout shown in  FIG. 3A . 
     The keyboard device  130  may support wireless communication (e.g., Bluetooth™ Bluetooth LE™, infrared (IR), radio frequency (RF), and the like). Some embodiments may have one or more hardwired connections for data transfer (e.g., USB, FireWire, etc.) and/or external power sources (e.g., USB, AC adapter, etc.). 
     In some embodiments, the host selector dial  130   b  and the operating system selection keys  130   c  may be used to manage wireless connections between the keyboard device  130  and one or more of a plurality of host computing devices (e.g., the computer  110 , the smart phone  150 , the table computer  160 ). In some embodiments, the operating system selection keys  130   c  may be also be used to initiate the process of connecting the keyboard device  130  and the host computing device. For example, the operating system selection keys  130   c  may also be Bluetooth™ communication keys that, when selected, may begin the pairing process between the keyboard device  130  and the host computing device and select the operating system running on the host computing device. 
     In some embodiments, the host selector dial  130   b  may be used to select a host (e.g., to select from one of a plurality of data stored in the memory component  240  of the keyboard device  130  associated with a different host). In some embodiments, the host selector dial  130   b  may be movable between two or more positions, with each position of the host selector dial  130   b  indicating and representing a connection with a different host computing device. In some embodiments, host indicators (e.g., “1”, “2”, “3”, etc.) may be printed on the keyboard housing  130   a , each host indicator denoting the host currently selected by the host selector dial  130   b.    
     In other embodiments, the operating system selection keys  130   c  may be part of the host selector dial  130   b . In such embodiments, a first position may correspond to a host with a first predetermined operating system (e.g., Windows), a second position may correspond to a host with a second predetermined operating system (e.g., iOS). In some embodiments, the number of host selectors and the predetermined operating system associated with each host selector may not be limited (e.g., two or more host selectors may correspond to the Windows operating system). 
     In other embodiments, a source of sensory feedback is associated with each of the plurality of hosts. In some embodiments, a light source such as a light emitting diode (LED) may provide sensory feedback to the user. In some embodiments, a plurality of light sources may be embedded in the keyboard housing  130   a . In such embodiments, an activated LED may indicate the selected host. In other embodiments, the sensory feedback is in the form of an auditory or tactile feedback (i.e., a different sound or vibration may be emitted for each of the plurality of hosts to indicate which is active). 
     In other embodiments, a liquid-crystal display (LCD) may be disposed on or in the keyboard housing  130   a . In such embodiments, when a host is selected, the LCD may display the host that is selected and active. In some embodiments, the LCD may display the name of the host computing device and/or the type of operating system (e.g., Android, Windows, iOS) running on the host computing device connected to the keyboard device  130 . In such embodiments, the name of the host computing device may be received by the I/O and communications system  250  of the keyboard device  130  via a wireless connection with the host computing device. In some embodiments, the name of the host displayed on the LCD may be customizable by a user (e.g., by entering a name using the alphanumeric input members on the keyboard device  130 ). In such embodiments, the name of the host may be customized by the user during the first connection of the host computing device to the keyboard device  130 . 
     In other embodiments, managing the multiple pairings may be conducted using a capactive touch region. In such embodiments, the capacitive region may be activated by the detected presence of the user in proximity to the capactive region, or by the physical touch of the user&#39;s finger on the capactive touch region. Specific portions of the capactive region may be designated for different pairings. In such embodiments, rather than depressing a physical key, the user can place their finger close to or on a region and the input module  210  in the keyboard device  130  can detect that the user wants to pair with the host computing device associated with the selected region of the keyboard device  130 . 
     The host selector dial  130   b , or alternatively, the selector switch or capactive region, may be disposed on any part of the surface of the keyboard device  130 , or other input devices (e.g., mouse input device  140  or touchpad device), to allow the user to access and manage the connections between the keyboard device  130  and the multiple host computing devices. 
     In some embodiments, the keyboard device  130  may be configured to automatically determine the operating system on a host computing device. In such embodiments, the manual selection of one of the operating system selection keys  130   c  may not be required. 
     In other embodiments, the operating system selection keys  130   c  may be used to select a type of operating system running on a host computing device as part of the pairing process. The operating system selection keys  130   c  may include a plurality of input elements, each input element associated with a different operating system. For example, one operating system selection key  130   c  may be for pairing with a host computing device running Windows, while another operating system selection key  130   c  may be for pairing with a host computing device running iOS. 
     In some embodiments, one of the plurality of operating system selection keys  130   c  may be selected to initiate a pairing process. By selecting an operating system selection keys  130   c , the keyboard device  130  may be placed into a discoverable mode. When the keyboard device  130  is in the discoverable mode, the keyboard device  130  may be detected by one or more host computing devices. When the keyboard device  130  is selected for pairing while in discoverable mode, the host computing device and the keyboard device  130  may be paired. In some embodiments, the pairing process may involve the exchange of a passkey or other authentication value between the host computing device and the keyboard device  130 . In some embodiments, the exchange may only be required to be performed once, with future connections and authentications performed automatically. 
     In some embodiments, each input element may also be associated with an LED indicator light  130   d . The LED indicator light  130   d  may provide sensory feedback to indicate that the keyboard device  130  is in a discovery process or is currently paired to a host computing device. For example, when the LED indicator light  130   d  is blinking, it may indicate the keyboard device  130  is in a discovery process, and when the indicator light  130   d  is switched on continuously, it may indicate the keyboard device  130  is paired to a host computing device. In other embodiments, the sensory feedback may be provided by other means, including a LCD display or an auditory feedback. 
     In some embodiments, the display may be an active (OLED or LCD) display or an electronic paper (black/white) passive display. 
     In some embodiments using an active display, the display may be hidden under the frame of the keyboard device  130  and be visible only when lit. The display may be active while the keyboard device  130  is in discoverable mode. The indicator may be an icon representing the type of host computing device connected (i.e., a symbol of a tablet or desktop computer) or a textual indication (i.e., “iPad™”). The display may also indicate the status of Bluetooth™ connections (or other communication protocols). For example, the Bluetooth™ connection status could display one of the following messages: “Connecting”, “Connected”, “Connection Failed”, or “Switching Host computing devices.” 
     The active display and the indicator may be active for a predefined period of time (i.e., a timeout period), in order to lower energy consumption. When the keyboard device  130  is switched on, the active display may display the current host computing device paired with the keyboard device  130 . 
     In other embodiments using a passive electronic paper display, the display may be always active but updated/refreshed only during the discovery mode. The indicators may be as described above with respect to embodiments with an active display. In some embodiments, when the passive electronic paper display is not displaying pairing or connecting information, as described above, the display can be used to provide other information, including current time, current temperature, battery usage, etc. 
     In some embodiments, the display is activated when the host selector dial  130   b  is moved, when the keyboard device  130  is powered on, or when the keyboard device  130  is coming out of a low power mode caused by user inactivity. 
       FIG. 3B  is a bottom view of a keyboard device  130  according to an embodiment of the present invention. The keyboard device  130  may include a power switch  130   f  and a power source indicator  130   g . The power switch  130   f  and power source indicator  130   g  may be disposed on the surface or partially within the keyboard housing  130   a.    
     II. Automatic Mode 
     In some embodiments of the present invention, when the keyboard device  130  is being paired to a new host, the keyboard device  130  may begin a process to automatically determine a type of operating system running on the host computing device (e.g., computer  110 , smart phone  150 , tablet computer  160 ) associated with the host indicator, and once determined, automatically configure the keyboard device  130  for operations with the determined operating system. Embodiments of the present invention are discussed with respect to an input device in the form of a keyboard device  130 . However, other embodiments may contemplate the use of other input devices in a similar manner, including a mouse input device  140 , a touchpad or a touchscreen device. 
     In some embodiments, once the discoverable process is initiated between the keyboard device  130  and the host computing device, the keyboard device  130  may receive data from the host computing device via the input/output (I/O) and communications system  250 . The data from the host computing device may include host operating system indicators, which also be referred to as host-type indicators. Examples of host operating system indicators may include: a device name, services running on the host computing device, active data pipes, device drivers data, and a custom pattern. The decision engine  270  may use one or more of the host operating system indicators to determine what operating system is running on the host computing device. In some embodiments, the decision engine  270  may evaluate each available or received host operating system indicator and assign a probability as to the level of assurance that the each host operating system indicator indicates one operating system over another operating system. 
     In some embodiments, the decision engine  270  may evaluate each host operating system indicator until a determination can be made. In such embodiments, once a determination is made, the decision engine  270  may stop evaluating host operating system indicators, even if additional host operating system indicators are available. In some embodiments, a determination may be made by the decision engine  270  when the probability calculated by the decision engine  270  reaches a minimum threshold. In some embodiments, the decision engine  270  may iteratively analyze each available host operating system indicator until the minimum threshold is achieved. 
     In some embodiments, the presence of a particular host operating system indicator may be a clear indicator that a particular operating system is running on the host computing device. (e.g., 100% probability). Similarly, a particular host operating system indicator may be a clear indicator that a particular operating system is not running on the host computing device (e.g., 0% probability). Other host operating system indicators may only provide partial certainty as to the operating system (e.g., 1%-99% probability). For example, a device name containing “iPhone” or “iPad” would indicate with a high degree of probability that the host computing device is running the iOS operating system, and would indicate with a low degree of probability that the host computing device is running the Windows operating system. 
     A. Host Name Matching 
     Device name matching may identify the operating system running on the selected host using a combined search for specific identifiers within the host name that might permit the determination of the operating system. Typically, default host names adhere to a specific pattern chosen by each manufacturer. For example, some manufacturers may include a device type identification in the device name (e.g., Jack&#39;s iPod, Jack&#39;s iPhone), while other manufacturers may include specific model names in the device name (e.g., Nexus5, Nexus7) or use a specific pattern (e.g., SM-P900, SM-T800). 
     As illustrated in  FIG. 4A , the process of device name matching may be based on exact name comparison, a string search, or pattern matching. For example, an exact name comparison for “Nexus5” may provide 95% probability that the matching device is running the Android operating system. Similarly, a string search comparison for “iPod” may provide 95% probability that the matching device is running the iOS operating system, while the string search comparison for “MacBook” may provide 95% probability that the matching device is running the Mac OSX operating system. A pattern matching search for “NexusN,” where “N” is a variable number, may provide 80% probability that the matching device is running the Android operating system. The probabilities shown in  FIG. 4A  are exemplary and may be based on predetermined probabilities. In some embodiments, the probabilities may be modified by a user or by a manufacturer. In some embodiments, the probabilities may be automatically updated based on pairing processes performed by the keyboard device  130 . Additional examples are depicted in  FIG. 4A . However, embodiments of the present invention are not limited to the examples in  FIG. 4A . 
     B. Services on Host Computing Device Matching 
     Each host computing device may have a specific set of services that are offered to an input device that is connected or paired to the host computing device. The specific set of services may be different based on the type of operating system. The decision engine  270  may use data from the host computing device indicating the services offered by the host computing device in determining the type of operating system running on the host computing device. 
     For example, as illustrated in  FIG. 4B , the host computing device may offer Apple-proprietary services like MFi (Made for iPhone/iPod/iPad) or ANCS (Apple Notification Center Service). In such a situation, the likelihood of these services being offered by another operating system may be low. The presence of one or both of these services would provide a strong probability that the device is running the iOS or Mac OSX operating systems. Additional examples are depicted in  FIG. 4B . However, embodiments of the present invention are not limited to the examples in  FIG. 4B . 
     In some embodiments, the presence of a combination of standardized protocols may be sufficient to exclude specific operating systems. 
     C. Active Pipes Matching 
     Active pipes represent active data connections that have been established between the keyboard device  130  and the operating system running on a host. In some embodiments, as different operating systems have different capabilities and needs, the set of active data communications channels may be different depending on the operating system. In some embodiments, pipes that are active or inactive may provide information to allow the decision engine  270  to include or exclude particular operating systems. 
     For example, as illustrated in  FIG. 4C , where the host computing device has an active communications channel for “Android Wear”, it may provide 100% probability that the matching device is running the Android operating system. In another example, the absence of mouse collection may be indicative of an iOS operating system as other operating systems (e.g., Windows, MacOSX, Chrome and Android) would typically choose to receive mouse data. Additional examples are depicted in  FIG. 4C . However, embodiments of the present invention are not limited to the examples in  FIG. 4C . 
     D. Custom Patterns Matching 
     In some embodiments, the host computing device may implement a specific usage of standard human interface device (HID) messages such as “Set report” and “Set feature”, where the host computing device may generate a pattern that is unique to that operating system. This could be detected by the input/output (I/O) and communications system  250  of the keyboard device  130  as an indicator of the presence of a particular operating system. 
     For example, a host computing device may use a series of keyboard LEDs as a pattern, such as “turn ON the Caps Lock LED, turn on the Num Lock LED, and turn on the Scroll Lock LED.” Where this pattern is specific to a particular operating system, the decision engine  270  may determine that the host computing device is running the particular operating system. 
     In some embodiments, the patterns may be implemented by a manufacturer of an operating system. 
     E. Device Drivers and Specific Applications Matching 
     In some embodiments, on host computing devices that load a device driver to communicate with an input device (e.g. the keyboard device  130 ), the detection of a particular device driver may be used by the decision engine  270  to determine the operating system running on the host computing device. In some embodiments, the device driver may notify the keyboard device  130  which operating system the host computing device is running. In some embodiments, this may occur during the device discoverable and pairing process. 
     For example, when a dongle using a 2.4 GHz proprietary protocol is connected to a host computing device (e.g., plugged into the host computing device), the corresponding device driver may be loaded by the host computing device. The dongle using the 2.4 GHz proprietary protocol may detect the operating system running on the host operating system from the running device driver and may communicate this information to every input device that connects to the dongle. The dongle may communicate the information via a unique command or message to the input devices. 
     F. Fallback Procedure 
     In some embodiments, where a determination cannot be made based on the host operating system indicators, the keyboard device  130  may select an operating system based on a fallback procedure. In some embodiments, the fallback procedure may be triggered when the probability level determined by the decision engine  270  fails to reach a minimum threshold to make a determination. 
     In some embodiments, an input device may have a default operating system to which it will be configured. The default operating system may be based on the type of host computing device the input device will typically be used for. For example, an input device in the form of a tablet keyboard device may have the iOS operating system as the default, while a mouse input device may have the Windows operating system as the default. 
     In some embodiments, the default operating system may be determined based on operating system grouping. In such embodiments, if a single operating system cannot be determined, the decision engine  270  may select between operating system families. For example, Windows, Linux, Android, and ChromeOS may be associated as Operating System Family #1, and Mac OSX and iOS may be associated as Operating System Family #2. As shown in  FIG. 3A , two operating system selection keys  130   c  are provided: one for Operating System Family #1, and the other one for Operating System Family #2. It would be understood by one of ordinary skill in the art that the number of groups is not limited and that in other embodiments, the operating system families may include different groupings and/or a greater number of groups. 
     In some embodiments, when the operating system associated with the host computing device cannot be automatically determined, the user can manually select the operating system using the operating system selection keys  130   c . In such embodiments, the input module  210  in the keyboard device  103  may receive data indicating the selection by the user of the operating system running on the host computing device 
     III. Manual Mode 
     In some embodiments of the present invention, when the keyboard device  130  is switched on or the host selector dial  130   b  is moved from a first host indicator to a second host indicator, the keyboard device  130  may be placed into a discoverable mode. When in the discoverable mode, the type of operating system running on a host computing device (e.g., computer  110 , smart phone  150 , tablet computer  160 ) associated with the second host indicator, may be manually selected by the user using the operating system selection keys  130   c . Once the operating system is manually selected, the keyboard device  130  may be configured to operate with the selected operating system. Embodiments of the present invention are discussed with respect to an input device in the form of a keyboard device  130 . However, other embodiments may contemplate the use of other input devices in a similar manner, including a mouse input device  140  and touchpad or touchscreen devices. 
     In some embodiments, the operating system selection keys  130   c , as shown in  FIG. 3A , may include two input members, where a first operating system selection key is associated with a first group of operating systems (i.e., Windows, Android) and a second operating system selection key is associated with a second group of operating systems (i.e., Apple, iOS, Max OSX). It would be understood by one of ordinary skill in the art that the number of groups is not limited and that in other embodiments, the operating system groups may include different groupings and/or a greater number of groups. 
     In some embodiments, the operating system selection keys  130   c  may be linked to the pairing connection function of the keyboard device  130 . For example, the operating system selection keys  130   c  may also be Bluetooth™ communication keys that may be used to initiate a pairing process between the keyboard device  130  and the host computing device. 
     In some embodiments, the manual mode can be used to select a correct operating system in situations where the automatic operating system determination process results in an incorrect determination. In such embodiments, while the keyboard device  130  may be properly paired with the host computing device via the wireless communication, the operating system determined may not be the correct operating system. In such embodiments, the user may select the correct operating system using the operating system selection keys  130   c  without interrupting the wireless connection to the host computing device. In such embodiments, the keyboard device  130  may then send the keycodes associated with the correct operating system to the host computing device to allow proper functionality and mapping between the input members of the keyboard device  130  and the correct operating system. 
     In other embodiments, the manual mode can be used in a similar manner to select a different operating system upon a conscious decision from the user, in situations where the host computing device may be running multiple instances of different operating system environments such as in the case of Virtual Machine usage. In such situations, the keyboard device  130  may be operable to work with the multiple operating system environments by allowing the user to manually select the appropriate operating system required at a given time. 
     IV. Exemplary Methods 
       FIG. 5  is a flow diagram for establishing a pairing and connection between a keyboard device  130  and a host computing device using an automatic operating system determination. 
     In step  510 , the keyboard device  130  receives data indicating that the keyboard device has been placed in a discoverable mode for pairing the keyboard device  130  with a host computing device (e.g., a computer  110 , a smart phone  150 , a tablet computer  160 ). In some embodiments, powering on the keyboard device  130  may place the keyboard device  130  automatically in the discoverable mode. 
     In step  520 , the keyboard device  130  receives data indicating a selection of a host using the host selector dial  130   b . In some embodiments, the selected host may be the host selected by the host selector dial  130   b  prior to powering on the keyboard device  130 . In some embodiments, after the power-up sequence has completed and the keyboard device  130  is in use, the user may move the host selector dial  130   b  from a first host indicator to a second host indicator. The data indicating the selection of a host using the host selector dial  130   b  may be received via an input module  210  in the keyboard device  130 . 
     In step  530 , the keyboard device  130  initiates a pairing process with the host computing device. In some embodiments, the I/O and communications block  250  may be configured to establish a connection between the keyboard device  130  and the host computing device. In some embodiments, the pairing process may be to establish a wireless connection between the keyboard device  130  and the host computing device. In some embodiments, the wireless connection can be Bluetooth™ or any other wireless standard or proprietary wireless network protocol. 
     In some embodiments, the user may have to interact with the host computing device to initiate a connection with the keyboard device  130 . For example, the user may have to input a code into the host computing device to confirm that the user wants to pair the keyboard device  130  with the host computing device. The user may be required to access settings in the host computing device and select the keyboard device  130  from a list of available devices. In other embodiments, the user does not have to interact with the host computing device to initiate the connection with the keyboard device  130 . 
     In step  540 , the I/O and communications block  250  may receive one or more host operating system indicators from the host computing device. In some embodiments, the host operating system indicators may be received as part of the pairing process. Examples of host operating system indictors may include: a device name, services running on the host computing device, active pipes, device drivers data, and a custom pattern. 
     In step  550 , the decision engine  270  may analyze the operating system indicators to determine the operating system running on the host computing device. The decision engine  270  may use one or more of the host operating system indicators to determine which operating system is running on the host computing device. In some embodiments, the decision engine  270  may evaluate each available or received host operating system indicator and assign a probability as to the level of assurance that each host operating system indicator indicates one operating system over another operating system. 
     In step  560 , the decision engine  270  may determine whether the operating system running on the host computing device is determinable. The determination may be made by the decision engine  270  based on the analysis of the host operating system indicators. In some embodiments, this may involve determining a probability of the operating system associated with the host computing device based on the one or more host computing device indicators. In some embodiments, the determination may be made by the decision engine  270  when a probability of a particular operating system, calculated by the decision engine  270 , reaches a minimum or predetermined threshold. 
     In step  570 , when the decision engine  270  is able to determine the operating system running on the host computing device, the keyboard device  130  associates the determined operating system with the selected host indicator. In some embodiments, associating the selected operating system with the selected host computing device includes sending a set of keycodes from the keyboard device  130  to the host computing device, where the set of keycodes are associated with the selected operating system. 
     In some embodiments, when the host computing device is associated with the selected host, the connecting and pairing information can be stored in a non-volatile memory component  240 . In such embodiments, after the keyboard device  130  is powered down and subsequently powered back up, the connecting and pairing information is accessed from the memory component  240  to re-enable the connection. If the selected host selector dial  130   b  is currently associated with a different host computing device through a previous pairing process, the connection to the previous host computing device may be dropped and the selected host selector dial  130   b  associated with the newly selected host computing device. 
     In some embodiments, the decision engine  270  may be capable of determining host computing device specific data in addition to the operating system. In such embodiments, the keyboard device  130  may determine a customized mapping of a set of input members disposed on the keyboard device  130  based on both the determined operating system and host computing device specific data. For example, the decision engine  270  may be able to distinguish between an iPhone and an iPad, even where both are running the same iOS operating system. In such embodiments, features unique to each device may be mapped to the keyboard device  130 . 
     In step  580 , the decision engine  270  determines whether there are additional host operating system indicators. When the decision engine  270  determines that there are additional host operating system indicators, the decision engine  270  may iteratively analyze each available host operating system indicator until the minimum threshold is achieved and the operating system running on the host computing device can be determined. Alternatively, when the decision engine  270  determines that there are not additional host operating system indicators, the process proceeds to step  590 . 
     In some embodiments, the host operating system indicators received from the host computing device may be analyzed in parallel by the decision engine  270 . 
     In step  590 , when the decision engine  270  is not able to determine the operating system running on the host computing device and there are no additional host operating system indicators, the keyboard device  130  associates a default operating system with the selected host indicator. In some embodiments, an input device may have a default operating system to which it will be configured. In some embodiments, the default operating system may be determined based on operating system grouping. 
     In some embodiments, when the default or determined operating system is improper or incorrect, the user may modify the operating system directly by selecting the operating system manually using the appropriate operating system selection keys  130   c , as stated above. 
     It should be appreciated that the specific steps illustrated in  FIG. 5  provide a particular method  500  according to an embodiment of the present invention. Other sequences of steps may also be performed according to alternative embodiments. For example, alternative embodiments of the present invention may perform the steps outlined above in a different order. Moreover, the individual steps illustrated in  FIG. 5  may include multiple sub-steps that may be performed in various sequences as appropriate to the individual step. Furthermore, additional steps may be added or removed depending on the particular applications. One of ordinary skill in the art would recognize many variations, modifications, and alternatives. 
       FIG. 6  is a flow diagram for establishing a pairing between a keyboard device  130  and a host computing device using a manual operating system selection during the pairing. 
     In step  610 , the keyboard device  130  receives data indicating that the keyboard device has been placed in discoverable mode for pairing the keyboard device  130  with a host computing device (e.g., a computer  110 , a smart phone  150 , a tablet computer  160 ). In some embodiments, powering on the keyboard device  130  may place the keyboard device  130  automatically in discoverable mode. 
     In step  620 , the keyboard device  130  receives data indicating a selection of a host using the host selector dial  130   b . In some embodiments, the selected host may be the host selected by the host selector dial  130   b  prior to powering on the keyboard device  130 . In some embodiments, after the power-up sequence has completed and the keyboard device  130  is already in use, the user may move the host selector dial  130   b  from a first host indicator to a second host indicator. The data indicating the selection of a host using the host selector dial  130   b  may be received via an input module  210  in the keyboard device  130 . 
     In step  630 , the keyboard device  130  initiates a pairing process with the host computing device. In some embodiments, the I/O and communications block  250  may be configured to establish a connection between the keyboard device  130  and the host computing device. In some embodiments, the pairing process may be to establish a wireless connection between the keyboard device  130  and the host computing device. In some embodiments, the wireless connection can be Bluetooth™ or any other wireless standard or proprietary wireless network protocol. 
     In some embodiments, the user may have to interact with the host computing device to initiate a connection with the keyboard device  130 . For example, the user may have to input a code into the host computing device to confirm that the user wants to pair the keyboard device  130  with the host computing device. The user may be required to access settings in the host computing device and select the keyboard device  130  from a list of available devices. In other embodiments, the user does not have to interact with the host computing device to initiate the connection with the keyboard device  130 . 
     In step  640 , the keyboard device  130  receives data indicating a selection of an operating system, the user selecting the operating system through the operating system selection keys  130   c . In some embodiments of the present invention, the input module  210  may then receive data indicating a selection of one of a plurality of operating system selection keys  130   c  disposed on the keyboard housing  130   a  of the keyboard device  130 . In some embodiments, the user must select the one of the plurality of operating system selection keys  130   c  for a pre-established period in order to make the selection of the operating system type associated with the selected operating system selection keys  130   c.    
     It would be understood by one of ordinary skill in the art that at any time the user can change the operating system selection “on the fly” by using the plurality of operating system selection keys  130   c . In some embodiments, the user can select a new operating system using the plurality of operating system selection keys  130   c  while the pairing connection between the keyboard device  130  and the host computing device is maintained. This may allow the user to use the keyboard device  130  with various operating system without having to conduct a new pairing process. The user may want to change the operating system associated with a paired connection between the keyboard device  130  and the host computing device for many reasons. For example, the user may have made an incorrect operating system selection during a manual operating system determination process. In other example, the user may want to correct the operating system determined in an automatic operating system determination process. In some embodiments, the user may want to change the operating system when using a host computing device running multiple operating system environments, such as in the case of virtual machines. 
     In step  650 , the keyboard device  130  associates the selected operating system with the selected host indicator. In some embodiments, associating the selected operating system with the selected host may include sending a set of keycodes from the keyboard device  130  to the host computing device. In some embodiments, the set of keycodes sent from the keyboard device  130  to the host computing device may be unique to the determined operating system. 
     In some embodiments, when the host computing device is associated with the selected host, the pairing and connecting information can be stored in a non-volatile memory component  240 . In such embodiments, after the keyboard device  130  is powered down and subsequently powered back up, the host pairing and connecting information is accessed from the memory component  240  to re-enable the pairing connection. If the selected host indicator of host selector dial  130   b  was previously associated with a different host computing device, the connection to the previous host computing device may be dropped and the selected host indicator of host selector dial  130   b  associated with the newly discovered host computing device. 
     In step  660 , the keyboard device  130  may receive data indicating the selection of a second host indicator. In some embodiments, when the keyboard device  130  receives data indicating the selection of another host, the process returns to step  630 . In embodiments of the present invention, the process of establishing connections with the keyboard device  130  may be repeated for other host computing devices. 
     The present invention can be implemented in the form of control logic in software or hardware or a combination of both. The control logic may be stored in an information storage medium as a plurality of instructions adapted to direct an information-processing device to perform a set of steps disclosed in embodiments of the present invention. Based on the disclosure and teaching provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the present invention. 
     It should be appreciated that the specific steps illustrated in  FIG. 6  provide a particular method  600  according to an embodiment of the present invention. Other sequences of steps may also be performed according to alternative embodiments. For example, alternative embodiments of the present invention may perform the steps outlined above in a different order. Moreover, the individual steps illustrated in  FIG. 6  may include multiple sub-steps that may be performed in various sequences as appropriate to the individual step. Furthermore, additional steps may be added or removed depending on the particular applications. One of ordinary skill in the art would recognize many variations, modifications, and alternatives. 
       FIG. 7  is a flow diagram for an alternative method of establishing a pairing and connection between a keyboard device  130  and a host computing device using a manual operating system selection, where the selection is done together with the pairing (e.g., using a long press on the operating system selection keys). 
     In step  710 , the keyboard device  130  may be powered on by a user and the keyboard device  130  receives data indicating the selection of a host using the host selector dial  130   b . In embodiments, the host selector dial  130   b  may be moved or switched between one or more hosts. The selected host may be the host indicator at the position the host selector dial  130   b  was in when the keyboard device  130  was powered on. The data indicating the selection of a host using the host selector dial  130   b  may be received via an input module  210  in the keyboard device  130 . 
     In step  720 , the keyboard device  130  may initiate a pairing process when the keyboard device  130  receives data indicating a long press of one of the operating system selection keys  130   c . In such embodiments, the long press of one of the operating system selection keys  130   c  may place the keyboard device  130  in a discoverable mode for pairing the keyboard device  130  with a host computing device. In some embodiments, the long press of one of the operating system selection keys  130   c  may be three seconds. In other embodiments, the length of time may be greater than or less than three seconds. 
     In step  730 , the operating system selected using the operating system selection keys  130   c  in step  720 , is stored in the memory component  240  of the keyboard device  130 . The data indicating the selected operating system may be associated with the host selected using the host selector dial  130   b . In some embodiments, the storage of the operating selected using the operating system selection keys  130   c  may occur simultaneously with the long press of the operating system selection keys  130   c , as described in step  720 . The data indicating the selection of an operating system may be received via a user input (e.g., a selection of one of the operating system selection keys  130   c ). 
     In step  740 , the pairing process between the host computing device and the keyboard device  130  is completed. In some embodiments, the I/O and communications block  250  may be configured to establish a connection between the keyboard device  130  and the host computing device. In some embodiments, the pairing process may be to establish a wireless connection between the keyboard device  130  and the host computing device. In some embodiments, the wireless connection can be Bluetooth™, Bluetooth LE™ or any other wireless standard or proprietary wireless network protocol. The pairing process may also include sending a set of keycodes from the keyboard device  130  to the host computing device, where the set of keycodes is based on the selected operating system running on the host computing device. 
     In step  750 , the input module  210  in the keyboard device monitors data received from the operating system selection keys  130   c  to determine whether one of the operating system selection keys  130   c  has been selected (e.g., pressed or switched). When the input module  210  does not receive data indicating the selection of one of the operating system selection keys  130   c , the input module  210  continues to monitor. 
     In step  760 , when the input module  210  does receive data indicating the selection of one of the operating system selection keys  130   c , the new operating system selected using the operating system selection keys  130   c  in step  750 , is stored in the memory component  240  of the keyboard device  130 . In some embodiments, the selection of the new operating system may be manually overridden the operating system selection made in step  720 . In such embodiments, the pairing process completed in step  740  may not be affected as the host computing device and the keyboard device  130  were successfully paired. In such embodiments, the selection of the new operating system may be to associate a correct set of keycodes with the pairing connection. 
     It should be appreciated that the specific steps illustrated in  FIG. 7  provide a particular method  700  according to an embodiment of the present invention. Other sequences of steps may also be performed according to alternative embodiments. For example, alternative embodiments of the present invention may perform the steps outlined above in a different order. Moreover, the individual steps illustrated in  FIG. 7  may include multiple sub-steps that may be performed in various sequences as appropriate to the individual step. Furthermore, additional steps may be added or removed depending on the particular applications. One of ordinary skill in the art would recognize many variations, modifications, and alternatives. It would be understood by one of ordinary skill in the art that in some embodiments, the selection of the operating system type can be done manually after the pairing process. 
       FIG. 8  is a flow diagram for an alternative method of establishing a pairing and connection between a keyboard device  130  and a host computing device using a manual selection, where the selection is after the pairing, for example, with a subsequent press or selection of the operating system selection keys  130   c.    
     In step  810 , the keyboard device  130  receives data indicating the selection of a host using the host selector dial  130   b . In embodiments, the host selector dial  130   b  may be moved or switched between one or more hosts. The selected host may be the host indicator at the position the host selector dial  130   b  was in when the keyboard device  130  was powered on. The data indicating the selection of a host using the host selector dial  130   b  may be received via an input module  210  in the keyboard device  130 . 
     In step  820 , the keyboard device  130  receives data indicating that the keyboard device has been placed in a discoverable mode for pairing the keyboard device  130  with a host computing device (e.g., a computer  110 , a smart phone  150 , a tablet computer  160 ). The keyboard device  130  may be placed in the discoverable mode, for example, by a dedicated “Connect” button that may be disposed on the keyboard device. 
     In step  830 , a pairing process between the host computing device and the keyboard device  130  is completed. In some embodiments, the I/O and communications block  250  may be configured to establish a connection between the keyboard device  130  and the host computing device. In some embodiments, the pairing process may be to establish a wireless connection between the keyboard device  130  and the host computing device. In some embodiments, the wireless connection can be Bluetooth™, Bluetooth LE™ or any other wireless standard or proprietary wireless network protocol. The pairing process may also include sending a set of keycodes from the keyboard device  130  to the host computing device, where the set of keycodes is based on the selected operating system running on the host computing device. 
     In step  840 , the keyboard device  130  receives a selection of an operating system based on the selection of one of the operating system selection keys  130   c . In embodiments of the present invention, the keyboard device may send a set of keycodes to the host computing device based on the operating system selected using the operating system selection keys  130   c.    
     In step  850 , the input module  210  in the keyboard device monitors data received from the operating system selection keys  130   c  to determine whether one of the operating system selection keys  130   c  has been selected (e.g., pressed or switched). When the input module  210  does not receive data indicating the selection of one of the operating system selection keys  130   c , the input module  210  continues to monitor. 
     In step  860 , when the input module  210  does receive data indicating the selection of one of the operating system selection keys  130   c , the new operating system selected using the operating system selection keys  130   c  in step  750 , is determined. In embodiments of the present invention, the keyboard device may send a new set of keycodes to the host computing device based on the new operating system. In some embodiments, the selection of the new operating system may be to manually override the operating system selection made in step  720 . In such embodiments, the pairing process completed in step  740  may not be affected as the host computing device and the keyboard device  130  were successfully paired. 
     It should be appreciated that the specific steps illustrated in  FIG. 8  provide a particular method  800  according to an embodiment of the present invention. Other sequences of steps may also be performed according to alternative embodiments. For example, alternative embodiments of the present invention may perform the steps outlined above in a different order. Moreover, the individual steps illustrated in  FIG. 8  may include multiple sub-steps that may be performed in various sequences as appropriate to the individual step. Furthermore, additional steps may be added or removed depending on the particular applications. One of ordinary skill in the art would recognize many variations, modifications, and alternatives. It would be understood by one of ordinary skill in the art that in some embodiments, the selection of the operating system type can be done manually after the pairing process. 
     The present invention can be implemented in the form of control logic in software or hardware or a combination of both. The control logic may be stored in an information storage medium as a plurality of instructions adapted to direct an information-processing device to perform a set of steps disclosed in embodiments of the present invention. Based on the disclosure and teaching provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the present invention. 
     In embodiments, any of the entities described herein may be embodied by a computer that performs any or all of the functions and steps disclosed. 
     It should be noted that any recitation of “an”, “an” or “the” is intended to mean “one or more” unless specifically indicated to the contrary. 
     It is also understood that the examples and embodiments described herein are for illustrative purposes only and that various modifications or changes in light thereof will be suggested to persons skilled in the art and are to be included within the spirit and purview of this application and scope of the appended claims. Therefore, the above description should not be understood as limiting the scope of the invention as defined by the claims.