Page 12 of 13

Re: Общесистемный буфер обмена

Posted: Thu Jan 02, 2014 4:46 am
by Mario_r4
punk_joker wrote:Если я правильно понял, то при записи номер слота не указывается, но при чтении его указать необходимо. В какой слот тогда происходит запись?
Всегда создается новый, пока лимит слотов не будет исчерпан или не закончится свободная память.

Re: Общесистемный буфер обмена

Posted: Fri Jan 03, 2014 3:38 am
by punk_joker
Правильно ли я понимаю, если скажем у нас имеется один слот, под номером 0, мы заносим новый текст в буфер, то брать его следует из слота 1. Так?

Re: Общесистемный буфер обмена

Posted: Fri Jan 03, 2014 5:01 am
by Mario_r4
punk_joker wrote:Правильно ли я понимаю, если скажем у нас имеется один слот, под номером 0, мы заносим новый текст в буфер, то брать его следует из слота 1. Так?
Да.

Re: Общесистемный буфер обмена

Posted: Mon Jan 06, 2014 1:12 am
by Leency
Mario_r4 wrote:SVN r.4343 - изменил документацию, добавил текст с блочным выделением.
clipboard_container_rus.txt
clipboard_container_eng.txt
Если кто может подправить мой кривоватый английский перевод, то просьба сделать, можно даже на SVN сразу.
Ещё не заливалось на SVN?
Неплохо бы указать в документации, что буфер - это не plain text, а он имеет специфический формат.

Re: Общесистемный буфер обмена

Posted: Mon Jan 06, 2014 3:38 am
by Mario_r4
Leency wrote:Ещё не заливалось на SVN?
Неплохо бы указать в документации, что буфер - это не plain text, а он имеет специфический формат.
Формально буфер это контейнер, а уж его формат по идее может быть любым - все исключительно на соглашениях и честном слове.
Заливал вместе с примерами http://websvn.kolibrios.org/listing.php ... 574a3a49dd

Re: Общесистемный буфер обмена

Posted: Tue Feb 25, 2014 5:05 am
by Mario_r4
SVN r.4588 функция 2 (получить код нажатой клавиши) доработана, теперь кроме ASCII еще одновременно возвращается и SCANCODE. Эта доработка необходима для реализации поддержки Ctrl+C|V в Editbox, поскольку в режиме ASCII ранее было проблематично однозначно определить нажатие нужных комбинаций клавиш, из-за меняющегося от языковой раскладки кода. Изменение API описано в файлах sysfuncr.txt и sysfuncs.txt. Также возможно возникновение глюков, в программах написанных без учета подробностей документации ф.2, так что просьба быть внимательными и сообщать на форуме о возникновении проблем в работе с клавиатурой после этой ревизии.

Re: Общесистемный буфер обмена

Posted: Sun Mar 02, 2014 10:44 pm
by Mario_r4
Программы имеющие (на текущий момент) поддержку общесистемного буфера обмена:
1) TextEdit
2) Tinypad
3) Shell
4) Editbox (компонент Box_Lib)

Программы для которых желательно наличие поддержки общесистемного буфера обмена:
1) KFAR (встроенный редактор)
2) Calc
3) HEXEDIT
4) ASCIIVju (таблица символов)
5) Table

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

Также возможно потребуется написать для Box_Lib компонент TextBox, чтобы можно было выведенный текст в буфер отправлять.

Re: Общесистемный буфер обмена

Posted: Tue Apr 19, 2016 2:44 pm
by Siemargl
Написал программку, показывающую содержимое. ClipboardViewer

Пока сюда, после обкатки на SVN.

Великовата из-за статической линковки. Но libc.dll пока не в образе ISO - неудобно тестировать.

Re: Общесистемный буфер обмена

Posted: Thu Apr 21, 2016 5:59 pm
by Leency
Идея годная.

1. Перерисовка колбасит http://i.imgur.com/lC6y6xd.gif
2. И почему бинарник весит аж 41 Кб ? По-моему это перебор, если переписать на тот же С-- будет пара Киллобайт.

Re: Общесистемный буфер обмена

Posted: Thu Apr 21, 2016 8:08 pm
by punk_joker
Leency wrote:Идея годная.
2. И почему бинарник весит аж 41 Кб ? По-моему это перебор, если переписать на тот же С-- будет пара Киллобайт.
Все дело в статической линковке с newlib

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

Re: Общесистемный буфер обмена

Posted: Thu Apr 21, 2016 9:08 pm
by Sewer
Мне, как пользователю, нужна следующая информация:
1) откуда
и
2) что
по первому пункту - ПУТЬ и программа ( если в буфере не целый файл, а кусок чего нибудь)
по второму - имя файла (да, отдельно) и описание (размер, дата создания и др) файла,
ИЛИ информация по куску чего нибудь.(текст это, или же рисунок, или..).

так что эскиз должен быть явно разделён на две области, в которых можно увидеть ответы на эти два вопроса.

Re: Общесистемный буфер обмена

Posted: Thu Apr 21, 2016 9:26 pm
by Pathoswithin
1) Такая информация в буфере не хранится.
2) На данный момент стандартизировано 3 типа данных: текст, изображение, любые данные.

Re: Общесистемный буфер обмена

Posted: Thu Apr 21, 2016 10:44 pm
by Siemargl
Leency wrote:Идея годная.

1. Перерисовка колбасит http://i.imgur.com/lC6y6xd.gif
2. И почему бинарник весит аж 41 Кб ? По-моему это перебор, если переписать на тот же С-- будет пара Киллобайт.
Уменьшить будет можно, парой способов
-убрать вызов sprintf и зависимости от newlib
-линковать динамически
-пересобрать с уменьшенной libc, с помощью msvc, tinyc или c--

Сейчас, пока функциональность еще неокончательная, это преждевременная оптимизация.
Можно добавить по щелчку на строке в отдельном окне показ изображения, длинного текста, или добавить xml еще одним форматом обмена.

А вот почему моргает, надо думать. У меня в VmWare такого эффекта нет. Перерисовка идет каждые 0.1с.
ОС не буферизует что ли отрисовку окна между вызовами begin_draw, end_draw (sys fn 12) ?

Кстати eolite формирует отличный от всех заголовок в буфере (10 байт вместо 12) - может переделать в нем для унификации?

Re: Общесистемный буфер обмена

Posted: Thu Apr 21, 2016 11:24 pm
by Pathoswithin
Siemargl wrote:Перерисовка идет каждые 0.1с
Зачем?

Re: Общесистемный буфер обмена

Posted: Thu Apr 21, 2016 11:53 pm
by Siemargl
Pathoswithin wrote:
Siemargl wrote:Перерисовка идет каждые 0.1с
Зачем?
Так нет же способа узнать про изменение клипборда без перечитывания.

Можно будет потом пересчитывать хэш, и не перерисовывать зря.

Upd. Наверное, с учетом того, что в буфер копируют ручками, достаточно проверять количество слотов.
А дополнительно принудительно перерисовывать, скажем раз в 5с.