Підготовчі роботи, при введенні інформації маніпулятором миша

До складу програми по роботі з мишею входять наступні операції:

1) перевірка інсталяції драйвера "миші";

2) завдання виду і форми курсора маніпулятора;

3) визначення меж переміщення курсору по екрану;

4) опис чутливості курсора, що відповідає числу Міккі,
припадають на один піксель екрану по горизонталі і вертикалі;

5) установка порогу подвоєною швидкості курсора;

6) включення курсору маніпулятора;

7) установка курсору в початкову позицію екрану.

Всі наведені операції здійснюються з перериванням 33h. Розглянемо їх.

Перевірку інсталяції драйвера "миші" здійснює функція

В результаті її виконання в регістр АХ заноситься 0000h. якщо драйвер миші відсутній або FFFFh якщо миша готова до роботи.

У регістрі ВХ встановлюється число кнопок маніпулятора: 0002h - дві кнопки, 0003h- три кнопки і 0000h- не дві кнопки.

Відповідна програма може мати наступний вигляд

-АХ = О,
geninterrupt (0 x 33);

if (-AX = = 0) puts ( "відсутня драйвер" миші "!");

else puts ( "миша" готова ").

Завдання виду і форми курсору здійснюється окремо для текстового режиму і для графічного

У текстовому режимі форма курсора задається функцією

Крім того здійснюється заповнення наступних регістрів.

У регістр BX заноситься 00 або 01 в залежності від того, використовується програмований або "жорсткий" курсор. "Жорсткий" курсор - це курсор
збігається зі звичайним курсором телеекрану, котрий обіймав кілька рядків
в межах знакоместа. При цьому в регістрі СХ встановлюється номер
верхньої скан-лінії, а в регістрі ДХ - номер нижньої.

Наприклад, якщо в СХ занести значення 0, а в ДХ - значення 7h,
то курсор представиться у вигляді прямокутника розміром 8х8 біт. Якщо прийняти СХ = 7h, ДХ = 7h, то курсор прийме віц штриха, лежачого
в підставі названого вище прямокутника або в підставі знакомісця.

Програмований курсор створюється так. У регістр СХ поміщається
AND- маска курсора, а в регістр ДХ -XОR, -маски. Наприклад, якщо необхідно запрограмувати курсор у вигляді штриха в підставі знакомісця, то використовується його АSСII-код, який дорівнює 5F. запишемо

AND-маску = 0000h і XOR-маску = хх5Fh

Знаки XX в XOR-масці визначають атрибут символу курсора.

Відзначимо, що формування курсору на екрані здійснюється так.
Спочатку відбувається операція виключає АБО між XOR-маскою і
Аnd-маскою курсору:

Z = (XOR- маска XOR AND-маска)

Отриманий результат побитово множиться зі станом екрану в даному знакомісць:
стан екрану = стан екрану AND Z.

Програма створення жорсткого курсору має вид:

а програмованого для даного прикладу вид:

В даному випадку байт атрибуту курсора дорівнює XX = 33.

У графічному режимі може бути прийнята будь-яка форма курсора в
межах прямокутника 16 х 16 пікселів.

Для цього задається дві маски: Аnd, - (маска екрану) і XOR-маска
(Маска курсора).

Побітові операції по формуванню кольору пікселя на екрані представлені в табл.83

Колір пікселя на екрані

Колір фону Білий колір Поточний колір пікселя Побітова інверсія поточного кольору пікселя

Особливістю графічного курсора є наявність так званого гарячого плями (hotspot) в відносних координатах за точку відліку яких прийнято верхній лівий кут прямокутника 16 х 16 пікселів. Гаряче пляма - це піксель, на який вказує в даний момент графічний курсор.

Графічний курсор описується функцією

При цьому в регістрі ВХ вказується відносний номер стовпця
гарячого плями, а в регістрі СХ - номер відповідного рядка.

Як приклад розглянемо XOR-маску курсора в двійковій системі числення.

1000 0000 0000 0000

0100 0000 0000 0000

0110 0000 0000 0000

0011 0000 0000 0000

0011 1000 0000 0000

0011 1100 0000 0000

0011 1110 0000 0000

0011 1111 0000 0000

0001 1111 1000 0000

0001 1111 1100 0000

0000 1111 1110 0000

0000 0111 1111 0000

0000 1111 1111 1000

0000 0111 1111 1100

0000 0111 1111 1110

0000 0011 1111 1111

Цією масці в шістнадцятковій системі числення відповідає
КОД

0х8000; 0Х4000; 0Х3000; 0Х3800;

0Х3800; 0Х3600; 0Х3E00; 0X1F00;

0X1F80; 00FC0; 0X0FE0; 0Х07F0;

0X0FF8; 0X07FC; 0X07FE; 0X03FF;

Зображується ХОR - маска на тлі АNД - маски (білий фон).

0XFFFF 0XFFFF 0XFFFF 0XFFFF

0XFFFF 0XFFFF 0XFFFF 0XFFFF

0XFFFF 0XFFFF 0XFFFF 0XFFFF

0XFFFF 0XFFFF 0XFFFF 0XFFFF

В результаті виходить видимий на будь-якому фоні курсор.

Для отримання білого курсору на поточному тлі AND-маска є інвертуванням слів ХОR - маски: там, де в XOR - масці стоять одиниці, в АNД - масці стоять нулі.

Відповідна АNД - маска буде мати вигляд.

0Х7FFF 0XBFFF 0XCFFF 0XC7FF

0ХС'7FF 0XC3FF 0XC1FF 0XE0FF

0XE07F 0XF03F 0XF01F 0XF80F

OXF007 0XF803 0XF801 0XFC00

Наведені AND - і ХОR - маски є елементами масиву, типу
static unsigned sereen_and_cursor_masks [] =

Програма, що реалізує установку курсора може мати наступний вигляд

де hot_spot_column, hot_spot_row - координати Х, У гарячого плями.

Межі переміщення курсору визначаються функціями АХ = 0007 і

AX = 0008 переривання 33h. Першою функцією встановлюються кордону переміщення по вертикалі, а другий - по горизонталі. У регістрах СХ і ДХ встановлюються мінімальна і максимальна межі переміщення курсора. Відповідні програми можуть мати такий вигляд. Для горизонтальних кордонів

Для вертикальних кордонів

Наведені програми можуть скласти відповідні Сі - функції призначення кордонів пересування курсору. За замовчуванням курсору надається весь екран.

Чутливість курсора встановлюється функцією Аx = 000Fh.
У регістрах СХ і ДХ встановлюються значення чутливості в микки на 8 пікселів як по горизонталі так і по вертикалі. Наприклад, програма, що встановлює чутливість один микки на піксель може мати вигляд:

Установка порога подвоєною швидкості здійснюється функцією АХ = 0013h. При цьому в регістрі записується поріг подвоєною швидкості. За замовчуванням він дорівнює 64 Міккі / с. У даній програмі використовується лише три інструкції

В даному прикладі поріг подвоєною швидкості прийнятий рівним 32 Міккі / с. Після його досягнення швидкість руху миші на екрані подвоюється.

Поточні установки курсору миші визначаються функцією АХ = 001Bh. У регістрі b х можна прочитати чутливість по горизонталі, в СХ -чувствітельность по вертикалі, а в ДХ - поріг подвоєною швидкості.

Включення курсора здійснює функція АХ = 0001 переривання 33h, а вимикання функції АХ = 0002 того ж переривання.

Рекомендуються наступні макро для включення і виключення курсора.
# Define CURSOR_ON () _AX = 1; geninterrupt (0X33);

# Define CURSOR_OFF () _AX = 1; geninterrupt (0X33);

Установка курсора в початкову позицію екрану здійснюється функцією АХ = 0004h. При цьому в регістрі СХ повинна бути встановлена ​​горизонтальна координата курсора, а в ДХ - вертикальна.

Відповідна функція може бути складена на основі наступних
інструкцій

71. Читання позиції курсора і стан кнопок миші.

Для визначення місця розташування курсора і стану кнопок маніпулятора використовується Функція АХ = 0003h. При цьому в регістрі BL зчитується стан кнопок маніпулятора:

біт 0 дорівнює I - натиснута ліва кнопка

дорівнює 0 - ненажатом права кнопка

біт I дорівнює I - натиснута права кнопка

дорівнює 0 - не натиснута права кнопка

біт 2 дорівнює I - натиснута середня кнопка

дорівнює 0 - не натиснута середня кнопка

Біти 3-7 не використовуються.

У регістрі СХ визначається горизонтальна координата курсора. а в регістрі ДХ - вертикальна. Приклад програми реалізує названі операції має вигляд

У текстовому режимі розташування курсора і число натиснень запитуваної кнопки визначається функцією АХ = 0005 4. При цьому в регістр ВХ збожеволіє ідентифікатор кнопки: 0 - запит 0 лівої кнопки, 1-запит 0 правої, 2 - запит 0 середньої кнопки. Після виконання всіх
дій в ВХ повертається число натиснень кнопки, в СХ і ДХ - горизонтальна і вертикальна координати курсору.

Слід зазначити, що число відпускання кнопок "миші" визначається
функцією АХ = 0006h.

Програма реалізує наведене дія може бути наприклад для лівої кнопки такий

Для довідки щодо визначення сумарного переміщення курсору по горизонталі і вертикалі служить функція АХ = 000Bh. При цьому в СХ і ДХ повертаються значення, відповідні переміщенню курсора по відповідним осях.

Графічні планшети (дигітайзери) і їх характеристики.

Графічний планшет (дігітайзер) це апаратний засіб введення графічної інформації представленої у вигляді прямокутних координат Х, У системи координат планшета.

Відмінність дігітайзера від миші наступне.

1. За допомогою дигитайзера реалізується як відносне, так і абсолютне позиціонування.

При відносному позиціонуванні, яке реалізується і в миші, визначаються координати наступної точки попередньої.

При абсолютному, яке властиво тільки дигитайзером, положення
точки на планшеті визначається щодо лівого нижнього кута робочої області планшета.

2. У графічному планшеті для введення інформації використовується як курсор, так і перо. При цьому перо дігітайзера копіює малюнок при введенні інформації в масштабі один до одного.

Графічні планшети мають наступні характеристики.

1. Розмір планшета охоплює діапазон від 5 х 5 дюймів до 36 х 48 дюймів.

2. Роздільна здатність визначається кількістю ліній, що розміщуються в одному дюймі. Точність характеризує припустиму похибку при визначенні координат точки.

3. Швидкодія визначає число точок в секунду, яке передається з планшета в персональний комп'ютер.

4. Близькість визначає відстань від поверхні планшета до пера, при якому розпізнаються точки на планшеті.

5. Програмне забезпечення та заміщення програмних продуктів (емуляція). Графічні планшети забезпечуються власними драйверами з графічними програмами. Але вони можуть заміщати (емулювати) і існуючі програми. Наприклад, так може заміщатися драйвер миші. І в
цьому випадку графічний планшет буде працювати як миша.

6. Курсори та пір'я. Для роботи з планшетом використовуються курсори і пір'я. Обидва ці пристрої можуть мати як кабельне, так і безкабельні з'єднання. Курсор за своєю формою нагадує миша і може містити
від однієї до 16 кнопок.

Пір'я можуть бути чорнильними і бесчернільньмі. Перша кнопка пера
знаходиться внизу і активується при її натисканні. Друга і інші кнопки
знаходяться на бічній поверхні пера.

Останнім часом використовується так звані перодавленія. виклик
тієї чи іншої функції при цьому здійснюється силою натискання на нього.
Рівень тиску на перо цифри в одиницях від 64 до 256.

7. Шаблони меню вибору функцій поміщаються на планшеті в формі багатошарового пластмасового бланка, який ідентифікує місця на планшеті для вибору функцій.

Переміщення курсору або пера в дане місце шаблону і натискання
кнопки викликає відповідну функцію.

8. Технологія планшетів визначає принцип дії планшета. Для цілей ГІС технологія планшетів практично значення не має.

9. Ергономічність визначає оптимальність процесу роботи з
графічним планшетом. З цією метою підбирається найбільш зручний планшет.

Як приклад розглянемо графічний планшет Easy Painter. Справжній дігітайзер працює в DOS, а також Windows 95 і 3.1. Їм цілком може заміщатися маніпулятор миша. Справжнім дигитайзером виконуються наступні види робіт

2) управління курсором на екрані,

3) вибір місця шаблону для виконання певної функції.

У комплект дігітайзера входить: планшет I (рис. 44), Двокнопочне перо 2, програмне забезпечення (утиліти) для DOS і Windows 95, 3.1. прикладні програми, інструкція користувача.

Справжній дігітайзер має наступні характеристики:

а) робоча область (розмір) 5х5 дюймів

б) роздільна здатність 1016 ліній на дюйм

в) точність - 0,01 дюйма.

г) швидкодія 9600 бітів в секунду

д) близькість 0,5 дюйма

е) програмне забезпечення - утиліти DOS і Windows і заміщення (емуляція) драйвера миші.

ж) покажчик - Двокнопочне перо

з) технологія - електромагнітна.

Якщо дігітайзер використовує власний адаптер зв'язку, то спочатку необхідно встановити його так само як і адаптер миші. Потім дігітайзер просто підключається до адаптера. Як правило ж дігітайзер підключається у вільний послідовний порт, підключається харчування і запускається відповідне програмне забезпечення.

Розглянемо порядок установки на прикладі дігітайзера Easy Painter.

1. Виключити комп'ютер.

2. Перо підключити до правого роз'єму планшета.

3. З'єднати планшет з комп'ютером. При цьому 9-голчастий штекер з'єднати з відповідним роз'ємом.

4. Включити комп'ютер. Якщо сигнальна лампочка планшета (з його лівого боку) горить яскраво, то це означає, що перо знаходиться в робочій області і межах близькості. При порушенні меж близькості робочої області лампочка мерехтить.

Перо дігітайзера - бесчернільное. В DOS його нижня кнопка відповідає лівій кнопці миші, а бічна - правою.

У Windows за замовчуванням відповідність кнопок таке ж. Але воно може бути змінено Windows програмою WCPNLKYE.EXE.

Схожі статті