Kbd ввод с клавиатуры


Содержание

Kbd ввод с клавиатуры

Эмуляция ввода с клавиатуры

Посылает один или несколько кодов клавиш активному окну, т. е. эмулирует ввод с клавиатуры. SEND-KEYS: может быть использован как для отправки нужному окну клавиатурного сокращения (например, CTRL+S — сохранить файл), так и для простого «печатания» текста в различных полях ввода и текстовых редакторах.

Как правильно указывать коды клавиш в качестве аргумента к слову SEND-KEYS: подробно разъясняется в главе «Коды клавиш».

Иногда, при описании клавиатурных сокращений, возникает необходимость указать одновременно нажатые клавиши (например, нажата и удерживается клавиша CTRL и при этом нажимаются клавиши и ALT и G). В этом случае вы сначала указываете первую нажатую и удерживаемую клавишу, а все остальные окружаете круглыми скобками.

Паузу между «нажатиями» клавиш и между конструкциями SEND-KEYS: можно задать с помощью слова SEND-KEYS-DELAY:. Прямо в строке с клавиатурными кодами можно указать задежку (паузу) в миллисекундах между нажатиями двух клавиш в форме:

С помощью SEND-KEYS: можно переключать раскладку клавиатуры и «печатать» даже по-русски (или на любом другом установленном языке). Единственное ограничение: для эмуляции ввода русских букв в ГУИ-приложениях вам следует «отслеживать» текущее состояние раскладки клавиатуры. Если перед использованием SEND-KEYS: была включена английская раскладка, то после переключения раскладки на русскую, следует эмулировать нажатия соответствующих латинских литер для ввода русского текста:

Напротив, если перед использованием SEND-KEYS: русская раскладка являлась текущей для активного ГУИ-приложения, то для ввода русских букв следует указывать русские символы:

Соответственно, можно, например, создать такую задачу:

Определить текущую раскладку клавиатуры для активного ГУИ приложения вы можете с помощью плагина kbd_layout.spf.

Ограничения: при составлении клавиатурных сокращений нельзя пользоваться клавишей PrtScr (PRINTSCREEN). Кроме этого, вам не удастся «отправить» программе клавиатурное сокращение CTRL+ALT+DELETE.

Задает задержку в миллисекундах между каждой «нажимаемой» клавишей и между каждой следующей конструкцией SEND-KEYS: (WIN-SEND-KEYS:). Позволяет эмулировать эффект «медленно» нажимаемых клавиш.

Действует на все последующие SEND-KEYS: (WIN-SEND-KEYS:) в данной задаче.

Ввод данных с клавиатуры в Си

Для форматированного ввода данных в Си используется оператор scanf

Чтобы ввести записать информацию в переменную с клавиатуры в си с помощью оператора scanf необходимо указать сообщение и переменную, в которую будет записываться с клавиатуры з начение

scanf (“формат ввода”,&имя переменной )
В формате ввода используется
%d ввод целого числа (переменная типа int)
%f ввод вещественного числа (переменная типа float)
%с ввод одного символа (переменная типа char)
Например:
scanf (“%d”, &a); // ввод с клавиатуры значения для целочисленной переменной a
Пример программы 3. Программа в си запрашивает ввод с клавиатуры двух целых чисел, выводит их сумму на экран
#include
#include
main()
<
int a,b,c;
printf(«Введите первое целое число\n»);
scanf(«%d», &a); // ввод переменной a с клавиатуры
printf(«Введите второе целое число\n»);
scanf(«%d», &b); // ввод переменной b с клавиатуры
c=a+b; // присваиваем переменной с значение a+b
printf(«%d+%d= %d «, a,b,c); // форматированный вывод выражения a+b =c
getch(); // ждем нажатия кнопки
>
Для ввода строки в си с помощью оператора scanf необходимо объявить строку и считать ее с помощью scanf()
char имя строки[ длина строки];
scanf(“%s”, имя строки);
Пример программы 4. Программа запрашивает ввод имени и отчества с клавиатуры и выводит на экран приветствие с обращением по имени и отчеству
#include
#include
main()
<
char n[50];// объявляем строковую переменную n для имени
char sn[50];// объявляем строковую переменную sn для отчества
printf(«Как Ваше имя ?\n»);
scanf(«%s», n); // ввод строки n имени
printf(«Как Ваше отчество ?\n»);
scanf(«%s», sn);// ввод строки sn отчества
printf(«Здравствуйте, %s %s!\n», n, sn); // форматированный вывод Здравствуйте, n sn!
getch();
>

Kbd ввод с клавиатуры

Для представления отдельной команды или потока данных для ввода пользователем. Обычно используется для представления ручного ввода команд.

Типичное отображение

Одноразмерное. Смотрите общие примечания к отображению разметки.

Основной синтаксис

Возможные атрибуты

Допустимый контекст

Текстовый контейнер, т.е. любой элемент, который может содержать текстовые элементы. Это включает большинство элементов HTML. Текстовые элементы могут быть вложенными.

Содержимое

Текстовые элементы. Не разрешен перевод абзаца.

Примеры

Примечания

Используйте элемент KBD только для фиксированных строк. Для обозначения ввода, который меняется от случая к случаю, лучше использовать элемент VAR.


Хотя программный код может вводиться с клавиатуры (чтобы потом быть распечатанным программой), особенно в контексте обучающих программ, для кодовых фрагментов более естественно использовать элемент CODE.

Можно поспорить о том, надо ли использовать элемент KBD для командных имен (или имен программ), если они не появляются в контексте обсуждения того, как задавать команды. Можно сказать, что имя команды типа ls (в Unix) — это всего лишь имя, а не ввод с клавиатуры. Однако рекомендуется использование KBD, когда трудно различить, например, ls , как ввод с клавиатуры (или часть его) и как имя команды (или программы). Заметим, что когда имя команды появляется в начале утверждения, грамматические правила требуют заглавной начальной буквы, которая может ввести в заблуждение пользователя (появится сообщение, что вариант написания не соответствует требуемому вводу с клавиатуры). При использовании же KBD — отображение осуществляется шрифтом одного размера, и поэтому при представлении имени команды можно нарушить грамматическое правило.

Так как в HTML файле не принято разбиение по строкам и использование символов пробелов и табуляции, будьте внимательны при указании пользователю того, когда он должен нажать клавишу «return» или «enter», так как такое нажатие не вовремя может не соответствовать Вашим командам.

Как вызвать только цифровую клавиатуру для ввода номера в input?

Как это можно тут сделать?

1 ответ 1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками html css input inputmask или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.11.35402

Kbd ввод с клавиатуры

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

  • раскладка клавиатуры;
  • скорость повтора посылаемых клавиатурой сигналов в случае удержания клавиш пользователем;
  • длительность интервала задержки от момента нажатия клавиши до того момента, когда клавиатура начинает повторять посылку сигналов.

Два последних параметра (скорость повтора и время задержки) устанавливаются с помощью специальной команды kbdrate .

9.3.1. Команда kbdrate

Скорость повтора задается в символах в секунду и может принимать только определенные значения в пределах от 2 до 30 символов в секунду. Но задать (после опции –r ) вы можете любое значение в этих пределах, программа сама выберет ближайшее допустимое значение. Число после опции -d задает задержку в миллисекундах (допустимы значения от 250 до 1000 с шагом 250). Чтобы не устанавливать эти значения после каждого перезапуска компьютера, можно добавить в файл /etc/rc.d/rc.sysinit сроку следующего вида:

/sbin/kbdrate -s -r 16 -d 500

где опция -s просто подавляет вывод ненужных в данном случае сообщений. Если эту команду выполнить без указания параметров, для скорости повтора и задержки будут установлены значения по умолчанию: для скорости повтора — 10,9 символов в секунду, а для задержки — 250 миллисекунд.

Еще один вопрос, относящийся к настройке клавиатуры, — это способ изменения положения переключателей NumLock, CapsLock и ScrollLock. Для этого можно воспользоваться командой setleds . Например, для того, чтобы переключатель NumLock был по умолчанию включен, добавьте в файл /etc/rc.d/rc.sysinit следующие строки:

for tty in /dev/tty[1-9]*; do

Изменение раскладки клавиатуры — это вопрос значительно более сложный. Но, поскольку этот вопрос имеет большое значение как вообще для настройки клавиатуры, так и для решения проблемы русификации, его необходимо рассмотреть подробнее.

И начать придется с краткого изложения проблем кодировки символов.

9.3.2. Таблицы кодировки символов

В человеческом мире информация представляется последовательностями символов . Каждый символ имеет каноническое изображение, которое позволяет однозначно идентифицировать данный символ. Шрифты задают разные варианты начертания символов.

В вычислительных машинах для представления информации используются цепочки байтов. Поэтому для перевода информации из машинного представления в человеческий необходимы таблицы кодировки символов — таблицы соответствия между символами определенного языка и кодами символов.

Самой известной таблицей кодировки является код ASCII (Американский стандартный код для обмена информацией), который был разработан для передачи текстов по телеграфу задолго до появления компьютеров. Этот код является 7 битовым, т. е. для кодирования символов английского языка, служебных и управляющих символов используются только 128 7-битовых комбинаций. При этом первые 32 комбинации (кода) служат для кодирования управляющих сигналов (начало текста, конец строки, перевод каретки, звонок, конец текста и т. д.).

При разработке первых компьютеров фирмы IBM этот код был использован для представления символов в компьютере. Поскольку в исходном коде ASCII было всего 128 символов, для их кодирования хватило тех однобайтовых кодов, у которых 8-й бит равен 0. Во второй половине кодовой таблицы (значения байта с 8-м битом равным 1) фирма IBM разместила символы псевдографики, математические знаки и некоторые символы из языков, отличных от английского (немецкие умляуты, французские диакритические знаки, символы греческого алфавита и т.п.). Эту кодовую таблицу стали называть кодировкой IBM.

Когда IBM-совместимые персональные компьютеры стали использовать в других странах, потребовалось обеспечить обработку информации на языках, отличных от английского. Для того, чтобы полноценно поддерживать другие языки, фирма IBM ввела в употребление несколько кодовых таблиц, ориентированных на конкретные страны. Так для скандинавских стран была предложена таблица 865 (Nordic), для арабских стран — таблица 864 (Arabic), для Израиля — таблица 862 (Israel) и так далее. В этих таблицах часть кодов из второй половины кодовой таблицы использовалась для представления символов национальных алфавитов (за счет исключения некоторых символов псевдографики). Для представления символов кириллицы была введена кодировка IBM-866.


Однако с русским языком ситуация развивалась особым образом. Очевидно, что замену символов во второй половине кодовой таблицы можно произвести разными способами. В других европейских странах сумели найти единое решение, а для русского языка появилось несколько разных таблиц кодировки символов кириллицы: IBM-866, CP-1251, KOI8-R, ISO-8859-5. Все они одинаково изображают символы первой половины таблицы (от 0 до 127) и различаются представлением символов русского алфавита и псевдографики во второй половине.

Одна из самых известных кодовых таблиц для кириллицы получила название альтернативной (по отношению к кодировке IBM-866, наверное). Она была разработана фирмой Microsoft для MS-DOS. При ее разработке постарались сделать так, чтобы результирующая таблица была насколько это возможно совместима с кодировкой IBM. Поэтому альтернативная кодировка — это кодировка IBM, в которой все специфические европейские символы в верхней половине были заменены на кириллицу, оставляя псевдографические символы нетронутыми. Следовательно, это не портило вид программ, использующих для работы текстовые окна, что было очень существенным фактором для работы в среде MS-DOS, основой которой был именно текстовый режим.

Кодировка KOI-8 была разработана изначально с ориентировкой на UNIX. Так как UNIX в своей основе сетевая ОС, то основной идей при создании KOI-8 была идея об обеспечении перемещения кириллической информации по сети. Но для передачи-то использовался 7-битный стандарт ASCII. Разработчики поместили кириллические символы в верхней части таблицы таким образом, что позиции кириллических символов соответствуют их фонетическим аналогам в английском алфавите в нижней части таблицы. Это означает, что, если в тексте, написанном в KOI-8, мы убираем восьмой бит каждого символа, то мы все еще имеем «читабельный» текст, хотя он и написан английскими символами! Не удивительно, что KOI8-R быстро стал фактически стандартом для кириллицы в Интернет, что и нашло отражение в RFC 1489 ( «Registration of a Cyrillic Character Set» ). Автором этого документа является Андрей А. Чернов, который проделал огромный объем работы, чтобы превратить KOI-8 в стандарт Интернет.

Международная организация по стандартизации (ISO) внесла свою лепту в создание различных кодировок кириллицы, когда ввела семейство стандартов, известных как ISO 8859-X. Это семейство есть совокупность 8-битных кодировок, где младшая половина каждой кодировки (символы с кодами 0—127) соответствует ASCII, а старшая половина определяет символы для различных языков. Например:

  • 8859-0 — новый европейский стандарт (так называемый Latin 0);
  • 8859-1 — Европа, Латинская Америка (также известный как Latin 1);
  • 8859-2 — Восточная Европа;
  • 8859-5 — кириллица;
  • 8859-8 — идиш.

Фирма Microsoft еще больше запутала ситуацию с кодировками для русского языка, когда при разработке Windows ввела кодировку CP-1251.

Таблицы кодировок, содержащие 256 символов, стали называть расширенными кодами ASCII (потому что в основе любой из них лежит 128-символьный код ASCII), кодовыми страницами или английским термином character set (который часто сокращают до charset ).

Но в мире есть языки, такие как китайский или японский, для которых 256 символов в принципе недостаточно. Кроме того, всегда существует проблема вывода или сохранения в одном файле одновременно текстов на разных языках (например, при цитировании). Поэтому была разработана универсальная кодовая таблица UNICODE, содержащая символы, применяемые в языках всех народов мира, а также различные служебные и вспомогательные символы (знаки препинания, математические и технические символы, стрелки, диакритические знаки и т. д.). Очевидно, что одного байта недостаточно для кодирования такого большого множества символов. Поэтому в UNICODE используются 16-битовые (2-байтовые) коды, что позволяет представить 65 536 символов. К настоящему времени задействовано около 49 000 кодов (последнее значительное изменение — введение символа валюты EURO в сентябре 1998 г.). Для совместимости с предыдущими кодировками первые 128 кодов совпадают со стандартом ASCII. На рис. 9.1 схематично представлено размещение символов разных языков в кодовом пространстве UNICODE.

Рис. 9.1. Структура UNICODE.

В стандарте UNICODE кроме определенного двоичного кода (эти коды принято обозначать буквой U, после которой следуют знак + и собственно код в шестнадцатеричном представлении) каждому символу присвоено определенное имя. В следующей таблице приведено несколько примеров кодов и имен символов из стандарта UNICODE.

Таблица 9.2. Примеры именования кодов UNICODE

Ввод с клавиатуры

Читайте также:

  1. Ввод с клавиатуры
  2. Интерфейс клавиатуры и мыши.
  3. КЛАВИАТУРЫ ПЭВМ
  4. Контроллер клавиатуры.
  5. Общая характеристика клавиатуры.
  6. Операторы ввода данных с клавиатуры
  7. Опрос клавиатуры
  8. Поиск и замена формата и специальных символов с помощью клавиатуры
  9. События мыши и клавиатуры
  10. Форматирование шрифта с помощью клавиатуры

Очистка экрана.

Вывод на экран

Присвоение значений переменным

Присвоить некоторое значение переменной можно следующим образом:

При присвоении значения необходимо следить за тем, чтобы тип переменной соответствовал типу выражения, расположенного справа от знака равенства. Если Вы попробуете присвоить строковое выражение арифметической переменной или наоборот, то получите ошибку несоответствия типов. Необходимо также точно соблюдать соответствие между типом числовой переменной и типом арифметического выражения, чтобы избежать ошибок при вычислениях.

Следует следить за тем, чтобы при вычислениях не было переполнения значения переменной.

Конструкции, в которых переменная находится слева и справа от знака равенства, применяются очень часто. Интерпретация такого выражения достаточно проста. Сначала вычисляется значение выражения, стоящего справа от знака равенства с учетом текущих значений переменных, и только после этого происходит присвоение значение переменной, расположенной слева от знака равенства.

10.3. Ввод/вывод

В этом разделе Вы познакомитесь с операторами и функциями, которые реализуют вывод на экран и ввод с клавиатуры.

Оператор PRINT позволяет выводить данные на экран.

Синтаксис оператора PRINT: PRINT [Выражение] [ <;|,>Выражение]. [ <;|,>]
Выражение
— Арифметическое или строковое выражение. Значение выражения выводится на экран.
— Устанавливает начало последующего вывода:
;: — значение очередного выражения следует непосредственно за значением предыдущего,
, — значение очередного выражения размещается в начале следующей области вывода. Область вывода — блок из 14 символов.

Если в конце PRINT-выражения нет ни знака «;», ни «,», то выполняется перевод строки, и вывод следующего значения начинается с новой строки.

Примечание: Оператор LPRINT выводит данные на печатающее устройство (принтер). В остальном синтаксис LPRINT идентичен синтаксису оператора PRINT.

Оператор CLS очищает экран и используется без параметров. Следующий оператор вывода начинает размещение данных в левом верхнем углу экрана (первая строка, первый столбец).

Пример:
‘В данной программе демонстрируется очистка экрана
CLS
‘Экран очищен
PRINT «Вывод в левый верхний угол, «;
PRINT «остальное поле экрана свободно»
‘Конец программы


Описанный далее оператор INPUT дает возможность вводить данные во время выполнения программы, после чего эти данные обрабатываются программой. Появление на экране вопросительного знака означает запрос ввода. Ввод данных завершается нажатием клавиши , и введенное значение сохраняется в заданной переменной.

INPUT [Текст<;|,>] Имя_переменной [, Имя_переменной].

Текст— Текст, который будет выведен на экран перед тем, как пользователь осуществит ввод.
— Точка с запятой обозначает, что после текста выводится знак вопроса для обозначения необходимости ввода данных. Если вместо точки с запятой стоит запятая, знак вопроса после текста не появится.

Имя_переменной — Переменные, в которых сохраняются вводимые данные. Объявление переменных должно быть выполнено в начале программы.

Пример 1:

В приведенной ниже программе вводятся значения трех переменных — height!, breadth!, length!.
Результат вычислений выводится на экран.

‘Пример 1
DIM height!, breadth!, length!
CLS
INPUT height!
INPUT breadth!
INPUT length!
PRINT
PRINT «Результат «; height! * breadth! * length!
‘Конец программы

Пример 2:

Предыдущая программа имеет очевидный недостаток, так как на экране не видно, что собственно требуется вводить. Однако в операторе INPUT имеется возможность перед каждым вводом данных выводить на экран текст.

‘Пример 2
DIM height!, breadth!, length!
CLS
INPUT «Введите, пожалуйста, высоту :»; height!
INPUT «Введите, пожалуйста, ширину :»; breadth!
INPUT «Введите, пожалуйста, длину :»; length!
PRINT
PRINT «Результат V=»; height! * breadth! * length!
‘Конец программы

Применение точки с запятой приводит к тому, что после вывода текста на экране появляется знак вопроса, вывод которого можно отменить, если точку с запятой заменить запятой. Предложение INPUT будет выглядеть так:

INPUT «Введите, пожалуйста, высоту :», height!

Примечание: Оператор INPUT проверяет, соответствует ли тип вводимой величины типу указанной переменной. Если число с плавающей запятой записать в переменную типа INTEGER, то вводимая величина будет округлена до ближайшего большего целого числа. Если текст вводится в числовую переменную, QBASIC отказывается воспринимать данные и выдает сообщение об ошибке — «Redo from start» (Начните еще раз).

Дата добавления: 2014-01-06 ; Просмотров: 307 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Клуб программистов

Delphi programming

Подписаться на рассылку:

Урок 6. Чтение ввода с клавиатуры

В этой книге ваши программы использовали выходной поток cout для отображения вывода на экран. Из данного урока вы узнаете, что C++ обеспечивает входной поток с именем cin, из которого программы могут читать информацию, введенную пользователем с клавиатуры. При использовании cin для чтения ввода с клавиатуры вы указываете одну или несколько переменных, которым cin будет присваивать входные значения. К тому времени, когда вы закончите этот урок, вы освоите следующие основные концепции:

  • Вы можете использовать входной поток cin для присваивания определенным переменным символов и чисел, введенных с клавиатуры.
  • При применении cin для чтения и присваивания переменной значения, введенного с клавиатуры, можно использовать содержимое переменной так, как если бы ваша программа использовала оператор присваивания для сохранения значения в переменной.
  • Когда ваша программа использует cin для выполнения ввода с клавиатуры, остерегайтесь ошибок переполнения и ошибок, возникающих при вводе пользователем значения неверного типа.

Как вы уже знаете, если ваши программы используют выходной поток cout, они помещают данные в поток с помощью оператора вставки ( cin для чтения ввода с клавиатуры, они будут использовать оператор извлечения (>>).

ПЕРВОЕ ЗНАКОМСТВО С cin

Точно так же как выходной поток cout позволяет вашим программам записать вывод на экран, входной поток cin позволяет программам читать ввод с клавиатуры. Когда программы используют cin для чтения ввода с клавиатуры, они должны указать переменную, в которую cin поместит данные. Следующая программа FIRSTCIN.CPP использует cin для чтения числа, введенного с клавиатуры. Программа присваивает введенное число переменной с именем number, а затем выводит значение переменной, используя выходной поток cout:

<
int number; II Число, читаемое с клавиатуры
cout «Введите ваше любимое число и нажмите Enter: «;
cin >> number;
cout

Когда вы откомпилируете и запустите эту программу, на вашем экране появится сообщение, предлагающее вам ввести ваше любимое число. Если вы введете число и нажмете ENTER, программа присвоит ввод переменной number. Затем, используя cout, программа выведет сообщение, отображающее ваше любимое число.

Следующая программа TWONBRS.CPP запрашивает у вас два числа. Программа присваивает числа переменным first и second. Затем программа выводит числа, используя cout:

<
int first, second; // Числа, введенные с клавиатуры
cout > first >> second;
cout

Обратите внимание на использование с cin двух операторов извлечения:


В этом случае cin присвоит первое введенное значение переменной first, a второе переменной second. Если для вашей программы требуется третье значение, вы можете использовать третий оператор извлечения, как показано ниже:

Если вы применяете cin для чтения чисел с клавиатуры, cin использует левый пустой символ (пробел, табуляцию, возврат каретки), чтобы определить, где начинается одно значение, а где второе. Экспериментируйте с программой TWONBRS, разделяя числа табуляцией, пробелом и возвратом каретки.

Чтение ввода с клавиатуры с помощью cin

Для чтения ввода с клавиатуры программы могут использовать входной поток cin. При использовании cin вы должны указать переменную, в которую cin помещает данные. Затем используйте оператор извлечения (>>) для направления данных, как показано ниже:

Оператор извлечения называется так, потому что он извлекает (удаляет) данные из входного потока, присваивая значение указанной переменной.

Следите за ошибками переполнения

Если ваши программы выполняют ввод с использованием cin, остерегайтесь возможных ошибок, возникающих при вводе пользователем неверного числа. Например, запустите программу FIRSTCIN, которую вы только что создали. Когда программа запросит вас ввести ваше любимое число, введите число 1000000 и нажмите ENTER. При этом программа не сможет отобразить число 1000000 в качестве введенного значения. Вместо этого возникнет ошибка переполнения, так как 1000000 превышает наибольшее значение, которое может хранить тип int.

Если вы внимательно рассмотрите программу FIRSTCIN. CPP, то обратите внимание, что cin присваивает введенное число переменной типа int. Как вы узнали из урока 4, переменные типа int могут хранить значения только в диапазоне от -32768 до 32767. Поскольку переменная типа int не может вместить значение 1000000, возникает ошибка. Запустите программу еще несколько раз, вводя отрицательные и положительные числа. Обратите внимание на ошибки, которые возникают, если вы выходите за допустимые пределы значений для той переменной, в которую cin помещает ввод.

Следите за ошибками несовпадения типов

Как уже обсуждалось, программа FIRSTCIN.CPP предполагает, что пользователь вводит значение в диапазоне от -32768 до 32767. Если вместо ввода числа вне этого диапазона, пользователь вводит буквы или другие символы, то возникает другая ошибка — ошибка несовпадения типов. Другими словами, программа ожидала значение одного типа (int), а пользователь ввел значение другого типа (char). Для примера запустите программу второй раз. Когда программа запросит число, введите буквы АВС. Как и раньше, возникнет ошибка, поскольку программа ожидает целое число, а не буквы.

Выполните подобные эксперименты с программой TWONBRS, вводя бессмысленные значения или числа с плавающей точкой. Вы обнаружите, что программа наталкивается на те же ошибки. В последующих уроках вы научитесь выполнять операции ввода таким образом, чтобы уменьшить возможность подобных ошибок. А сейчас просто помните, что такие ошибки могут возникать.

Чтение символьных данных

Обе предыдущие программы использовали cin для чтения целых чисел в переменные типа int. Следующая программа CIN_CHAR.CPP использует входной поток cin для чтения символов с клавиатуры. Как видите, программа читает символ в переменную типа char.

Откомпилируйте и поэкспериментируйте с данной программой, вводя более одного символа и наблюдая за реакцией программы. Вы обнаружите, что программа каждый раз работает только с одним символом.

Чтение слов с клавиатуры

Во второй части данной книги вы научитесь сохранять слова или даже строки текста в одной переменной. Там же вы узнаете, как использовать входной поток cin для чтения слов и целых строк. А сейчас можете создать свою собственную простую программу, которая читает значения типа float или long. Например, следующая программа CIN_LONG.CPP использует cin для чтения значения типа long:

Как и раньше, поэкспериментируйте с этой программой, вводя очень большие числа (и отрицательные тоже).

Перенаправление В/В и входной поток cin

Как вы уже знаете из урока 3, если ваши программы используют выходной поток cout, пользователь может перенаправить вывод программы с экрана дисплея в файл или на принтер. Как уже обсуждалось, выходной поток cout соответствует стандартному выводу операционной системы. Подобным образом входной поток cin соответствует стандартному вводу операционной системы. В результате, если ваша программа использует cin для выполнения операций ввода, пользователь может перенаправить ввод программы с клавиатуры на файл. В последующих уроках вы научитесь писать программы, которые читают и обрабатывают перенаправленный ввод.

ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ

В этом уроке вы научились использовать входной поток cin для выполнения ввода с клавиатуры. Как вы уже знаете, если ваши программы используют cin для чтения ввода с клавиатуры, вам следует указать переменные, которым cin присваивает вводимые значения. В уроке 7 вы научитесь использовать оператор C++ if, чтобы позволить программам принимать собственные решения. Однако перед тем, как приступить к уроку 7, убедитесь, что вы освоили следующие основные концепции:


    1. C++ предоставляет входной поток cin, который ваши программы могут использовать для чтения ввода с клавиатуры.
    2. Если программы для чтения ввода используют cin, они должны указать одну или несколько переменных, в которые cin будет помещать данные.
    3. Чтобы направить ввод в переменную, вам следует использовать cin с оператором извлечения (>>).
    4. При применении cin для чтения нескольких значений, cin использует пустые символы (пробел, табуляция или возврат каретки), чтобы определить, где заканчивается одно значение и начинается другое.
    5. Если пользователь вводит неверные данные, могут возникать ошибки переполнения или несоответствия типов, а значения, присвоенные входным потоком cin переменным вашей программы, будут неверны.


Предыдущий урок | Следующий урок

Схемы раскладок клавиатуры

Кириллические раскладки

Стандартные русская, белорусская и украинская раскладки

Зелёным цветом отмечены отличия между белорусской и русской раскладками, синим цветом — отличия между русской раскладкой и расширенной украинской раскладкой (доступна в Windows Vista и выше).


Клавиша «Alt Gr» используется только в украинской раскладке для ввода одной-единственной буквы «Ґґ», отмеченной красным цветом.

Русская машинописная раскладка

Стандартная болгарская раскладка

Эта версия раскладки доступна в Windows Vista и выше.

Заглавные версии букв «Ь» и «Ы» тоже можно набирать, но только при включённом режиме Caps Lock. Заглавную версию буквы «Ѝ» можно набирать с помощью дополнительной клавиши, а при её отсутствии — аналогично букве «Ы» (в режиме Caps Lock с зажатой «Shift»).

Стандартная сербская раскладка

Единственная мёртвая клавиша используется для ввода македонских букв «Ѓѓ» и «Ќќ», а также машинописного апострофа (в сочетании с клавишей «пробел»): «м. к. á », «Кк» → «Ќќ» , «м. к. á », «пробел» → «’» .

Славянская многоязычная фонетическая раскладка

(скачать раскладку можно здесь)

Раскладка поддерживает все современные славянские языки с алфавитами на основе кириллицы, а также основные типографские символы.

Стандартная казахская раскладка

Усовершенствованная казахская раскладка «KazWin»

(скачать раскладку для Windows 95/XP можно здесь)

Раскладка максимально совместима со стандартной русской; для ввода несвойственных казахскому языку букв используется мёртвая клавиша.

Кириллические типографские раскладки

Типографская раскладка Ильи Бирмана

(скачать раскладку можно здесь)

Эта раскладка предлагает, наверное, самый удобный способ ввода типографских кавычек, который только можно придумать. Кроме того, поддерживает основные западноевропейские языки и позволяет вводить множество других полезных типографских символов.

Латинские раскладки

Стандартная американская раскладка

Стандартная французская раскладка

» и «`» можно вводить, набирая соответствующую мёртвую клавишу и нажимая после этого на пробел: «Alt Gr»+«é», «пробел» → «

» и «Alt Gr»+«è», «пробел» → «`» .

Стандартная итальянская раскладка

Стандартная немецкая раскладка

Символы «^» и «`» можно вводить, набирая соответствующую мёртвую клавишу и нажимая после этого на пробел: «м. к. â », «пробел» → «^» и «Shift»+«м. к. á », «пробел» → «`» .

Стандартная испанская раскладка

», «^» и «`», а также более экзотические «´» и «¨», можно вводить, набирая соответствующую мёртвую клавишу и нажимая после этого на пробел (например: «Shift»+«м. к. à », «пробел» → «^» или «Alt Gr»+«4», «пробел» → «

Стандартная польская раскладка (программистская)

Специальные польские буквы вводятся либо с помощью правой клавиши «Alt», либо с помощью мёртвой клавиши «Shift»+«`» (например: «Shift»+«`», «a» → «ą» ).


Для ввода символа «тильда» («

») используется комбинация мёртвой клавиши с клавишей «пробел»: «Shift»+«`», «пробел» → «

Расширенная польская раскладка «Mocny Akcent»

(скачать раскладку можно здесь, выбрать файл «Akcent3.zip»)

Символы, обозначенные красным цветом, можно вводить как с помощью «Alt Gr», так и с помощью дополнительной мёртвой клавиши «`» (например: «`», «u» → «€» или «`», «Shift»+«a» → «Ą» ). Символы, обозначенные оранжевым цветом, можно вводить только с помощью «Alt Gr».

Для ввода символов «`» и «

» используются комбинации соответствующих мёртвых клавиш с клавишей «пробел»: «`», «пробел» → «`» , «Shift»+«`», «пробел» → «

Стандартная вьетнамская раскладка

Дополняющие тоновые диакритические знаки помечены светло-серой буквой «a». Их надо набирать после ввода букв, к которым они относятся. Правая клавиша «Alt» дублирует стандартную английскую раскладку. Красным цветом отмечены символы, набор которых возможен только с помощью правой «Alt»; розовым цветом — символы, которые можно набирать как с помощью правой «Alt», так и без неё.

Латинские многоязычные раскладки

Клавиатурная раскладка «США международная»

Поддерживает все основные западноевропейские языки.

», «^», «’» и «»» можно вводить, набирая соответствующую мёртвую клавишу (« à », « ã », « â », « á » и « ä ») и нажимая после этого на пробел (например: «м. к. à », «пробел» → «`» , «Shift»+«м. к. à », «пробел» → «

» или «Shift»+«м. к. á », «пробел» → «»» ).

Расширенная британская раскладка

Представляет собой почти прозрачную замену стандартной британской раскладке (отличается от неё только мёртвой клавишей « à », если не учитывать дополнительные символы, вводимые с помощью правой клавиши «Alt»).

Стандартная хорватская раскладка

Эта раскладка позволяет набирать тексты на всех современных славянских языках, использующих латиницу, а также — тексты на венгерском языке.

Символ «^» можно вводить, набирая соответствующую мёртвую клавишу и нажимая после этого на пробел: «Alt Gr»+«3», «пробел» → «^» .

Канадская многоязычная раскладка

Ввод специальных символов, помеченных красным цветом, а также мёртвые клавиши, изображённые в средних колонках, активизируются с помощью правой клавиши «Alt». Ввод букв и специальных символов, помеченных синим цветом, а также мёртвые клавиши, изображённые в колонках справа, активизируются с помощью правой клавиши «Ctrl».

Комбинация «правый Ctrl»+«Shift»+«/» позволяет вводить мягкий перенос (невидимый символ, разрешающий перенос слова).

Символ «^» и интерпункт («·»), а также отдельностоящие диакритические знаки («¸», «˛», «¨», «`», «˚», «¯», «´», «˝», «˘» и «ˇ») можно вводить, набирая соответствующую мёртвую клавишу и нажимая после этого на пробел: «м. к. â », «пробел» → «^» , «правый Ctrl»+«.», «пробел» → «·» и т. п.

Финская многоязычная раскладка

(скачать раскладку можно здесь)

Отличается одновременно очень широким диапазоном поддерживаемых букв и наличием пространства для дальнейшего расширения. Кроме европейских языков (которые эта раскладка, судя по всему, поддерживает все), позволяет также вводить тексты на вьетнамском и многих других языках.

Многоязычная раскладка Colemak

(скачать раскладку можно здесь)

Позволяет набирать тексты на всех современных европейских языках, кроме саамского и, может быть, каких-то ещё очень экзотических. Подробное описание с полным списком доступных символов можно прочитать на официальном сайте.

Ввод символов, помеченных синим цветом, активизируется по нажатию на клавишу «Alt Gr»+«\» (например: «Alt Gr»+«\», «c» → «©» или «Alt Gr»+«\», «Shift»+«.» → «≥» ).


Неразрывный пробел вводится по схеме «Alt Gr»+«Shift»+«пробел» → « » .

Экзотические раскладки

Стандартная греческая раскладка

Сочетание мёртвых клавиш с клавишей «пробел» позволяет вводить отдельностоящие греческие диакритические знаки (например: «м. к. ά », «пробел» → «΄» или «Shift»+«ς», «пробел» → «΅» ).

Грузинская раскладка «QWERTY»

Эта раскладка доступна в Windows Vista и выше.

Kbd ввод с клавиатуры

С большой долей уверенности можно утверждать, что большинство пользователей, набирая какой-либо русскоязычный документ, сталкивались с ситуацией, когда нажатие некоторых клавиш клавиатуры вызывает появление на экране монитора символов, не соответствующих символам на них обозначенным. Это относится к знакам препинания и некоторым другим символам, нанесенным на «цифровые» клавиши клавиатуры компьютера.

При наборе текста или вводе данных часто приходится использовать символы как английского, так и русского алфавита, поэтому компьютер должен поддерживать два режима ввода с клавиатуры — символов латиницы и кириллицы. Для этого на клавиши клавиатуры, кроме букв английского алфавита, нанесены буквы русского алфавита, а также символы и знаки препинания для русскоязычного режима. Обычно русские буквы нанесены красным, реже черным или зеленым цветом.
Если расположение букв русского алфавита на всех клавиатурах, предлагаемых на российском компьютерном рынке, совпадает, то расположение знаков препинания и некоторых символов, нанесенных на «цифровые» клавиши, существенно отличается. Вызвано это отсутствием единого стандарта русской раскладки клавиатуры — стандарта, которого должны были бы придерживаться как производители клавиатур, так и производители программного обеспечения. В настоящее время в обращении находятся несколько более или менее распространенных русских раскладок клавиатур, созданных компаниями, разрабатывающими программное обеспечение (Microsoft, IBM и некоторыми другими). Например, в локализованной версии операционной системы IBM OS/2 принято почти такое же расположение букв и символов русской клавиатуры, как и на русской пишущей машинке, а русифицированных MS WINDOWS раскладка знаков препинания и символов, нанесенных на «цифровые» клавиши, совсем другая.
На российском компьютерном рынке предлагаются в основном клавиатуры с двумя типами русских раскладок, которые условно можно назвать:
— клавиатуры с «майкрософтовской» русской раскладкой (рисунок 1),
— клавиатуры с «альтернативной» русской раскладкой (рисунок 2).

Рис.1 Пример «майкрософтовской» русской раскладки клавиатуры:

Рис.2 Пример «альтернативной» русской раскладки клавиатуры:

Клавиатуры с «альтернативной» русской раскладкой на протяжении последних лет в огромном количестве поставлялись на российский компьютерный рынок, преобладают они на российском компьютерном рынке и сегодня. Достать же клавиатуру с «майкрософтовской» русской раскладкой до последнего времени было непросто, да и стоили они обычно в несколько раз дороже «альтернативных». Сейчас положение исправилось, и приобрести клавиатуры с «майкрософтовской» русской раскладкой можно в большинстве российских компьютерных магазинов, а цены на них практически не отличаются от цен на «альтернативные».
Тем не менее на сегодняшний день подавляющее большинство компьютеров укомплектовано клавиатурами с «альтернативной» русской раскладкой, а работают они при этом под управлением операционных систем семейства MS WINDOWS, получивших в нашей стране, как и во всем мире, наибольшее распространение. Это в итоге и привело к тому, что владельцы большинства компьютеров испытывают определенные неудобства при наборе русских текстов, так как русская раскладка клавиатуры, используемая фирмой Microsoft, не соответствует русской раскладке «альтернативных» клавиатур.

Что же делать тем пользователям WINDOWS’9X, которые купили компьютер, укомплектованный клавиатурой с «неправильной» (с точки зрения операционной системы WINDOWS’9X) «альтернативной» русской раскладкой, и теперь испытывают неудобства при работе?
Для решения этой проблемы они могут:
а) купить новую, «майкрософтовскую» клавиатуру;
б) воспользоваться одним из драйверов клавиатуры, созданных в России и поддерживающих русский язык, например, CyrWin’95 или ParaWin’95 (эти драйвера, кроме функций поддержки русских экранных шрифтов и клавиатурного переключателя, позволяют гибко изменять раскладку клавиатуры и предоставляют массу других удобств);
в) купить специальные наклейки, которыми можно заклеить «неправильные» клавиши;
г) продолжать работать по принципу «три пишем, два в уме».

Однако есть еще один вариант решения этой проблемы, который я и хочу предложить вашему вниманию.
Работой клавиатуры с символами той или иной раскладки клавиатуры управляет специальная программа — драйвер клавиатуры. Именно он обеспечивает правильный ввод и отображение русских букв, знаков препинания и других символов при нажатии на соответствующие клавиши клавиатуры, а также переключение между латиницей и кириллицей. В операционных системах WINDOWS’9X это драйвер клавиатуры KBDRU.KBD .
Я предлагаю вам немного «подправить» этот файл. Если внести некоторые изменения, то можно добиться того, что при работе на «альтернативной», «неправильной» с точки зрения WINDOWS’9X клавиатуре, мы избавимся от появления на экране монитора символов, не соответствующих обозначенным на самих клавишах.
Итак, что же нужно сделать, чтобы исправить драйвер клавиатуры? Порядок работы будет такой:

а) Найдите файл KBDRU.KBD , который обычно располагается в папке \\WINDOWS\SYSTEM\ ;
б) Создайте папку BAK , в которую копируйте файл KBDRU.KBD перед тем как приступать к его изменению (эта резервная копия может пригодиться, на случай, если при внесении изменений будут допущены ошибки, и он будет работать неправильно или откажется работать вообще);
в) В любом (шестнадцатиричном) HEX-редакторе (например, встроенном нортоновском (нажать F4, затем еще раз F4)) редактируем в указанных строках следующие позиции:
в строке 00000140 замените
B8 на 29
в строке 00000170 замените
2E на 2F
A8 на 28
B9 на 2F
3B на B9
25 на 3A
3A на 2C
3F на 2E
2A на 3B
в строке 00000180 замените
28 на 3F
29 на 25
в строке 00000190 замените
2F на 7C
в строке 000001A0 замените
2C на 3F
A8 на 28
B9 на 2F
3B на B9
25 на 3A
3A на 2C
3F на 2E
в строке 000001B0 замените
2A на 3B
28 на 3F
29 на 25
в строке 000001C0 замените
2F на 7C
г) Сохраните файл KBDRU.KBD с внесенными в него изменениями;
д) Перезагрузите компьютер.

Теперь, даже если вы пользуетесь «альтернативной» клавиатурой, вы сможете наслаждаться практически полным соответствием нажимаемых вами «русских» клавиш клавиатуры и появляющихся при этом символов. Оговорка «практически» сделана не случайно. Поскольку на «альтернативных» клавиатурах отсутствует символ «N&#176» (номер), который широко используется в российском делопроизводстве, он был размещен на «цифровой» клавише «4», которая на данном типе клавиатур в русской раскладке не используется.
Исправленный драйвер тестировался с операционными системами WINDOWS’95 и WINDOWS’98 в разных режимах, и показал, что работает абсолютно корректно.

Перед тем как вносить изменения в файл KBDRU.KBD, обязательно сделайте его резервную копию.
Если вы считаете, что исправить драйвер клавиатуры для вас непосильная задача, можете скачать уже исправленный файл из Интернета. Вот уже исправленный драйвер — kbdruw9x.zip.

Автор статьи: Владимир Громов.

Статья под названием «Раскладка — не рулетка» опубликована в научно-популярном компьютерном журнале «HARD’n’SOFT» N9 за 2000 год (стр.90-92).

Урок 3
Ввод информации в память компьютера.
Клавиатура. Группы клавиш.
Практическая работа №1 «Знакомимся с клавиатурой»

Ввод информации в память компьютера

Люди имеют дело с разными видами информации, воспринимаемой органами зрения, слуха, вкуса, осязания и обоняния. Получаемую информацию человек умеет обрабатывать и представлять в текстовой, числовой, графической и других формах.

Самые первые компьютеры работали только с числами, то есть обрабатывали только числовую информацию.

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

Затем компьютеры стал и работать с графической информацией — чертежами, рисунками, схемами.

Прошло ещё немного времени, и компьютеры стали воспроизводить звуки, человеческую речь, музыку работать со звуковой информацией.

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

Для ввода в компьютер звуковой информация служат микрофоны. Сканеры, цифровые фотоаппараты и видеокамеры используются для ввода сложных графических изображений, фотографий и видеофильмов. Специальные датчики, присоединяемые к компьютеру, позволяют измерять и вводить в его память такие числовые характеристики окружающей среды, как температура, влажность, давление и многое другое. Вводить текстовую информацию можно с помощью специальных устройств речевого ввода.

Но на сегодняшний день, для того чтобы успешно работать на компьютере, необходимо хорошо ориентироваться в клавишах клавиатуры — важнейшего устройства ввода информации в память компьютера.

Клавиатура. Группы клавиш

Внимательно рассмотрите клавиатуру, наведя курсор на фото.


Все клавиши можно условно разделить на несколько групп:

1) функциональные клавиши;
2) символьные (алфавитно-цифровые) клавиши;
3) клавиши управления курсором;
4) специальные клавиши;
5) дополнительная клавиатура.

Функциональные клавиши F1 — F2, размещенные в верхней части клавиатуры, заранее запрограммированы на выполнение определённых действий. Так, очень часто клавиша F1 служит для вызова справки.

В центре расположены символьные клавиши, очень похожие на клавиши обычной пишущей машинки. На них нанесены цифры, специальные символы (!, :, * и так далее), буквы русского алфавита, латинские буквы. Способ переключения алфавитов зависит от настройки клавиатуры компьютера. Чаще всего применяется одна из следующих комбинаций клавиш:

Alt + Shift или Ctrl + Shift

Знак « + » между названиями клавиш означает, что требуемое действие выполняется только в том случае, если в нажатом состоянии будут находиться обе клавиши. Выполнять клавиатурные комбинации можно так: нажать первую из указанных клавиш и, удерживая ее нажатой, нажать вторую клавишу; обе клавиши отпустить.

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

Буквы каждого алфавита могут быть прописными (большими) или строчными (маленькими). Переключают режим ввода букв нажатием клавиши Caps Lock.

Если горит индикатор Caps Lock — будут вводиться прописные буквы, иначе — строчные.

Вводить одну или несколько прописных букв удобно с помощью комбинации клавиш Shift + .

В нижней части клавиатуры находится большая белая клавиша — пробел. Пробел используется для отделения слов и выражений друг от друга.

Курсор ввода ( | ) — мигающая черточка, отмечающая место ввода очередного символа на экране монитора.

Для перемещения курсора по тексту служат курсорные стрелки:

Они перемещают курсор на одну позицию в заданном направлении.

Клавиши Рage Up и Page Down позволяют листать документ вверх и вниз, а Ноmе и End переводят курсор в начало и конец строки.

Специальные клавиши не собраны в одну группу, а размещены так, чтобы их было удобно нажимать.

Клавиша Enter (иногда изображается со стрелкой) завершает ввод команды и вызывает её выполнение. При наборе текста служит для завершения ввода абзаца.

Клавиша Esc расположена в левом верхнем углу клавиатуры. Обычно служит для отказа от только что выполненного действия.

Клавиши Shift, Ctrl, Alt изменяют действия других клавиш.

Дополнительная клавиатура может работать в двух режимах, переключаемых клавишей Num Lock:

при включенном индикаторе Num Lock это удобная клавишная панель с цифрами и знаками арифметических операций, расположенными, как на калькуляторе;

• если индикатор Num Lock выключен, то работает режим управления курсором.

Клавиатура — это электронное устройство, содержащее внутри микросхемы и другие детали. Поэтому обращаться с ней следует бережно и аккуратно. Нельзя допускать загрязнения клавиатуры пылью, мелким мусором, металлическими скрепками и так далее. Нет нужды сильно стучать по клавишам. Движения ваших пальцев должны быть легкими, короткими и отрывистыми.

Цифровые клавиши (или числовые клавиши) занимают 2 ряд клавиатуры, а также располагаются в правой ее части в виде встроенного калькулятора. Они служат для ввода цифр, формул, дат в текст, а также применяются при выполнении вычислений и расчетов на электронном калькуляторе и других программах вычислительного типа. В правой части клавиатуры располагается клавиша Num Lock, в рабочем состоянии клавиша включена и зафиксирована индикатором (лампочкой), расположенным выше нее, а цифровые клавиши, расположенные под этой клавишей, работают в обычном своем режиме. Когда эта клавиша выключена – индикатор гаснет, и цифровые клавиши работают как клавиши управления курсором.

Алфавитные клавиши (или буквенные, или клавиатура печати текста, или текстовые) занимают 3-5 ряды клавиатуры и служат для ввода текстовой информации в ПК. Расположение букв русского алфавита совпадает с расположением на советских печатных машинках, а расположение букв английского алфавита – с расположением на печатных машинах иностранного производства. Почему? … Ответ прост: В прошлом веке на каждом большом предприятии существовали так называемые машбюро (машинные бюро), в которых работали десятки женщин и всю документацию печатали на печатных машинках. С появлением компьютеров машбюро прекратили свое существование, а женщины стали работать секретарями и знакомые клавиши остались на прежнем месте, ведь за годы работы на печатных машинах вырабатывалась тактика работы вслепую, т.е. не глядя на клавиши.

Комбинации клавиши Shift и второго цифрового ряда клавиатуры

Русский язык Английский язык
Shift + 1 = ! Shift + 1 = !
Shift + 2 = « » Shift + 2 = @
Shift + 3 = № Shift + 3 = #
Shift + 4 = ; Shift + 4 = $
Shift + 5 = % Shift + 5 = %
Shift + 6= : Shift + 6= ^
Shift + 7 = ? Shift + 7 = &
Shift + 8 = * Shift + 8 = *
Shift + 9 = ( Shift + 9 = (
Shift + 0 = ) Shift + 0 = )
Shift + «-» = _ Shift + «-» = _
Shift + «=» = + Shift + «=» = +

Клавиши управления курсором и редактированием текста располагаются в правой части клавиатуры, между алфавитными и цифровыми клавишами, их всего 10. Они управляют курсором (перемещают курсор) и позволяют редактировать (править, корректировать) текст.

Написание на клавише

(можно добавить произношение на русском языке)

Илон Маск рекомендует:  Приложение c замечания по реализации и использованию шрифтов
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL