![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
SKVOZNJAK |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Пытаюсь решить проблему с глючными keypressed и readkey в FPC. Временное решение: написать внешнюю библиотеку на С с использованием стандартных функций. Компилить буду на линуксе. Предположительно, на выходе библиотеки нужны такие функции:
function keypressed2 : byte; {1 клавиша нажата, 0 - нет} function readkey2 : byte; {ну или word - код нажатой клавиши} Возможно, стандартная функция будет возвращать "снимок" состояния клавиатуры, тогда readkey2 возвратит массив byte или word. |
![]() ![]() |
hardcase |
![]()
Сообщение
#2
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
А зачем тебе таким спортом заниматься?
Разве API функции использовать - косяк? Пишешь функцию ожидания нажатия для Windows и для Linux на FPC и проблемы-то какие? Чем тебе не нравится виндосовская
наверняка под линуксом есть нечто подобное. -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
SKVOZNJAK |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Проверю, но не факт что заработает, графическое окно, оно не как текстовое действует. Вполне возможно что получится как с Readln - активно графическое окно, а нажатия энтера ожидает текстовое.
|
hardcase |
![]()
Сообщение
#4
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Read и ReadLn ожидают ввода в программном канале (pipe) стандартного воода не более.
Другое дело фокус ввода. Если фокус ввода находится в cli-окне, то ввод будет происходить в стандартный поток, в противном случае, ввод нужно обрабатывать самостоятельно. В обоих случаях GetKeyState будет работать ибо она асинхронна по своей природе и обращается к системному обработчику клавиатуры. -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
SKVOZNJAK |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
По ходу, в паскале нет GetKeyState, а написать самую простенькую прогу на С для мненя сейчас не реально - вначале нужно изучать синтаксис. А это время которого и так не хватает. И всё это для двух-трёх функций, которые были бы не нужны если бы разработчики фпц вместо дифирамбов лазарусу уделили несколько человекодней на поднятие клавы. Всего то и нужно посмотреть в сишных исходниках линукса реально работающий код. В BP7 висел доступ к памяти, в FPC - к клаве, нет в жизни счастья
![]() |
virt |
![]()
Сообщение
#6
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 419 Пол: Мужской Репутация: ![]() ![]() ![]() |
Как не поддерживает? Все прекрасно поддерживает:?
-------------------- |
SKVOZNJAK |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
А если поддерживает, не могли бы написать такую совместимую библиотечку на С
![]() |
virt |
![]()
Сообщение
#8
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 419 Пол: Мужской Репутация: ![]() ![]() ![]() |
SKVOZNJAK,
посмотри юнит keyboard ,думаю там есть то что тебе надо. -------------------- |
klem4 |
![]()
Сообщение
#9
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Может я не о том, но всеже, у меня тоже были проблемы при использовании readln и readkey в FPC в графическом режиме. Пробелма решилась очень просто, и это кстати обсуждалось на форуме вроде - использовать вместо Crt - WinCrt.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
SKVOZNJAK |
![]()
Сообщение
#10
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Wincrt на линуксе??? Прикольно если такое реализовано. Примеры с keyboard в граф моде тоже буксуют. Есть мысль читать из файла /dev/port но без пароля root система наврят ли разрешит запись. На форуме адрес буфера клавы указан как с 0:$41A до 0:$41C Неужели всего 3 байта? Откуда тогда в паскале 15, или это расширение операционки?
|
![]() ![]() |
![]() |
Текстовая версия | 23.06.2025 0:03 |