ทำไมคีย์ Scroll Lock ถูกปิดใช้งานใน Cinnamon / Linux / Xorg


13

ฉันเพิ่งซื้อคีย์บอร์ดเรืองแสงที่ได้รับการออกแบบมาเพื่อให้ใช้ปุ่ม Scroll Lock เพื่อสลับไฟแบ็คไลท์ ฉันพบอย่างรวดเร็วว่าอบเชยไม่ตอบสนองอย่างถูกต้องเมื่อกดปุ่ม Scroll Lock เดิมทีฉันคิดว่าไฟแบ็คไลท์ของแป้นพิมพ์เป็น DOA เพราะทุกอย่างทำงานได้นอกกรอบ หลังจากรีบูตฉันพบว่าก่อนที่จะเปิด Xorg ฉันสามารถสลับแบ็คไลท์ได้สำเร็จโดยใช้ปุ่ม Scroll Lock จากนั้นอีกครั้งหลังจากเริ่มต้น Xorg (และต่อมา cinnamon_session) ฟังก์ชันการทำงานนี้หยุดทำงานอีกครั้ง

เพื่อให้ไฟพื้นหลังทำงานหลังจากเปิดตัว Xorg ฉันถูกบังคับให้ออก a: xset led named "Scroll Lock"เพื่อเปิดใช้งานและปิดใช้งานฟังก์ชันนี้

หลังจากการวิจัยเล็กน้อยฉันเจอโปรแกรมที่เรียกxevว่าข้อมูลเหตุการณ์สำคัญทิ้งไปยังเครื่องหลังจากเริ่มทำงาน เมื่อกดปุ่ม Scroll Lock เทอร์มินัลจะได้รับข้อมูลนี้:

เหตุการณ์ KeyPress, อนุกรม 34, NO สังเคราะห์, หน้าต่าง 0x2c00001, รูท 0x2df, subw 0x0, เวลา 2609824, (410,0), รูท: (1724,142), สถานะ 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), Same_screen YES, XLookupString ให้ 0 ไบต์: XmbLookupString ให้ 0 ไบต์: XFilterEvent ส่งกลับ: เท็จ

เหตุการณ์ KeyRelease, หมายเลข 37, NO สังเคราะห์, หน้าต่าง 0x2c00001, รูท 0x2df, subw 0x0, เวลา 2609912, (410,0), รูต: (1724,142), สถานะ 0x0, รหัส key 78 (keysym 0xff14, Scroll_Lock), Same_screen YES, XLookupString ให้ 0 ไบต์:

ดังนั้นฉันรู้ว่าเหตุการณ์สำคัญกำลังถูกส่งไปยังเคอร์เนล

นอกจากนี้ที่น่าสนใจฉันสังเกตเห็นพฤติกรรมแปลก ๆ เมื่ออยู่ในเครื่อง (ยังก่อนที่จะเปิดตัว Xorg หรืออบเชย) และใช้ Scroll Lock คือ ณ จุดนี้แสงไฟของฉันถูกสลับตามที่คาดไว้ แต่เมื่อเปิดใช้งาน Scroll Lock ไม่มีสิ่งใดที่ฉันพิมพ์ถูกเขียนลงบนหน้าจอ หลังจากปิดใช้งาน Scroll Lock ทุกอย่างที่ฉันเขียนถูกทิ้งลงในเทอร์มินัลทันทีราวกับว่ามันถูกบัฟเฟอร์ก่อนหน้านี้

tl; drอะไรคือข้อตกลงกับ Scroll Lock และ Xorg?


มีโชคในการแก้ไขปัญหานี้ @sherrellbc?
Pykler

คำตอบ:


10

ฉันไม่คุ้นเคยกับ Cinnamon แต่ควรเปิดใช้งานปุ่ม Scroll Lock ของคุณ

อันดับแรกเราต้องดูว่าคุณมีช่องว่างของตัวดัดแปลงคีย์บอร์ดว่างหรือไม่ วิ่ง:

xmodmap -pm

จะพิมพ์รายการการตั้งค่าตัวดัดแปลงปัจจุบันของคุณ หวังว่าหนึ่งในบรรทัดเหล่านั้นจะไม่มีคีย์ใด ๆ อยู่ในรายการ mod3โดยทั่วไปว่าจะเป็น สมมติว่าเป็นกรณีนี้คุณสามารถเปิดใช้งาน Scroll Lock ด้วยคำสั่งนี้:

xmodmap -e "add mod3 = Scroll_Lock"

LED Scroll Lock ของคุณควรตอบสนองต่อการกดปุ่ม Scroll Lock

หากใช้งานได้คุณอาจต้องการให้ X ดำเนินการโดยอัตโนมัติเมื่อใดก็ตามที่เริ่มทำงาน มีหลายวิธีที่จะทำเช่นนั้น: มันสามารถทำได้บนพื้นฐานของผู้ใช้แต่ละคน แต่สำหรับบางสิ่งเช่นนี้ฉันคิดว่ามันสมเหตุสมผลสำหรับการตั้งค่าทั่วโลก

แต่ฉันไม่เคยทำสิ่งนี้มาก่อนเลยดังนั้นฉันควรทดสอบก่อนที่จะให้รายละเอียดเพิ่มเติม :)

ตกลง. วิธีที่ฉันพยายามเปิดใช้งาน modmap นั้นไม่สามารถใช้กับ KDE ได้ :( แต่การเปิดใช้งานในไดเรกทอรีบ้านของฉันดูเหมือนว่าจะใช้ได้

สร้างไฟล์ชื่อ.Xmodmapในไดเรกทอรีบ้านของคุณที่มีบรรทัดนี้:

add mod3 = Scroll_Lock

วิธีที่ง่ายที่สุดที่จะทำคือ:

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

ตอนนี้รีสตาร์ท X (ออกจากระบบ & ลงชื่อเข้าใช้อีกครั้ง) หวังว่าปุ่ม Scroll Lock ของคุณจะใช้งานได้ หากไม่เป็นเช่นนั้นโปรดแจ้งให้เราทราบ


.Xmodmap การตั้งค่าไม่ได้ทำงานสำหรับฉันในอูบุนตู 16.04 / ความสามัคคี แต่แก้ปัญหาอย่างถาวรในคำตอบของการ Pykler ทำงาน :)
Nebel54

7

ค้นพบวิธีการที่ถาวรหลังจากคืนที่ยาวนานด้วยโซลูชั่นการอบจำนวนมาก

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

เพิ่มบรรทัดต่อไปนี้ในxkb_symbols "basic" {ส่วน ไม่ต้องกังวลหากบรรทัดที่สองไม่อยู่ที่นั่นมีเฉพาะบางภาษาเท่านั้นและไม่ได้อยู่ในระบบของเรา

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

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

คุณอาจต้องทำเช่นเดียวกันในเลย์เอาต์อื่น ๆ ของคุณหากคุณสลับระหว่างภาษา

นอกจากนี้ยังมีแคชที่รูปแบบ xkb อยู่ คุณควรล้างมันก่อนที่จะรีสตาร์ทเซิร์ฟเวอร์ X ของคุณเพื่อตรวจสอบไฟล์สัญลักษณ์แป้นพิมพ์ใหม่

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

นี้เป็นสิ่งที่ดี แต่ทำงานได้เฉพาะกับการเปลี่ยน gsettings และการเปลี่ยนแปลง xkboptions ที่กล่าวถึงในaskubuntu.com/a/1067921/274298สำหรับฉัน
peschü

2

ในฐานะที่Scroll Lockอาจรบกวนด้วยแป้นพิมพ์ลัดของคุณเมื่อใช้งาน (ชื่อF12, Ctrl+ Spaceจะไม่ทำงานตามที่คาดไว้) ฉันตัดสินใจที่จะตรงกับScroll Lockกุญแจสำคัญในการเปิดตัวคู่มือการใช้งานxset, การสลับรัฐ LED เกี่ยวกับมันสถานะก่อนหน้า

ฉันสร้างสคริปต์ที่ปฏิบัติการได้ชื่อว่าtoggle_keyb_led.sh:

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

นี้จะแยกวิเคราะห์ผลลัพธ์ของการจับคู่บรรทัดด้วยxset qLED mask

หมายเหตุ 1 : หากไม่ได้ผลสำหรับคุณโปรดตรวจสอบกับxset -led; xset q | grep 'LED'ค่ามาส์กปัจจุบันว่าเป็นอย่างไร

หมายเหตุ 2 : ผู้ใช้บางคนจำเป็นต้องเรียกใช้xset led 3เพื่อเปิดใช้งานแสง ในกรณีนี้โปรดเขียนสคริปต์ด้านบนอีกครั้ง


จากนั้นคุณสามารถเรียกใช้สคริปต์นี้เป็นทางลัดที่กำหนดเองโดยใช้สภาพแวดล้อมเดสก์ท็อปของคุณเช่น (นี่คือ Cinnamon):

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.