Synetechให้คำอธิบายที่อ่านง่ายมากเกี่ยวกับFnกุญแจที่นี่
รายละเอียดทางเทคนิค
เมื่อคุณกดปุ่มบนแป้นพิมพ์ตัวควบคุมแป้นพิมพ์ (ขนาดเล็ก
ชิป IC ภายในแป้นพิมพ์) ตรวจพบวงจรไฟฟ้าและประมวลผลเพื่อถอดรหัสคีย์ถูกกดแล้วส่ง
scancodeกับเมนบอร์ด ระบบปฏิบัติการรับ scancode จากBIOSจากนั้นดำเนินการสิ่งที่จำเป็นเพื่อประมวลผลการกดปุ่มนั้น
ด้วยปุ่มส่วนใหญ่มันง่ายพอ หากคุณกดปุ่มA
ตัวควบคุมแป้นพิมพ์จะส่ง scancode ไปยังแผงวงจรหลักซึ่งจะส่งผ่านไปยังระบบปฏิบัติการซึ่งโดยปกติแล้วจะพิมพ์ 'A' (หากระบบปฏิบัติการตรวจพบว่าหนึ่งในคีย์ตัวปรับแต่งค้างไว้ในขณะนั้นอาจทำสิ่งที่แตกต่างกันในความเป็นจริงคุณสามารถกำหนดค่าให้ทำสิ่งที่คุณต้องการเมื่อAกดปุ่มมีหรือไม่มีตัวดัดแปลง)
ตอนนี้ที่Fnสำคัญคือพิเศษ เมื่อคุณกดด้วยตัวเองจะไม่มีสิ่งใดเกิดขึ้นเพราะมันเป็นเพียงคีย์ตัวปรับแต่งเท่านั้นและไม่ใช่ (โดยทั่วไป) หมายถึงการทำอะไรด้วยตัวเอง เมื่อคุณกดค้างไว้แล้วกดแป้นอื่นตัวควบคุมแป้นพิมพ์จะตรวจจับสิ่งนั้นและดูในตารางในตัวเพื่อดูว่าเป็นชุดค่าผสมที่รู้จักหรือไม่ หากคอมโบนั้นไม่ได้อยู่ในตารางก็จะไม่สนใจมัน แต่ถ้าคอมโบนั้นอยู่ในตารางมันจะทำการค้นหา scancode ที่เกี่ยวข้องแล้วส่งมันออกมา
ระบบปฏิบัติการท้ายสุดเห็นอะไร? มันไม่เห็น scancode สำหรับFnคีย์และ scancode สำหรับคีย์อื่น ๆ แต่จะเห็นเพียง scancode เดียวที่เกี่ยวข้องกับฟังก์ชันใด ๆ ที่ Fn-combo ตั้งไว้ ตัวอย่างเช่นหากผู้ผลิตแล็ปท็อปได้ตั้งค่า
Fn+ Down Arrowคำสั่งผสมเพื่อลดระดับเสียงระบบปฏิบัติการจะเห็น scancode ที่เกี่ยวข้องกับVolume Downแป้นพิมพ์ซึ่งแป้นพิมพ์บางตัวมีจริง
โปรดทราบว่าFnรหัสนี้ทำงานอย่างอิสระจากระบบปฏิบัติการ
นอกจากนี้บทความนี้อาจช่วยชี้แนะคุณในทิศทางที่ถูกต้อง:
เคอร์เนลมีของตัวเองscancode
ที่จะ
keycode
ตาราง mapping จึงแม scancode บางอย่างที่จะรหัสใน คุณสามารถมองเข้าไปใน /usr/include/linux/input.h เพื่อดูสิ่งที่ใช้เคอร์เนลของคุณสำหรับ scancode เพื่อทำแผนที่ keycode -
keymap
มันถูกเรียกว่า
ป.ล.
ฉันอาจต้องล้างแค้นในการอ้างสิทธิ์ก่อนหน้านี้ว่าFnปุ่มทำงานอย่างเป็นอิสระจากระบบปฏิบัติการทั้งหมด โดยไม่ต้องลงรายละเอียดทางเทคนิคเพิ่มเติมที่นี่ผลที่สุดน่าจะเป็นที่ระบบปฏิบัติการของคุณอาจไม่ "สนับสนุน" Fnคีย์ของแป้นพิมพ์ทั้งหมดหรือบางส่วนของคุณดูตัวอย่างเช่น:
scancode
เกี่ยวข้องกับตัวอย่างเช่น "keycode 238"