2009-03-13 19 views
5

Tôi đang sử dụng bàn phím usb chung, Linux 2.6.27 với máy tính để bàn gnome, gnome-terminal và bash shell. Tôi muốn biết điều gì xảy ra trong phần mềm. Các ký tự đặc biệt từ bàn phím của tôi được diễn giải như thế nào với một số mã hóa thành ký tự và hình ảnh nhân vật đến từ đâu?Đường dẫn hành động thực sự xảy ra khi tôi nhấn một phím trên bàn phím và nó hiển thị trên vỏ là gì?

+0

Whoa.Câu trả lời cho điều này có thể điền vào một cách dễ dàng điền vào sách hoặc thậm chí là kệ sách, tùy thuộc vào mức độ chi tiết được sử dụng. – unwind

+0

@unwind Đồng ý. Điều này nhắc tôi về câu hỏi phỏng vấn yêu thích của tôi, một khi đã đặt ra cho tôi tại một công ty mạng. Điều gì sẽ xảy ra khi bạn mở trình duyệt và điều hướng đến URL? –

Trả lời

8

Lớp đầu vào Linux với trình điều khiển USB bị thu nhỏ (về cơ bản là "KEY 1 DOWN" "KEY 1 UP") từ bàn phím.

X sử dụng sơ đồ bàn phím của nó để chuyển đổi scancode thành mã phím và các sự kiện nhập X.

Phương thức nhập GTK chuyển đổi chuỗi sự kiện đầu vào thành các ký tự unicode được tạo thành.

Thiết bị đầu cuối Gnome mã hóa các mã này trong UTF-8 cho vỏ.

Shell không quan tâm. nó chỉ biết rằng nó đang xử lý mã hóa nhiều byte.

Vỏ lặp lại văn bản được mã hóa nhiều byte trở lại qua TTY.

Gnome-terminal giải mã văn bản đến và xác định các điểm mã unicode.

Thiết bị đầu cuối Gnome thu hút các ký tự sử dụng cơ sở GTK +.

GTK + sử dụng Pango để hiển thị văn bản và gọi thư viện X để vẽ pixel tới màn hình.

Máy chủ X vẽ các ký tự vào bộ đệm màn hình và thẻ video hiển thị chúng.

Đây là nỗ lực của tôi tại một sơ đồ:

alt text http://osoft.us/system_layers.png

+0

Hình ảnh không hoạt động và không có bản sao trên internet. :( –

2

Nhìn vào nó trong các lớp. Đầu tiên là phần cứng và trình điều khiển thiết bị trong hạt nhân Linux sẽ có các phương pháp cụ thể để kiểm soát và trả lời bàn phím thông qua thanh ghi trạng thái trong thiết bị và trình xử lý ngắt, ví dụ.

Tiếp theo là hạt nhân Linux, sẽ có một số phương pháp tải trình điều khiển thích hợp cho từng phần cứng được phát hiện tại thời điểm khởi động. Sau khi nạp, trình điều khiển thiết bị tuân theo một số giao diện trình điều khiển hạt nhân, cung cấp dữ liệu từ thiết bị đến hạt nhân và ngược lại.

Ngoài hạt nhân, ở một mức độ nào đó, trình điều khiển thiết bị và phần cứng hiển thị, thường là danh sách trong thư mục/dev. Phần mềm, giống như trình giả lập thiết bị đầu cuối, cần sử dụng thiết bị sẽ có quyền truy cập vào thiết bị thông qua mục nhập trong/dev.

Giao tiếp giữa ứng dụng cấp người dùng và thiết bị hiện đang xảy ra thông qua một loạt các hoạt động đọc/ghi và ioctl. Những bẫy này vào hạt nhân (xem các trang hướng dẫn sử dụng cho những chi tiết này), tại thời điểm đó hạt nhân giao tiếp với trình điều khiển thiết bị được nạp ở trên.

Trình giả lập thiết bị đầu cuối sẽ hiển thị các ký tự khi bạn nhập chúng (trong hầu hết các trường hợp) và khi chúng được nhận từ thiết bị (trong hầu hết các trường hợp) bằng cách sử dụng phông chữ mà nó có thể truy cập, ở nhiều nơi khác nhau tùy thuộc vào ứng dụng. (Tôi đang nói chung ở đây bởi vì tôi không biết Gnome cụ thể).

Điều này có hữu ích không?

Các vấn đề liên quan