Обычно ПК имеет как минимум 2 последовательных и 1 параллельный интерфейс. Они являются специальными устройствами и отображаются следующим образом:
Разница между /dev/ttyS* и /dev/cua* в способе вызова open(). /dev/cua* предполагают использование как устройств вывода, и, как следствие, имеют другие установки по умолчанию относительно /dev/ttyS*. /dev/ttyS* инициализируются для входящих и выходящих сигналов. По умолчанию устройства являются управляющими устройствами для процесса, их открывающего. Обычно ioctl() обрабатывает все эти специальные устройства, однако POSIX предпочитает определение новых функций для асинхронных терминалов. Эти функции жестко привязаны к структуре termios. Оба варианта требуют подключения termios.h.
Мышь подключается как к последовательному порту, так и напрямую к шине. Разные типы мышек посылают разные типы данных, что немного усложняет программирование. Однако, Эндрю Хэйлет (Andrew Haylett) был так добр, что поставил общий копирайт на свою программу selection, то есть вы можете использовать его функции работы с мышью. В этом руководстве вы найдете пре-релиз selection-1.8 с пометкой COPYRIGHT. Правда, X11 уже предложили удобный API мышки, поэтому программы Эндрю следует использовать только для не-X11 приложений. Из пакета selection вам потребуются только модули mouse.h и mouse.c.
Для получения событий от мыши вам необходимы ms_init() и get_ms_event(). ms_init() требует следующих 10 аргументов.
get_ms_event() нуждается только в указателе на структуру ms_event. Если get_ms_event() возвращает -1, то произошла ошибка. В случае успеха возвращается 0, а ms_event содержит текущее состояние мыши.
Используйте Hayes Commands для управления модемом. Для контроля порта rs232 вам потребуется termios. Смотри пример miniterm.c.
Смотрите пример checklp.c. Не используйте termios для управления принтерного порта, пользуйтесь ioctl, inb/outnb, если необходимо, команды Epson, Postscript, PCL и т.д. в linux/lp.h вызовы ioctl: LPCHAR, LPTIME, LPABORT, LPSETIRQ, LPGETIRQ, LPWAIT inb и outb определяют статус и управляют портом.
Смотрите пример js.c в модуле для джойстика пакета ядра. linux/joistick.h вызовы ioctl: JS_SET_CAL, JS_GET_CAL, JS_SET_TIMEOUT, JS_GET_TIMEOUT, JS_SET_TIMELIMIT, JS_GET_TIMELIMIT, JS_GET_ALL, JS_SET_ALL. Операция чтения /dev/jsn возвращает структуру JS_DATA_TYPE.