Gần đây tôi đã mua một bàn phím có đèn nền được thiết kế sao cho phím Scroll Lock được sử dụng để chuyển đổi đèn nền. Tôi nhanh chóng thấy rằng Cinnamon không phản hồi đúng khi nhấn phím Scroll Lock. Ban đầu, tôi nghĩ đèn nền bàn phím là DOA vì mọi thứ khác đều hoạt động tốt. Sau khi khởi động lại, tôi thấy rằng trước khi khởi chạy Xorg, tôi đã có thể chuyển đổi thành công đèn nền bằng phím Scroll Lock. Sau đó, một lần nữa, sau khi bắt đầu Xorg (và do đó là cinnamon_session), chức năng này đã ngừng hoạt động một lần nữa.
Để làm cho đèn nền hoạt động sau khi khởi chạy Xorg, tôi buộc phải đưa ra: xset led named "Scroll Lock"
bật và tắt chức năng này.
Sau một chút nghiên cứu, tôi đã tìm thấy một chương trình được gọi là xev
đổ thông tin sự kiện quan trọng đến thiết bị đầu cuối sau khi nó được bắt đầu. Khi nhấn phím Scroll Lock, thiết bị đầu cuối được điền thông tin này:
Sự kiện KeyPress, nối tiếp 34, NO tổng hợp, cửa sổ 0x2c00001, root 0x2df, subw 0x0, thời gian 2609824, (410,0), root: (1724,142), trạng thái 0x0, mã khóa 78 (keyym 0xff14, Scroll_Lock), cùng_ XLookupString cho 0 byte: XmbLookupString cho 0 byte: XFilterEvent trả về: Sai
Sự kiện KeyRelease, nối tiếp 37, NO tổng hợp, cửa sổ 0x2c00001, root 0x2df, subw 0x0, thời gian 2609912, (410,0), root: (1724,142), trạng thái 0x0, mã khóa 78 (keyym 0xff14, Scroll_Lock), cùng XLookupString cho 0 byte:
Vì vậy, tôi biết sự kiện quan trọng đang được gửi đến kernel.
Ngoài ra, thật thú vị, tôi đã quan sát hành vi kỳ lạ khi ở trong thiết bị đầu cuối (vẫn trước khi khởi chạy Xorg hoặc Cinnamon) và sử dụng Scroll Lock. Cụ thể, tại thời điểm này, đèn nền của tôi đã được bật như mong đợi, nhưng khi Scroll Lock được kích hoạt, không có gì tôi gõ được ghi vào màn hình. Sau khi vô hiệu hóa Scroll Lock, mọi thứ tôi đã viết ngay lập tức được đưa vào thiết bị đầu cuối như thể nó đã được đệm trước đó.
tl; dr Thỏa thuận với Scroll Lock và Xorg là gì?