Пам'ять з асоціативним доступом. Віртуальна клавіатура
Теоретичні аспекти, організація та основні типи пам'яті з асоціативним доступом. Розробка програми "Віртуальна клавіатура" за допомогою мови програмування JavaScript. Основні способи запису інформації. Використання короткострокової пам’яті комп’ютера.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 21.06.2015 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ВСТУП
Пам'ять з асоціативним доступом (або асоціативна пам'ять) широко використовується в сучасних комп'ютерах. Тому даній темі присвячено ряд робiт вiтчизняних та закордонних вчених, серед яких треба видiлити працi Мальник А., Воєводін В.В., Головки Б.А., Тербер К.Дж., Agrawal P., Janakiram V., Pathak G., та iнших.
За принципом пам'яті з асоціативним доступом побудовано запам'ятовуючі пристрої кеш-пам'яті більшості комп'ютерів. Також, за принципами пам'яті з асоціативним доступом побудовано буферну пам'ять в конвеєрних процесорах, такі як попередньої вибірки команд, буфер впорядкування і т. д. Асоціативна пам'ять ефективна також для побудови пристроїв для виконання операцій числового пошуку (min, max, сортування і т. д.).
Мета та задачi: виходячи з актуальності теми, метою дослідження є комплексна оцінка “організації та типи пам'яті з асоціативним доступом”. А також на прикладі практично-створеної програми «Віртуальної клавіатура», розглянути можливість використання короткострокової пам'яті комп'ютера.
Для досягнення поставленої мети в курсовій роботі були вирішені наступні завдання:
-- висвітлити теоретичні аспекти пам'яті з асоціативним доступом;
-- розробити програму «Віртуальна клавіатура» за допомогою мови програмування JavaScript;
-- дослідити використання короткострокової пам'яті комп'ютера.
Організація та типи пам'яті з асоціативним доступом
Пам'ять з асоціативним доступом
Пам'ять з асоціативним доступом передбачає зберігання разом із даними і їх ознаки, в ролі якої може бути і саме дане. Дані вибираються з такої пам'яті на основі збігу їх ознак із заданою. Тому цю пам'ять іще називають пам'яттю, що адресується за вмістом або за даними.
Дана пам'ять з асоціативним доступом включає:
* масив регістрів для зберігання N m - розрядних слів, в кожному з яких частина розрядів зайнята ознаками, а іншу частину розрядів займає службова інформація;
* регістр асоціативної ознаки, куди поміщається код шуканої інформації (ознака пошуку). Розрядність цього регістра зазвичай є меншою чи рівною довжині слова n;
* схему порівняння на збіжність, яка використовується для проведення паралельного або послідовного порівняння бітів ознак пошуку всіх слів, що зберігаються, з відповідними бітами асоціативної ознаки пошуку, і вироблення сигналів збігу;
* регістр збігів, в якому кожному регістру масиву пам'яті відповідає один розряд, в який заноситься одиниця, якщо всі розряди ознаки слова відповідного регістра співпали з однойменними розрядами асоціативної ознаки пошуку;
* регістр маски, який дозволяє заборонити порівняння певних бітів;
* пристрій керування , який на основі зовнішніх сигналів керування здійснює запис асоціативної ознаки пошуку до відповідного регістра, встановлює маску в регістрі маски, та на основі даних порівняння на збіжність з регістра збігів здійснює зчитування даних із регістрів асоціативної пам'яті, а також запис до них вхідних даних.
При зверненні до пам'яті з асоціативним доступом, спочатку сигналами з блоку керування розряди регістра маски , які не повинні враховуватися при пошуку інформації, встановлюються в нульові значення, і всі розряди регістра збігів встановлюються в одиничний стан. Після цього в регістр асоціативної ознаки заноситься код шуканої інформації (ознака пошуку) і починається її пошук, в процесі якого схема порівняння на збіжність одночасно порівнює перший біт ознак даних всіх регістрів пам'яті, з першим бітом асоціативної ознаки пошуку. Ті схеми, які зафіксували не співпадіння, формують сигнал, що переводить відповідний біт регістра збігів у нульовий стан. Так само відбувається процес пошуку і для решти незамаскованих бітів ознаки пошуку.
У результаті, одиниці зберігаються лише в тих розрядах регістра збігів, які відповідають регістрам, де знаходиться шукана інформація . Конфігурація одиниць в регістрі збігів використовується в якості адрес, за якими проводиться зчитування даних із пам'яті. Внаслідок того, що результати пошуку можуть мати кілька варіантів, вміст регістра збігів подається на пристрій керування, де формуються сигнали сповіщення про результати порівняння, а саме про те, що шукана інформація не знайдена, міститься в одному чи кількох регістрах. Тому, при зчитуванні спочатку проводиться аналіз результатів порівняння. Потім, при наявності інформації про те, що шукана інформація не знайдена, зчитування відміняється, при повідомленні, що шукана інформація міститься в одному регістрі, зчитується слово, на яке вказує одиниця в регістрі збігів, а при повідомленні, що шукана інформація міститься в кількох регістрах, скидається найстарша одиниця в регістрі збігів і витягується відповідне їй слово. Шляхом повторення цієї операції послідовно зчитуються всі слова.
Запис у пам'ять з асоціативним доступом проводиться без вказівки конкретної адреси, в перший вільний регістр. Для пошуку вільного регістра виконується операція зчитування, в якій не замасковані тільки службові розряди, що показують, як давно проводилося звернення до кожного регістра, і вільним вважається або порожній регістр, або той, який найдовше не використовувався.
Головна перевага пам'яті з асоціативним доступом визначається тим, що час пошуку інформації залежить тільки від числа розрядів в ознаці пошуку і швидкості опиту розрядів, і не залежить від числа регістрів пам'яті.
Разом з тим, ця пам'ять також має ряд недоліків, до основних з яких слід віднести наступні:
* Необхідність двократного звернення до однієї комірки пам'яті при записі і при зчитуванні числа в два рази сповільнює взаємодію пристроїв комп'ютера з пам'яттю з асоціативним доступом в порівнянні з варіантом пам'яті, в якій можливе лише одне звернення.
* Ця пам'ять має досить складну організацію, яка вимагає забезпечення доступу до кожної комірки з входу та виходу пам'яті або з об'єднаного входу-виходу пам'яті, причому при зчитуванні необхідно проводити порівняння заданої ознаки з ознаками даних в регістрах пам'яті, а також забезпечити пошук даних, ознаки яких співпали із заданою. Це вимагає великих затрат на елементи доступу та сповільнює робот у пам'яті.
* При створенні на основі пам'яті з асоціативним доступом багатоканальної (6агатопортової) пам'яті необхідно забезпечувати одночасний доступ із кожного каналу до кожної комірки пам'яті, з одночасним порівнянням всіх ознак у комірках із шуканими ознаками, а також забезпечити пошук даних, ознаки яких співпали із заданою , що є проблематичним завданням, особливо при великих об'ємах пам'яті.
Базуючись на концепції асоціативного пошуку можна побудувати цілу низку структур пам'яті з асоціативним доступом . Конкретна структура визначається тим, як поєднані наступні чотири основні елементи її організації:
* вид пошуку інформації;
* спосіб зчитування інформації при множинних збігах;
* спосіб запису інформації;
* варіант порівняння ознак.
У кожному конкретному застосуванні пам'яті з асоціативним доступом завдання пошуку інформації може формулюватися по різному.
При простому пошуку, який був розглянутий вище, потрібен повний збіг всіх розрядів ознаки пошуку з однойменними розрядами ознак слів, що зберігаються в регістрах пам'яті.
При складному пошуку можуть ставитись наступні завдання:
* Пошуку слів із максимальним або мінімальним значенням ознаки. При цьому багатократна вибірка з пам'яті слова з максимальним або мінімальним значенням ознаки (з виключенням його з подальшого пошуку), по суті, є впорядкованою вибіркою інформації.
* Пошук слів, ознака яких порівняно з асоціативно ю ознакою пошуку є найближчим більшим або меншим значенням. Ця операція також забезпечує проведення впорядкованої вибірки інформації.
* Знаходження слів, чисельне значення ознаки в яких є більшим або меншим за даної величини. Подібний підхід дозволяє вести пошук слів з ознаками, що лежать в середині або поза заданими межами.
Очевидно, щ о реалізація складних методів пошуку вимагає внесення відповідних змін у структуру пам'яті з асоціативним доступом.
Важливим питанням є організація зчитування з пам'яті з асоціативним доступом інформації, коли з асоціативною ознакою пошуку співпадають ознаки декількох слів. У цьому випадку застосовується один із двох підходів: використовується ланцюг черговості або проводиться опитування. Використання ланцюга черговості дозволяє проводити зчитування слів у порядку зростання номера регістра пам'яті незалежно від величини асоціативних ознак. При проведенні опитувань впорядковуються ті розряди, які були замасковані, і не брали участі в пошуку. В іншому варіанті для цих цілей виділяються спеціальні розряди регістрів.
Істотні відмінності в структурі пам'яті з асоціативним доступом можуть бути пов'язані з вибраним принципом запису інформації. Раніше був описаний варіант із записом у незайнятий регістр з найменшим номером. На практиці застосовуються й інші способи, наприклад, за співпадінням ознак, за чергою та інші. Найскладнішим є запис із сортуванням інформації на вході пам'яті з асоціативним доступом за величиною ознаки слова. Тут місцеположення регістра, куди буде поміщене нове слово, залежить від співвідношення ознаки записуваного слова і ознак слів, що вже зберігаються в пам'яті з асоціативним доступом. При побудові пам'яті з асоціативним доступом вибирають один з чотирьох варіантів порівняння ознак, тобто організації перегляду вмісту пам'яті: паралельно за всіма словами, послідовно за всіма словами, паралельно з а всіма розрядами, послідовно за всіма розрядами. Ці варіанти можуть комбінуватися. Названі чотири варіанти порівняння ознак визначають принципи побудови схеми порівняння на збіжність . Відповідно до цих принципів , може бути запропоновано кілька типів організації пам'яті з асоціативним доступом. У пам'яті з повним паралельним асоціативним доступом одночасно порівнюються всі розряди ознак всіх слів пам'яті (так званий одночасний пошук по слову). Це найшвидша та найскладніша з точки зору затрат обладнання структура пам'яті з асоціативним доступом . Можливе порівняння не всіх розрядів ознак слів пам'яті, а по частинах, аж до порозрядного порівняння, коли одночасно порівнюються з бітом асоціативної ознаки пошуку по одному біту ознаки кожного слова (так званий порозрядний пошук). Це буде структура пам'яті з неповним паралельним асоціативним доступом та з послідовною обробкою розрядів ознак слів. Можливе також проведення порівняння одночасно ознак не всіх слів, а по групах. Тоді це буде структура пам'яті з послідовним асоціативним доступом із порозрядним та паралельним порівнянням.
Розглянемо названі чотири основні типи організації пам'яті з асоціативним доступом детальніше.
Пам'ять з повним паралельним асоціативним доступом
Перший тип організації пам'яті з асоціативним доступом - пам'ять з повним паралельним асоціативним доступом . Прикладом конкретного технічного виконання пам'яті такого типу може бути пам'ять комп'ютерної системи РЕРЕ фірми Bell Laboratories.
На Рис.1 показана загальна структура пам'яті з повним паралельним асоціативним доступом. Пам'ять складається з деякої кількості N комірок, в яких зберігаються дані. Кожна комірка може зберігати слово з деякою кількістю n-двійкових розрядів (ширина слова). На Рис.2 приведена будова комірки цієї пам'яті . Кожна така комірка може зберігати дані та порівнювати їх з ознакою пошуку паралельно з іншими комірками. Тут і далі розглядається випадок, коли з ознакою пошуку порівнюються всі розряди слова, хоча зрозуміло, що може бути взята і його частина. Дані та сигнали керування надходять від пристрою керування до кожної комірки пам'яті паралельно.
Рис.1. Структура пам'яті з повним паралельним асоціативним доступом
Кожна комірка пов'язана з пристроєм керування теговим розрядом Ті. Перед початком порівняння пристрій керування надсилає команду встановлення всіх тегових розрядів в "1". Коли пристрій керування формує команду порівняння, то кожна комірка, в якій міститься слово, ознака якого не збігається з ознакою пошуку, формує сигнал, який викликає скид відповідного тегового розряду в "0". Після виконання дано ї команди встановленими в "1 " залишаться тільки ті розряди, які відповідають коміркам, де відбувся збіг з ознакою пошуку.
Рис.2. Будова комірки пам'яті з повним паралельним асоціативним доступом
Пам'ять з неповним паралельним асоціативним доступом
Другий тип організації пам'яті з асоціативним доступом - пам'ять з неповним паралельним асоціативним доступом . В цій пам'яті проводиться послідовна обробка розрядів слів. Тут логічні операції порівняння визначені тільки для одного або декількох розрядів ознак даних, а не для всіх розрядів одночасно, як це є в пам'яті з повним паралельним асоціативним доступом. Наприклад, якщо порівняння визначені тільки для одного розряду ознак даних, і потрібно здійснити пошук даних, ознаки яких займають розряди 0-20, то спочатку потрібно сформувати команду для одночасного порівняння лише одного 0-го біту в кожному записі, потім 1-го, і т. д. Пам'ять даного типу має подібну загальну структуру до попередньої з тією відмінністю, що операції в пам'яті здійснюються у вигляді циклів операцій над окремими розрядами і тривалість операцій пропорційна довжині поля ознаки, яке аналізується. Комірка даної пам'яті зображена на Рис.3.
Рис.3. Комірка пам'яті з неповним паралельним асоціативним доступом з послідовною обробкою розрядів слів.
Прикладом пам'яті з неповним паралельним асоціативним доступом, в якій здійснюється послідовна обробка розрядів, може бути пам'ять системи.
Пам'ять з послідовним асоціативним доступом
Третій тип організації пам'яті з асоціативним доступом - пам'ять з послідовним асоціативним доступом. Тут логічні операції порівняння виконуються лише над одним словом. Доступ до даних при цьому здійснюється послідовним застосуванням логічних операцій до окремих слів, які зберігаються в пам'яті. Загальна структура такої пам'яті зображена на Рис.4. Оскільки при послідовній обробці слів такі властивості асоціативної пам'яті як одночасність операцій та майже не залежна від числа регістрів пам'яті тривалість пошук у відсутні, така пам'ять не в повній мірі відповідає поняттю пам'яті з асоціативним доступом.
Рис.4. Загальна структура пам'яті з послідовним асоціативним доступом.
Пам'ять з частково асоціативним доступом
Четвертий тип організації пам'яті з асоціативним доступом - пам'ять із частково асоціативним доступом. Всі слова цієї пам'яті формуються в n-груп. Кожна група слів обробляється паралельно з усіма іншими групами елементів шляхом послідовного переходу від одного слова групи до іншого. Отже, потрібні засоби, які дозволяють послідовно вибирати слова із груп для застосування до них заданих логічних операцій. Оскільки слова в групах вибираються послідовно, то можна обмежитись використанням пристроїв пам'яті з послідовним доступом взамін більш дорогих пристроїв пам'яті з асоціативним доступом. Загальна структура пам'яті з частково асоціативним доступом подана на Рис.5.
Рис.5. Загальна структура пам'яті з частково асоціативним доступом.
Віртуальна клавіатура
Програма «Віртуальна клавіатура» створена за допомогою популярної WEB-мови JavaScript. Тому працює ця програма за допомогою звичайного ВЕБ-БРАУЗЕРУ (в даному випадку ми використовуємо web - браузер Google Chrome на всіх screen-shots). Дана програма дозволяє друкувати англійські символи, цифри, розділові знаки тільки за допомогою миші.
При запуску програми - ми бачимо в верху вікна велику, сіру кнопку ВЕЛЮЧЕННЯ, при натисненні на яку лівою кнопкою миші ми можемо включити програму в вікні браузера (Рис.6).
Рис.6 Включення програми «Віртуальна клавіатура»
Для того, щоб надрукувати любий знак на клавіатурі - нам необхідно навести мишу на знак, який ми хочемо вивести в дисплей «Віртуальної клавіатури». Після наведення на любий зі знаків програми - він підсвічується світло-голубим кольором (Рис.7).
Рис.7 Виділення знаку в програмі.
При натисненні лівою кнопкою миші на бажаний знак нашої клавіатури - цей знак з'являється на дисплеї клавіатури. На Рис.8 ми показали виведення надпису «Martiuk Oleksander. Institute of Computer Technology).
Рис.8 Виведення знаків на дисплей програми.
За допомогою кнопки “accept” ми можемо перевести напис, введений з нашої екранної клавіатури на велику, сірку кнопку ВКЛЮЧЕННЯ програми (Рис.9).
Рис.9 Переведення напису з дисплею клавіатури на кнопку ВКЛЮЧЕННЯ.
Для того, щоб вимкнути програму (сховати вікно «Віртуальної клавіатури) необхідно натиснути на кнопку ВКЛЮЧЕННЯ ще раз, або на кнопку “cancel” (Рис.10).
Рис.10 Завершення програми.
Після завершення роботи нашої програми, ми отримали напис на кнопці ВКЛЮЧЕННЯ, який ввели на «Віртуальній клавіатурі» тільки за допомогою миші (Рис.11).
Рис.11 Результат «Віртуальної клавіатури» після закінчення роботи
Повний код програми наведений в ДОДАТКАХ.
- HTML (додаток №1)
- CSS (додаток №2)
- JavaScript (додаток №3)
ВИСНОВКИ
Ми розглянули пам'ять з асоціативним доступом, і дізналися, що даний вид пам'яті поділяється на чотири типи:
- Пам'ять з повним паралельним асоціативним доступом
- Пам'ять з неповним паралельним асоціативним доступом
- Пам'ять з послідовним асоціативним доступом
- Пам'ять з частково асоціативним доступом
Асоціативна пам'ять має ряд переваг і недоліків. Головна перевага пам'яті з асоціативним доступом визначається тим, що час пошуку інформації залежить тільки від числа розрядів в ознаці пошуку і швидкості опиту розрядів, і не залежить від числа регістрів пам'яті. А недоліками її є: необхідність двократного звернення до однієї комірки пам'яті та досить складна організація.
Базуючись на концепції асоціативного пошуку можна побудувати цілу низку структур пам'яті з асоціативним доступом. Конкретна структура визначається тим, як поєднані наступні чотири основні елементи її організації:
* вид пошуку інформації;
* спосіб зчитування інформації при множинних збігах;
* спосіб запису інформації;
* варіант порівняння ознак.
А також ми створили програму «Віртуальна клавіатура» за допомогою мови програмування JavaScript, та дослідили на її прикладі використання короткострокової пам'яті комп'ютера.
ЛІТЕРАТУРА
1. Мельник А. «Архітектура комп'ютерів» 2008 - 469 с.
2. Мельник А. О. Принципи організації управління для одного классу багатоступінчастих комутуючих мереж. Матеріали НТК "Досвід розробки та застосування приладо-технологічних САПР мікроелектроніки". - Львів, 1995. - Ч. 1 . - с. 28-29.
3. Мельник А. А., Илькив В. С. Реализация алгоритмов сортировки. Систолические вычислительные структуры. Препринт N3-87. ИППММ АН УССР. - Львов, 1988. - с. 25-26.
4. Мельник А. А. О подходе к реализации многоступенчатых коммутирующих сетей. Высокопроизводительные вычислительные системы. Препринт N6-89. - Львов, 1989. - с. 46-47.
5. Воеводин В. В., Воєводин В. В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002 - 608 с.
6. Головки Б. А. Параллельные вычислительные системы. - M . : Наука, 1980. - 520 с.
7. Мультипроцессорные системы и параллельные вычисления / Под ред. Ф. Г. Энслоу. - Мир, 1976. - 384 с.
8. Тербер К. Дж. Архитектура высокопроизводительных вычислительных систем / Пер. с англ. - М.: Наука. Главная редакция физико-математической литературы, 1985. - 272 с.
9. Abraham, S. and Padmanabhan, К. Performance of the direct binary n-cube network for multiprocessors. IEEE Transactions on Computers, 38, 1000-1011 (1989).
10. Agrawal, P., Janakiram, V. and Pathak, G. Evaluating the performance of multicomputer configurations. IEEE Transaction on Computers, 19, 23-27 (1986).
11. Al-Tawil, K. , Abd-El-Barr, M. and Ashraf, F. A survey and comparison of wormhole routing techniques in mesh networks. IEEE Network, March/April 1997, 38-45 (1997).
12. Bhuyan, L. N. (ed.) Interconnection networks for parallel and distributed processing. Computer (Special issue), 20, 9-75 (1987).
13. Bhuyan, L. N. , Yang, Q. and Agrawal, D. P. Performance of multiprocessor interconnection networks. Computer, 22, 25-37 (1989).
14. Chen, W.-T. and Sheu, J.-P. Performance analysis of multiple bus interconnection networks with hierarchical requesting model. IEEE Transactions on Computers, 40, 834-842 (1991).
пам'ять асоціативний віртуальний клавіатура
ДОДАТОК №1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Virtual Keyboard: Martiuk Olexander</title>
<style>
html{
width:100%;
height: 100%;
}
body {
min-width: 100%;
min-height: 100%;
margin: 0;
}
</style>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="Geany 1.23.1" />
<link rel="stylesheet" type="text/css" href="assets/keyboard.css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="assets/keyboard.js"></script>
</head>
<body>
<div class="jsKeyBoard" style="padding: 10px; border:thin solid #000; min-height:20px; background:#aaa">
</div>
</body>
</html>
ДОДАТОК №2
keyboardBtn{
background: url("images/ui-bg_glass_20_555555_1x400.png") repeat-x scroll 50% 50% #555555;
border: 1px solid #666666;
color: #EEEEEE;
font-weight: bold;
font-size: 1em;
-moz-user-focus: ignore;
cursor: pointer;
height: 2em;
line-height: 2em;
margin: 0.1em;
min-width: 1em;
overflow: hidden;
width: 2em;
border-radius: 6px;
cursor: pointer;
-webkit-user-select: none; /* Chrome/Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE10+ */
/* Rules below not implemented in browsers yet */
-o-user-select: none;
user-select: none;
}
keyboardBtn:hover, .activated{
background:url("images/ui-bg_glass_40_0078a3_1x400.png") repeat-x scroll 50% 50% #0078A3;
border:1px solid #59B4D4;
}
btnbksp, .btntab{
width:9%;
}
btnenter{
background: url("images/ui-bg_inset-soft_30_f58400_1x100.png") repeat-x scroll 50% 50% #F58400;
border: 1px solid #FFAF0F;
color: #FFFFFF;
font-weight: bold;
min-width: 4em;
width: auto;
}
btnshift{
min-width: 4em;
width: auto;}
#keyboardContainer{
display: block;
position: absolute;
padding: 0.3em;
border-radius: 6px;
background: url("images/ui-bg_inset-soft_25_000000_1x100.png") repeat-x scroll 50% bottom #000000;
border: 1px solid #666666;
}
default_container, .shift_container{
font-size: 1.1em;
text-align: center;
white-space: nowrap;
}
#keyboardPreview{
background: url("images/ui-bg_inset-soft_25_000000_1x100.png") repeat-x scroll 50% bottom #000000;
border: 1px solid #666666;
color: #FFFFFF;
border-radius: 6px;
margin: 0 0 3px;
text-align: left;
width: 99%;
padding: 5px 0;
height: 20px;
}
btnspace{
width:50%;
}
btnaccept, .btncancel{
background: url("images/ui-bg_inset-soft_30_f58400_1x100.png") repeat-x scroll 50% 50% #F58400;
border: 1px solid #FFAF0F;
color: #FFFFFF;
font-weight: bold;
min-width: 4em;
width: auto;
}
key_holder{
border:thin solid #000;
width: 100%;
padding:15px 0;
}
ДОДАТОК №3
$(document).ready(function(){
(function($) {
$.fn.nodoubletapzoom = function() {
$(this).bind('touchstart', function preventZoom(e) {
var t2 = e.timeStamp
, t1 = $(this).data('lastTouch') || t2
, dt = t2 - t1
, fingers = e.originalEvent.touches.length;
$(this).data('lastTouch', t2);
if (!dt || dt > 500 || fingers > 1) return;
// not double-tap
e.preventDefault(); // double tap - prevent the zoom
// also synthesize click events we just swallowed up
$(this).trigger('click').trigger('click');
});
};
})(jQuery);
//$("body").nodoubletapzoom();
create_keyboard("jsKeyBoard");
});
var keyboardPreview;
var keyboard_layout = {
'alpha' : {
'default': [
'` 1 2 3 4 5 6 7 8 9 0 - = {bksp}',
'{tab} q w e r t y u i o p [ ] \\',
'a s d f g h j k l ; \' {enter}',
'{shift} z x c v b n m , . / {shift}',
'{accept} {space} {cancel}'
],
'shift': [
'~ ! @ # $ % ^ & * ( ) _ + {bksp}',
'{tab} Q W E R T Y U I O P { } |',
'A S D F G H J K L : " {enter}',
'{shift} Z X C V B N M < > ? {shift}',
'{accept} {space} {cancel}'
]
}
}
function create_keyboard(class_name){
$("."+class_name).click(function(){
if(typeof keyboardContainer == 'undefined'){
//create a div to hold the keyboard
keyboardContainer = $('<div/>', {
id: 'keyboardContainer',
css: {'display' : 'block'},
}).appendTo('body');
keyboardPreview = $('<div />', {
id: 'keyboardPreview'
}).appendTo(keyboardContainer);
kb_load_keyboard_container("alpha");
handle_onclick_events(class_name);
} else {
keyboardContainer.toggle();
}
})
}
function append_message(btn_message){
$(keyboardPreview).append(btn_message);
}
function handle_onclick_events(class_name){
$(".keyboardBtn").click(function(){
selected_button = $(this).text();
if(selected_button.length > 1) special_button_click(selected_button, class_name);
else append_message(selected_button);
});
}
function special_button_click(button, class_name){
switch (button){
case 'enter':
return append_message("<br />");
break;
case 'tab':
return append_message("\t");
break;
case 'space':
return append_message(" ");
break;
case 'bksp':
current_message = $(keyboardPreview).html();
$(keyboardPreview).html(current_message.substring(0, current_message.length-1));;
break;
case 'shift':
default_container.toggle();
$(".btnshift").toggleClass("activated");
shift_container.toggle();
break;
case 'accept':
keyboardContainer.hide();
$("."+class_name).html(keyboardPreview.html());
keyboardPreview.html("");
break;
case 'cancel':
keyboardContainer.hide();
keyboardPreview.html("");
break;
}
}
function kb_load_keyboard_container(choosen_layout){
//get the current keyboard layout
current_layout = keyboard_layout[choosen_layout];
//create the container of the default keyboard
default_container = $('<div/>', {'class': 'default_container'}).appendTo(keyboardContainer);
kb_loop_to_get_keys(current_layout['default'], default_container);
//create container for the shift keyboard
shift_container = $('<div/>', {
'class': 'shift_container',
css : {'display': 'none'}
}).appendTo(keyboardContainer);
kb_loop_to_get_keys(current_layout['shift'], shift_container);
set_keyboard_position();
}
function set_keyboard_position(){
keyboardContainer.css("top",(parseInt($(window).height()) - parseInt(keyboardContainer.css("height")))/2);
keyboardContainer.css("left",(parseInt($(window).width()) - parseInt(keyboardContainer.css("width")))/2);
}
function kb_loop_to_get_keys(data_to_get, div_to_append){
//get the default keyboard data
for(x in data_to_get){
//split the rows into key
row_keys = data_to_get[x].toString().split(" ");
//create the container of the row
keyboard_row = $('<div/>', {
'class': 'keyboard_row',
}).appendTo(div_to_append);
for(key in row_keys){
//prepare the keys to be inserted on the container
kb_build_button(row_keys[key], kb_check_special_button(row_keys[key]));
}
}
}
function kb_build_button(button_name, is_special_button){
//if itis a special button remove the {} and add it to the class name
if(is_special_button){
button_name = button_name.substring(1,button_name.length-1)
button_class_name = "keyboardBtn btn"+button_name;
} else {
button_class_name = "keyboardBtn";
}
key_container = $('<button/>', {
"role":"button",
"aria-disabled":"false" ,
"tabindex":"-1" ,
"class":"ui-keyboard-button ui-keyboard-96 ui-state-default ui-corner-all "+button_class_name ,
"data-value":button_name ,
"name":"96",
"data-pos":"0,0",
"title":""
}).appendTo(keyboard_row);
$('<span/>', {
text: button_name
}).appendTo(key_container);
}
function kb_check_special_button(button_name){
//return true if its a special button
special_char_pattern = /{[a-zA-Z]+}/
return button_name.search(special_char_pattern) != -1;
}
Размещено на Allbest.ru
Подобные документы
Клавіатура як один з найважливіших пристроїв комп’ютера, її призначення та конфігурація. Основні види клавіатури, їх характеристика та відмінні риси, порядок і правила діагностування. Методика пошуку несправностей і ремонту. Побудова миші та трекболів.
курсовая работа [182,2 K], добавлен 24.05.2009Розробка програми для тренування швидкого десяти пальцевого набору тексту на клавіатурі за допомогою класів, які будуть містити в собі параметри об’єктів та їх методи. Аналіз об'єкту програмування. Основні принципи об'єктно-орієнтованого програмування.
курсовая работа [1,8 M], добавлен 18.05.2017Програми, які виводять на екран характеристики комп'ютера. Розробка програми "Монітор використання ресурсів комп’ютера" на мові програмування ASM-86. Алгоритм програми та її реалізація. Системні вимоги, інструкція для користувача, лістинг програми.
курсовая работа [22,2 K], добавлен 08.08.2009Поняття та типи магнітних носіїв комп’ютера, їх відмінні особливості та функціональні можливості: стрічки та диски (гнучкі та жорсткі). Принципи запису та збереження інформації на сучасних магнітних носіях, оцінка їх практичної ефективності та значення.
контрольная работа [175,2 K], добавлен 04.01.2014Способи виявлення й видалення невідомого вірусу. Спроби протидії комп’ютерним вірусам. Способи захисту комп’ютера від зараження вірусами та зберігання інформації на дисках. Класифікація комп'ютерних вірусів та основні типи антивірусних програм.
реферат [17,1 K], добавлен 16.06.2010Основні принципи дії та архітектура прототипних варіантів CISC-комп'ютера. Інструкції асемблерної мови і принцип трансляції асемблерної програми у машинний код. Розробка тестової програми. Перевірка правильності роботи реалізованих команд у прикладах.
курсовая работа [446,1 K], добавлен 03.02.2011Клавіатура як основний засіб вводу інформації в персональний комп’ютер, її структура та принцип роботи. Скен-коди функціональних клавіш та клавіш управління курсором. Характеристика накопичувачів на жорстких магнітних дисках, дисководів компакт-дисків.
контрольная работа [18,1 K], добавлен 15.10.2009Огляд переваг асемблера при роботі резидентної програми русифікатора клавіатури і дисплея. Вивчення різновидів дискет, нутрощів дисковода, функцій базової версії DOS. Аналіз можливостей створення і обробки дискових файлів послідовним і прямим доступом.
курсовая работа [33,3 K], добавлен 20.04.2012Функції інформаційної системи. Аналіз функцій системи управління базами даних: управління транзакціями і паралельним доступом, підтримка цілісності даних. Аналіз системи MySQL. Елементи персонального комп’ютера: монітор, клавіатура, материнська плата.
дипломная работа [1,2 M], добавлен 15.05.2012Теоретичні аспекти програмування мовою Pascal. Основні поняття та елементи мови. Розділи оголошення сталих і змінних. Стандартні та нестандартні типи даних. Основні операції, стандартні функції та процедури, прості програми. Розгалуження, цикли, масиви.
курсовая работа [122,5 K], добавлен 21.10.2012