this is just wat i understand about endpoints... wish to share.. i've been working on a usb keyboard from my previous company therefore kinda know a little bout how endpoint works... basicly endpoint 1 is used for setup and cofig and also for mass storage if i am not wrong... the rest is up to you to use and whether u have define its endpoint descriptor... for example u might have a keyboard with a bootloader probably for the display on the keyboard i.e. an lcd... u can use endpoint 2 for ur keyboard and proly endpoint 3 for communicating with the pc just for the bootloader or the lcd display for example.. its more like a databus but with different address for specific thigns.. checkout the HID usage tables from usb.org for more information on descriptor files and such... and if u have a usb hub build in to the keyboard then u can proly also have endpoint 4 for ur mouse for example..

regards..

dan