Кіріспе

Адам интерфейсі құрылғысы немесе HID – әдетте адамдар пайдаланатын, адамдардан кіріс алатын немесе оларға шығыс беретін компьютер құрылғысының түрі. "HID" термині көбінесе USB HID спецификациясына қатысты. Бұл терминді Microsoft компаниясының Майк Ван Фландрен USB комитетіне адамдардан кіріс құрылғысы класын құруды ұсынғанда енгізді. Том Шмидт (DEC) ұсынғаннан кейін жұмыс тобының атауы Адам интерфейсі құрылғысы класы деп өзгертілді, себебі ұсынылған стандарт екі бағытты байланысты қолдайды.

Шығаруға арналған HID:
Компьютер мониторы
Жаңартылатын Брайль дисплейі
Дыбыс шығару құрылғылары (loudspeakers)
Құлаққап (headset)
Сезімдік технология (haptic technology)

Көбінесе қолданылатын HID:
Пернетақта және жаңартылатын Брайль дисплейі
Нысаналық құрылғылар: Тышқан, трекбол, тачпад, нысана таяқшасы, жарық қалам
Сенсорлық экран (touchscreen)
Магниттік жолақ оқырман
Графикалық планшет
Джойстик, геймпад, аналогтық таяқша
Веб-камера
Саусақ ізгі сканері

Сирек кездесетін HID:
Жүргізу және ұшу симуляторларының құрылғылары: жылдамдық қосымшалары, рульдер, педальдер
Сымды қолғап (Nintendo Power Glove)
Би өнерпаздығына арналған төсеніш (dance pad)
Wii пульт қашықтан басқаруы
Беттік есептеу құрылғысы
Apple-дің кенет қозғалыс сенсор құрылғысы.

HID стандарты

HID стандарты негізінен компьютерлік құрылғылардың инновацияларын дамыту және мұндай құрылғыларды орнату процесін жеңілдету үшін қабылданды. HID тұжырымдамасын енгізуге дейін құрылғылар әдетте тышқан, пернетақта және джойстик үшін қатаң белгіленген протоколдарға сәйкес келетін. Мысалы, сол кездегі стандартты тышқан протоколы X және Y осьтерінің деректерін, екі түймеге дейін екілік енгізуді қолдады және мұрагерлік қолдау болмады. Барлық аппараттық инновациялар қолданыстағы протоколдағы деректерді жүктеуді немесе арнайы құрылғы драйверлерін жасауды және жаңа протоколды әзірлеушілерге таныстыруды қажет етті. Керісінше, барлық HID анықталған құрылғылар кез келген сандағы дерек түрлерін және форматтарды қамтитын өзін-өзі сипаттайтын пакеттерді ұсынады. Компьютердегі бір HID драйвері деректерді талдайды және деректердің I/O-сын қолданбалық функционалдықпен динамикалық байланыстыруға мүмкіндік береді, бұл жылдам инновациялар мен дамуға, сондай-ақ жаңа адам-машина интерфейсі құрылғыларының кең түрленуіне әкелді. HID стандартын бірнеше танымал компаниялардың өкілдерінен құралған жұмыс комитеті әзірледі. Қатысушылардың тізімі "Адам-машина интерфейсі құрылғыларының құрылғы класының сипаттамасы" құжатында келтірілген. Өзін-өзі сипаттайтын, кеңейтілетін протокол тұжырымдамасы алғаш рет Майкл Ван Фландрен мен Манолито Адан Microsoft компаниясында "Raptor" жобасымен жұмыс істеген кезде, ал Стив МакГоуэн тәуелсіз түрде "SIM" жобасымен жұмыс істеген кезде пайда болды. Бұл жоба VFX1 VR гарнитурасы және оның жабдықтары үшін құрылғы протоколын Forte Technologies компаниясында ACCESS шинасы негізінде анықтады. SIM де өзін-өзі сипаттайтын және кеңейтілетін болды, бірақ VR және қозғалыс түсіруге арналған SIM құрылғыларына көбірек бағытталған. Тұтынушылық ойын әзірлеушілер конференциясында ақпарат алмасып болғаннан кейін Стив пен Майк пайда болатын Универсалды серийлік шина (USB) үшін жаңа стандартты бірлесіп жасауға келісті. HID пайдалануға дейін (шамамен 1995 жылға дейін) компьютерге қосылған әрбір құрылғы үшін дерлік арнайы драйверлерді орнату қажет болды. Бұл құрылғы өндірушілерінің операциялық жүйе шығарылымдарын қадағалауын және құрылғылары үшін жүйелі түрде жаңартылған драйверлерді ұсынуын, сондай-ақ қолдайтын әрбір операциялық жүйе үшін драйверлерді әзірлеуін білдірді. Сонымен қатар, сол кездегі жаңа құрылғылар, мысалы, ұшу симуляторлары үшін қосымша түймелері немесе D-падтары бар джойстиктер, драйверден ғана емес, сонымен қатар оларды қолдайтын әрбір ойыннан жаңа басқару элементтерін қосатын бағдарламалық қолдауды қажет етті. Бұл құрылғы әзірлеушілерінің қолдайтын әрбір ойынды қосуға қосымша жауапкершілігі бар екенін білдірді. HID құрылғысының Report Descriptor арқылы өзін сипаттау мүмкіндігі аппараттық құрылғы әзірлеушілерін ойын әзірлеушілерінен ажыратты. Report Descriptor тұжырымдамасы сонымен қатар операциялық жүйе өндірушілерінің HID драйверін (талдаушысын) жаза алатынын білдірді, ол өндіруші армандаған кез келген HID құрылғысын қабылдай алады, өндіруші қолдайтын әрбір операциялық жүйе үшін драйверді жазуға немесе сақтауға міндетті болмайды. Осылайша, HID класы құрылғы өндірушілерін ойын және операциялық жүйе өндірушілерінен ажыратты, құрылғы өндірушілеріне инновацияларды жылдам жасауға және даму шығындарын азайтуға мүмкіндік берді (мысалы, драйверлер немесе ойын әзірлеушілерінің қолдауы болмайды). HID пайдалану кестесі құжаты HID құрылғылары ұсына алатын мыңдаған басқару элементтерін анықтайды. Ойын өндірушілері операциялық жүйенің HID талдаушысынан құрылғымен ұсынылған басқару элементтерінің жиынтығын анықтап, содан кейін сол басқару элементтерін өздерінің ойынындағы мүмкіндіктерге сәйкестендіре алады. HID пайдалану кестесі (HUT) құжатына алғашқы шығарылымынан бері жүздеген жаңа пайдалану түрлері қосылды. HID протоколының шектеулері бар, бірақ барлық заманауи негізгі операциялық жүйелер арнайы драйверді қажет етпей-ақ стандартты USB HID құрылғыларын, мысалы, пернетақталар мен тышқандарды таниды. Алайда, оның әмбебаптығы 22 жылдан бері жаңартылмағанымен және бүгінгі күні өндірістегі әрбір компьютер, планшет және ұялы телефонмен үйлесімді екендігімен дәлелденді. USB, демек HID құрылғыларын ыстық қосуға болады, сондықтан орнатылған кезде экранда "HID-ке сәйкес келетін құрылғы танылды" деген хабарлама пайда болады. Қарама-қарсылығы, бұл хабарлама әдетте USB-ден бұрын PS/2 6 пинді DIN қосқыштары арқылы қосылған құрылғыларда пайда болмайды. PS/2 әдетте Plug and Play-ді қолдамайды, яғни компьютер қосылған кезде PS/2 пернетақтасы немесе тышқан қосылғанда әрқашан жұмыс істемейді және компьютердің аналық платасына қауіп тудыруы мүмкін. Сонымен қатар, PS/2 стандарты HID протоколын қолдамайды. USB адам-машина интерфейсі құрылғы класы USB HID-ді сипаттайды. HID протоколы (Report Descriptor және Report механизмі) USB-ден басқа көптеген шиналарда жүзеге асырылды, соның ішінде Bluetooth және I2C. "HID біріктірілген пайдалану кестесі құжаттарында" HID-ге бірнеше кеңейтімдер де бар, соның ішінде үзіліссіз қуат көздері, бейне монитор басқару элементтері, сату орындары құрылғылары, аркада және ойын (слот машиналарын) құрылғылары.

Есепті сипаттаушы

Хабарлама сипаттамасы HID құрылғысымен жасалатын немесе қабылданатын хабарламаларды көрсетеді. Әрбір хабарлама «Есеп» деп аталады. Есептер құрылғыда оқуға немесе жазуға болатын биттерді/басқару элементтерін анықтай алады, немесе құрылғының ағымдағы күйі туралы хостты хабардар ету үшін белгілі бір уақыт интервалымен жасалады. Мысалы, тышқан әдетте хостқа қозғалыс немесе түймелерді басу туралы хабарлау үшін секунд сайын 200 рет есеп шығарады. Есеп сипаттамалары «бит бағдарланған», яғни басқару элементтері 1-ден 32 битке дейін ақпаратты ұсынуы мүмкін. Есеп сипаттамасында анықталған әрбір басқару элементінің идентификаторы болады және ол есептегі өлшемі мен орнын анықтайды. Есеп сипаттамасы көптеген есептерді анықтай алады, олардың әрқайсысы ақпараттың әртүрлі жиынтығын немесе комбинациясын көрсетеді. Мысалы, қарапайым тышқан 3 байттық есепті анықтайды, онда есептің ең кішкентай (0) биті сол жақ түйме, келесі (1) биті ортаңғы түйме, ал үшінші (2) биті оң жақ түйме болып табылады. Тышқанның 8 биттік X және Y координаттары байт шекараларына ыңғайлы түрде орналасуы үшін 5 биттік «толтырғыш» анықталады. Содан кейін X координатасы 8 биттік салыстырмалы мән ретінде анықталады (яғни, алдыңғы есептен бері «миккилер» саны), ол 8-ден 15-ке дейінгі бит позицияларында орналасқан, ал Y координатасы 16-дан 24-ке дейінгі бит позицияларында орналасқан 8 биттік салыстырмалы мән ретінде анықталады, нәтижесінде хостқа ұсынылатын деректер жиынтығы пайда болады. Есеп сипаттамасы өте әмбебап, құрылғыға оның ұсынатын әрбір басқарудың ажыратымдылығын, диапазонын және басқа да көптеген сипаттамаларын белгілеуге мүмкіндік береді. Тышқан немесе пернетақта контроллерінің барлық коды мен деректеріне 1 КБ ROM болған кезде жасалған есеп сипаттамасы синтаксисі оның көлемін азайтуға мүмкіндік беретін көптеген мүмкіндіктерге ие, мысалы, таңдалған басқару параметрлері бірнеше анықтамаларда сақталуы мүмкін, олардың мәні өзгергенде ғана қайта жариялануы керек. Бастапқы тышқанның есептері 50 байтпен, ал 104 пернетақтаның есептері 65 байтпен сипатталуы мүмкін.

Физикалық сипаттамашы

HID-тің көпшілікке беймәлім немесе толық түсінілмеген мүмкіндігі – физикалық сипаттамашы. Физикалық сипаттамашы, есеп сипаттамашысында анықталған жеке басқару элементтерімен байланысатын адам денесінің бөліктерін анықтау үшін пайдаланылады. Ойынды басқару кезінде, көбінесе, бас бармақ пен көрсету саусағы қайталама әрекеттерді орындау үшін қолданылады. Осы саусақтар ең жылдам реакцияға ие болғандықтан, олар әдетте қарудың құрсауын тартып немесе жиі қолданылатын ойын функцияларын іске қосу үшін қолданылады. Физикалық сипаттамашы құрылғы өндірушісіне әрбір басқару элементіне қай саусақтың тиетінін анықтауға және жеке саусақтың жете алатын басқару элементтері жиынтығына басымдық беруге мүмкіндік береді. Бұл мүмкіндік ойын өндірушісіне ойын әзірленген кезде жоқ құрылғы үшін де ең тиімді батырмалар комбинациясын ұсынуға мүмкіндік береді. Физикалық сипаттамашы сонымен қатар HID құрылғысы арқылы толық дене қозғалысын түсіру ақпаратын ұсынуға мүмкіндік береді, яғни адам денесіндегі кез келген буынның бұрышын, бағытын, салыстырмалы немесе абсолютті орнын көрсетеді. Ал есеп сипаттамашысы арқылы қозғалыс деректері құрылғы қолдайтын кез келген ажыратымдылықта ұсынылуы мүмкін.

HID протоколының компоненттері

HID протоколында 2 нысан бар: «хост» және «құрылғы». Құрылғы – кілтпе немесе тышқан сияқты адаммен тікелей әрекеттесетін элемент. Хост құрылғымен байланысады және адамның іс-әрекеттері туралы кіріс деректерін құрылғыдан алады. Шығыс деректері хосттан құрылғыға, содан кейін адамға жіберіледі. Хосттың ең көп таралған мысалы – компьютер, бірақ кейбір ұялы телефондар мен жеке ассистенттер (PDA) де хост бола алады. HID протоколы құрылғыларды жүзеге асыруды өте оңай етеді. Құрылғылар өз дерек пакеттерін анықтайды, содан кейін хостқа «HID дескрипторын» ұсынады. HID дескрипторы – құрылғының дерек пакеттерін сипаттайтын байттардың қатаң кодталған массиві. Оған құрылғының қолдайтын пакеттер саны, пакеттердің мөлшері және пакеттегі әрбір байт пен биттің мақсаты кіреді. Мысалы, калькулятор бағдарламасының батырмасы бар кілтпе хостқа батырманың басылған/босатылған күйі 4-ші дерек пакетінің 6-шы байтындағы 2-ші бит ретінде сақталады (ескерту: бұл орналасқан жерлер тек иллюстрациялық және құрылғыға тән). Құрылғы әдетте HID дескрипторын ROM-да сақтайды және оны түсіну немесе талдау қажеттілігі жоқ. Қазіргі нарықтағы кейбір тышқан мен кілтпе аппараттары тек 8 биттік процессорды қолданады. Хост құрылғыдан гөрі күрделірек болуы керек. Хост құрылғымен толық байланысу үшін HID дескрипторын құрылғыдан алуы және оны талдауы қажет. HID дескрипторын талдау қиын болуы мүмкін. Бірнеше операциялық жүйелер HID дескрипторларын талдау үшін жауапты құрылғы драйверлерінде қателер жібергені белгілі болды, тіпті драйверлер бастапқыда жарияланғаннан кейін жылдар өткен соң да. Дегенмен, осы күрделілік HID құрылғыларымен жылдам жаңару мүмкіндігін қамтамасыз етеді. Жоғарыда сипатталған механизм HID «есеп беру протоколы» деп аталады. Барлық хосттар HID дескрипторларын талдауға қабілетті емес екені түсінілгендіктен, HID сондай-ақ «жүктеу протоколын» анықтайды. Жүктеу протоколында тек белгілі бір құрылғылар белгілі бір мүмкіндіктерімен қолдау табады, себебі тұрақты дерек пакеттерінің форматтары қолданылады. Бұл режимде HID дескрипторы қолданылмайды, сондықтан жаңарулар шектеулі. Алайда, артықшылығы – бұл HID-ті қолдамайтын хосттарда да минималды функционалдық мүмкіндіктерді қамтамасыз ету. Жүктеу протоколында қолдау көрсетілетін жалғыз құрылғылар: Кілтпе – HID пайдалану кестелерінде анықталған алғашқы 256 кілт кодының («Пайдалану») кез келгені, 7-ші пайдалану беті жүктеу протоколын пайдаланатын кілтпе арқылы хабарлануы мүмкін, бірақ көптеген жүйелер осы кілттердің кіші жиынтығын ғана қолдайды. Көптеген жүйелер IBM AT 101 макетіндегі барлық 104 кілтті, сондай-ақ Microsoft Windows 95 үшін жасалған үш қосымша кілтті (сол және оң Windows кілттері және Мәзір кілті) қолдайды. Көптеген жүйелер сондай-ақ негізгі батыс еуропалық 105, корей 106, бразилиялық ABNT 107 және жапондық DOS/V 109 кілттерін де қолдайды. 7-ші бетте көрсетілмеген батырмалар, кілттер мен кілт кодтары қолдау көрсетілмейді. Мысалы, белгілі бір АҚШ кілтпесінің QWERTY кілттері жұмыс істейді, бірақ калькулятор және шығу кілттері жұмыс істемейді, өйткені олар 12-ші беттегі пайдалануда анықталған және жүктеу протоколында хабарлана алмайды. Тышқан – тек X, Y осьтері және алғашқы 3 батырмасы қол жетімді болады. Тышқанның кез келген қосымша мүмкіндіктері жұмыс істемейді. Жүктеу режимінің кең таралған қолданылуының бірі – компьютердің жүктелу тізбегінің алғашқы сәттерінде. Компьютердің BIOS-ын тікелей конфигурациялау көбінесе тек жүктеу режимін пайдалану арқылы жасалады. Кейде пайдаланушыға құрылғы дұрыс драйверді орнатқанын және енді оны пайдалануға болатынын хабарлайтын хабарлама пайда болады.

Құрылғының анықтамасы

HID ерекшеліктеріне сәйкес, құрылғы хабарлама режимінде басқару элементтерінің жиынтығы немесе басқару элементтерінің тобы ретінде сипатталады. Басқару элементтері деректерді қамтитын және пайдалану белгісін қамтитын өрістермен сәйкес келеді. Әрбір пайдалану белгісі есеп беру режимінде сипатталған деректерді пайдаланудың конструктор ұсынған мақсатын сипаттайды. Бұл – HID құрылғысына қатысты барлық сипаттамаларды жасауға арналған Windows бағдарламасы (төмендегі сілтемені қараңыз). Ол синтаксисті тексеруді жүзеге асырады және HID сипаттамалары үшін C, C Header және екілік файлдарды құрай алады. Оның мәтіндік негіздегі Пайдалану кестесінің анықтамалық файлдарын меншікті Пайдалану (басқару түрлері) немесе Пайдалану кестелерін (құрылғымен немесе мүмкіндікпен байланысты Пайдалану жиынтығы) анықтау үшін де оңай кеңейтуге болады.