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