วิธีการตั้งค่า Ubuntu ให้เปิด NumLock โดยอัตโนมัติเมื่อติดตั้งแป้นพิมพ์ภายนอกและปิดเมื่อไม่มี


12

การเปิด NumLock นั้นสะดวกมากเมื่อใช้แป้นพิมพ์ภายนอกขนาดเต็ม (มีแป้นพิมพ์) และไม่สะดวกมากเมื่อใช้แป้นพิมพ์ในตัวของแล็ปท็อป (ซึ่งวางตัวเลขแทนตัวอักษรที่อยู่ด้านขวาของแป้นพิมพ์เว้นแต่กด Fn)

ดังนั้นฉันต้องเปิด NumLock ทุกครั้งที่ฉันต่อแป้นพิมพ์ภายนอก (หรือบูตด้วยมัน) และปิดทุกครั้งที่ฉันถอดแป้นพิมพ์ภายนอก (หรือบูตด้วยการถอดออก) และฉันทำเช่นนี้บ่อยเพราะฉันชอบใช้แป้นพิมพ์ภายนอกขนาดใหญ่ แต่มีพอร์ต USB ไม่เพียงพอ (เพียง 3) ในการใช้งานร่วมกับเมาส์โมเด็ม 3G และฮาร์ดไดรฟ์ / แฟลชภายนอก

ฉันทำสิ่งนี้โดยอัตโนมัติได้ไหม ดูเหมือนว่าเป็นงานที่ง่ายและมีเหตุผลอย่างเป็นทางการ: หากมีแป้นพิมพ์ USB ติดอยู่ (อุปกรณ์บางตัวใน / dev มีอยู่หรือไม่) - NumLock เปิดอยู่หากไม่ใช่ - NumLock ปิดอยู่ แป้นพิมพ์ในตัวแล็ปท็อปของฉันคือ PS / 2 ต่อพ่วงภายนอกเป็น USB

บางทีฉันควรเขียนโค้ดด้วยตัวเอง แต่จะวางไว้ที่ไหนในกรณีนี้

ฉันใช้ Ubuntu 10.10

คำตอบ:


14

ก่อนอื่นให้ติดตั้ง numlockx ( คลิกที่นี่เพื่อติดตั้ง numlockx ) โดยทั่วไปสิ่งนี้จะช่วยให้คุณสามารถเขียนสคริปต์เพื่อตั้งค่าสถานะของ Num Lock - ดูรายละเอียดเพิ่มเติมได้ที่หน้า numlockx

ต่อไปเราจะต้องเริ่มเจาะลึกถึงความสนุกของกฎ udev ก่อนอื่นเราต้องหาวิธีระบุคีย์บอร์ด คุณสามารถทำได้โดย

ls /dev/input/by-id/

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

/dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd

ดังนั้นเราต้องค้นหาข้อมูลทั้งหมดเกี่ยวกับคีย์บอร์ด ฉันทำ

udevadm info -a -p $(udevadm info -q path -n /dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd)

แต่แทรกเส้นทางของคุณเองที่นั่นแน่นอน คุณจะได้รับข้อมูลจำนวนมาก SUBSYSTEMS=="usb"แต่คุณต้องการที่จะดูที่บล็อกแรกว่าชื่อแป้นพิมพ์และมี (แทนที่จะเป็นตัวควบคุม USB หรืออะไรก็ตาม) ในกรณีของฉันนั่นคือ:

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.3':
    KERNELS=="3-2.3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}==" 50mA"
    ATTRS{urbnum}=="6284"
    ATTRS{idVendor}=="058f"
    ATTRS{idProduct}=="9410"
    ATTRS{bcdDevice}=="0122"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="1.5"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="3"
    ATTRS{devpath}=="2.3"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="KINESIS FREESTYLE KB700"
    ATTRS{product}=="KB700 Kinesis Freestyle"

ดังนั้นตอนนี้เรามีข้อมูลเพียงพอที่จะเขียนกฎบางอย่าง ใช้โปรแกรมแก้ไขที่คุณชื่นชอบเพื่อสร้าง/etc/udev/rules.d/10-local.rulesและใส่:

BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="add",RUN+="/usr/bin/numlockx on"
BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="remove",RUN+="/usr/bin/numlockx off"

ให้ใส่ชื่อคีย์บอร์ดของคุณอีกครั้งที่นี่และ ATTRS ถ้ามันแตกต่าง จากนั้นควรทำงาน :)

หมายเหตุฉันไม่สามารถทดสอบสิ่งนี้ได้แม้ว่าฉันจะเรียกใช้คำสั่งทั้งหมดจนถึงการสร้างไฟล์กฎ และแหล่งข้อมูลในกรณีที่คุณต้องทำการตรวจสอบเพิ่มเติม:


ขอบคุณมากยอดเยี่ยม พูดตามตรงฉันไม่ได้คาดหวังว่าจะได้คำตอบใด ๆ ฉันต้องการฉันจะให้รางวัลมากกว่าแค่แก้ไขและ +1 ฉันหวังว่าทุกคนที่ติดดาวและโหวตให้คำถามของฉันจะให้รางวัลกับคุณเช่นกัน
อีวาน

1

หากคุณใช้ Gnome3 shell

ติดตั้ง numlockx

จากนั้นเปิดการตั้งค่าแอปพลิเคชันเริ่มต้น gnome-session-properties

รูปภาพ (ผู้ใช้ใหม่ไม่สามารถโพสต์ภาพได้ :))

คลิกเพิ่ม

เขียนอะไรลงในช่องชื่อและลงในช่องคำสั่งคัดลอกนี้:numlockx on

ภาพ


0

ฉันไม่แน่ใจว่าสิ่งที่ฉันทำแตกต่างกันเพราะ numlock ของฉันบนแป้นพิมพ์นี้เริ่มต้นที่ (เป็นแป้นพิมพ์ Mac Pro Aluminium) มีคำแนะนำบางอย่างที่นี่ที่ควรทำเคล็ดลับ

หวังว่านี่จะช่วยได้!


0

หากคุณใช้ gnome-shell คุณสามารถติดตั้งสถานะ Numlock & Capslock บนส่วนขยายของ "ล็อคกุญแจ" ได้ กรุณาพบได้ที่นี่

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