|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 04 Nov 2005 23:39:55 To : All Subject : программное управление sysmouse -------------------------------------------------------------------------------- Привет! Штатный moused умеет (посредством ядерных драйверов) виртуализировать различные физические мышиные манипуляторы, предоставляя ядру их манипуляции в обобщенном виде, а ядро уже прикладным программам передает через интерфейс sysmouse. К сожалению, штатный moused не умеет быть управляемым программно. Было бы очень удобно управлять понятием ядра об манипуляциях мыши, тогда оно через интерфейс sysmouse влияло бы и на консоль, и на X. Такое поведение дает патч softmouse. Патч предоставлен для 4.11-STABLE, 5.4-STABLE, 6.0-STABLE и 7.0-CURRENT, но протестирован только на 4.11. ftp://www.kuzbass.ru/pub/freebsd/patches/softmoused-0.1.tgz Патч вводит новый тип (-t) для мыши: software. Прикладывать так: cd /usr/src/usr.sbin/moused patch </path/to/patch make obj make depend make all install При запуске moused -t software флаг -p указывает объект файловой системы, из которого moused будет читать данные. Если этот объект существует, он открывается и используется без дальнейших проверок. Если он не существует, moused создаст по указанному пути FIFO, для которого права на запись есть только у группы. Имя группы для нового FIFO можно задать новым ключем -g. Вместо имени можно указать номер. Если ключ -g не задан, то группой будет mop (mouse operator), если такая группа есть в системе. Иначе группа operator, а если нет и ее, группа меняться не будет (по умолчанию это будет группа родительского каталога). Можно запускать управляемую программно копию moused одновременно с обычной копией, обслуживающей физическую мышь. В таком случае рекомендуется использовать флаг -I, чтобы вторая копия не затирала pid-файл первой: moused -t software -p /var/run/mfifo -I /var/run/softmoused.pid Любой процесс, имеющий права на запись в указанный флагом -p объект, может управлять системной мышью. Протокол обмена данными с moused однонаправленный, moused ожидает из файла восьмибайтовые последовательности следующего формата: байт 0: 0xbf (синхробайт) байт 1: flags1 (кнопки 1-8) байт 2: flags2 (кнопки 9-16) байт 3: flags3 (кнопки 17-24) байт 4: flags4 (кнопки 25-32) байт 5: смещение по оси x байт 6: смещение по оси y байт 7: смещение по оси z Байт 0 всегда должен иметь значение 0xbf, по нему moused определяет начало последовательности. Байты 1-4 сообщают состояние кнопок. Младший бит байта 1 соответствует кнопке 1, старший бит байта 4 - кнопке 32. Если кнопка нажата, бит должен быть равен 0, если отпущена - 1. Левая кнопка мыши соответствует кнопке 1, средняя - кнопке 2, правая - кнопке 3. Байты 5-7 сообщают смещения указателя мыши, от -128 до 127 по осям x, y и z соответственно. mtest.c - пример такой управляющей мышью программы. Компиляция: cc -o mtest mtest.c Запуск: mtest [-b] -p /path/to/mfifo Ключ -p должен совпадать с использованным при запуске moused. mtest хаотично сдвигает указатель мыши на небольшое смещение. Если указать -b, он также будет иногда нажимать/удерживать/отпускать первые три кнопки программной мыши, не прекращая двигать ее. Eugene -- Устав от радостных пиров, Hе зная страхов и желаний --- slrn/0.9.8.0 (FreeBSD) * Origin: Svyaz Service JSC (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/260939328030e.html, оценка из 5, голосов 10
|