Някои функции на работа с клавиатурата

За да използвате клавиатурата ефективно, добре е да разберете как системата се справя с натисканията на клавишите. Има най-малко три вида кодове, свързани с клавиатурата: кодове на знаци, виртуални кодове и кодове за сканиране и не всеки разбира разликата между тях. Нека се опитаме да изясним този объркващ въпрос.

В Windows всичко това се прави толкова объркващо, че няма къде да се отиде, а също така е организирано по малко по-различен начин в 9x и в NT (XP). Там беше въведена концепцията за текущия „език“ (с изключение на отделните „оформление“ и „кодова страница“) - първоначално това просто означаваше комбинация от кодовата страница и самото оформление, което е логично. Но с преминаването към Unicode, понятието „език“ всъщност започна да живее независим живот и до какво това води - ще обсъдим по-подробно в Глава 8. Ще говорим и по-подробно за различни кодировки на кирилица.

Операционната система (DOS или Windows) може да използва върху всичко това и други таблици за интерпретация, успоредно с кодовата страница. Под "други таблици" имаме предвид не само национални таблици със символи, но и изпълнението например на такава функция като въвеждане на символ по неговия номер с натиснат клавиш (не забравяйте, че само левият работи, само с цифров клавиатура и само когато е включена), или представяне на контролни кодове (кодове на символи 01-31), популярни в DOS програми, които не могат да се въвеждат директно на клавиатурата чрез натискане на +. Да кажем, че действие, подобно на натискане, т.е. въвеждане на кодове 10 + 13, изглежда като последователност от натискане на +, + [1] .

Фигура: 6.1. Оригинална клавиатура за компютър на IBM с бутон B4

Поради всички тези причини не е лесно да се стигне до оригиналните кодове за сканиране, но, за щастие, чисти кодове за сканиране на практика може да се изискват рядко, а за точна идентификация на ключа е достатъчно това, което системата предоставя. Кодовете за сканиране бяха присвоени на клавиатурата с 84 клавиша, разработена едновременно с IBM PC 'в един ред (отляво надясно, отгоре надолу), следователно например кодът за сканиране 01 беше присвоен на ключа и код (02) беше присвоен не на клавиша, както бихте очаквали, гледайки модерна стандартна клавиатура и ключа, който веднага последва на тази клавиатура (Фигура 6.1). Още по-голямо объркване има със системните клавиши на допълнителната клавиатура (вляво от цифровата клавиатура), които дублират функциите на цифровата клавиатура на клавиатурата с 101/104 клавиша - това са, курсори и т.н. в близост до цифровата клавиатура също са дублирани:, и т.н. Общият принцип на присвояване на кодове за сканиране е следният: основните кодове за сканиране (те са 7-битови, наличието на 8-ми бит означава код за освобождаване на същия ключ) са били присвоени на тези ключове, които са били използвани в 84-бутон версия, а на нововъведения дубликат беше присвоена същата стойност с добавяне на втория (най-значимия) байт, равен на $ E0 (това не се отнася за такива дублиращи се ключове, като десния - първоначално беше на 84 -бутонна клавиатура). Както обаче ще видите от таблицата в допълнение 2, действително наличните кодове за сканиране на допълнителната клавиатура повтарят подобни кодове за сканиране на цифровата клавиатура и когато са деактивирани, виртуалните кодове също са идентични, но когато кодът на виртуалния ключ на цифровата клавиатура е включена, тя е специална и се различава от цифрите на основната клавиатура. Специален код (както виртуален, така и код за сканиране) за клавишите и т.н., разположен до цифровата клавиатура, поради което константите са дефинирани отделно за тях - идентификатори на виртуални кодове.