Как получить доступ и использовать буфер кадров Linux без GTK?

Попробуйте

ssh -qx root@example.org "ls -t /path/to/logs | head -6" | rsync --files-from=- -avHS root@example.org:/path/to/logs/.
-1
20.01.2020, 15:35
3 ответа

Конечно, существует множество документации и статей о том, как читать/писать/интерпретировать устройства Linux. Для фреймбуфера, например, вы можете писать в него даже со своей консоли, используя команду catс консоли tty, чтобы проверить воду.

# cat /dev/urandom >/dev/fb0

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

0
28.01.2020, 05:14

Не уверен, что вы можете получить ввод с клавиатуры/мыши с fb0. Тем не менее, это очень весело, и вы узнаете много нового о том, как все работает в мире Unix.

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

Возможно, вы захотите посмотреть на mmaping файл, хотя тогда вы сможете просто получить к нему доступ как к массиву!

Итак, какой ioctl вы можете найти на справочных страницах и при чтении файлов в /usr/include

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

Все это может показаться очень странным, но система ввода довольно мощная.

Удачного взлома!

-1
28.01.2020, 05:14

Вы открываете дескриптор файла для устройства кадрового буфера и используете ioctl()с FBIOGET_FSCREENINFOи FBIOGET_VSCREENINFO. Из возвращенных структур вы можете напрямую определить разрешение X, разрешение Y, шаг и биты на пиксель.

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

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

Есть целые книги о том, как строить поверх этого.

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

Дополнительная литература

1
28.01.2020, 05:14

Теги

Похожие вопросы