Tại sao phím Scroll Lock bị vô hiệu hóa trong Cinnamon / Linux / Xorg?


13

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ì?


Bất kỳ may mắn giải quyết vấn đề này @sherrellbc?
Pykler 17/03/2015

Câu trả lời:


10

Tôi không quen với Cinnamon, nhưng có thể kích hoạt phím Scroll Lock của bạn.

Trước tiên, chúng ta cần xem bạn có khe cắm sửa đổi bàn phím dự phòng không. Chạy:

xmodmap -pm

Điều đó sẽ in một danh sách các thiết lập sửa đổi hiện tại của bạn. Hy vọng rằng, một trong những dòng đó sẽ không có bất kỳ khóa nào được liệt kê; nói chung sẽ được mod3. Giả sử trường hợp đó, bạn có thể bật Scroll Lock bằng lệnh này:

xmodmap -e "add mod3 = Scroll_Lock"

Đèn LED Khóa cuộn của bạn bây giờ sẽ phản ứng với các lần nhấn phím Scroll Lock.

Nếu nó hoạt động, có lẽ bạn muốn X tự động làm điều đó bất cứ khi nào nó bắt đầu. Có nhiều cách khác nhau để làm điều đó: nó có thể được thực hiện trên cơ sở cho mỗi người dùng, nhưng đối với một cái gì đó như thế này tôi nghĩ rằng nó có ý nghĩa đối với nó được đặt trên toàn cầu.

Nhưng tôi chưa bao giờ làm điều này trước bản thân mình, vì vậy tôi nên kiểm tra nó trước khi cung cấp thêm chi tiết. :)

ĐỒNG Ý. Phương pháp tôi đã cố gắng kích hoạt modmap đó trên toàn cầu không hiệu quả với tôi trên KDE. :( Nhưng kích hoạt nó trong thư mục nhà của tôi có vẻ hoạt động tốt.

Tạo một tệp được gọi .Xmodmaptrong thư mục nhà của bạn có chứa dòng này:

add mod3 = Scroll_Lock

Cách dễ nhất để làm điều đó là:

cd ~
echo >.Xmodmap "add mod3 = Scroll_Lock"

Bây giờ khởi động lại X (đăng xuất & đăng nhập lại). Hy vọng, phím Scroll Lock của bạn sẽ hoạt động. Nếu không, xin vui lòng cho tôi biết.


Cấu hình .Xmodmap không hoạt động với tôi trên Ubuntu 16.04 / Unity, nhưng giải pháp vĩnh viễn trong câu trả lời của Pykler đã hoạt động :)
Nebel54 15/03/18

7

Tìm thấy con đường vĩnh viễn sau một đêm dài với rất nhiều giải pháp nướng một nửa.

# backup your symbols file
sudo cp /usr/share/X11/xkb/symbols/us{,.distribution} 

Thêm dòng sau trong xkb_symbols "basic" {phần. đừng lo lắng nếu dòng thứ hai không có ở đó, nó chỉ có ở đó cho một số ngôn ngữ và không có ở đó cho chúng tôi trên hệ thống của tôi.

...
    modifier_map Mod3   { Scroll_Lock }; <==<< Add this line

    include "level3(ralt_switch)" <==<< before this line
};

Bạn có thể phải làm tương tự trong các bố cục khác nếu bạn chuyển đổi giữa các ngôn ngữ

Ngoài ra, có một bộ đệm nơi bố trí xkb sống. Bạn nên xóa nó trước khi khởi động lại máy chủ X của bạn để kiểm tra (các) tệp biểu tượng bàn phím mới.

sudo rm -f /var/lib/xkb/*

Điều này là tốt nhưng nó chỉ hoạt động cùng với thay đổi gsinstall và thay đổi xkboptions được đề cập trong Askubfox.com/a/1067921/274298 cho tôi.
peschü

2

Scroll Lockcó thể can thiệp vào các phím tắt trên bàn phím của bạn khi hoạt động (được đặt tên F12, Ctrl+ Spacesẽ không hoạt động như mong đợi), tôi đã quyết định khớp Scroll Lockkhóa với khởi chạy thủ công xset, chuyển trạng thái LED về trạng thái trước đó.

Tôi đã tạo một tập lệnh thực thi có tên toggle_keyb_led.sh:

xset q | awk '/LED/{ if ($10 ~ "00000000") print "led"; else print "-led" }' | xargs xset

Điều này phân tích đầu ra của xset q, khớp với dòng LED mask.

Lưu ý 1 : Nếu không phù hợp với bạn, vui lòng xác minh xset -led; xset q | grep 'LED'giá trị mặt nạ hiện tại là gì.

Lưu ý 2 : Một số người dùng cần chạy xset led 3để kích hoạt đèn. Trong trường hợp này, xin vui lòng viết lại kịch bản trên.


Sau đó, bạn có thể khởi chạy tập lệnh này dưới dạng Lối tắt tùy chỉnh bằng cách sử dụng Môi trường máy tính để bàn của bạn như (ở đây có Cinnamon):

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.