
- •Руководство программиста в Photon
- •Перевод выполнен Владимиром Зайцевым, г.Харьков Редактирование текста выполнено Михаилом Поспеловым, г.Калуга
- •Глава 1. Уроки 28
- •Глава 2. Окружение PhAb 56
- •Глава 3. Работа с приложениями 68
- •Глава 4. Работа с модулями 76
- •Глава 5. Создание виджетов в PhAb 91
- •Глава 6. Редактирование ресурсов и ответных реакций в PhAb 107
- •Глава 7. Управление геометрией 128
- •Глава 13. Доступ к модулям PhAb из программного кода 196
- •Глава 19. Шрифты 283
- •Небольшое пояснение переводчика
- •Введение
- •Обзор архитектурыPhoton'а
- •Построитель Photon'овских приложений – PhAb
- •Получение немедленных результатов
- •Концентрация на функциональности
- •Создание прототипов без написания кода
- •Сокращение размера кода
- •Создание последовательных приложений
- •Создание всех разновидностей приложений
- •Концепции виджетов
- •Жизненный цикл виджета
- •Геометрия виджета
- •Парадигма (система понятий) программирования
- •Приложение текстового режима
- •PhAb приложение
- •БиблиотекиPhoton'а
- •Обзор построения приложений подPhAb Шаг 1. Создание модулей
- •Шаг 2. Добавление виджетов
- •Шаг 3. Прикрепление ответных реакций
- •Шаг 4. Генерация кода
- •Шаг 5. Запуск Вашего приложения на выполнение
- •Шаг 6. Повторение любого предыдущего шага
- •Написание приложений без PhAb
- •Глава 1. Уроки
- •Перед тем как Вам начать...
- •Урок 1 – Привет, мир
- •Создание приложения
- •Генерирование кода
- •Хотите больше информации?
- •Урок 2. Редактирование ресурсов
- •Добавление виджета "Кнопка"
- •Изменение ширины фаски
- •Изменение шрифта
- •Изменение выравнивания текста
- •Установка флагов
- •Изменение цвета заполнения
- •Редактирование пиксельной карты
- •Редактирование многострочного текста
- •Редактирование списка текстовых параграфов
- •Создание шаблона
- •Желаете узнать побольше?
- •Урок 3. Создание меню и панелей меню
- •О присоединении ответных реакций
- •Об именах экземпляров
- •Создание панели меню
- •Создание модуля меню "File"
- •Добавление пунктов меню
- •Создание модуля меню "Help"
- •Присоединение ответных реакций
- •Присоединение ответной реакции модульного типа
- •Присоединение ответной реакции кодового типа
- •Подготовка кода
- •Хотите узнать больше?
- •Урок 4. Создание диалогов
- •О диалогах
- •Ещё об именах экземпляров
- •Прикрепление модуля диалога
- •Добавление виджетов в диалог
- •Добавление ответной реакции к кнопке Done
- •Модификация сгенерированного кода функции
- •Компиляция и запуск на выполнение
- •Желаете узнать больше?
- •Урок 5. Создание окон
- •Создание окна
- •Прикрепление ответной реакции
- •Добавление виджетов
- •Генерирование и модификация кода
- •Генерирование кода
- •Модификация функции установки
- •Модификация функции изменения цвета
- •Модификация функции закрытия окна
- •Компиляция и запуск
- •Хотите узнать больше?
- •Глава 2. Окружение PhAb
- •Меню "File"
- •Меню "Edit"
- •Меню "View"
- •Меню "Options"
- •Меню "Application"
- •Меню "Window"
- •Меню "Help"
- •Панели инструментов
- •Инструмент корректировки положения
- •Панели управления
- •Палитра виджетов
- •Режимы (создание или выбор)
- •Панель ответных реакций
- •Панель дерева модулей
- •Панель связей модуля
- •Панель поиска
- •Подгонка Вашего окружения PhAb
- •Общие предпочтения ("General preferences")
- •Предпочтение цвета ("Color preferences")
- •Открытие приложения
- •Сохранение приложения
- •Именование и переименование приложения
- •Сохранение существующего приложения
- •Переписывание существующего приложения
- •Закрытие приложения
- •Задание стартовой информации приложения
- •Задание глобального заголовочного файла
- •Функция инициализации
- •Опции командной строки
- •Включение имён экземпляров
- •Окна запуска
- •Добавление окна запуска
- •Модификация окна запуска
- •Удаление окна запуска
- •Импортирование файлов
- •Импортирование модулей PhAb из других приложений
- •Импортирование графических образов
- •Глава 4. Работа с модулями
- •Типы модулей
- •Анатомия модуля
- •Выбор модуля
- •Как сохраняются модули
- •Изменение ресурсов модуля
- •Использование селектора модулей
- •Создание нового модуля
- •Просмотр модулей
- •Открытие модулей
- •Удаление модуля
- •Сворачивание модулей в иконки
- •Закрытие модуля
- •Отображение модулей в реальном времени
- •Позиционирование модуля
- •Нахождение потерянных модулей и иконок
- •Модули окон
- •Изменение размера модуля окна
- •Модули диалога
- •Изменение размеров модуля диалога
- •Предопределённые диалоги
- •Модули меню
- •Открытие редактора меню
- •Задание имён экземпляров
- •Создание "горячих клавиш" и "кнопок быстрого доступа" (hotkeys and shortcuts)
- •Изменение размеров модуля меню
- •Создание командных пунктов меню
- •Создание пунктов подменю
- •Создание разделителей пунктов
- •Создание пунктов-переключателей
- •Создание пунктов-функций
- •Перемещение пунктов меню
- •Использование модуля меню
- •Модули картинок
- •Отображение картинки
- •Использование картинок как баз данных виджетов
- •Изменение размера модуля картинки
- •Модули иконок
- •Задание размеров и имён экземпляров
- •Глава 5. Создание виджетов в PhAb
- •Типы виджетов
- •Имена экземпляров
- •Принимаемое по умолчанию имя экземпляра
- •Когда назначать уникальное имя
- •Имена экземпляров и переводы
- •Дублированные имена
- •Создание виджета
- •Создание нескольких виджетов
- •Несколько виджетов
- •Использование охватывающего прямоугольника
- •Использование панелей управления
- •Виджеты внутри группы
- •Использование панели "Module Tree"
- •Использование кнопок "Следующая" и "Предыдущая"
- •Скрытые виджеты
- •Выравнивание виджетов
- •По другому виджету
- •По родительскому контейнеру
- •Общепользовательский доступ (сиа) и управление фокусом
- •Изменение фокусировки через клавиатуру
- •Управление фокусом
- •Ответные реакции фокусировки
- •Функции обработки фокусировки
- •Упорядочивание виджетов
- •Перетаскивание виджетов
- •Предустановки перетаскивания
- •Установка координатxиyвиджетов
- •Перемещение виджетов между контейнерами
- •Изменение размеров виджетов и модулей
- •Буфер обмена
- •Вырезание и копирование
- •Вклеивание
- •Просмотр буфера обмена
- •Редактирование буфера обмена
- •Дублирование виджетов и контейнеров
- •Удаление виджетов
- •Импортирование графических файлов
- •Изменение класса виджета
- •Шаблоны
- •Создание шаблонов
- •Добавление подогнанного виджета
- •Редактирование шаблонов
- •Удаление шаблонов
- •Глава 6. Редактирование ресурсов и ответных реакций в PhAb
- •Редактирование ресурсов виджета
- •Попиксельный редактор
- •Установка размеров попиксельного образа
- •Рисование линий, прямоугольников и кругов
- •Другие средства управления попиксельным образом
- •Редактор цвета
- •Полный редактор цвета
- •Быстрый редактор цвета
- •Редактор списка
- •Редактирование существующих пунктов списка
- •Удаление пунктов списка
- •Редактор чисел
- •Текстовые редакторы
- •Редактор функций
- •Ответные реакции
- •Редактирование ответных реакций:
- •Модульные ответные реакции
- •Предреализационная установочная функция
- •Постреализационная установочная функция
- •Установочные функции хранятся в заготовочных файлах
- •Ответные реакции кодового типа
- •Функции ответных реакций хрянятся в заготовочных файлах
- •Ответные реакции горячих клавиш
- •Горячие клавиши – основы
- •Задание метки горячей клавиши
- •Задание ответной реакции
- •Где должен появиться модуль
- •Какой виджет Вам нужен в функции ответной реакции
- •Куда идти пользователю, чтобы нажать горячую клавишу
- •Обработка горячих клавиш
- •Отключение горячих клавиш
- •Обработчики событий – необработанные и отфильтрованные ответные реакции
- •Глава 7. Управление геометрией
- •Контейнер виджетов
- •Согласование геометрии
- •Политика изменения размеров
- •Установка политики изменения размеров в PhAb
- •Установка политики изменения размеров в программном коде приложения
- •Абсолютное позиционирование
- •Выравнивание виджетов с использованием групп
- •Объединение виджетов в группу
- •Получение доступа к виджетам в группе
- •Горизонтальное или вертикальное выравнивание виджетов
- •Использование флагов групп
- •Расщепление группы на составляющие
- •Управление привязкой с использованием анкеров – средств привязки
- •Ресурсы анкеров
- •Установка флагов анкеров в PhAb
- •Установка флагов анкеров в программном коде Вашего приложения
- •Установка ограничений по размерам или позиционированию без анкеров
- •Глава 8. Генерирование, компилирование и запуск программного кода на исполнение
- •Генерирование программного кода приложения
- •Что генерирует PhAb
- •Управление версиями
- •Некоторые рекомендации по использованию cvs
- •Прототипы функций
- •Потенциальные проблемы с генерированием proto.H
- •Как организовать файлы приложения
- •Многоплатформенные приложения
- •Одноплатформенные приложения
- •Преобразование к мультиплатформенности
- •Редактирование исходного кода
- •Выбор редактора или броузера
- •Создание модуля с исходным кодом
- •Изменение отображения файлов
- •Компилирование и линковка
- •Выбор библиотек
- •Запуск команды make
- •Модифицирование команды make
- •Запуск приложения на исполнение
- •Отладка
- •Модифицирование команды отладчика
- •Включение в Ваше приложение не-PhABфайлов
- •Мультиплатформенные приложения
- •Одноплатформенные приложения
- •Добавление библиотек
- •Создание результирующей dll как приложения PhAb
- •Компилирование и линковка
- •Инициализация dll
- •Выгрузка Вашей dll
- •Глава 9. Работа с программным кодом
- •Переменные и декларации Переменные и декларации виджетов
- •Использование глобальной переменной и декларация виджета
- •Обработка множества экземпляров окна
- •Декларация внутренних связей
- •Декларации иконок
- •Глобальный хеадер-файл
- •Имена функций и имена файлов
- •Функция инициализации
- •Обработка опций командной строки
- •Установочные функции модуля
- •Функции ответных реакций кодового типа
- •Типы данных геометрии
- •Таймеры
- •Использование PtTimer
- •Функции RtTimer*
- •Меню инициализации
- •Включение, отключение или переключение пунктов меню
- •Изменение текста пунктов меню
- •Генерирование пунктов меню
- •Создание подменю
- •Задержка и принудительное обновление изображения на экране
- •Глобально
- •Для конкретного контейнера
- •Принудительное обновление
- •Глава 10. Манипулирование ресурсами в коде приложения
- •Список аргументов
- •Установка ресурсов
- •Списки аргументов для установки ресурсов
- •Ресурсы scalar и color
- •Ресурсы string
- •Ресурсы alloc
- •Ресурсы image
- •Ресурсы array
- •Ресурсы flag
- •Ресурсы function
- •Ресурсы pointer
- •Ресурсы Link
- •Ресурсы struct
- •Ресурсы boolean
- •Вызов PtSetResources()
- •Установка одного ресурса
- •Получение ресурсов
- •Не используя указатели
- •Ресурсы scalar и flags (безуказательный метод)
- •Ресурс string (безуказательный метод)
- •Ресурс boolean (безуказательный метод)
- •Использование указателей
- •Ресурсы scalar и flag (указательный метод)
- •Ресурсы string (указательный метод)
- •Ресурсы alloc (указательный метод)
- •Ресурсы image (указательный метод)
- •Ресурсы array (указательный метод)
- •Ресурсы pointer (указательный метод)
- •Ресурсы link (указательный метод)
- •Ресурсы struct (указательный метод)
- •Ресурсы boolean (указательный метод)
- •Вызов функции PtGetResources()
- •Получение одного ресурса
- •Глава 11. Управление виджетами в исходном коде приложения
- •Создание виджетов
- •Задание порядка виджетов
- •Работа с семейством виджетов
- •Ответные реакции
- •Добавление ответных реакций
- •Вызов ответной реакции
- •Удаление ответных реакций
- •Просмотр ответных реакций
- •Обработчики событий
- •Добавление обработчиков событий
- •Удаление обработчиков событий
- •Запуск обработчика событий
- •Стили виджетов
- •Глава 12. Поверхности управления Что такое поверхности управления?
- •Ограничения
- •Привязка действий к поверхностям управления
- •Ссылка на поверхности управления
- •ApIповерхностей управления
- •Создание и уничтожение поверхностей управления
- •Нахождения идентификаторов для поверхностей управления
- •Вычисление геометрии для поверхностей управления
- •Прорисовка поверхностей управления
- •Активация поверхностей управления
- •Включение и отключение поверхностей управления
- •Нахождение поверхностей управления
- •Скрытие и демонстрирование поверхностей управления
- •Установление порядка поверхностей управления
- •Размещение пользовательских данных вместе с поверхностями управления
- •Глава 13. Доступ к модулям PhAb из программного кода
- •Создание внутренних связей
- •Использование внутренних связей в Вашем программном коде Декларации
- •Функции внутренней связи
- •Пример – отображение меню
- •Использование базы данных виджетов
- •Создание базы данных
- •Предварительно прикреплённые ответные реакции
- •Назначение уникального имени экземпляра
- •Создание динамической базы данных
- •Функции базы данных виджетов
- •Глава 14. Поддержка международных языков
- •Соображения о проектировании приложения
- •Размер виджетов, основанных на тексте
- •Выравнивание
- •Высота шрифта
- •Жёстко закодированные строки
- •Использование символа "@" в именах экземпляров
- •Двуязычные приложения
- •Общие строки
- •Генерация языковой базы данных
- •Базы данных сообщений
- •Редактор языка
- •Запуск языкового редактора из PhAb
- •Запуск языкового редактора как автономного приложения
- •Создание нового файла перевода
- •Редактирование существующего файла перевода
- •Перевод текста
- •Горячие клавиши
- •Ресурсы help'a
- •Функции перевода
- •Запуск Вашего приложения на исполнение
- •Распространение Вашего приложения
- •Глава 15. Контекстно-чувствительная помощь
- •Создание текста помощи
- •Файлы помощи
- •Файлы таблиц содержания
- •Ссылки на темы помощи
- •Унифицированный указатель информационного ресурса (url)
- •Маршрут тем
- •Связывание помощи с виджетами
- •Отображение помощи в просмотрщике помощи
- •Отображение помощи во всплывающем баллоне
- •Помощь без иконки "?"
- •Получение доступа к помощи из Вашего программного кода
- •Глава 16. Межпроцессные связи
- •Коннекции
- •Создание коннектора
- •Асинхронные клиентские вызовы
- •Соглашения по именам
- •ОтсылкаQnx-сообщений
- •Приём qnx-сообщений
- •Добавление обработчика ввода
- •Функции name_attach и PtAppAddInput()
- •Удаление обработчика ввода
- •Размер буфера сообщений
- •Пример – регистрация сообщений об ошибках
- •ИмпульсыPhoton'а
- •Приложение Photon'а, получающее импульсы
- •Создание импульса
- •Взведение импульса
- •Пересылка сообщения импульса испускателю импульсов
- •Регистрация обработчика ввода
- •Посылка импульса самому себе
- •Удаление импульса
- •Пример – очередь сообщений
- •Приложение Photon, отправляющее импульсы
- •Обработка сигналов
- •Добавление функции обработки сигналов
- •Удаление функции обработки сигналов
- •Другие механизмы ввода/вывода
- •Глава 17. Параллельные операции
- •Фоновое исполнение
- •Рабочие процедуры
- •Запирание библиотеки Photon'а
- •Несколько потоков, обрабатывающих события
- •Потоки реального времени
- •Модальные операции и потоки
- •Завершение многопоточной программы
- •Потоки и рабочие процедуры
- •Глава 18. Необработанное рисование и мультипликация
- •ВиджетPtRaw
- •Функция необработанного рисования
- •Определение холста необработанного виджета
- •Преобразование координат
- •Отсечение
- •Использование повреждённых черепиц (tiles)
- •Использование модели для более сложного рисования
- •Примеры простых функций прорисовки PtRaw
- •Атрибуты рисования
- •Общие атрибуты
- •Текстовые атрибуты
- •Атрибуты заполнения
- •Атрибуты черты (линии)
- •Дуги, эллипсы, многоугольники и прямоугольники
- •Прямоугольники
- •Прямоугольники со скруглёнными углами
- •Прямоугольники с фасками, прямоугольники и стрелки
- •Многоугольники
- •Перекрытие многоугольников
- •Дуги, круги, хорды и сектора
- •Спэны – сложные кривые
- •Линии, пиксели и массивы пикселей
- •Побитовые образы (bitmaps)
- •Образы (images)
- •Образы на основе палитры
- •Образы в непосредственных цветах
- •Образы в градиентных цветах
- •Создание образов
- •Кэширование образов
- •Прозрачность в образах
- •Использование хромоключа
- •Использование маски прозрачности
- •Отображение образов
- •Управление образами
- •Освобождение образов
- •Мультипликация
- •Создание серии кадров
- •Использование базы данных виджетов
- •Использование файла
- •Циклическая прокрутка кадров
- •Исключение мерцания в мультипликации
- •Функции контекста памяти
- •Режим рисования с прямым доступом
- •Внеэкранная видеопамять
- •Внеэкранные замки
- •Поддержка альфа-сопряжения
- •Поддержка хроматического ключа
- •Операции расширенного растра
- •Видеорежимы
- •Градиенты
- •Градиенты уровня драйвера
- •Градиенты уровня приложения
- •Видеоверлей
- •Поверхности
- •Окна просмотра
- •Api слоев
- •Глава 19. Шрифты
- •Метрики символа
- •Имена шрифтов
- •Запрос доступных шрифтов
- •Структура FontDetails
- •Генерирование имён шрифтов
- •Написание текста в прямоугольной области
- •Исправление повреждений в случае пропорционального шрифта текста
- •Глава 20. Печать
- •Контекст печати
- •Создание контекста печати
- •Модифицирование контекста печати
- •Запуск процесса печати
- •Печать требуемых виджетов
- •Печать новой страницы
- •Печать скроллирующихся виджетов
- •Приостановка и возобновление работы печати
- •Завершение работы печати
- •Освобождение контекста печати
- •Глава 21. "Тащить и бросать"
- •Механизм транспортировки
- •Использование "тащи и бросай"
- •Запуск операции "тащи и бросай"
- •Получение событий "тащи и бросай"
- •Виджет-источник
- •Виджет-адресат
- •Отмена операции "тащи и бросай"
- •Регистрация новых транспортных типов
- •Простая структура данных
- •Более сложная структура
- •Список ссылок на очистку
- •Эндиан-список
- •Fixup-список
- •Элемент реестра
- •Транспортные функции
- •Оба приложения
- •Приложение-источник
- •Приложение-адресат
- •Глава 22. Регионы
- •Координатное пространствоPhoton'а
- •Координаты региона Начало координат региона
- •Начальные размеры и расположение
- •Начало координат в (0,0) и начальный прямоугольник в (0,0)
- •Начало координат в (0,0) и начальный прямоугольник не в (0,0)
- •Начало координат не в (0,0) и начальный прямоугольник не в (0,0)
- •О регионах потомка
- •Регионы и отсечение событий
- •Месторасположение и иерархия Иерархия регионов:
- •Родительский регион
- •Братские регионы
- •Месторасположение по умолчанию
- •ФлагPh_force_front
- •Задаваемое месторасположение
- •Использование регионов Открытие региона
- •Размещение регионов
- •Изменение месторасположения региона
- •Изменение родителя
- •Задаваемые братья
- •Системная информация
- •Глава 23. События
- •События мыши
- •Нажатие кнопки
- •Отпускание кнопки
- •Несколько щелчков
- •Клавиши-модификаторы
- •Генерирование событий
- •Нацеливание на определённые регионы
- •Неисключительное событие
- •Направленное событие
- •Нацеливание на определённые виджеты
- •События, генерируемые клавиатурными клавишами
- •Координаты события
- •Обработчики события – необработанные и отфильтрованные ответные реакции
- •Накопление событий
- •Сжатие событий
- •Перетаскивание
- •Инициализация перетаскивания
- •Контурное перетаскивание
- •Непрозрачное перетаскивание
- •Обработка событий перетаскивания
- •Контурное перетаскивание
- •Непрозрачное перетаскивание
- •Глава 24. Управление окнами
- •Флаги управления окнами
- •Флаги отображения окна
- •Флаги управления окном
- •Оконные флаги уведомления
- •Ответная реакция уведомления
- •Пример: проверка закрытия окна
- •Получение и установка состояния окна
- •Управление несколькими окнами
- •Функции управления окнами
- •Запуск самостоятельного приложения
- •Модальные диалоги
- •Глава 25. Программирование в Photon'е без PhAb'а
- •Основные шаги
- •Компилирование и линковка неPhAb'овского приложения
- •Образец приложения
- •Что происходит
- •PtCreateWidget() – первый вызов
- •PtCreateWidget() – второй вызов
- •Подсоединение программного кода приложения к виджету
- •Ответные реакции
- •Обработка событий
- •Полный пример приложения
- •Приложение 1. Архитектура Photon'а
- •Пространство событий
- •Регионы и события
- •События
- •Начальный набор прямоугольников
- •Накопленный набор прямоугольников
- •Регионы
- •Чувствительность
- •Непрозрачность
- •Краткая сводка атрибутов
- •Регистрация событий (event logging)
- •Типы событий
- •Как владельцы регионов уведомляются о событиях
- •Упорядоченный опрос
- •Синхронное уведомление
- •Асинхронное уведомление
- •Регион устройств
- •Фокусировка указателя
- •Фокусировка клавиатуры
- •События перетаскивания
- •Событие "тащи и бросай"
- •Драйверы фотона
- •Драйверы ввода Драйвер мыши
- •Драйвер клавиатуры
- •Драйверы вывода Графический драйвер
- •Несколько графических драйверов
- •Драйверы, использующие отдельные регионы
- •Драйверы, использующие перекрывающиеся регионы
- •Инкапсуляция драйверов
- •Оконный менеджерPhoton'а
- •Регионы оконных рамок
- •Регион фокусировки
- •Регион рабочей области
- •Регион фона
- •Приложение 2. Обзор виджетов
- •Приложение 3. Поддержка многоязычности Unicode
- •Широкие и многобайтовые символы
- •Функции преобразования
- •Другие кодировки
- •Драйверы клавиатуры
- •Пример: текстовые виджеты
- •Слепые клавиши (deadkeys) и скомпонованные последовательности
- •Скомпонованные последовательностиPhoton'а
- •Приложение 4. Photon во встроенных системах
- •Принимаемые допущения
- •Введение
- •Шаги по загрузке Photon'а
- •Шаг 1. Экспорт переменной окруженияPhoton_path
- •Шаг 2. Запуск сервераPhoton'а
- •Шаг 3. Запуск драйверов ввода
- •Шаг 4. Запуск менеджера шрифтов
- •Конфигурирование шрифтов
- •Запуск сервера шрифтов
- •Шаг 5. Переключение в графический режим
- •Установка карты в правильный режим
- •Шаг 6. Запуск графического драйвера
- •Шаг 7. Запуск оконного менеджера
- •Необходимые файлы
- •Графика
- •Требуемые бинарные файлы
- •Требующиеся библиотеки
- •Требуемые шрифты
- •Службы шрифтов
- •Сборка всего этого в единое целое
- •Полезные советы
- •Приложение 5. Использование PhAb под Microsoft Windows
- •Photonв одиночном окне
- •ЗавершениеPhAb
- •Дополнительные опции
- •Файловые имена с буквами в обоих регистрах
- •Строка запуска отладчика
- •Функциональность панели управления ресурсами
- •Разработка индивидуальных виджетов иPhAb
- •Статическое линкование Ваших индивидуальных виджетов
- •Глоссарий
- •Ненеобходимое послесловие переводчика.
Драйверы клавиатуры
Драйвер клавиатуры управляется таблично; он обрабатывает любую клавиатуру со 127 или немного меньшим количеством физических клавиш.
Нажатие клавиши сохраняется в структуре типа PhKeyEvent_t (описанной в "Справочнике библиотечных функций Photon'а").
Пример: текстовые виджеты
Текстовые виджеты используют область key_sym для отображаемых символов. Эти виджеты также проверяют её для обнаружения движения курсора. Например, если содержанием области является Pk_Left, курсор движется влево. key_sym имеет значение Pk_Left как для клавиши "курсор влево", так и для клавиши "курсор влево" на цифровой клавишной панели (предполагается, что NumLock выключено).
Слепые клавиши (deadkeys) и скомпонованные последовательности
QNX поддерживает "слепые" клавиши и "скомпонованные" клавиатурные последовательности для генерации key_syms, которые отсутствуют на клавиатуре. Область key_sym применима только к нажатию клавиши, а не к её отпусканию, чтобы гарантировать, что Вы получите только один символ, а не два.
Например, если клавиатура имеет слепую клавишу ударения (например, ` ), и пользователь нажимает её следом за е, Key_sym принимает значение "е" со знаком ударения (è). Если клавиша "е" не отпущена, и затем была нажата другая группа клавиш (или продолжена последовательность, или последовательность слепой клавиши), key_syms будет сохранять это в стеке до завершающего отпускания.
Если в ходе скомпонованной последовательности нажата неверная клавиша, драйверы клавиатуры генерируют key_syms для всех промежуточных клавиш, а не для действительного нажатия или отпускания.
Скомпонованные последовательностиPhoton'а
В Photon'е задействованы стандартные скомпонованные последовательности. Если Ваша клавиатура не включает в себя символы из стандартной таблицы кодов ASCII, Вы можете генерировать символ, используя скомпонованные последовательности. Например, символ ó может быть сгенерирован нажатием клавиши <Alt>, следом – клавиша <´>, и следом клавиша <о>.
Это не сочетание клавиш; нажимайте и отпускайте каждую клавишу одна за другой.
Для генерирования букв с символом ударения могут использоваться следующие клавиши:
Клавиша |
Ударение |
Пример последовательности |
Результат |
´ |
сильное ударение |
Alt ´ o |
ó |
¸ |
седиль |
Alt ¸ c |
ç |
^ |
циркумфлекс |
Alt ^ o |
ô |
¨ |
диарезис (трема) |
Alt " o |
ö |
` |
тупое ударение |
Alt ` o |
ò |
/ |
наклонная |
Alt / o |
ø |
~ |
тильда |
Alt ~ n |
ñ |
Если на Вашей клавиатуре нет следующих символов, Вы можете создать их, нажав клавишу <Alt>, следом первую клавишу последовательности и следом вторую клавишу последовательности.
Символ |
Описание |
Значение Unicode |
Последовательность |
æ |
Маленькая буква "æ" (лигатура) |
E6 |
Alt e a |
Æ |
Заглавная буква "æ" (лигатура) |
C6 |
Alt E A |
Đ |
Заглавная буква "eth" |
D0 |
Alt D - |
ð |
Маленькая буква "eth" |
F0 |
Alt d - |
ß |
Маленькая буква "острое s" (немецкая "заострённая s") |
DF |
Alt s s |
µ |
Знак микро |
B5 |
Alt / U |
þ |
Маленькая буква "торн" (руническая "р") |
FE |
Alt h t |
Þ |
Большая буква "торн" (руническая "р") |
DE |
Alt H T |
# |
Знак номера |
23 |
Alt + + |
@ |
Коммерческое "at" |
40 |
Alt A A |
© |
Знак копирайта |
A9 |
Alt C 0 Alt C O Alt C o Alt c 0 Alt c O Alt c o |
® |
Знак зарегистрированной торговой марки |
AE |
Alt R O |
[ |
Левая квадратная скобка |
5B |
Alt (( |
] |
Правая квадратная скобка |
5D |
Alt )) |
{ |
Левая фигурная скобка |
7B |
Alt (- |
} |
Правая фигурная скобка |
7D |
Alt )- |
» |
Знак правых двойных угловых кавычек |
BB |
Alt >> |
« |
Знак левых двойных угловых кавычек |
AB |
Alt << |
^ |
Диакретическое ударение |
5E |
Alt > пробел |
' |
Апостроф |
27 |
Alt ´ пробел |
` |
Тупое ударение |
60 |
Alt ` пробел |
| |
Вертикальная черта |
7C |
Alt / ^ Alt V L Alt v l |
\ |
Обратная наклонная черта |
5C |
Alt / / Alt / < |
~ |
Тильда |
7E |
Alt пробел |
|
Неразрывный пробел (no-break space) |
A0 |
Alt пробел пробел |
° |
Знак градуса |
B0 |
Alt 0 ^ |
¡ |
Знак перевёрнутого восклицательного знака |
A1 |
Alt ! ! |
¿ |
Знак перевёрнутого вопросительного знака |
BF |
Alt ? ? |
¢ |
Знак цента |
A2 |
Alt C / Alt C | Alt c / Alt c | |
# |
Знак фунта [прим. пер. – знак # стоит в самом оригинале... Вообще-то, полагаю, должно быть "Ł"] |
A3 |
Alt L - Alt L = Alt l - Alt l =
|
¤ |
Знак валюты |
A4 |
Alt X 0 Alt X O Alt x 0 Alt X o Alt x O Alt x o |
¥ |
Знак иены |
A5 |
Alt Y - Alt Y = Alt y - Alt y = |
¦ |
Разорванная (вертикальная) черта |
A6 |
Alt ! ^ Alt V B Alt v b Alt | | |
§ |
Знак параграфа |
A7 |
Alt S ! Alt S 0 Alt S O Alt s ! Alt s 0 Alt s o |
¨ |
Трема, или умляут |
A8 |
Alt " " |
· |
Срединная точка |
B7 |
Alt . . |
¸ |
Седиль |
B8 |
Alt , пробел |
¬ |
Знак отрицания (not sign) |
AC |
Alt - , |
|
Мягкий перенос |
AD |
Alt - - |
¯ |
Макрон (знак долготы над гласным) |
AF |
Alt - ^ Alt _ ^ Alt _ _ |
± |
Знак плюс-минус |
B1 |
Alt + - |
¹ |
Показатель степени 1 |
B9 |
Alt 1 ^ Alt S 1 Alt s 1 |
² |
Показатель степени 2 |
B2 |
Alt 2 ^ Alt S 2 Alt s 2 |
³ |
Показатель степени 3 |
B3 |
Alt 3 ^ Alt S 3 Alt s 3 |
¶ |
Знак абзаца (знак параграфа) |
B6 |
Alt P ! Alt p ! |
ª |
Порядковый женский указатель (feminine ordinal indicator) |
AA |
Alt A - Alt a - |
|
|
|
|
° |
Порядковый мужской указатель (masculine ordinal indicator) |
BA |
Alt O _ Alt o _ |
¼ |
Простая дробь одна четвёртая |
BC |
Alt 1 4 |
½ |
Простая дробь одна вторая |
BD |
Alt 1 2 |
¾ |
Простая дробь три четверти |
BE |
Alt 3 4 |
/ |
Знак деления |
F7 |
Alt - : |
* |
Знак умножения |
D7 |
Alt x x |