Nếu bạn đang viết một chương trình trong thế giới thực sử dụng chuột trong Linux, rất có thể bạn đang viết một ứng dụng X và trong trường hợp đó, bạn nên hỏi máy chủ X về các sự kiện chuột. Qt , GTK và libsdl là một số thư viện C phổ biến cung cấp các chức năng để truy cập chuột, bàn phím, đồ họa, bộ hẹn giờ và các tính năng khác cần thiết để viết chương trình GUI. Ncurses là một thư viện tương tự cho các ứng dụng đầu cuối.
Nhưng nếu bạn đang khám phá hệ thống của mình hoặc bạn không thể sử dụng X vì bất kỳ lý do gì, thì đây là cách nó hoạt động ở giao diện kernel.
Một ý tưởng cốt lõi trong triết lý UNIX là "mọi thứ đều là một tập tin". Cụ thể hơn, càng nhiều thứ càng tốt có thể truy cập được thông qua cùng các cuộc gọi hệ thống mà bạn sử dụng để làm việc với các tệp. Và do đó, giao diện kernel cho chuột là một tập tin thiết bị. Bạn open()
, tùy chọn gọi poll()
hoặc select()
trên đó để xem liệu có dữ liệu đến và read()
để đọc dữ liệu.
Trong thời gian trước USB, tệp thiết bị cụ thể thường là cổng nối tiếp, ví dụ: /dev/ttyS0
cổng PS / 2 , /dev/psaux
. Bạn đã nói chuyện với chuột bằng bất kỳ giao thức phần cứng nào được tích hợp vào chuột. Ngày nay, /dev/input/*
hệ thống con được ưa thích, vì nó cung cấp một cách thống nhất, độc lập với thiết bị để xử lý nhiều thiết bị đầu vào khác nhau. Cụ thể, /dev/input/mice
sẽ cung cấp cho bạn các sự kiện từ bất kỳ con chuột nào được gắn vào hệ thống của bạn và /dev/input/mouseN
sẽ cung cấp cho bạn các sự kiện từ một con chuột cụ thể. Trong hầu hết các bản phân phối Linux hiện đại, các tệp này được tạo động khi bạn cắm chuột.
Để biết thêm thông tin về chính xác những gì bạn sẽ đọc hoặc ghi vào tệp thiết bị chuột, bạn có thể bắt đầu với input / input.txt trong tài liệu kernel. Nhìn cụ thể vào các phần 3.2.2 (mousedev) và 3.2.4 (evdev), và cả phần 4 và 5.