Скан коди клавіш клавіатури таблиці. До питання оцінки пемін цифрових сигналів. клавіатури. Як сканувати QR-коди на Android

Більшість сучасні клавіатуризабезпечено мультимедійними клавішами, та й мишки вже мають від трьох до семи кнопок. На диску, що йде в комплекті, і на сайті виробника доступні драйвери та всілякі корисні програмитільки для Windows. Всім відомо, що Linux славиться своєю можливістю налаштувати систему під себе, якщо, звичайно, знати, де і що налаштовувати. Наше завдання – навчити пінгвіна працювати з додатковими батонами.

Визначення скан-коду клавіш

Що б ти там не натискав на своїй клавіатурі, X-сервері та ядрі, загалом, все одно, що на ній написано або намальовано. Їх цікавлять виключно скан-код кнопки, причому спочатку ікси зчитують таблицю кодів клавіш ядра, а потім код прив'язується до власної таблиці кодів. Якщо в Windows проблеминалаштування мультимедійних клавіш у консолі як такої не існує, то в Linux доводиться окремо налаштовувати реакцію на натискання кнопок у консолі та в X-Window.

Щоб дізнатися код клавіші, слід використовувати утиліту xev, що входить до складу сервера Х. Після її запуску з'являється вікно Event Tester, тепер послідовно натискаємо клавіші, запам'ятовуючи код, що видається:

$xev
...
KeyRelease event, serial 31, synthetic NO, window 0x3e00001,
root 0x67, subw 0x0, time 279734676, (311,611), root:(1104,687),
state 0x2000, keycode 236 (keysym 0x1008ff19, XF86Mail), same_screen YES,

XFilterEvent returns: False
KeyRelease event, serial 31, synthetic NO, window 0x2600001,
root 0x67, subw 0x0, time 265877259, (883,334), root:(886,358),
state 0x0, keycode 161 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

Висновок може бути величезний, тому що відстежується кожен рух мишки під час проходження над вікном Event Tester. Клавішу описує блок KeyRelease, зокрема значення keycode якраз і є скан-кодом, який ми хочемо дізнатися. У наведеному прикладі натиснуто дві клавіші. Клавіше з кодом 236 відповідає код клавіші для X-сервера, вказаний у keysym, а також дію XF86Mail, яку KDE запускає поштовий клієнт, що використовується за замовчуванням. Для клавіші з номером 161 код та дія не визначені.

Можлива ситуація, коли кнопка натискається, але її скан-код не видається. Це означає, що ядро ​​неспроможна знайти відповідне значення. У висновку dmesg має бути такий рядок:

Use "setkeycodes 0xec to make it known.

Тобто тобі пропонують встановити скан-код клавіші самостійно за допомогою setkeycodes, при цьому значення keycode вибрати дуже просто. Переведи отриману цифру в десяткове число (більшість калькуляторів це вміють) і додай 128. У даному прикладі 0xec=236, тобто отримуємо скан-код 364. Якщо є сумніви, список задіяних і незадіяних скан-кодів можна переглянути, запустивши в консолі або dumpkeys. Наприклад, якщо висновок «getkeycodes | grep<код клавиши>» нічого не дав, отже, цей код можна сміливо використовувати.

Допомогти визначити скан-код здатна і утиліта ХKeycaps (www.jwz.org/xkeycaps), яка є графічним фронт-ендом до Xmodmap.

У консолі програма xev, ясна річ, не працює. Щоб дізнатися скан-код, що видається ядром, слід використовувати утиліту showkey або getkeycodes:

$showkey
клавіатура була у режимі UNICODE
натисніть будь-яку клавішу (програма завершиться через 10 с після останнього натискання).
0xe0 0x6c 0xe0 0xec

Перші дві цифри відповідають натиснутій клавіші, другі – відсутності натискання.

Налаштування прив'язки скан-кодів у X-Window

Отже, скан-коди тепер у нас є, потрібно вказати Х-серверу, що він, власне, повинен робити при натисканні цієї клавіші, тобто надати їй символьне ім'я. Список символьних імен наведено у файлі заголовків XF86keysym.h. За замовчуванням файли заголовків Х-сервера в сучасних дистрибутивах не встановлюються. Щоб побачити його в Ubuntu, потрібно встановити пакет x11proto-core-dev, після чого файл буде лежати в каталозі /usr/include/X11. Як варіант - можна звернутися до CVS-сервера X.Org. Дивимося:

$cat /usr/include/X11/XF86keysym.h
/*
* Keys found on some "Internet" keyboards.
*/
#define XF86XK_Standby 0x1008FF10
#define XF86XK_AudioLowerVolume 0x1008FF11
#define XF86XK_AudioRaiseVolume 0x1008FF13
#define XF86XK_AudioPlay 0x1008FF14
#define XF86XK_AudioStop 0x1008FF15
#define XF86XK_Mail 0x1008FF19

Якщо ми порівняємо останній рядок з виведенням xev, то побачимо, що значення збігаються з клавішею keycode 236 - keysym 0x1008ff19, XF86Mail (без суфікса XK_). Список усіх доступних значень у тому вигляді, в якому вони повинні використовуватися, ти знайдеш у /usr/share/X11/XKeysymDB.

Скласти свій варіант розкладки можна двома способами: створити опис клавіатури або використовувати Xmodmap. Останній спосіб найпростіший, тому про нього і говоритимемо далі. У домашньому каталозі користувача створюємо файл Xmodmap, в який заносимо бажані значення:

$ mcedit ~/. Xmodmap

keycode 161 XF86Calculator
keycode 174 XF86AudioLowerVolume
keycode 176 XF86AudioRaiseVolume
keycode 162 XF86AudioPause

І так далі принцип, думаю, зрозумілий. Причому код клавіш можна заносити як у десятковому, так і шістнадцятковому вигляді. За моїми спостереженнями, коди більшості клавіш стандартизовані. Тому, якщо ти один раз налаштуєш реакцію на натискання кнопки і перенесеш файл на інший комп, є можливість, що на іншій клаві реакція на натискання також підписаної кнопки буде аналогічна. Користувачі робочого столу Gnome з GDM можуть прописати всі ці рядки до загальносистемного файлу /etc/X11/Xmodmap.

В інших випадках нам потрібно вказати X-серверу, щоб він використовував створений файл. У різних дистрибутивах це реалізовано по-різному, основна ідея полягає в запуску команди /usr/bin/xmodmap $HOME/.Xmodmap при вході користувача в систему або старту Х. Тут вже кожен танцює, як хоче. На форумах пропонують використовувати $HOME/.xsession (у деяких дистрибутивах він може називатися .Xsession), .xprofile або системний /etc/X11/Xsession. І боюсь, що це далеко не все можливі варіанти. Давай подивимося, як зроблено в KUbuntu:

$ sudo grep -iR xmodmap / etc

В результаті знаходимо найцікавіший файл /etc/X11/Xsession.d/80ubuntu-xmodmap такого змісту:

$cat /etc/X11/Xsession.d/80ubuntu-xmodmap

/usr/bin/xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || true

USRMODMAP="$HOME/.Xmodmap"

if [-x /usr/bin/xmodmap]; then
if [-f "$USRMODMAP"]; then
/usr/bin/xmodmap "$USRMODMAP" || true
fi
fi

Тобто завантажується вміст файлу ubuntu.xmodmap і .Xmodmap, якщо він існує. Відкривши в редакторі ubuntu.xmodmap, ви знайдете список keycode і зіставлені символьні імена. Звідси можна дійти невтішного висновку: якщо розробник повідомляє у тому, що його дистрибутив підтримує мультимедійні клавіатури, з великою ймовірністю можна знайти подібний файл. В інших дистрибутивах присутня аналогічна система запуску користувацьких xmodmap-файлів.

Тепер, коли символьні імена присвоєно клавішам, можна призначати їм бажані дії. Деякі віконні середовища на кшталт KDE можуть відпрацьовувати дії за символьними іменами. Так, при натисканні кнопки з XF86AudioPlay (ПИТАННЯ) починає відтворення плеєр, який використовується за замовчуванням. Щоб встановити потрібну комбінацію, достатньо зайти до «Центру керування KDE -> Регіональні та спеціальні можливості -> Комбінації клавіш» (в KUbuntu шукай у «System Setting -> Keyboard & Mouse»). Аналогічний пункт меню є і в Gnome (можна просто викликати gnome-keyboard-bindings), і XFce. Плюс деякі програми на кшталт Amarok, Konqueror, MPD також можуть обробляти натискання кнопок. В інших середовищах, які не мають
графічних засобів налаштування, швидше за все, знадобиться ручне втручання у конфігураційні файли. Наприклад, щоб у IceWM після натискання клавіші з символьним ім'ям XF86AudioPlay запускався програвач XMMS, а при повторному натисканні він ставав на паузу, файл ~/.icewm, що з'являється після першого запуску, слід додати рядок:

$ mcedit ~/.icewm

key XF86AudioPlay xmms --play-pause

У Fluxbox рядок для запуску програвача виглядатиме так:

$ mcedit ~/.fluxbox/keys

None XF86AudioPlay:ExecCommand xmms --play-pause

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

Налаштування реакції в консолі

У консолі порядок дій дещо інший. Як пам'ятаєш, висновок dmesg рекомендував призначити клавішні коди за допомогою команди setkeycodes. Але тут є відмінності – клавішних команд у консолі не може бути більше 128, слід вибирати значення від 0 до 127:

$ setkeycodes 0xec 118

Ви можете переглянути вільні значення у файлі поточної клавіатурної розкладки. У Ubuntu та всіх дистрибутивах, що базуються на Debian, це зазвичай /etc/console-setup/boottime.kmap.gz. Якщо після запуску проблем із клавішами немає, заносимо цей рядок в один зі стартових скриптів, наприклад /etc/init.d/rc.local.

Тепер залишилося задати відповідність клавіші та виконуваної дії. Тут простір для творчості навіть більший, ніж в іксах. У keymaps(5) процедура встановлення відповідності keycode виглядає так:

(Plain | ) keycode keynumber = keysym

# Переключення консолі на одну назад при натисканні на клавішу з кодом 105
keycode 105 = Decr_Console
# Перемикання консолі на одну вперед при натисканні на та клавішу з кодом 106
alt keycode 106 = Incr_Console

Але можна створювати свої варіанти, вказуючи команду в змінних:

keycode 120 = F100
string F100 = "/sbin/shutdown -h now\n"

Іншими словами, після натискання клавіші з кодом 120 буде виконано дію, вказану в змінній F100; у нашому випадку встановлено вимкнення комп'ютера. Замість F100 можна використовувати будь-яке інше ім'я.

Тепер не менш важлива частина – куди все це записувати. У документації та численних порадах пропонується використовувати поточний файл консольної розкладки (у моєму випадку - boottime.kmap.gz). До речі, це єдиний файл опису розкладок, доступний після встановлення Kubuntu; Щоб побачити інші варіанти, слід встановити пакет console-data. Після цього в /usr/share/keymaps/i386/ можна знайти кілька підкаталогів з файлами всередині. Але якщо тобі знадобиться перейти на іншу розкладку (в Ubuntu та деяких інших дистрибутивах для цих цілей використовується файл /etc/default/console-setup або ~/.console-setup), всі налаштування потрібно буде перенести в інший файл, що кілька
незручно. Якщо ти все-таки зважишся на цей крок, використовуй наявні записи як шаблон, нічого не записуючи на першу позицію, а в кінці не забудь залишити порожній рядок.

Трохи про ноутбук

Поки що мені не траплявся ноутбук, скан-коди клавіш якого визначити не вдалося б. Тому параметри тут нічим не відрізняються від описаних вище. Хоча є один прийом, про який хотілося б розповісти. Я вважаю дуже зручним у використанні режим глибокого сну, коли, включивши комп'ютер, виявляєш все на своїх місцях. Сучасні дистрибутиви, як правило, його підтримують, хоча налаштування, загалом, нескладна - достатньо встановити пакет hibernate і перевизначити необхідні параметри в конфігураційному файлі. Єдине, щоразу для переходу в цей режим потрібно запускати скрипт /usr/sbin/hibernate, що не завжди зручно. Хочеться просто закрити кришку ноутбука, а знову ввімкнувши
харчування, виявити все на своїх місцях.

Це дуже просто зробити, використовуючи демон acpid, який являє собою щось на зразок інтерфейсу користувача, що дозволяє керувати будь-якими подіями ACPI, доступними через /proc/acpi/event. При цьому acpid читає набір файлів конфігурації з каталогу /etc/acpi/events/. Якщо пакет із демоном у дистрибутиві відсутній, встановлюємо його з репозитарію; останню версію можна взяти із сайту phobos.fs.tum.de/acpi. Після встановлення необхідно в каталозі /etc/acpi/events створити два файли: lid та power. Перший описує реакцію на закриття кришки, другий – на натискання кнопки живлення.

$ sudo mcedit /etc/acpi/events/lid

event=button/lid.*
action=/usr/sbin/hibernate

$ sudo mcedit /etc/acpi/events/power

event=button/power.*
action=/sbin/shutdown -h now

Це дещо спрощені варіанти, у KUbuntu ти знайдеш складніші скрипти. Після цього потрібно перезапустити демон acpid:

$ sudo /etc/init.d/acpid restart

Тепер при закритті кришки ноутбука система впадатиме в сплячку з вимкненим живленням, а при натисканні на кнопку живлення - вимикатися. Просто та зручно.

Програми налаштування

Якщо тобі не до вподоби метушня з конфігураційними файлами, пропоную кілька програм, які допоможуть налаштувати роботу мультимедійних кнопок. Наприклад, початкове призначення програми Sven (sven.linux.kiev.ua) - налаштування додаткових клавіш на мультимедійній клавіатурі, але починаючи з версії 0.4 вона вміє виправляти помилки при наборі тексту та змінювати клавіатурну розкладку. Більше того, навіть якщо у тебе звичайна клава, за її допомогою ти зможеш емулювати мультимедіа-клавіші, використавши замість них клавіатурні поєднання. Також можна призначити дії певних кнопок миші. Вона розуміє приблизно 10 000 російських слів та 9 500 англійських. Якщо програма не перемкнулась
сама, то розкладку можна змінити і вручну за допомогою спеціально заданої клавіші (за замовчуванням Break). Окремою кнопкою (Scroll Lock) можна змінювати регістр слів (верхній, нижній, перша літера - верхній, інші - нижній). Індикатор-перемикач розкладки клавіатури запам'ятовує свій стан для кожного вікна, тому часто перемикаючись між додатками, тобі вже не потрібно буде додатково змінювати і розкладку. Програма має великі можливості, і я радив би на неї поглянути. Усі налаштування виконуються за допомогою графічної програми, побудованою на бібліотеках GTK+. Sven тестувався в Linux, але, в принципі, повинен працювати і на *BSD-системах. Використовуваний віконний менеджер
не має значення.

Можливості KeyTouch (keytouch.sf.net) дещо скромніші, ця утиліта застосовується виключно для налаштування мультимедійних клавіш. Хоча за її допомогою будь-якій клавіші можна призначити свою дію, яка відрізняється від стандартних установок. На сайті програми, окрім вихідних текстів та пакетів для деяких дистрибутивів, можна знайти готові налаштування для мультимедійних клавіатур більшості відомих виробників.

Ще одне цікаве рішення- xbindkeys (hocwp.free.fr/xbindkeys/xbindkeys.html) - дозволяє надавати будь-якій кнопці клавіатури та мишки будь-які команди, у тому числі і команди оболонки. Усі налаштування виконуються у конфігураційному файлі, який має простий та зрозумілий формат.

Швидше за все на вашому телефоні вже встановлений за умовчаннямсканер QR-коду, можна легко з його допомогою просканувати перший QR-код. Зробити це дуже просто. Просто дотримуйтесь нашої інструкції.

1. Відкрийте пристрій читання QR-коду на своєму телефоні.

2. Тримайте пристрій над QR-кодом так, щоб його було добре видно на екрані вашого смартфона.

Якщо ви правильно тримаєте смартфон над QR-кодом, то в такому разі станеться таке:

  • Телефон автоматично сканує код.
  • У деяких програмах для сканування коду ви повинні натиснути на зображення, а не на кнопку як створити фото на вашому смартфоні.

3. Натисніть вказану кнопку, якщо потрібно.

Супер! Ваш смартфон зчитує код та переходити за заданим посиланням, що не завжди відбувається миттєво. На більшості пристроїв це може тривати кілька секунд.

Ви почнете бачити QR-коди всюди. Вони використовуються для навчання, інформування, пояснення та для багатьох інших речей. Знаходьте їх та скануєте! QR-коди заощадять вам багато часу та зусиль.

Як сканувати QR-коди на Android

А тепер ми розповімо вам, як використовувати програму сканування для QR-кодів на Android.

Коротко:
1. Відкрийте Play Маркет .
2. Пошук зчитувача QR-коду .
3. Виберіть QR Code Reader(через Scan).
4. Натисніть « Встановити».
5. Відкрийте програму читання QR-коду.
7. Направте камеру на QR-код.
8. Натисніть « ОК».

Крок 1. Відкрийте Play Маркет на Android.Це значок у програмі або на головному екрані.

Крок 2 Введіть зчитувач QR-коду в пошуковій системі.З'явиться список програм для читання QR-коду.

  • Ця стаття пояснює, як використовувати QR-код Reader, але ви можете вибрати те, додаток, який вам сподобається. Просто не забудьте прочитати про програму перед завантаженням.
  • Кроки повинні бути однаковими для всіх програм читання QR-коду.

Крок 3Натисніть на QR Code Reader, розроблений Scan.Ім'я розробника вказано нижче за кожну програму. Можливо, вам доведеться прокрутити сторінку вниз, щоб знайти програму, зроблену Scan.

Крок 4.Натисніть "Встановити" .З'явиться спливаюче вікно з проханням надати дозвіл для доступу до інформації на вашому Android.

Крок 5.Натисніть «Прийняти» . QR-код Reader тепер буде встановлений на Android-пристрої.

    • Коли програма буде завантажена, кнопка «Встановити» зміниться на «Відкрити», і у вас з'явиться новий значок у програмі.

Крок 6Відкрийте QR Code Reader.Це значок, який схожий на QR-код в додатку. Відкриється програма, яка виглядає як стандартний екран камери.

Крок 7.Вирівняйте QR-код у кадрі камери.Дещо схоже на те, як ви робите фотографії, за винятком того, що вам не потрібно натискати будь-які кнопки. Коли сканер штрих-кодів прочитає код, з'явиться спливаюче вікно з URL-адресою в коді.


Крок 8Натисніть кнопку «ОК», щоб відкрити веб-сайт.Це запускає ваш веб-браузер за промовчанням і переміщається за URL-адресою QR-коду.

Наступним типовим пристроєм ПЕОМ, начебто й нескладним, але доставляє, часом, клопіт досліднику, є клавіатура.

Загалом пристрій нескладний. Особливо ноне вже застарілі моделі, що підключаються до порту PS/2. Як показують численні експериментальні дані, мікросхема управління «клави» сканує натискання клавіш і передає в послідовному коді в порт. Тактова частота цієї передачі кратна (переважно випадків) » 6,3 або 10 кГц. Хоча автору попалися в останні роки пара екземплярів, тактова частота яких лежала в районі 20 кГц.

Всі клавіатури при натисканні та утриманні будь-якої клавіші починають (після деякої паузи) повторювати передачу коду клавіші «до нескінченності». У звичайному режимі це зазвичай через кілька секунд призводить до переповнення буфера контролера і порушення роботи. З'являється звуковий сигналсистемного «динаміка» – «писк». Суть тест-режиму (найзагальнішого) полягає в блокуванні команди переповнення буфера, що дозволяє, при натиснутій клавіші, забезпечити нескінченну передачу по кабелю «клави» обраного символу.

Як і завжди, для правильного подальшого розрахунку результату, необхідно створити постійне чергування імпульсів кодового пакета. Для кодів клавіатури таких комбінацій може бути дві:

10101010 (55) клавіша +; = »

01010101 (АА) у типових таблицях - не застосовується

Загальна таблиця скан-кодів наведена у таблиці 14.1

Таблиця 14.1- Скан-коди клавіатури

Клавіша

Скан-код

Клавіша

Скан-код

Клавіша

Скан-код

Клавіша

Скан-код

Таким чином, при реалізації тест-режиму і, наприклад, покладеному на клавішу «+» грузику в кабелі «клави» буде присутня нескінченна послідовність пакетів імпульсів. При цьому період прямування імпульсів у пакеті (тобто тактова частота), дорівнюватиме 6,10 або 20 кГц, а частота прямування пакетів буде набагато нижче. Формат даних наведено на малюнку 14.1

Для обміну даними в кабелі клавіатури служать дві лінії – KBData та KBSync. Під час передачі скан-кодів клавіатура виставляє черговий розряд даних на лінії KBData та підтверджує передачу перекладом з «1» на «0» сигналу на лінії KBSync.

Контролер може сигналізувати про свою неготовність передавати/приймати дані низьким рівнем лінії KBSync. Решта часу, коли немає даних передачі, обидві лінії мають високий рівень сигналу.



Як випливає з вищенаведеного, у діапазоні ПЕМІН кабелю клавіатури слід очікувати частотних складових з тактовою частотою 1/76,04·10 -6 =13,15 кГц. Причому через наявність двох, зрушених по фазі, сигналів з різними (але кратними!) періодами, парні та непарні частотні складові відрізнятимуться за амплітудою.

Як і слід очікувати, ПЕМІН лінії синхронних неінформативний, в принципі. Але відрізнити один ПЕМІН від іншого зовсім непросто. Кабель один, сигнали синхронні.

Практично єдиний спосіб– підібрати скан-код із мінімальним числом логічних «1» у посилці. Такими є клавіші F3 і F9 (03 і 01 в hex-коді). Код "00" не використовується.

Осцилограма скан-коду «F3» наведена нижче.


Строго «по енергетиці», якщо виміряти всі частотні складові ПЕМІН з кодом «=» і, наприклад, кодом «F9», то різниця у показаннях приймача на КОЖНІЙ з частотних складових і є інформаційна частина енергії ПЕМІН. І це максимум максиморум. Робота досить складна та стомлива, якщо немає можливості доручити її «автомату». Самі складові ПЕМІН для таких низьких частотвиявляються не без зусиль. Так ще й різниці «ловити»…



У практиці СІ, переважно випадків, просто вимірюють рівні ПЕМІН (нічого не віднімаючи) і вважають параметр захищеності. Можна й так, «із запасом», але знати справжній стан справ фахівець зобов'язаний.

На закінчення розгляду - «розпинання» роз'ємів AT-і PS/2-клавіатури.


«Картинки» на приймачі виглядає далеко не так «класично», однак і він цілком впізнаваний. Ось приклади



На спектрі добре видно зростання амплітуди компонентів із зменшенням частоти.

Є ще особливості вимірювання «клави» в цій частотній області (від десятків кГц і далі). Справа в тому, що клавіатура, у звичайному розміщенні, знаходиться неподалік системного блоку. А у верхній частині СБ знаходиться імпульсний блокхарчування – найпотужніший джерело ПЕМІН і з «Е», і з «Н» компонентам. У «світлі» такого театрального софіту, тьмяне «світло» клавіатури побачити – особливе мистецтво! Тому пропоную наступний прийом. Відсуньте «клаву» від СБ якнайдалі. Найкраще – на подовжувачі PS/2. Так метра на 2-2,5.

Розмістіть антену так, щоб на неї наводилося якнайменше від СБ (сигнал, при смузі приймача більше 10 кГц – суцільний спектр). І ось біля так зорієнтованої, нерухомої антени, починайте крутити «клаву» та її кабель (не навпаки!). Тоді у Вас буде набагато більше шансів виявити сигнали ПЕМІН саме клавіатури, побачити компоненти ПЕМІН на екрані аналізатора на власні очі.

Все вищевикладене стосувалося клавіатури з інтерфейсом PS/2. Але зараз їх масово замінюють клавіатури з USB-інтерфейсом.

Взагалі цей інтерфейс докладно розглядався разом із принтерами. Однак буде не зайвим дати деяке «цілковказ» і щодо клавіатури.

Згадаймо побудова пакетів для інтерфейсу USB, враховуючи, що клавіатура підключається, строго, з low-speed (тобто фактично за інтерфейсом USB 1.0).

Максимальний розмір корисного навантаження DATA (payload) для low-speed пристроїв складає 8 байт. Тобто це саме те, що вимагає скан-код клавіатури.

Побачити сигнал (саме дані) в лінії USB виявилося не таким простим завданням. Тим не менш - ось що виявилося саме в кабелі типової USB "клави" моделі GENIUS KB-06XE, саме в лінії (проводі) "data +" (рис. 14.10)


Ці дві осцилограми змінюють одна одну з невстановленою (хаотичною) періодичністю, причому «картинки» сигналів не залежать від натиснутої клавіші клавіатури (або ніякої ненатиснутої). Жодних інших змін у «змінній» частині пакету (фрейму) виявити не вдалося.

Періодичність цих пакетів жорстко стабілізована (рис. 14.11), а тривалість кожного становить (видно на осцилограмах) близько 34 ±1 мкс.


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


Крім того, слід враховувати, що через різні періоди проходження імпульсів і різної їх тривалості спектр носить характер деякої суміші зі спектра суцільного і лінійного. Проте пелюстковий характер спектру, природний для нескінченної послідовності пакетів і кратний у своїх «пелюстках» середньої тривалості пакета, зберігається дуже наочно. Тільки «нулі» функції згладжені джиттером та неременним періодом проходження окремих імпульсів. Однак сама картинка цілком характерна. При більш тонкій частотній роздільній здатності спектр починає вирішуватися на «лінії», зумовлені частотою проходження пакетів (250 Гц) (рис. 14.13) Таким чином, при найпростішому і незасинхронізованому з істинною передачею скан-коду перегляді осцилограм, виявити і візуалізувати ділянки кадру ( , який відповідає за передачу даних, не вдалося. Тим не менш, можна стверджувати, що ПЕМІН кабелю клавіатури все одно буде ось такою і жодною іншою. Зрозуміло, яких частотах його шукати, зрозуміло, що він матиме характер суцільного (у разі, при частотному дозволі приймача понад 0,3 кГц). І зрозуміло, яку величину підставляти при розрахунках як тактову (мінімальний період імпульсів у пакеті в експерименті становив 1,322 мкс). Виміряти це, за будь-яких СІ, маючи осцилограф, хоча б із 200 МГц смугою – завдання тривіальне. Тест-режим, по суті – будь-який, можна натискати клавіші (будь-які), можна не натискати нічого. Пакети за інтерфейсом передаються однаково. І, у першому наближенні, вважаємо їх інформативними (поки що не доведено протилежне).

Наведені осцилограми та спектри отримані за допомогою осцилографа АКИП-4108/2, підключеного до того ж комп'ютера, на якому вимірювалися (треба зауважити – функціональний повтор розробки фірми «PICO Technology» нашими. Не гірше китайців:)) .

Спектр явно йде далеко за 1 МГц (більше не дозволив осцилограф, а підключати аналізатор не було великого сенсу). Решту обумовлено вже кабелем, як випадковою антеною та ступенем його екранування.

Для інших режимів інтерфейсу USB потрібен вже осцилограф зі смугою в багато ГГц.

Як саме вважати суцільний спектр і, при цьому, залишитися в рамках НМД, що діють, – розмова окрема і не для відкритого обговорення, на жаль… Однак у наступних публікаціях доведеться до нього повернутися, подітися нікуди. Спробую «залишитися в рамках дозволеного».

Зайнятися пристроєм подібного роду мене спонукав той факт, що більшість простих для повторення геймортівських пристроїв не дозволяла продати достатню кількість кнопок управління. Ігровий порт PC спочатку взагалі розрахований максимум на чотири кнопки. Різні розширення також не мають бажаної гнучкістю. Наприклад, популярне серед саморобів розширення CH Flightstick Pro дозволяє реалізувати до 14-ти кнопок, але при цьому одночасно не можна використовувати дві будь-які кнопки - про польоти на таких пристроях в іграх, в яких доводиться постійно «крутити головою» - у тих же пташках, можна забути. Деякі розширення використовують виключно цифровий інтерфейс - дані про натиснені кнопки і відхилення ручки передаються цифровими лініями геймпорту, які спочатку призначалися для передачі даних про чотири «стандартні» кнопки. Я навіть вважаю такі розширення чимось надмірними. Та й перетворення аналогових даних на цифрові ускладнює конструкцію джойстика. Крім того, не всяка гра захоче зрозуміти, що за монстр до неї «присмоктався». А клава – ось вона, у всій своїй 102-х клавішній красі! Крім того, масла у вогонь підливали передплатники RU.GAME.FLIGHT, що час від часу запитували «а як би мені клаву приручити і з джоєм схрестити?» і ті, що йшли ні з чим.

Коротше кажучи, завдання пристрою – «сидіти» на шині між клавіатурою та PC та імітувати натискання клавіш на клавіатурі, відповідно до натиснутих кнопок пристрою.

Отже, я засів за розробку. До цього в мене був досвід роботи з різними мікропроцесорами та мікроконтролерами. Загалом – пальці від вуха до вуха. І я наївно вважав, що ось зараз я візьму доки, зроблю RTFM і через тиждень буду на білому коні. Вся проблема виявилася в тому, що документації про протокол передачі даних між клавіатурою і контролером я не зміг знайти ні в Інтернеті, ні у відповідних конференціях Фідо. Довелося брати осцилограф і кілька тижнів займатися розбором часників та спробами їх повторити. Тому більша частина наведеної нижче інформації є результатом моїх висновків і не підтверджена документально. Якщо я в чомусь помиляюсь - радий вислухати коментарі за адресою rashpil at ukr dot net.

Основні принципи передачі

Все наведене нижче справедливо для PS/2 і AT-клавіатур, які відрізняються тільки виконанням роз'єму (можуть підключатися через перехідник).

Між клавіатурою та контролером, розташованим на материнській платі комп'ютера (далі – просто «контролером»), здійснюється двосторонній обмін даними. Контролер передає різні команди (наприклад – зміна стану світлодіодів чи швидкості автоповтору). Клавіатура передає скан-коди натиснутих клавіш (скан-код - умовне позначеннякнопки, не варто плутати з ASCII-кодами).

Скан-коди

Клавіша Скан-код Клавіша Скан-код Клавіша Скан-код Клавіша Скан-код
1 16 2 1E 3 26 4 25
5 2E 6 36 7 3D 8 3E
9 46 0 45 - 4E + 55
Backspace 66 Tab 0D Q 15 W 1D
E 24 R 2D T 2C Y 35
U 3C I 43 O 44 P 4d
[ 54 ] 5B Enter 5A Ctrl(L) 14
A 1C S 1B D 23 F 2B
G 34 H 33 J 3B K 42
L 4B ; 4C " 52 ` 0E
Shift(L) 12 \ 61 Z 1A X 22
C 21 V 2A B 32 N 31
M 3A , 41 . 49 / 4A
Shift(R) 59 Alt(L) 11 Space 29 Caps Lock 58
Esc 76 F1 05 F2 06 F3 04
F4 0C F5 03 F6 0B F7 83
F8 0A F9 01 F10 09 F11 78
F12 07 Scroll Lock 7E * 7C Num Lock 77
7 6C 8 75 9 7D - 7B
4 6B 5 73 6 74 + 5A
1 69 2 72 3 7A 0 70
. 71 Alr(R) E0-11 Ctrl(R) E0-14 Print Screen E0-12-E0-7C
Insert E0-70 Delete E0-71 Left E0-6B Home E0-6C
End E0-69 Up E0-75 Down E0-72 PageUp E0-7D
PageDown E0-7A Right E0-74 Enter E0-5A / E0-4A

Примітка: насправді AT-клавіатура має три різні набори сканкодів. Я навів лише значення для набору №2 – дефолтного.

При натисканні клавіші клавіатура передає контролеру скан-код цієї клавіші. При відпусканні спочатку префікс 0F0h, а потім скан-код відпущеної клавіші.

Комбінації клавіш із Shift, Alt і Ctrl передаються як послідовність двох скан-кодів. З погляду контролера ці кнопки нічим не відрізняються від решти. Так само на апаратному рівні не відрізняються режими Num Lock і Caps Lock - вони різняться на програмному рівні програмою, яка обслуговує переривання від клавіатури.

Коротко хочу зупинитись на реалізації режиму автоповтору. Як правило функції автоповтору покладаються на саму клавіатуру - через певний час, якщо клавіша не відпущена, то клавіатура посилає ще один такий самий скан-код. Якщо в цей час натиснути ще одну клавішу, то до контролера «полетить» вже інший скан-код і вважатиметься, що натиснуто лише одну клавішу. У іграх цю проблему вирішено елементарно - клавіша вважається натиснутою, доки прийде відповідний скан-код з префіксом 0F0h. Тому я не став реалізовувати функцію автоповтору в принципі.

Крім наведених вище скан-кодів, клавіатура може повертати деякі службові команди. Але ці команди, як і команди, видані контролером, не становлять у разі практичної цінності. Тому на них зупинятись не буду.

Опис протоколу обміну

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

Для обміну даними служать дві лінії - KBData та KBSync. Під час передачі скан-кодів клавіатура виставляє черговий розряд даних на лінії KBData та підтверджує передачу перекладом з «1» на «0» сигналу на лінії KBSync. При прийомі даних від контролера клавіатура зчитує розряд даних з лінії KBData і підтвердження прийому перекладом з «1» в «0» сигналу на лінії KBSync. Контролер може сигналізувати про свою неготовність передавати/приймати дані низьким рівнем лінії KBSync. Решта часу, коли немає даних передачі, обидві лінії мають високий рівень сигналу. Частота проходження імпульсів лінії KBSync становить близько 10-25КГц.

Дані передаються у такому порядку: один стартовий біт – «0», вісім біт даних, біт парності (сума всіх розрядів +1), один стоповий біт – «1». Після прийому кожного байта даних контролер виставляє низький рівень лінії KBSync, сигналізуючи тим самим, що зайнятий обробкою прийнятих даних і готовий приймати такі. Це вважатимуться підтвердженням прийому. Клавіатура підтверджує кожен байт команди, що приймається видачею коду 0FAh. У разі помилки під час передачі, контролер може вимагати повторити передачу останнього байта, видачею команди 0FEh. Клавіатура поводиться інакше - просто ігнорує помилки. Я не бачу в цьому нічого фатального – якщо ваша система дає часті збої, то їй не місце на робочому столі.

Швидше за все, мої пояснення були надто заплутані, тому намагатимусь проілюструвати їх кількома часовими діаграмами.

Загальний вид передачі даних від клавіатури (S1 - стартовий біт; S2 - стоповий біт; D0-D7 - дані; P - біт парності; W - обробка прийнятих даних)

Приклад передачі байта 74h – клавіша «6» на нумпаді. У цьому прикладі при ініціації передачі клавіатурою контролер сигналізує про свою неготовність приймати дані і клавіатура чекає на звільнення лінії KBSync

Апаратна реалізація

Тепер я перейду безпосередньо до опису реалізації пристрою у «залізі».

Пристрій включається в розрив сигналів KBSync і KBData і пропускає через себе сигнали від / до клавіатури, опитує стан чотирьох кнопок і видає відповідні скан-коди, тим самим імітуючи роботу клавіатури.

Основу пристрою становить однокристальний мікроконтролер AT89C2051. Мікроконтролер AT89C2051 фірми Atmel належить до сімейства MCS-51 ( вітчизняний аналог- МК-51). Основна відмінність AT89C2051 від i8051 - знижене енергоспоживання, скорочена до 15-ти кількість ліній введення-виведення, відсутність можливості використовувати зовнішню пам'ять. Більше детальну інформаціюза AT89C2051 та i8051 можна знайти на www.atmel.com та www.intel.com. Замість AT89C2051 можна використовувати AT89C51, i8051 (КР1816ВЕ51) або i8031 (КР1816ВЕ31) із зовнішнім ПЗП. Але два останні варіанти через своє підвищене енергоспоживання можуть призвести до перегорання запобіжника контролера клавіатури.

На мікроконтролерах фірми Atmel після основного позначення вказується максимальна частота генератора тактового в мегагерцах. Я раджу ставити мікроконтролер розрахований на частоту 24МГц і кварц із частотою вище – 16-20МГц.

Принципова схема. (R1-R4 - 47K; R5 - 10K; C1, C2 - 18пФ; C3 - 1мкФ; D1 - AT89C2051; BQ1 - кварц 12-24МГц)

Лінія P1.4 використовується як вихід роздільної здатності опитування кнопок. Це - заділ для майбутніх розширень, - лінії P1.4-P1.7 будуть використані для видачі адреси рядка для опитування натиснутих кнопок (до 16-ти рядків по 4 кнопки). "0" на лінії P1.0-P1.3 означає, що натиснута відповідна кнопка.

Елементи C3 та R5 реалізовують схему генерації сигналу скидання при подачі живлення.

Лінії KBData з боку клавіатури та контролера подаються на входи P3.2 (INT0) та P3.3 (INT1). Таким чином, спроба ініціювати передачу даних з боку клавіатури або контролера викликає відповідне переривання. Підпрограми обслуговування цих переривань просто транслюють сигнали, що відповідають передачі одного байта через мікроконтролер. Коли мікроконтролер не зайнятий передачею даних, відбувається опитування ліній P1.0-P1.4, обробка отриманих даних і видача відповідних скан-кодів контролеру. У цій версії пріоритет надається даним, що передається самим пристроєм. Тому дані від клавіатури іноді можуть губитися.

Завершуючи цей розділ, наведу розпинання роз'ємів AT- та PS/2-клавіатури.

Сигнал -KBReset – необов'язковий сигнал. Деякі контролери можуть використовувати його, щоб скинути клавіатуру.

Текст мікропрограми

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

Org 0 sjmp start org 3 jmp from_keyboard; INT0 org 13h jmp to_keyboard; INT1 start mov a, # 5; установка типу переривань mov tcon, a; INT0 і INT1 по фронту - mov a, # 0; перехід з "1" до "0" mov ip,a mov a,#85h mov ie,a mov a,#0ffh; за адресою 06h зберігається останній mov 6,a; оброблений код clr ​​p1.4; дозвіл опитування loop mov a, p1; зчитується стан кнопок anl a, # 15; - молодші чотири розряди порту P1; D0 – вгору; D1 – вправо; D2 – вниз; D3 - вліво mov dptr, # hat_table; лічені дані про чотири кнопки movc a, @ a + dptr; розширюються до восьми напрямків; D0 – вгору; D1 – вправо; D2 – вниз; D3 – вліво; D4 - вправо-вгору; D5 – вправо-вниз; D6 - вліво-вниз; D7 - вліво-вгору mov r2, a; збереження даних mov r0,a xrl a,6; якщо нові дані не відрізняються від jz loop; отриманих у попередньому циклі - повторюємо опитування mov r1, # 8; цикл для восьми розрядів loop3 jnb acc.7, loop2; "1" - було зміна push acc mov a, r1 mov dptr, # key_table-1; вилучаємо відповідний скан-код movc a, @ a + dptr push acc mov a, r0; ресистр R0 - ознака натискання/відпускання rlc a; емульованої клавіші mov r0,a; "1" - "клавіша" була відпущена pop acc mov acc.7, c; якщо D7=1 - скан-код передуватиме 0f0h acall send_key ; видача скан-коду pop acc sjmp loop2a loop2 push acc mov a, r0 rlc a mov r0, a pop acc loop2a rl a djnz 1, loop3 mov 6, r2 sjmp loop send_key mov ie, # 80h; переривання заборонені acall send2comp; посилка скан-коду mov ie, # 85h; переривання дозволені ret send2comp jnb acc.7,send; при необхідності першим видається 0f0h push acc mov a, #0f0h acall send pop acc clr acc.7 mov b, # 200 l9 nop djnz b, l9 send push 1 push 0 clr p3. P3.3 - KBData mov b, # 6; видача стартового біта l10 nop djnz b, l10 clr p3.5 mov b, # 15 l2 nop djnz b, l2 setb p3.5 mov b, # 6 l3 nop djnz b, l3 mov r0, # 8; видача восьми біт даних та підрахунок парності mov r1,#1 byte_loop xrl 1h,a rrc a mov p3.3,c mov b,#6 l4 setb p3.5 mov b,#6 l5 nop djnz b,l5 djnz r0,byte_loop mov a,r1 mov c,acc.0 mov p3.3,c; видача розряду парності mov b, #6 l8 nop djnz b, l8 clr p3.5 mov b, # 15 l12 nop djnz b, l12 setb p3.5 mov b, видача стопового біта mov b,#6 l7 nop djnz b,l7 clr p3.5 mov b,#15 l11 nop djnz b,l11 setb p3.5 mov b#200 l14 nop djnz b,l14 setb p3.5 pop 0 pop 1 ret from_keyboard; передача одного байта до контролера mov ie,#80h push psw push acc push b mov b#2 in6 jnb p3. 4,in8 djnz b,in6 sjmp in7 in8 mov b,#10 in1 mov a,p3 rl a orl a,#11010111b mov p3,a jnb p3.4,in1 in2 mov a,p3 rl a orl a,#11010111 p3,a jb p3.4,in2 djnz b,in1 in3 mov a,p3 rl a orl a,#11010111b mov p3,a jnb p3.4,in3 mov p3,#0ffh in4 jb p3.5,in4 in5 jnb p3 .3,in7 clr p3.4 jnb p3.5,in5 in7 mov p3,#0ffh pop b pop acc pop psw mov tcon,#5 mov ie,#85h reti to_keyboard ; передача одного байта до клавіатури mov ie, # 80h push psw push acc push b mov b, # 5 ,p3.4 mov p3.5,c mov c,p3.3 mov p3.2,c jb p3.4,out6 out8 mov b,#10 out1 mov c,p3.4 mov p3.5,c mov c, p3.3 mov p3.2,c jnb p3.4,out1 out2 mov c,p3.4 mov p3.5,c mov c,p3.3 mov p3.2,c jb p3.4,out2 djnz b,out1 out3 mov c,p3.4 mov p3.5,c mov c,p3.2 mov p3.3,c jnb p3.2,out3 out7 mov p3,#0ffh pop b pop acc pop psw mov tcon,#5 mov ie , # 85h reti hat_table; таблиця для розширення даних зчитаних з порту P1; індекс у таблиці – чотирирозрядний двійковий код; дані - стан восьми емульованих клавіш; "0" - клавіша натиснута db 0ffh; вліво+вправо+вгору+вниз=заборонена комбінація db 0ffh; вліво+вправо+вниз=заборонена комбінація db 0ffh; вліво+вгору+вниз=заборонена комбінація db 0bfh; вліво+вниз=вліво-вниз db 0ffh; вліво+вправо+вгору=заборонена комбінація db 0ffh; вліво+вправо=заборонена комбінація db 07fh; вліво+вгору=вліво-вгору db 0f7h; вліво db 0ffh; вправо+вгору+вниз=заборонена комбінація db 0dfh; вниз+вправо=вниз-вправо db 0ffh; вгору+вниз=заборонена комбінація db 0fbh; вниз db 0efh; вправо+вгору=вправо-вгору db 0fdh; вправо db 0feh; вгору db 0ffh; немає натиснутих кнопок key_table; таблиця скан-кодів db 75h; numpad 8 db 74h; numpad 6 db 72h; numpad 2 db 6bh; numpad 4 db 7dh; numpad 9 db 7ah; numpad 3 db 69h; numpad 1 db 6ch; numpad 7

В архіві tools.zip ви знайдете дві програми: a51.exe – асемблер, hex2bin – конвертер hex-файлів, які виходять на виході ассемблера, у двійковий формат, придатний для прошивки ПЗУ мікроконтролера програматором.

Складання та усунення несправностей

Зібрати пристрій за наведеною вище схемою можна на макетниці, витраченій платі в домашніх умовах або виготовленої промисловим способом. Під мікроконтролер слід встановити панельку. Найкраще залишити місце на платі під 2-3 16-вивідні DIP-корпуси - вони будуть додані в наступних версіях.

Далі, після внесення бажаних змін, асемблюється вихідний текст мікропрограми – програмою a51.exe. Для прошивки програматором отриманий hex-файл перетворюється на двійковий образ програмою hex2bin.exe.

Зібравши повністю пристрій, підключаємо його до клавіатури та комп'ютера. Три... Два... Один... Поїхали!.. Правильно зібраний із заздалегідь справних компонентів пристрій повинен запрацювати відразу. Якщо ні – перевірте правильність монтажу, наявність живлення на мікроконтролері. Перевірте осцилографом, чи запустився тактовий генератор і чи надходить імпульс високого рівня на вхід RST при включенні живлення. При натисканні клавіш на клавіатурі імпульси на лініях P3.3 та P3.5 повинні повторювати з деякою затримкою імпульси на лініях P3.2 та P3.4 відповідно. При натисканні/відпусканні кнопок пристрою на лініях P3.3 та P3.5 повинні також з'являтися іпульси. Якщо це не допоможе - напишіть мені ( rashpil at aport dot ru) багрепорт, вказавши модель і тип (AT, PS/2) своєї клавіатури, материнської плати/мультикарти, використаного мікроконтролера та частоту використаного кварцового резонатора. Я постарався протестувати пристрій з максимальною кількістю доступних мені материнських платта клавіатур - неполадок виявлено не було. У моєму випадку використано кварц 14.2МГц.

Known bugs

Поточна версія мікропрограми містить такі недоробки:

  • Чи не відстежуються двобайтові скан-коди. Це призводить до того, що іноді при використанні одночасно хатки та клавіатури клавіші клавіатури «зависають» у натиснутому стані або сприймаються невірно;
  • Іноді неправильно передаються дані від контролера до клавіатури. Це може виражатися, наприклад, у тому, що не змінюють стан світлодіоди, при натисканні клавіш Num Lock, Caps Lock, Scroll Lock;
  • Брязкіт контактів кнопок хатки. Поки що це не стало фатальним для мене в іграх.

Плани на майбутнє

Ось короткий список того, що я хотів би реалізувати в наступних версіях:

  • Дрібні багфікси - коректніша обробка сигналів; відстеження двобайтових скан-кодів;
  • Підключення матриці 16x4 - підтримка до 64 кнопок або двох хаток і до 56 кнопок;
  • Підтримка до 16 різних розкладок скан-кодів, збережених в ПЗУ мікроконтролера;
  • Підключення мікросхеми NVRAM з можливістю збереження та перепрограмування «на льоту» до 32-х розкладок скан-кодів.

Висновок

Я постарався викласти всі дані, необхідні розуміння принципу функціонування мого пристрою. Цей опис не претендує на стовідсоткову технічну точність. Якщо я в чомусь помиляюсь – будь ласка викладіть мені свою версію подій. Якщо ви зможете внести в мою схему та/або мікропрограму покращення та доповнення, якщо у вас є ідеї щодо подальшого розвитку схеми – також повідомте мені про це. Крім того, чекаю на інформацію від умільців, які змогли повторити або адаптувати цей пристрій під інші типи мікроконтролерів.

Володимир "Рашпіль" Клімус (rashpil at ukr dot net)

  1. У верхній частині вікна Google Play є пошукова строка. Саме нею ми й скористаємося. Активуємо та пишемо назву нашої програми. Вводити його остаточно необов'язково. Як тільки в пошуковій видачі з'явиться позначений на скріншоті об'єкт, просто тапайте по ньому.
  1. Ми будемо переадресовані на домашню сторінку програми. Тут є велика зелена кнопка з написом "ВСТАНОВИТИ". Натисніть її.
  1. Очікуємо закінчення завантаження програми. Так як воно "важить" трохи менше 5 МБ, процес не займе багато часу.
  1. Готово. Після того, як автоматична інсталяція буде закінчена, ми зможемо запустити програму прямо звідси.
  1. Також на домашньому екрані(якщо активовано у налаштуваннях) з'явиться ярлик запуску.

На цьому налаштування програми завершено, і ми можемо переходити до огляду роботи з нею.

На скріншоті нижче ви бачите програмний інтерфейс. Тут він поділений на три основні вкладки. Також є іконка налаштувань, виконана у вигляді шестерні. На головній вкладці «SCAN» знаходяться 4 основні інструменти:

  • Scan Barcode. Це і є сканер QR, який працює за допомогою камери;
  • Manual Key-in. Функція ручного введення даних про код;
  • Decode from File. Декодування із файлу. Звідси можна відкрити раніше завантажений QR-код і рахувати його;
  • Decode from Url. Сканування за посиланням.

Внизу знаходяться кілька кнопок, які не несуть корисного функціоналу. На них звертати увагу не слід.

Розглянемо налаштування програми. Їх тут чимало. На ваших екранах будуть скріншоти різних областей конфігурації, ми просто озвучимо деякі найцікавіші моменти.

Наприклад, на першому екрані можна увімкнути або вимкнути звук програми. Те саме вийде зробити і з вібровідгуком. Ви можете встановити режим роботи, коли програма почне запускатися відразу зі сканера, минаючи головне меню. Ще однією важливою особливістю є автоматичне копіювання даних у буфер обміну.

Як тільки ми захочемо розпочати сканування та запустимо сам сканер, програма запросить доступ до потрібних системних ресурсів. Звичайно, його потрібно дозволити. Тиснемо кнопку, позначену на скріншоті.

Далі наводимо рамку сканера так, щоб горизонтальна смужка потрапила прямо на QR. Намагайтеся, щоб ваші руки не тремтіли і водночас слідкуйте за фокусуванням. Без нормальної різкості сканування не вдасться.

Для роботи QR BARCODE SCANNER в умовах недостатнього освітлення є підсвічування.

Як тільки код буде розпізнано, ви побачите інформацію, наведену на скріншоті нижче.

Крім сканування QR тут можна також створювати їх. Для цього переходимо до третьої вкладки. Ми відзначили її на скріншоті. У списку наведено всі типи даних, які можна зашифрувати. Підтримується таке:

  • контакт телефонної книги;
  • номер телефону;
  • URL-адреса;
  • Email;
  • додаток;
  • місцезнаходження;
  • будь-який текст;
  • закладка;
  • подія календаря.

Виглядає все це так:

Коли тип даних буде обраний і заданий, нам залишається лише натиснути кнопку Encode. У цьому випадку ми зашифрували посилання.

Спробуємо зашифрувати також довільний текст. Для цього вибираємо потрібний пункт.

Вводимо фразу в зазначене поле і натискаємо кнопку «Encode».

Результат виглядає чудово. Давайте ще змінимо його колір. Тиснемо кнопку, призначену для цього.

Вибираємо потрібний відтінок із палітри.

І милуємося отриманим QR.

Переходимо до наступної програми, яка теж має значний функціонал.

QR Droid Code Scanner

Ще одна програма, знайти яку можна в Google Play. Також ви можете завантажити його за прямим посиланням на сайті Google. Ми поки розглянемо саму програму.

Так виглядає ярлик запуску QR Droid Code Scanner - тиснемо по ньому.

Цей додаток, на відміну від попереднього, виконаний російською мовою і, як тільки він запуститься, нам знадобиться натиснути кнопку з написом: «ПОЧАТОК РОБОТИ».

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

У головному меню видно 6 плиток-кнопок, які переадресують користувача до потрібного розділу. Ось вони:

Отже, щоб скористатися сканером, потрібно активувати його у головному меню і, навівши на QR-код, натиснути кнопку «Рахувати».

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

Далі ми можемо встановити механізм сканування. Використовується один із фірмових алгоритмів: Zapper або ZXing. Нижче вдасться увімкнути або вимкнути перехрестя, налаштувати автоматична діяпісля сканування та увімкнути відображення підказок або копіювання посилання в буфер обміну.

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

Потім у нас вийде експортувати чи імпортувати резервну копіюабо встановити дату.

Дозволити надсилання анонімних даних (краще вимкнути), активувати перевірку одержуваного під час сканування посилання на безпеку або налаштувати пакетне сканування. Нижче наведено такі функції, як масштабування або підсвічування.

Але на цьому наші налаштування не закінчуються. Крім наведених вище функцій, ми маємо таке:

  • налаштування орієнтації екрана;
  • робота з фронтальною камерою;
  • парсинг посилань;
  • показ магазинів.
  • функція розширеного описка;
  • заборона деяких спецсимволів;
  • активація WEB-передбачення;
  • пошук збережених зображень.

Останній екран налаштувань містить такі цікаві функції, як: налаштування максимальної кількості позицій, конфігурація користувацьких CSV, струшування «розумного» годинника і збереження позицій, що повторюються.

Крім налаштувань у меню QR Droid Code Scanner є пункт під назвою «Ще». Розглянемо його функціонал.

Тут є такі можливості:

Розглянемо останній, але від цього не менш функціональний, додаток у нашому списку.

NeoReader QR & Barcode Scanner

Дану програму, як і інші, ви можете завантажити та встановити через Google playабо за прямим посиланням . Коли це буде зроблено, можна переходити безпосередньо до роботи з нею.

При першому запуску нам потрібно буде задовольнити запит доступу. Тиснемо «ДОЗВІЛИТИ».

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

Можна, власне, починати сканування. Наведіть камеру на QR-код і NeoReader QR & Barcode Scanner автоматично розпізнає його вміст.

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

Стандартний функціонал

У деяких смартфонах та планшетах (залежно від марки) є функціонал сканування QR-кодів у штатному виконанні і зробити все можна без застосування. Не будемо перераховувати їх усі, торкнемося лише моделі від Xiaomi.

Підбиваємо підсумки

В результаті ми з вами дізналися, як сканувати QR-код на Андроїд. різними способами. Сподіваємося, стаття виявилася для вас корисною. Якщо питання все ж таки залишилися, ставте їх у коментарях. Ми намагатимемося допомогти кожному.

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

Відеоінструкція




Top