unless otherwise indicated , various terms as used in this specification and in the claims have the following meanings . game play control : a control device which can be moved or otherwise selectively activated by a user so as to generate ( or modify ) a signal , which signal is recognized by game software and causes some event or action in a computer game that is played by executing instructions in that software . examples of game play controls include buttons , switches , d - pads ( i . e ., a direction pad , also known as a cross - key pad ), thumb wheels , track balls , joysticks , thumb sticks ( i . e ., small joysticks positioned so as to be movable by a player &# 39 ; s thumb when used for computer game play ) and triggers . a game play control may be mechanically activated by a user ( e . g ., by physically moving a switch , button , or other control ) or activated by non - mechanical actions ( e . g ., by sensing body heat , sensing changes in capacitive or rf field , etc .). simultaneously viewable : a group of keys on a device are simultaneously viewable if all keys in the group can be viewed from a single angle , i . e ., without having to rotate or otherwise reposition the device . text characters : letters , numerals , punctuation marks and symbols ( e . g ., , , ✓, →, $, *, @, £, ¥, §, ®) that can be represented by unique codes ( e . g ., ascii , unicode , etc .). text characters also include non - english language ( e . g ., japanese , chinese , korean , arabic , russian , etc .) characters , as well as recognized codes such as a space , a line or page break , etc . text input device : an input device having a plurality of text keys . each text key generates a specific code that corresponds to a letter , numeral , symbol or other text character . a text key may , in combination with one or more other keys , generate a different code that corresponds to a different text character . although a standard keyboard is an example of a text input device , other devices having fewer or more features than a keyboard could also be text input devices . a text input device may have keys , buttons or other controls that are not text keys . [ 0054 ] fig1 shows an exemplary gaming system 10 . although gaming system 10 will be described in some detail and used as an example to describe the invention , the invention is not limited to the particular example ( s ) provided . instead , the invention is only limited by the attached claims . gaming system 10 includes a game console 12 and up to four game controllers , as represented by game controllers 14 ( 1 ) and 14 ( 2 ). game console 12 is equipped with an internal hard disk drive ( see fig2 ) and a portable media drive 16 that supports various forms of portable storage media as represented by optical storage disc 18 . examples of suitable portable storage media include dvd , cd - rom , game discs , and so forth . game console 12 has four slots 20 on its front face to support up to four game controllers , although the number and arrangement of slots may be modified . a power button 22 and an eject button 24 are also positioned on the front face of game console 12 . power button 22 switches power to the game console and eject button 24 alternately opens and closes a tray of the portable media drive 16 to allow insertion and extraction of storage disc 18 . game console 12 connects to a television or other display ( not shown ) via an interfacing cables 26 . a power cable 28 provides power to the game console . game console 12 may further be configured with broadband capabilities , as represented by the cable or modem connector 30 to facilitate access to a network , such as the internet . each game controller 14 is coupled to game console 12 via a wire or wireless interface . in the illustrated implementation , the game controllers are usb ( universal serial bus ) compatible and are connected to game console 12 via serial cables 32 ( 1 ) and 32 ( 2 ). game controllers 14 ( 1 ) and 14 ( 2 ) may be equipped with any of a wide variety of game play controls . as illustrated in fig1 each game controller 14 is equipped with two thumb sticks 34 , a d - pad 36 , buttons 38 , and two triggers 40 . these mechanisms are merely representative , and other known control mechanisms may be substituted for or added to those shown in fig1 . a memory unit ( mu ) 42 may be inserted into game controller 14 or game console 12 to provide additional and portable storage . portable memory units enable users to store game parameters and port them for play on other consoles . for example , a user can save a game to a memory unit 42 using a particular game console then use that saved game data with a game executed on a different game console . in the described implementation , each game controller is configured to accommodate up to two memory units 42 , although more or less than two units may be employed in other implementations . a particular game console 12 may be configured to accommodate any number of memory units 42 . gaming system 10 may also be capable of playing music and videos in addition to games . with the different storage offerings , titles can be played from the hard disk drive or portable medium 18 in drive 16 , from an online source , or from a memory unit 42 . a sample of what gaming system 10 is capable of playing back could include : ( 1 ) game titles played from cd and dvd discs , from the hard disk drive , or from an online source ; ( 2 ) digital music played from a cd in portable media drive 16 , from a file on the hard disk drive ( e . g ., windows media audio ( wma ) format ), or from online streaming sources ; and / or ( 3 ) digital audio / video played from a dvd disc in the portable media drive 16 , from a file on the hard disk drive ( e . g ., active streaming format ), or from online streaming sources . [ 0060 ] fig2 shows functional components of gaming system 10 in more detail . game console 12 has a central processing unit ( cpu ) 50 and a memory controller 52 that facilitates processor access to various types of memory , including flash rom ( read only memory ) 54 , a ram ( random access memory ) 56 , a hard disk drive 58 , and portable media drive 16 . cpu 50 is equipped with a level 1 cache 60 and a level 2 cache 62 to temporarily store data and hence reduce the number of memory access cycles , thereby improving processing speed and throughput . cpu 50 , memory controller 52 , and various memory devices are interconnected via one or more buses , including serial and parallel buses , a memory bus , a peripheral bus , and a processor or local bus using any of a variety of bus architectures . by way of example , such architectures can include an industry standard architecture ( isa ) bus , a micro channel architecture ( mca ) bus , an enhanced isa ( eisa ) bus , a video electronics standards association ( vesa ) local bus , and a peripheral component interconnects ( pci ) bus , also known as a mezzanine bus . as one suitable implementation , cpu 50 , memory controller 52 , rom 54 , and ram 56 are integrated onto a common module 64 . in this implementation , rom 54 is configured as a flash rom that is connected to memory controller 52 via a pci ( peripheral component interconnect ) bus and a rom bus ( neither of which are shown ). ram 56 is configured as multiple ddr sdram ( double data rate synchronous dynamic ram ) that are independently controlled by the memory controller 52 via separate buses ( not shown ). hard disk drive 58 and portable media drive 16 are connected to the memory controller via the pci bus and an ata ( at attachment ) bus 66 . a 3d graphics processing unit 68 and a video encoder 70 form a video processing pipeline for high speed and high resolution graphics processing . data is carried from the graphics processing unit 68 to video encoder 70 via a digital video bus ( not shown ). an audio processing unit 72 and an audio codec ( coder / decoder ) 74 form a corresponding audio processing pipeline with high fidelity and stereo processing . audio data is carried between audio processing unit 72 and audio codec 74 via a communication link ( not shown ). the video and audio processing pipelines output data to an a / v ( audio / video ) port 76 for transmission to a television or other display . in the illustrated implementation , video and audio processing components 68 - 76 are mounted on module 64 . also implemented on module 64 are a usb host controller 78 and a network interface 80 . usb host controller 78 is coupled to cpu 50 and memory controller 52 via a bus ( e . g ., pci bus ) and serves as host for the peripheral game controllers 14 . the network interface 80 provides access to a network ( e . g ., the internet , home network , etc .) and may be any of a wide variety of various wired or wireless interface components including an ethernet card , a modem , a bluetooth module , a cable modem , and the like . game console 12 has two dual controller support subassemblies 82 ( 1 ) and 82 ( 2 ), with each subassembly supporting two of game controllers 14 ( 1 )- 14 ( 4 ). a front panel i / o subassembly 84 supports the functionality of power button 22 and eject button 24 , as well as any leds ( light emitting diodes ) or other indicators exposed on the outer surface of the game console . subassemblies 82 ( 1 ), 82 ( 2 ), and 84 are coupled to the module 64 via one or more cable assemblies 86 . eight memory units 42 ( 1 )- 42 ( 8 ) are illustrated as being connectable to the four game controllers 14 ( 1 )- 14 ( 4 ), i . e ., two memory units for each game controller . each memory unit 42 offers additional storage on which games , game parameters , and other data can be stored . when inserted into a game controller , a memory unit 42 can be accessed by the memory controller 52 . additionally , one or more memory units 42 may be inserted into game console 12 and accessed by memory controller 52 . a system power supply module 88 provides power to the components of gaming system 10 . a fan 90 cools the circuitry within game console 12 . game console 12 implements a uniform media portal model that provides a consistent user interface and navigation hierarchy to move users through various entertainment areas . the portal model offers a convenient way to access content from multiple different media types — game data , audio data , and video data — regardless of the media type inserted into portable media drive 16 . to implement the uniform media portal model , a console user interface ( ui ) application 92 is stored on hard disk drive 58 . when the game console is powered on , various portions of console application 92 are loaded into ram 56 and / or caches 60 , 62 and executed on cpu 50 . console application 92 presents a graphical user interface that provides a consistent user experience when navigating to different media types available on the game console . gaming system 10 may be operated as a standalone system by simply connecting the system to a television or other display . in this standalone mode , gaming system 10 allows one or more players to play games , watch movies , or listen to music . however , with the integration of broadband connectivity made available through network interface 80 , gaming system 10 may further be operated as a participant in a larger network gaming community . [ 0070 ] fig3 shows an exemplary network gaming environment 100 that interconnects multiple gaming systems 10 ( 1 ), . . . , 10 ( g ) via a network 102 . network 102 represents any of a wide variety of data communications networks . it may include public portions ( e . g ., the internet ) as well as private portions ( e . g ., a residential local area network ( lan )), as well as combinations of public and private portions . network 102 may be implemented using any one or more of a wide variety of conventional communications media including both wired and wireless media . any of a wide variety of communications protocols can be used to communicate data via network 102 , including both public and proprietary protocols . examples of such protocols include tcp / ip , ipx / spx , netbeui , etc . in addition to gaming systems 10 , one or more online services 104 ( 1 ), . . . , 104 ( s ) may be accessible via network 102 to provide various services for the participants , such as hosting online games , serving downloadable music or video files , hosting gaming competitions , serving streaming audio / video files , and the like . network gaming environment 100 may further involve a key distribution center 106 that plays a role in authenticating individual players and / or gaming systems 10 to one another as well as online services 104 . distribution center 106 distributes keys and service tickets to valid participants that may then be used to form games amongst multiple players or to purchase services from online services 104 . network gaming environment 100 introduces another memory source available to individual gaming systems 10 — online storage . in addition to portable storage medium 18 , hard disk drive 58 , and memory unit ( s ) 42 , gaming system 10 ( 1 ) can also access data files available at remote storage locations via network 102 , as exemplified by remote storage 108 at online service 104 ( s ). [ 0074 ] fig4 is a top view of one of the game controllers 14 from fig1 . as seen in fig4 game controller 14 includes two grip portions 110 left , 110 right on either side of a main body portion 112 . in use , a player typically holds left grip 110 left such that the left edge 111 left is in or near the palm of the user &# 39 ; s left hand , and holds the right grip portion 110 right such that the right edge 111 right is in or near the palm of the user &# 39 ; s right hand . in this fashion , and as shown in phantom lines in fig5 the user can thereby access thumb sticks 34 , d - pad 36 and buttons 38 with his or her thumbs , and can access triggers 40 ( not shown in fig5 ) with his or her index fingers . as seen in fig4 and 5 , a user holding game controller 14 in both hands , in the game playing position and with both palms in full contact , will have his or her palms separated by a maximum distance of d . in a preferred embodiment , d is 7 . 5 inches or less . in another preferred embodiment , d does not exceed 6 inches . in still another preferred embodiment , d is between 5 . 63 and 6 . 38 inches . because main body portion 112 only extends across the upper portion of game controller 14 , there is an open region between the ends 116 left and 116 right of grip portions 110 left and 110 right , and below main body portion 112 . fig6 is a bottom plan view of game controller 14 , and shows the underside 166 of main body portion 112 . extending from the forward part of the main body portion is serial cable 32 which communicates with game console 12 . in other embodiments , game controller 14 could communicate with game console 12 by wireless communication . for example , game controller 14 could communicate with game console 12 in accordance with the bluetooth standard for wireless communications , as described in , e . g ., “ specification of the bluetooth system ,” version 1 . 1 ( dated feb . 22 , 2001 ), available from bluetooth sig , inc . at & lt ; http :// www . bluetooth . com & gt ;. [ 0075 ] fig7 is a front view of game controller 14 , and shows two connection ports 118 upper and 118 lower . as previously discussed , connection ports 118 could be used for , e . g ., insertion of one or more memory units 42 . as another example , a connection port 118 could be used to connect a headset or other audio transmitter / receiver device . fig8 is rear view of game controller 14 , and shows the side of the game controller that would usually face the player when the controller is being used for game play . as shown in fig9 text input device 120 can be attached to game controller 14 so as to fit in ( or covering ) the open region between grip ends 116 . by locating text input device 120 in this area , a user can access keys 122 with his or her thumbs without substantially moving his or her hands from a game playing position ( or with only a slight shift in the position of the grips in his or her hands ), and without putting down game controller 14 . more specifically , and as shown by the phantom line outlines of a user &# 39 ; s hands , a user can easily reach any of the keys 122 on text input device 120 with one of his or her thumbs . a user can thereby quickly change from entering game play input via thumb sticks 34 , d - pad 36 , buttons 38 and / or triggers 40 to entering text via keys 122 , and then quickly revert to providing game play input . a user could also control a game with one hand while entering text ( or otherwise using text input device 120 ) with the other hand . [ 0077 ] fig1 is a top view of text input device 120 . text input device 120 includes multiple rows of keys 122 . in one preferred embodiment , all of keys 122 are single position buttons . in other words , each key 122 only has two states : pressed and not pressed . this is distinguished from a d - pad , rocker switch or other control mechanism that may have more than two states , e . g ., a first or not pressed state , a second state where the control is pressed in a first position ( or direction ), a third state where the control is pressed in a second position ( or direction ), etc . in that embodiment , the majority of keys 122 are arranged in a single array 123 ( outlined ) having 3 rows and 10 columns . the columns and / or rows of the array may be curved , straight or in combinations of curved and straight formations . the curves may face in any direction . for example , the curved rows may curve downward in a “ frown ” ( as shown ), or may curve upward in a “ smile .” many of keys 122 correspond to a specific letter or other text character . the specific character may be marked on the key or in close proximity thereto . some keys may , similar to a standard keyboard , correspond to multiple characters . for example , pressing key 122 a alone could generate a lower case “ a ,” while pressing key 122 shift and key 122 a in sequence could generate an upper case “ a .” so as to reduce the number of required keys , other key combinations can be used to add further characters to a key . for example , a second character may be printed on many of keys 122 in a second color , and a separate key pressed to generate the character printed in that second color . referring to key 122 a , a forward slash (“/”) is printed above the “ a ,” but in blue . key 122 blue has a blue spot printed on its surface . by pressing and holding key 122 blue and then key 122 a , a forward slash is generated . similarly , a third character could be printed on or near a key in a third color , and another key pressed to generate that third color character . again using key 122 a as an example , a back slash is printed above key 122 a in green , and key 122 green has a green spot on its surface . by pressing and holding key 122 green and then pressing key 122 a , a back slash is generated . other keys may have specific functions assigned by a particular game program . for example , certain keys could , similar to the f1 , f2 , f3 , etc . keys on a standard keyboard , each generate a specific signal that is interpreted differently by different game programs . other keys could function similar to the arrow keys (↑, ↓, →, ←) on a standard keyboard and move a text cursor up , down , left or right within a block of text . other keys could also function similar to keys on a standard keyboard such as the space bar , backspace key , “ del ” key , etc . text input device 120 could have more or less of keys 122 than shown . in a preferred embodiment , text input device 120 has a sufficient number of simultaneously - viewable keys to accommodate the most commonly - used characters of the intended language ( i . e ., the language of persons for whom the keyboard is primarily intended ). in one preferred embodiment , text input device 120 has at least 26 simultaneously - viewable text keys . in a more preferred embodiment , each of those 26 text keys generates a letter of the alphabet in an individual key press ( i . e ., without requiring a shift or other key combination ). in other embodiments , text input device 120 may have between 20 and 30 simultaneously - viewable text keys . in still other embodiments , text input device 120 could have over 30 simultaneously - viewable text keys . extending laterally from either side of text input device 122 are conformal wings 124 left and 124 right . as described in more detail below , wings 124 may in some embodiments cooperate with a portion of the game controller 14 to hold the text input device 120 firmly in place . [ 0081 ] fig1 is a bottom view of text input device 120 . undersides 126 left and 126 right can be shaped to conform to the surface contour ( s ) of portions of a game controller . in one preferred embodiment , undersides 126 left and 126 right have shapes substantially conforming to the outer surfaces of portions of grip ends 116 on which wings 124 rest when text input device 120 is attached to game controller 14 . wings 124 left and 124 right may have rubber or some other compressible , high - friction material on the undersides 126 left and 126 right of wings 124 . such a material could compress slightly when text input device 120 is installed on game controller 14 , thereby minimizing the effects of any size tolerances or manufacturing defects . such a material could also , by increasing friction between the wing undersides 126 and the game controller 14 , prevent the text input device from slipping from position . a cheek area 128 could also be covered with rubber or other rubber - like material . in one embodiment , the rubber material covering undersides 126 left and 126 right and cheek area 128 is a rubber - like thermoplastic elastomer such as santoprene ( available from advanced elastomer systems of akron , ohio .). located inboard of the wings on the bottom side of text input device 120 are retaining slots 130 . located between slots 130 is a cover plate 132 , the center portion of which forms a tongue 134 . located at the end of tongue 134 is a retaining button 136 . because of the elasticity of tongue 134 , button 136 can be pressed in , but is then biased outward to its original position . also emanating from the underside of text input device 120 is a connecting cable 138 having a connector 140 at the end . [ 0082 ] fig1 is a perspective view of an attachment bracket 142 . attachment bracket 142 includes an attachment plate 144 , a connecting arm 146 , and retaining shoulders 148 . connecting arm 146 has a “ u - shaped ” cross section and contoured edges 150 . located on either side of attachment plate 144 and extending above the surface 152 of attachment plate 144 are clips 154 . fig1 is a top plan view of bracket 142 , and shows the interior of arm 146 . located at the bottom of arm 146 is a cable retaining groove 156 , the operation of which is described below . fig1 is a bottom plan view of bracket 142 when attached to text input device 120 . as seen in fig1 and in fig1 a , a cross section taken along lines 15 a - 15 a of fig1 , clips 154 fit upward into slots 130 . as bracket 142 is then moved toward the front 158 of text input device 120 , the interior portions 160 of clips 154 contact and hold the forward lip 162 of each slot 130 . when attachment plate 144 is fully forward , button 136 is biased outward into a circular cutout 164 in attachment plate 144 , as seen in fig1 b ( a cross section taken along lines 15 b - 15 b of fig1 ). in this manner , attachment plate 144 cannot be removed from text input device 120 without first pressing button 136 inward . in other embodiments , button 136 could be omitted . in such an embodiment , bracket 142 could retain text input device 120 by the pinching action of clip 154 on the portion of lower case 180 that is proximate to lip 162 . in such an embodiment , circular cutout 164 could also be omitted . alternatively , the general region of attachment plate 144 in which circular cutout 164 is located could be slotted or grooved to accommodate protrusions on the bottom of text input device 120 . in use , arm 146 of bracket 142 acts a flexible beam to hold text input device 120 in place . in particular , attachment plate 144 is first attached to text input device 120 as described above . next , undersides 126 of wings 124 are placed in contact with grip ends 116 , and the cheek portion 128 is placed in contact with a lower portion of main body portion 112 . arm 146 is then bowed slightly outward . in other words , the ends of arm 146 are moved in the direction opposite to that in which the tips of the “ u ” of the arm cross - section point , while the middle of arm 146 is moved slightly in the opposite direction . as it is being bowed , the retaining shoulders 148 slip over and contact the lower edge of front 170 . the elasticity of the arm 146 then causes the inside faces of the shoulders 148 to be pressed against the lower edge of front 170 , while the undersides 126 of wings 124 are pulled into contact with grip ends 116 ( and cheek portion 128 is pulled into contact with main body portion 112 ). in this manner , text input device 120 can be attached to game controller 14 without cutting into or otherwise modifying the outer housing of game controller 14 . [ 0084 ] fig1 - 18 show installation of text input device 120 on game controller 14 . fig1 is a top plan view of game controller 14 with text input device 120 attached . the left side of text input device 120 has been removed , with the outline shown in broken lines , to further illustrate the attachment . wings 124 of text input device 120 extend over the interior portions of grip ends 116 . the undersides 126 of wings 124 conform to and rest upon the outer upper surfaces of grip ends 116 , and cheek portion 128 of the underside of text input device 120 rests upon the lower part of main body portion 112 . fig1 is a bottom plan view of game controller 14 with text input device 120 and bracket 142 attached , and further shows that the undersides 126 of wings 124 are covered by grip ends 116 . arm 146 of bracket 142 extends to the front of main body portion 112 , with the upper edges 150 of arm 146 ( see fig1 ) conforming to the underside 166 of main body portion 112 . retaining shoulders 148 wrap over the bottom edge 168 of main body portion 112 and extend over the front 170 of game controller 14 . in this manner , bracket 142 holds text input device 120 against the top surfaces of main body portion 112 and grips 110 . connector 140 plugs into one of ports 118 ( fig7 ). fig1 is a side view of game controller 14 with installed text input device 120 , and further shows cooperation of the various components . as seen in fig1 - 14 and 17 , a pair of tabs 157 extend from the retaining shoulders 148 of bracket 142 . tabs 157 allow convenient removal of bracket 142 ( and attached text input device 120 ) from game controller 14 . by pushing downward on tabs 157 from the top side of game controller 14 , bracket 142 can be disengaged from game controller 14 . [ 0086 ] fig1 is an exploded perspective view of text input device 120 . text input device 120 includes an upper case 172 , a set of keys 174 , printed circuit board 176 , an electrostatic discharge shield 178 , and a lower case 180 . the box - like structure to the side of the opening in lower case 180 covers ( or partially covers ) a retaining slot 130 . so as not to obscure the drawing , a similar box - like structure on the opposite side of the opening is not shown . in one embodiment , keys 174 are molded from silicone rubber , and form inverted domes which , when pushed downward , close membrane or metal dome switches ( not shown ) located on printed circuit board 176 . located on the underside of printed circuit board 176 ( also not shown ) are various electronic components which cause appropriate text character codes to be generated when various of keys 122 are pressed . the design of circuits and components for such purposes is known in the art , and thus not further described herein . any suitable components for generating text character codes in response to key presses can be implemented . also shown in fig1 is an exploded view of connector 140 . cable 138 terminates in a right angle fitting 182 . in particular , fitting 182 causes cable 138 to exit from connector 140 in a direction that is substantially perpendicular to the direction in which connector 140 is inserted into port 118 . extending from fitting 182 are multiple contacts 184 . when connector 140 is inserted into port 118 , contacts 184 form electrical connections with corresponding contacts inside of port 118 . upper and lower connector housings 186 and 188 , when attached to one another , capture and retain fitting 182 . by use of right angle fitting 182 , a shorter cable may be used to connect text input device 120 to game controller 14 . right angle fitting 182 further avoids a loop of cable 138 extending beyond the end of connector 140 and then wrapping back around into connector 140 . in other embodiments , a fitting causing cable 138 to exit connector 140 at other angles could be used . [ 0088 ] fig2 is a block diagram of text input device 120 and game controller 14 . in a preferred embodiment , game controller 14 contains a usb hub 200 with multiple ports 202 , 204 and 206 . one of those ports ( 202 ) is connected to thumb sticks 34 , d - pad 36 , buttons 38 and triggers 40 , and is used for communicating game input to game console 12 . the remaining ports 204 and 206 correspond to connection ports 118 upper and 118 lower ( fig7 ), and are available for a variety of purposes , such as the aforementioned memory units 42 or a headset . in a preferred embodiment , text input device 120 connects to one of those ports . when so connected , game controller 14 and text input device 120 are recognized by game console 12 as two separate usb devices . in this manner , it is thus possible for a user to alternate between game play input with game controller 14 and text input with text input device 120 without having to actuate a mode selection switch each time the user alternates from one to the other . in other words , the game play controls of the game controller provide output recognized as game play input without requiring a separate signal to indicate whether game controller output should be regarded as text or game play input . similarly , text keys of the text input device provide output recognized as text input without requiring a separate signal to indicate whether the text input device output should be regarded as text input or game play input . similarly ; it is not necessary to provide a “ controller off / text input on ” switch to go from use of the game controller to use of the text input device , or to provide a “ controller on / text input off ” switch to go from use of the text input device to use of the game controller . the operation of multiple usb devices by a computer is known in the art , and is described in universal serial bus specification revision 2 . 0 ( apr . 27 , 2000 ), available from usb implementers forum , inc . at & lt ; http :// www . usb . org / home & gt ;. according to another aspect of the invention , a single text input device can be manufactured for attachment to different types of game controllers . respectively shown in fig2 - 24 are top plan , bottom plan , front and rear ( player side ) views of a second type of game controller 14 ′. game controller 14 ′ is similar to game controller 14 of fig4 - 8 , but has different physical dimensions and a different shape . for example , grips 110 ′ left and 110 ′ right of game controller 14 ′ are larger and more widely spaced than is the case with controller 14 . in a preferred embodiment , the width w of controller 14 ′ is less than 8 inches . in order to attach text input device 120 to game controller 14 ′, a different attachment bracket 142 ′ may be used . as seen in fig2 , a perspective view of attachment bracket 142 ′, bracket 142 ′ has an attachment plate 144 ′ having clips 154 ′, as well as a connecting arm 146 ′ and retaining shoulders 148 ′. bracket 142 ′ further has contoured edges 150 ′ on arm 146 ′. fig2 is a top plan view of bracket 142 ′, and shows the interior of arm 146 ′. located at the bottom of arm 146 ′ is a cable retaining groove 156 ′, the operation of which is described below . fig2 is a bottom plan view of bracket 142 ′. attachment plate 144 ′ of bracket 142 ′ attaches to text input device 120 similar to attachment plate 144 of bracket 142 , as previously described . alternatively , and as discussed in connection with bracket 142 , button 136 could be omitted from text input device 120 , with bracket 142 ′ retaining text input device 120 by the pinching action of clips 154 ′. as with bracket 142 , a pair of tabs 157 ′ extend from the retaining shoulders 148 ′ of bracket 142 ′. tabs 157 ′ allow convenient removal of bracket 142 ′ ( and attached text input device 120 ) from game controller 14 ′. by pushing downward on tabs 157 ′ from the top side of game controller 14 ′, bracket 142 ′ can be disengaged from game controller 14 ′. similar to bracket 142 , arm 146 ′ of bracket 142 ′ acts a flexible beam to hold text input device 120 in place . in particular , attachment plate 144 ′ is first attached to text input device 120 in a manner similar to attachment plate 144 . unlike game controller 14 , however , wings 124 do not rest upon grips 110 ′ when text input device 120 is attached to game controller 14 ′. instead , tips 145 ′ of attachment plate 144 ′ rest upon the lower portion of the upper face of main body portion 112 ′ of game controller 14 ′. specifically , the undersides of tips 145 ′ are placed in contact with main body portion 112 ′. arm 146 ′ is then bowed slightly outward . in other words , the ends of arm 146 ′ are moved in the direction opposite to that in which the tips of the “ u ” of the arm cross - section point , while the middle of arm 146 ′ is moved slightly in the opposite direction . as it is being bowed , the retaining shoulders 148 ′ slip over and contact the lower edge of front 170 ′. the elasticity of the arm 146 ′ then causes the inside faces of the shoulders 148 ′ to be pressed against the lower edge of front 170 ′, while the undersides of tips 145 ′ are pulled into contact with main body portion 112 ′. in this manner , text input device 120 can be attached to game controller 14 ′ without cutting into or otherwise modifying the outer housing of game controller 14 ′. [ 0091 ] fig2 - 30 show installation of text input device 120 on game controller 14 ′. fig2 is a top plan view of game controller 14 ′ with text input device 120 attached . the left side of text input device 120 has been removed , with the outline shown in broken lines , to further illustrate the attachment . text input device 120 rests between the inside outer surfaces 113 ′ left and 113 ′ right of grips 110 ′. fig2 is a bottom plan view of game controller 14 ′ with text input device 120 and bracket 142 ′ attached , and further shows that wings 124 are separated from grips 110 ′. arm 146 ′ of bracket 142 ′ extends to the front of main body portion 112 ′, with the upper edges 150 ′ of arm 146 ′ ( see fig2 ) conforming to the underside 166 ′ of main body portion 112 ′. retaining shoulders 148 ′ wrap over the bottom edge 168 ′ of main body portion 112 ′ and extend over the front 170 ′ of game controller 14 ′. connector 140 plugs into one of ports 118 ′ ( fig2 ). fig3 is a side view of game controller 14 ′ with installed text input device 120 , and further shows cooperation of the various components . as seen by comparison of fig1 and 26 , the shape of groove 156 is different from that of groove 156 ′. in each case , the groove serves to restrain cable 138 inside of arm 146 or 146 ′. grooves 156 and 156 ′ are sized such that cable 138 can be easily pressed into the groove , but then removed by pulling lightly upward . because game controller 14 is slightly smaller than game controller 14 ′, arm 146 is slightly shorter than arm 146 ′. so as to gather the excess length of cable 138 when text input device 120 is attached to game controller 14 , groove 156 in arm 146 is serpentine in shape . conversely , groove 156 ′ of arm 146 ′ is straight . grooves 156 and 156 ′ need not extend as far toward the ends of brackets 142 and 142 ′ as is shown in fig1 and 26 . in some embodiments , groove 156 ( or 156 ′) terminates at a point that is more distant from the front end ( i . e ., the end that is positioned toward the front of the game controller ) of bracket 142 ( or 142 ′) than is shown . in one embodiment , groove 156 ( or groove 156 ′) terminates approximately one inch from the point on the front of bracket 142 ( or bracket 142 ′) from which cable 138 exits . by providing a single text input device and different attachment brackets , different types of game controllers can be more economically retrofit with a text input device . because each bracket is a relatively simple structure and has few ( one ) components and fabrication steps , it is less expensive to fabricate multiple types of attachment arm and a single type of text input device than to fabricate multiple types of text input devices . the outside of arm 146 or of arm 146 ′ can have any desired shape . upper and lower housings 172 and 180 of text input device 120 may be formed from any suitable materials . in a preferred embodiment , housings 172 and 180 are molded from glass - filled polycarbonate . similarly , brackets 142 and 142 ′ may also be molded from glass - filled polycarbonate . use of such a material provides enhanced creep resistance . although several examples of carrying out the invention have been described , those skilled in the art will appreciate that there are numerous variations and permutations of the above described examples that fall within the spirit and scope of the invention . the physical shapes and configurations shown are merely examples . numerous other shapes and configurations are possible . numerous modifications and other implementations are within the scope of the invention , which is only limited by the following claims .