คอมพิวเตอร์ Windows อินเทอร์เน็ต

เราจำลองแป้นพิมพ์ เกี่ยวกับการประเมินสัญญาณดิจิตอล pemin แป้นพิมพ์ รหัสสแกนคืออะไร

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

การกำหนดรหัสสแกนของคีย์

สิ่งที่คุณกดบนแป้นพิมพ์ โดยทั่วไป X-server และเคอร์เนลจะไม่สนใจสิ่งที่เขียนหรือวาดบนนั้น พวกเขาสนใจเฉพาะรหัสสแกนของปุ่ม และในตอนแรก X จะอ่านตารางรหัสคีย์เคอร์เนล จากนั้นรหัสคีย์จะเชื่อมโยงกับตารางรหัสของตัวเอง ถ้าใน ปัญหาของวินโดว์ไม่มีการตั้งค่าคีย์มัลติมีเดียในคอนโซล ดังนั้นใน Linux คุณต้องกำหนดค่าการตอบสนองต่อการกดปุ่มในคอนโซลและใน X-Window แยกต่างหาก

หากต้องการทราบรหัสคีย์ คุณควรใช้ยูทิลิตี้ xev ที่มาพร้อมกับเซิร์ฟเวอร์ X หลังจากเปิดตัว หน้าต่าง Event Tester จะปรากฏขึ้น ตอนนี้เรากดปุ่มตามลำดับโดยจำรหัสที่ออก:

$ xev
...
เหตุการณ์ KeyRelease, ซีเรียล 31, NO สังเคราะห์, หน้าต่าง 0x3e00001,
รูท 0x67, subw 0x0, เวลา 279734676, (311,611), รูท: (1104,687),
สถานะ 0x2000, รหัส 236 (keysym 0x1008ff19, XF86Mail), same_screen ใช่,

XFilterEvent ส่งคืน: False
เหตุการณ์ KeyRelease, ซีเรียล 31, NO สังเคราะห์, หน้าต่าง 0x260001,
รูท 0x67, subw 0x0, เวลา 265877259, (883,334), รูท: (886,358),
สถานะ 0x0, รหัสคีย์ 161 (keysym 0x0, NoSymbol), same_screen ใช่,
XLookupString ให้ 0 ไบต์:
XFilterEvent ส่งคืน: False

ผลลัพธ์อาจดูล้นหลาม เนื่องจากทุกการเคลื่อนไหวของเมาส์จะถูกติดตามเมื่อคุณเลื่อนผ่านหน้าต่างตัวทดสอบเหตุการณ์ คีย์อธิบายโดยบล็อก KeyRelease โดยเฉพาะอย่างยิ่ง ค่าคีย์โค้ดคือโค้ดสแกนที่เราอยากรู้ ในตัวอย่างที่แสดง มีการกดปุ่มสองปุ่ม คีย์โค้ด 236 สอดคล้องกับคีย์โค้ดสำหรับเซิร์ฟเวอร์ X ที่ระบุในคีย์ซิม เช่นเดียวกับการดำเนินการ XF86Mail ซึ่งใน KDE จะเปิดใช้ไคลเอ็นต์อีเมลเริ่มต้น สำหรับคีย์หมายเลข 161 ไม่มีการกำหนดรหัสหรือการดำเนินการ

สถานการณ์เป็นไปได้เมื่อกดปุ่ม แต่ไม่มีการออกรหัสสแกน ซึ่งหมายความว่าเคอร์เนลไม่พบค่าที่ตรงกัน เอาต์พุต dmesg ควรมีบรรทัดดังนี้:

ใช้ "setkeycodes 0xec "เพื่อให้รู้

นั่นคือ คุณได้รับเสนอให้ตั้งค่ารหัสสแกนของคีย์ด้วยตนเองโดยใช้ setkeycodes ในขณะที่ค่ารหัสนั้นเลือกได้ง่ายมาก แปลงตัวเลขผลลัพธ์เป็นเลขฐานสิบ (เครื่องคิดเลขส่วนใหญ่สามารถทำได้) และเพิ่ม 128 ตัวอย่างนี้ 0xec = 236 นั่นคือ เราได้รับรหัสสแกน 364 หากมีข้อสงสัย สามารถดูรายการรหัสสแกนที่ใช้และไม่ได้ใช้ได้โดยการเรียกใช้ยูทิลิตี้ getkeycodes หรือ dumpkeys ในคอนโซล ตัวอย่างเช่น หากผลลัพธ์คือ “getkeycodes | grep<код клавиши>“ไม่ได้ให้อะไรเลย ดังนั้นรหัสนี้จึงใช้ได้อย่างปลอดภัย

ยูทิลิตี้ XKeycaps (www.jwz.org/xkeycaps) ซึ่งเป็นส่วนหน้าแบบกราฟิกของ Xmodmap สามารถช่วยกำหนดรหัสการสแกนได้เช่นกัน

ในคอนโซลแน่นอนว่าโปรแกรม xev ไม่ทำงาน หากต้องการค้นหารหัสการสแกนที่ออกโดยเคอร์เนล ให้ใช้ยูทิลิตี้ showkey หรือ getkeycodes:

$ showkey
แป้นพิมพ์อยู่ในโหมด UNICODE
กดปุ่มใดก็ได้ (โปรแกรมจะสิ้นสุดหลังจากกดครั้งสุดท้าย 10 วินาที) ...
0xe0 0x6c 0xe0 0xec

ตัวเลขสองหลักแรกตรงกับปุ่มที่กด ตัวเลขที่สองหมายถึงไม่มีการกด

การกำหนดค่าการเชื่อมโยงของรหัสสแกนใน X-Window

ตอนนี้เรามี scancodes แล้ว เราต้องบอก X-server ว่าควรทำอย่างไรเมื่อกดปุ่มนี้ นั่นคือ กำหนดชื่อสัญลักษณ์ให้ สำหรับรายชื่อสัญลักษณ์ โปรดดูที่ไฟล์ส่วนหัว XF86keysym.h ตามค่าเริ่มต้น ส่วนหัวของเซิร์ฟเวอร์ X จะไม่ถูกติดตั้งบนการกระจายที่ทันสมัย หากต้องการดูใน Ubuntu คุณต้องติดตั้งแพ็คเกจ x11proto-core-dev หลังจากนั้นไฟล์นี้จะอยู่ในไดเร็กทอรี / usr / include / X11 หรือคุณสามารถไปที่เซิร์ฟเวอร์ X.Org CVS พวกเรามอง:

$ cat /usr/include/X11/XF86keysym.h
/*
* คีย์ที่พบในแป้นพิมพ์ "อินเทอร์เน็ต" บางตัว
*/
#define XF86XK_สแตนด์บาย 0x1008FF10
#define XF86XK_AudioLowerVolume 0x1008FF11
#define XF86XK_AudioRaiseVolume 0x1008FF13
#define XF86XK_AudioPlay 0x1008FF14
#define XF86XK_AudioStop 0x1008FF15
#define XF86XK_Mail 0x1008FF19

หากเราเปรียบเทียบบรรทัดสุดท้ายกับเอาต์พุต xev เราจะเห็นว่าค่าต่างๆ ตรงกับคีย์กับรหัส 236 - keysym 0x1008ff19, XF86Mail (ไม่มีส่วนต่อท้าย XK_) คุณสามารถค้นหารายการค่าที่มีทั้งหมดตามที่ควรจะใช้ใน / usr / share / X11 / XKeysymDB

คุณสามารถสร้างเค้าโครงของคุณเองได้สองวิธี: สร้างคำอธิบายแป้นพิมพ์หรือใช้ Xmodmap วิธีสุดท้ายเป็นวิธีที่ง่ายที่สุด ดังนั้นเราจะพูดถึงมันต่อไป ในโฮมไดเร็กตอรี่ของผู้ใช้ ให้สร้างไฟล์ .Xmodmap ซึ่งเราป้อนค่าที่ต้องการ:

$ mcedit ~ /. Xmodmap

รหัส 161 XF86เครื่องคิดเลข
รหัส 174 XF86AudioLowerVolume
รหัส 176 XF86AudioRaiseVolume
รหัส 162 XF86AudioPause

ฉันคิดว่าหลักการนั้นชัดเจน นอกจากนี้ยังสามารถป้อนรหัสคีย์ได้ทั้งในรูปแบบทศนิยมและเลขฐานสิบหก จากการสังเกตของฉัน รหัสสำหรับคีย์ส่วนใหญ่เป็นมาตรฐาน ดังนั้น หากคุณเคยตั้งค่าการตอบสนองต่อการกดแป้นและโอนไฟล์ไปยังคอมพิวเตอร์เครื่องอื่น มีโอกาสที่แป้นพิมพ์อื่นจะตอบสนองต่อการกดแป้นที่มีลายเซ็นจะคล้ายกัน ผู้ใช้เดสก์ท็อป Gnome ที่มี GDM สามารถเขียนบรรทัดเหล่านี้ทั้งหมดในทั้งระบบ / etc / X11 / Xmodmap

ในกรณีอื่นๆ เรายังจำเป็นต้องบอกให้เซิร์ฟเวอร์ X ใช้ไฟล์ที่สร้างขึ้น การแจกแจงที่แตกต่างกันใช้สิ่งนี้ในรูปแบบต่างๆ แนวคิดหลักคือการเรียกใช้คำสั่ง / usr / bin / xmodmap $ HOME / .Xmodmap เมื่อผู้ใช้เข้าสู่ระบบหรือเมื่อ X เริ่มทำงาน ที่นี่ทุกคนเต้นตามที่เขาต้องการ ฟอรัมแนะนำให้ใช้ไฟล์ $ HOME / .xsession (ในบางรุ่นอาจเรียกว่า .Xsession), .xprofile หรือ system / etc / X11 / Xsession และฉันเกรงว่านี่จะยังไม่หมด ทางเลือกที่เป็นไปได้... มาดูกันว่ามันทำอย่างไรใน KUbuntu:

$ sudo grep -iR xmodmap / etc

เป็นผลให้เราพบไฟล์ที่น่าสงสัยที่สุด /etc/X11/Xsession.d/80ubuntu-xmodmap ที่มีเนื้อหาดังต่อไปนี้:

$ cat /etc/X11/Xsession.d/80ubuntu-xmodmap

/ usr / bin / xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || จริง

USRMODMAP = "$ หน้าแรก / .Xmodmap"

ถ้า [-x / usr / bin / xmodmap]; แล้ว
ถ้า [-f "$ USRMODMAP"]; แล้ว
/ usr / bin / xmodmap "$ USRMODMAP" || จริง
fi
fi

นั่นคือ เนื้อหาของไฟล์ ubuntu.xmodmap ถูกโหลด และไฟล์ custom.Xmodmap หากมี เมื่อคุณเปิด ubuntu.xmodmap ในตัวแก้ไข คุณจะพบรายการรหัสและชื่อสัญลักษณ์ที่เกี่ยวข้อง จากนี้เราสามารถสรุปได้: หากผู้พัฒนารายงานว่าชุดการแจกจ่ายของเขารองรับคีย์บอร์ดมัลติมีเดีย มีความเป็นไปได้สูงที่คุณจะพบไฟล์ที่คล้ายกัน ดิสทริบิวชันอื่นๆ มีระบบที่คล้ายกันสำหรับการรันไฟล์ xmodmap ที่กำหนดเอง

เมื่อกำหนดชื่อสัญลักษณ์ให้กับคีย์แล้ว คุณสามารถกำหนดการกระทำที่ต้องการให้พวกเขาได้ สภาพแวดล้อมการทำหน้าต่างบางอย่าง เช่น KDE สามารถจัดการชื่อที่เป็นสัญลักษณ์ได้ ดังนั้น เมื่อคุณกดปุ่มด้วย XF86AudioPlay (คำถาม) เครื่องเล่นเริ่มต้นจะเริ่มเล่น ในการตั้งค่าชุดค่าผสมที่ต้องการ ให้ไปที่ "KDE Control Center -> ภูมิภาคและการเข้าถึง -> แป้นพิมพ์ลัด" (ใน KUbuntu ให้ดูที่ "การตั้งค่าระบบ -> แป้นพิมพ์และเมาส์") Gnome มีรายการเมนูที่คล้ายกัน (คุณสามารถเรียก gnome-keyboard-bindings ได้) และ XFce นอกจากนี้ บางโปรแกรม เช่น Amarok, Konqueror, MPD ยังสามารถจัดการกับการกดแป้นพิมพ์ได้อีกด้วย ในสภาพแวดล้อมอื่นที่ไม่มี
เครื่องมือการกำหนดค่าแบบกราฟิกมักจะต้องมีการแทรกแซงด้วยตนเองในไฟล์การกำหนดค่า ตัวอย่างเช่น ใน IceWM เมื่อคุณกดแป้นที่มีชื่อสัญลักษณ์ XF86AudioPlay เครื่องเล่น XMMS จะเริ่มทำงาน และเมื่อคุณกดอีกครั้ง จะหยุด ให้เพิ่มบรรทัดต่อไปนี้ในไฟล์ ~ / .icewm ที่ปรากฏต่อจากไฟล์แรก ปล่อย:

$ mcedit ~ / .icewm

คีย์ XF86AudioPlay xmms --play-pause

ใน Fluxbox บรรทัดสำหรับเริ่มเล่นจะมีลักษณะดังนี้:

$ mcedit ~ / .fluxbox / keys

ไม่มี XF86AudioPlay: ExecCommand xmms --play-pause

มักจะมีตัวอย่างในการกำหนดค่า ดังนั้นฉันคิดว่าคุณสามารถคิดออกกับตัวจัดการหน้าต่างที่เหลือด้วยตัวเอง

การกำหนดค่าปฏิกิริยาในคอนโซล

ในคอนโซล ขั้นตอนจะแตกต่างกันเล็กน้อย ตามที่คุณอาจจำได้ เอาต์พุต dmesg แนะนำให้กำหนดรหัสคีย์โดยใช้คำสั่ง setkeycodes แต่มีความแตกต่าง - ในคอนโซลมีคำสั่งคีย์ได้ไม่เกิน 128 คำสั่ง คุณควรเลือกค่าตั้งแต่ 0 ถึง 127:

$ setkeycodes 0xec 118

คุณสามารถดูค่าฟรีในไฟล์ของรูปแบบแป้นพิมพ์ปัจจุบัน บน Ubuntu และการแจกแจงแบบเดเบียนทั้งหมด โดยปกติแล้วจะเป็น /etc/console-setup/boottime.kmap.gz หากหลังจากสตาร์ทแล้ว ไม่มีปัญหากับคีย์ ให้ป้อนบรรทัดนี้ลงในสคริปต์เริ่มต้นตัวใดตัวหนึ่ง เช่น ใน /etc/init.d/rc.local

ตอนนี้ยังคงต้องตั้งค่าการติดต่อระหว่างคีย์และการดำเนินการที่กำลังดำเนินการ มีพื้นที่สำหรับความคิดสร้างสรรค์มากกว่าใน X's ในคีย์แมป (5) ขั้นตอนการแมปคีย์โค้ดมีดังนี้:

(ธรรมดา | ) คีย์โค้ด หมายเลขคีย์ = keysym

# สลับคอนโซลกลับเมื่อกดปุ่มด้วยรหัส 105
รหัส 105 = Decr_Console
# สลับคอนโซลไปข้างหน้าเมื่อคลิก และกุญแจรหัส 106
รหัสคีย์ alt 106 = Incr_Console

แต่คุณสามารถสร้างตัวแปรของคุณเองได้โดยการระบุคำสั่งในตัวแปร:

รหัส 120 = F100
สตริง F100 = "/ sbin / ปิด -h ตอนนี้ \ n"

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

ตอนนี้ ส่วนที่สำคัญไม่แพ้กันก็คือที่ที่จะเขียนมันทั้งหมดลงไป เอกสารประกอบและคำแนะนำมากมายแนะนำให้ใช้ไฟล์แมปคอนโซลปัจจุบัน (ในกรณีของฉันคือ boottime.kmap.gz) อย่างไรก็ตาม นี่เป็นไฟล์คำอธิบายเค้าโครงเพียงไฟล์เดียวที่มีให้หลังจากติดตั้ง KUbuntu; หากต้องการดูตัวเลือกที่เหลือ ให้ติดตั้งแพ็คเกจ console-data หลังจากนั้นใน / usr / share / keymaps / i386 / คุณสามารถค้นหาไดเร็กทอรีย่อยหลายไฟล์พร้อมไฟล์ภายใน แต่ถ้าคุณต้องการเปลี่ยนไปใช้เลย์เอาต์อื่น (ใน Ubuntu และดิสทริบิวชันอื่นๆ ไฟล์ / etc / default / console-setup หรือ ~ / .console-setup ถูกใช้เพื่อจุดประสงค์นี้) การตั้งค่าทั้งหมดจะต้องถูกโอนไปยัง ไฟล์อื่นซึ่งค่อนข้าง
อึดอัด. หากคุณตัดสินใจที่จะทำตามขั้นตอนนี้ ให้ใช้รายการที่มีอยู่เป็นเทมเพลต โดยไม่ต้องเขียนอะไรในตำแหน่งแรก และอย่าลืมเว้นบรรทัดว่างไว้ตอนท้าย

เล็กน้อยเกี่ยวกับแล็ปท็อป

จนกระทั่งฉันเจอแล็ปท็อปรหัสสแกนของกุญแจนั้นไม่สามารถระบุได้ ดังนั้น การตั้งค่าที่นี่จึงไม่แตกต่างจากที่อธิบายไว้ข้างต้น แม้ว่าจะมีเทคนิคหนึ่งที่ฉันอยากจะบอกคุณ ฉันพบว่าโหมดไฮเบอร์เนตใช้งานสะดวกมาก เมื่อเปิดคอมพิวเตอร์แล้ว คุณจะพบทุกสิ่งเข้าที่ ตามกฎแล้วการแจกแจงแบบสมัยใหม่สนับสนุนแม้ว่าการกำหนดค่าโดยทั่วไปไม่ยาก - เพียงแค่ติดตั้งแพ็คเกจไฮเบอร์เนตและแทนที่พารามิเตอร์ที่จำเป็นในไฟล์การกำหนดค่า สิ่งเดียวคือทุกครั้งที่เปลี่ยนไปใช้โหมดนี้ คุณต้องเรียกใช้สคริปต์ / usr / sbin / hibernate ซึ่งไม่สะดวกเสมอไป ฉันแค่ต้องการปิดฝาแล็ปท็อปแล้วเปิดใหม่
อาหาร ค้นพบทุกสิ่งในที่ของมัน

ทำได้ง่ายมากโดยใช้ acpid daemon ซึ่งเป็นอินเทอร์เฟซผู้ใช้ชนิดหนึ่งที่ให้คุณจัดการเหตุการณ์ ACPI ที่เข้าถึงได้ผ่าน / proc / acpi / event ในเวลาเดียวกัน acpid จะอ่านชุดของไฟล์การกำหนดค่าจากไดเร็กทอรี / etc / acpi / events / หากไม่มีแพ็กเกจที่มี daemon ในชุดการแจกจ่าย ให้ติดตั้งจากที่เก็บ เวอร์ชันล่าสุดสามารถรับได้จาก phobos.fs.tum.de/acpi หลังการติดตั้ง คุณต้องสร้างสองไฟล์ในไดเร็กทอรี / etc / acpi / events: lid และ power ครั้งแรกอธิบายปฏิกิริยาเมื่อปิดฝา ที่สอง - กดปุ่มเปิดปิด

$ sudo mcedit / etc / acpi / events / lid

เหตุการณ์ = ปุ่ม / ฝา *
การกระทำ = / usr / sbin / hibernate

$ sudo mcedit / etc / acpi / events / power

เหตุการณ์ = ปุ่ม / เพาเวอร์ *
การกระทำ = / sbin / ปิด -h ตอนนี้

เหล่านี้เป็นเวอร์ชันที่ค่อนข้างง่าย ใน KUbuntu คุณจะพบกับสคริปต์ที่ซับซ้อนมากขึ้น หลังจากนั้น จำเป็นต้องรีสตาร์ท acpid daemon:

$ sudo /etc/init.d/acpid restart

ตอนนี้ เมื่อคุณปิดฝาแล็ปท็อป ระบบจะไฮเบอร์เนตโดยปิดเครื่อง และเมื่อคุณกดปุ่มเปิดปิด เครื่องจะปิด ง่ายและสะดวก

โปรแกรมกำหนดค่า

หากคุณไม่ชอบเล่นซอกับไฟล์การกำหนดค่า ต่อไปนี้คือโปรแกรมสองสามโปรแกรมที่จะช่วยคุณปรับแต่งวิธีการทำงานของคีย์มัลติมีเดีย ตัวอย่างเช่น จุดประสงค์ดั้งเดิมของโปรแกรม Sven (sven.linux.kiev.ua) คือการกำหนดค่า กุญแจเพิ่มเติมบนแป้นพิมพ์มัลติมีเดีย แต่เนื่องจากเวอร์ชัน 0.4 จึงสามารถแก้ไขข้อผิดพลาดในการพิมพ์และเปลี่ยนรูปแบบแป้นพิมพ์ได้ ยิ่งไปกว่านั้น แม้ว่าคุณจะมีแป้นพิมพ์ปกติ คุณสามารถใช้เพื่อจำลองคีย์มัลติมีเดียได้โดยใช้แป้นพิมพ์ลัดแทน คุณยังสามารถกำหนดการทำงานให้กับปุ่มเมาส์เฉพาะได้อีกด้วย เธอเข้าใจคำศัพท์ภาษารัสเซียประมาณ 10,000 คำและคำศัพท์ภาษาอังกฤษ 9,500 คำ หากโปรแกรมไม่เปลี่ยน
เอง เค้าโครงสามารถเปลี่ยนแปลงได้ด้วยตนเอง โดยใช้คีย์ที่กำหนดพิเศษ (แบ่งตามค่าเริ่มต้น) ด้วยปุ่มแยก (Scroll Lock) คุณสามารถเปลี่ยนตัวพิมพ์ของคำ (บน, ล่าง, ตัวอักษรตัวแรก - บน, ส่วนที่เหลือ - ล่าง) ตัวบ่งชี้การสลับเค้าโครงแป้นพิมพ์จะจดจำสถานะของแต่ละหน้าต่าง ดังนั้น การสลับระหว่างแอปพลิเคชันบ่อยครั้ง คุณไม่จำเป็นต้องเปลี่ยนเค้าโครงเพิ่มเติมอีกต่อไป โปรแกรมนี้มีความเป็นไปได้สูงและผมขอแนะนำให้คุณลองดู การตั้งค่าทั้งหมดทำโดยใช้ โปรแกรมกราฟิกสร้างขึ้นบนไลบรารี GTK + Sven ได้รับการทดสอบบน Linux แล้ว แต่โดยหลักการแล้วควรทำงานบนระบบ * BSD เช่นกัน ตัวจัดการหน้าต่างที่ใช้
ไม่เป็นไร.

ความสามารถของ KeyTouch (keytouch.sf.net) ค่อนข้างเรียบง่าย ยูทิลิตี้นี้ใช้สำหรับกำหนดค่าคีย์มัลติมีเดียเท่านั้น แม้ว่าด้วยความช่วยเหลือ คีย์ใดก็ตามสามารถกำหนดการทำงานที่แตกต่างจากการตั้งค่าเริ่มต้นได้ บนเว็บไซต์ของโปรแกรม นอกเหนือจากแหล่งที่มาและแพ็คเกจสำหรับบางรุ่น คุณสามารถค้นหาการตั้งค่าสำเร็จรูปสำหรับคีย์บอร์ดมัลติมีเดียจากผู้ผลิตที่มีชื่อเสียงส่วนใหญ่

โซลูชันอื่นที่น่าสนใจ - xbindkeys (hocwp.free.fr/xbindkeys/xbindkeys.html) - ช่วยให้คุณสามารถกำหนดคำสั่งใดๆ ให้กับแป้นพิมพ์และปุ่มเมาส์ได้ รวมถึงคำสั่งเชลล์ การตั้งค่าทั้งหมดทำในไฟล์การกำหนดค่าซึ่งมีรูปแบบที่เข้าใจง่าย

หนังสือเล่มนี้ประกอบด้วยและสรุปเคล็ดลับในการแก้ปัญหา ปัญหาต่างๆซึ่งไม่ช้าก็เร็วเกิดขึ้นในการทำงานของทั้งเน็ตบุ๊กราคาประหยัดและเดสก์ท็อปรุ่นใหม่ สูตรทั้งหมดที่ได้รับการทดสอบภาคสนามและจัดหมวดหมู่ตามหัวข้อ: hardware คอมพิวเตอร์ส่วนบุคคล, เครือข่ายคอมพิวเตอร์และการเชื่อมต่ออินเทอร์เน็ต, ติดตั้ง, กำหนดค่าและซ่อมแซมระบบปฏิบัติการ Windows, ท่องอินเทอร์เน็ต, ป้องกันไวรัส ถือว่าไม่ใช่เพียงวิธีแก้ปัญหาแบบสำเร็จรูปสำหรับปัญหากะทันหันเท่านั้น แต่ยังตอบคำถามมากมายที่เกิดขึ้นก่อนซื้อคอมพิวเตอร์อีกด้วย กำหนดขั้นต่ำที่ต้องการ ข้อมูลทางเทคนิคช่วยให้คุณตัดสินใจได้อย่างมีข้อมูล

ซีดีจะรวมอยู่ในฉบับพิมพ์ของหนังสือเท่านั้น

หนังสือ:

ส่วนในหน้านี้:

มีแป้นหลายแป้นบนแป้นพิมพ์ที่คุณไม่เคยใช้ หนึ่งในสิ่งที่น่ารำคาญที่สุดคือกุญแจ สงวนไว้ตั้งแต่สมัยภาษาโปรแกรมอย่าง Fortran ที่ทุกอย่างเขียนด้วยอักษรตัวใหญ่ น้อยคนนักที่ใช้ระบบอย่างเป็นระบบ แป้นวินโดว์(ทั้งสายหลักและสำหรับการโทร เมนูบริบท) - ใช้เมาส์สะดวกกว่า ในขณะเดียวกัน บังเอิญกดปุ่มเหล่านี้ทำงานช้าลงทั้งหมด ผู้ที่รู้สึกรำคาญสามารถปิดการใช้งานหรือกำหนดใหม่ให้กับฟังก์ชันอื่น ๆ เช่นคีย์ที่อยู่ติดกัน

ลองพิจารณาการกระทำเหล่านี้ด้วยตัวอย่าง แล้วเราจะบอกคุณว่าในกรณีทั่วไปเป็นอย่างไร สำหรับคีย์ใดๆ

ขั้นแรก คุณต้องสร้างพารามิเตอร์ไบนารีใหม่ในรีจิสตรีคีย์ HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ControlKeyboard Layout (เพื่อไม่ให้สับสนกับ Keyboard Layouts!)

00 00 00 00 00 00 00 00

03 00 00 00 00 00 5C E0

00 00 5D E0 00 00 00 00

บรรทัดนี้จะปิดใช้งานปุ่มช่องทำเครื่องหมาย Windows และปุ่มเมนูป๊อปอัปที่อยู่ติดกัน ลองหาสิ่งที่เขียนที่นี่

อันดับแรก ควรมีเลขศูนย์ 8 คู่ติดต่อกัน ต่อมาคือตัวเลข (ที่มีศูนย์นำหน้า) - ในกรณีนี้ 03 ซึ่งหมายถึงจำนวนคีย์ที่จะติดตามบวกหนึ่ง (นั่นคือ ในตัวอย่างนี้ เรากำลังติดตามสองคีย์) ควรตามด้วยศูนย์สามคู่เสมอ (เติมตัวเลขได้มากถึง 4 คู่) บันทึกต้องลงท้ายด้วยศูนย์สี่คู่เสมอ แต่ระหว่างนั้น เราต้องเขียนตัวเลขที่จับคู่กันให้มากที่สุดเท่าที่เราให้ไว้สำหรับคีย์การติดตาม - ในกรณีนี้คือสองตัว มีรหัสสแกนที่เรียกว่าคีย์ที่เราต้องการปิดใช้งาน ตาราง 12.2 แสดงรหัสของกุญแจเหล่านั้นที่แนะนำให้พิจารณาในแง่ของตัวเลือกสำหรับการตัดการเชื่อมต่อหรือการเปลี่ยน (ดูด้านล่าง)

รหัสเหล่านี้เขียนในสองคู่สุดท้ายของตัวเลขทุก ๆ สี่คู่ สองคู่แรกเป็นศูนย์อีกครั้ง ดังที่คุณเห็นในตัวอย่าง ดังนั้นบรรทัดตัวอย่างจะปิดการใช้งานคีย์ขวาของเรา (พร้อมแฟล็ก Windows) (00 00 5C E0) และคีย์ที่อยู่ติดกัน เรียกเมนูป๊อปอัป (00 00 5D E0)

ตารางที่ 12.2. รหัสสแกนคีย์


รหัสสแกนคืออะไรและจะหาได้จากที่ไหน

รหัสสแกนคือตัวเลขที่แป้นพิมพ์ให้เมื่อคุณกดแป้นบางแป้น ไม่ควรสับสนรหัสสแกนกับรหัสคีย์เสมือน - รหัสหลังถูกสร้างขึ้นที่ระดับ BIOS และ Windows แล้วจากนั้นจึงกำหนดรหัสอักขระซึ่งเป็นรหัสที่สร้างเนื้อหา เอกสารข้อความ... โดยส่วนใหญ่แล้วจะไม่เกี่ยวข้องกันแต่อย่างใด ตัวอย่างเช่น โค้ดเสมือนของคีย์ "space" คือ 32 (เหมือนกับโค้ดของอักขระ "space" ในการเข้ารหัสแบบไบต์เดียว) และโค้ดการสแกนของมันคือ 57 (ในรูปแบบ HEX จะเป็น 20 และ 39 ตามลำดับ) โปรดทราบว่ารหัสเสมือนไม่เทียบเท่ากับรหัสสัญลักษณ์ - ในการเปลี่ยนรหัสเสมือนเป็นรหัสอักขระ คุณต้องคำนึงถึงรูปแบบภาษา สถานะของปุ่มด้วย , และอีกอย่าง ระบบเข้ารหัสที่ใช้เป็นแบบไบต์เดียวหรือยูนิโค้ด ทั้งหมดนี้ทำโดยไดรเวอร์แป้นพิมพ์ของระบบ แม้กระทั่งก่อนที่งานแถลงข่าวจะกระทบกับคิวข้อความของ Windows ปุ่มบางปุ่ม ( หรือ ) ไม่เกี่ยวข้องกับอักขระใด ๆ เลย และไม่สิ้นสุดในคิวที่ระบุ ดังนั้นเพื่อแทนที่ฟังก์ชันการทำงานของคีย์บางตัวอย่างสมบูรณ์ การแทนที่รหัสเสมือน (ซึ่งอันที่จริงใครก็ตามที่มีทักษะการเขียนโปรแกรมใน Delphi หรือ Visual C ++ สามารถทำได้) ไม่เพียงพอ - คุณต้องดำเนินการในระดับที่ลึกกว่า รหัสสแกน นี่คือสิ่งที่เปิดใช้งานพารามิเตอร์ Scancode Map ในรีจิสทรีของ Windows

เพื่อจุดประสงค์ของเรา การสแกนโค้ดตามที่คุณเดาได้จากตารางด้านล่างควรแสดงเป็นเลขฐานสิบหก (HEX) ไม่ใช่รูปแบบทศนิยม ตารางของรหัสเสมือนและรหัสอักขระมักจะแนบมากับบทช่วยสอนการเขียนโปรแกรม Windows ใดๆ แต่ไม่พบตารางรหัสการสแกนที่สมบูรณ์ หนึ่งในตารางเหล่านี้ตั้งอยู่บนไซต์ " ห้องสมุดดิจิทัล"ที่ลิงค์ http://ntlib.chat.ru/ware/tables/scan.htm มีองค์ประกอบที่ไม่สำเร็จเล็กน้อย - คีย์ส่วนขยายที่เรียกว่า (เหล่านี้คือคีย์ที่มีไบต์ที่สองในตารางของเราเท่ากับ E0) จะแสดงที่นั่นโดยการเพิ่มตัวเลขพิเศษเท่ากับ 1 นั่นคือโดยการเลือกรหัสสแกนจาก คอลัมน์ HEX เช่น 11C (คีย์ บน แป้นพิมพ์ตัวเลข) ต้องเขียนใหม่เพื่อจุดประสงค์ของเราเป็น 1C E0 สามารถดาวน์โหลดชุดรหัสสแกนแบบเต็มอย่างเป็นทางการ รวมถึงปุ่มเปิดปิด (แต่ไม่รวมคีย์สื่อเพิ่มเติม) ได้จากเว็บไซต์ Microsoft ลิงก์ไปยังเอกสารนั้นยาวมาก ดังนั้นเพียงพิมพ์คำว่า "Keyboard Scan Code Specification" ในการค้นหาบน microsoft.com คุณก็จะได้สิ่งที่คุณกำลังมองหา - แม้ว่าจะเป็นภาษาอังกฤษก็ตาม ขณะที่คุณศึกษาเอกสารนี้ โปรดทราบว่าเราสนใจรหัสชุดเดียวเท่านั้น: ชุดรหัสสแกน 1

แน่นอนว่าควรเตรียมชุดตัวเลขดังกล่าวไว้ล่วงหน้าและควรนับคู่ทั้งหมดอย่างรอบคอบก่อนที่จะเข้าสู่การลงทะเบียน แต่เมื่อคุณพิมพ์ คุณจะเห็นว่ามันจะช่วยให้คุณไม่ทำผิดพลาด การป้อนค่า เลขฐานสองทำได้ด้วยตนเอง (รูปที่ 12.11) แต่ถึงแม้จะมีรูปลักษณ์ที่ผิดปกติของตัวแก้ไขนี้ คุณจะเห็นได้อย่างรวดเร็วว่าการทำงานกับมันสะดวกมาก โดยเฉพาะอย่างยิ่ง ไม่มีปัญหาในการนับคู่ที่ป้อน โดยจะจัดกลุ่มโดยอัตโนมัติที่แปดคู่ต่อบรรทัด อย่าลืมรีสตาร์ทพีซีหลังจากการตั้งค่าพารามิเตอร์ขั้นสุดท้าย


ข้าว. 12.11. การป้อนค่าพารามิเตอร์ไบนารี

สำหรับการไม่เพียงแค่เลิกทำ แต่การกำหนดใหม่ด้วย คุณจะต้องทำให้การบันทึกซับซ้อนขึ้นเล็กน้อย - ศูนย์สองคู่แรกในสี่เหล่านั้นที่มีรหัสของกุญแจที่จะปิดการใช้งานควรถูกแทนที่ด้วยรหัสเหล่านั้นซึ่งในความเห็นของคุณ ควรทำงาน. ตัวอย่างเช่น ค่า Scancode Map ของ

00 00 00 00 00 00 00 00

03 00 00 00 00 00 5C E0

1D E0 5D E0 00 00 00 00

จะทำให้ ปุ่มขวาด้วยช่องทำเครื่องหมาย Windows จะปิดและ จะซ้ำสิทธิ์ นั่นคือกุญแจที่ใกล้เคียงที่สุด เป็นค่า Scancode Map ที่แสดงเป็นตัวอย่างในรูปที่ 12.11.

มาดูวิธีรับมือกัน ... การทดลองแสดงให้เห็นว่าไม่ใช่ทุกอย่างที่คลุมเครือ โดยเฉพาะอย่างยิ่ง ความพยายามในการปิดระบบอย่างง่ายอาจไม่ให้ผลลัพธ์ แต่ฉันจะให้ค่าของพารามิเตอร์ Scancode Map ซึ่งรับประกันว่าจะปิดการใช้งาน - ฟังก์ชันเปลี่ยนเป็นฟังก์ชัน (ใช่ แต่ในทางปฏิบัติมันไม่สำคัญ) และ ที่นี่เหมือนเมื่อก่อนซ้ำสิทธิ์ :

00 00 00 00 00 00 00 00

03 00 00 00 1D E0 5D E0

2A 00 3A 00 00 00 00 00

ไฟล์ key.reg อยู่บนดิสก์ที่ให้มาในโฟลเดอร์ Registry เมื่อคุณเรียกใช้และยืนยันว่าคุณต้องการเปลี่ยนแปลงรีจิสทรีจริงๆ พารามิเตอร์ Scancode Map พร้อมค่านี้จะถูกสร้างขึ้นโดยอัตโนมัติ ถ้าไม่อยากสัมผัสอะไรแต่ จากนั้นแก้ไขค่านี้ดังนี้: แทนที่ 03 ด้วย 02 และแทนที่สี่ไบต์ที่ไม่ใช่ศูนย์ในบรรทัดที่สองด้วยศูนย์

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

ปิดการใช้งานคีย์ เมื่อเข้าสู่เมนู

ขออภัย จัดการคีย์ เป็นระบบหนึ่งสำหรับ Windows (เรียกเมนูหลัก) ในขณะที่ยังคงฟังก์ชันการทำงานเป็นคีย์ตัวปรับแต่ง มันจะไม่ทำงานผ่านรีจิสทรี - โดยทั่วไปแล้วจะหยุดตอบสนองต่อการกด ดังนั้น เนื่องจากเรากำลังจัดการกับกุญแจ ในเวลาเดียวกันฉันจะระบุวิธีจัดการกับมัน แม้ว่าจะไม่เกี่ยวข้องกับรีจิสทรีก็ตาม หนังสือเล่มนี้มีโฟลเดอร์ AltSpy บนดิสก์ ซึ่งมีโปรแกรมชื่อเดียวกัน คัดลอกทั้งโฟลเดอร์ (ประกอบด้วยสามไฟล์) ไปยังฮาร์ดไดรฟ์ของคุณและเรียกใช้ไฟล์ js (Java Script) เพื่อไม่ให้สตาร์ทด้วยมือทุกครั้ง ควรรวมไว้ในการเริ่มต้น (ดูหัวข้อ 10.1.3 “การเริ่มต้น”) 10 วินาทีหลังจากเริ่มสคริปต์ AltSpy จะสร้างไอคอนตาสีน้ำตาลในพื้นที่แจ้งเตือน ซึ่งจะมีรายการเมนูบริบทเท่านั้น - ปิด จำเป็นต้องหยุดชั่วคราวเพื่อให้ AltSpy ได้รับการประกันว่าจะเป็นสิ่งสุดท้ายเมื่อเริ่มต้นและแทนที่บริการอื่นๆ หลังจากนั้น จะหยุดเรียกเมนูหลัก แต่จะคงฟังก์ชันพื้นฐานไว้ ในเวลาเดียวกันความสามารถในการเรียกเมนูหลักจะไม่หายไป - ฟังก์ชั่นนี้ยังคงทำงานโดยปุ่ม แต่ตอนนี้มันยากกว่ามากที่จะเรียกมันโดยไม่ได้ตั้งใจ และด้วยเหตุนี้จึงทำให้โฟกัสอินพุตหลุดจากองค์ประกอบที่ต้องการ

เป็นไปได้มากว่าในโทรศัพท์ของคุณแล้ว ติดตั้งโดยค่าเริ่มต้นเครื่องสแกนรหัส QR คุณสามารถสแกนรหัส QR แรกได้อย่างง่ายดาย นี้เป็นเรื่องง่ายมากที่จะทำ เพียงทำตามคำแนะนำของเรา

1. เปิดเครื่องอ่านโค้ด QR บนโทรศัพท์ของคุณ

2. ถืออุปกรณ์ไว้เหนือรหัส QR เพื่อให้มองเห็นได้ชัดเจนบนหน้าจอสมาร์ทโฟนของคุณ

หากคุณถือสมาร์ทโฟนไว้เหนือรหัส QR อย่างถูกต้อง สิ่งต่อไปนี้จะเกิดขึ้น:

  • โทรศัพท์จะสแกนรหัสโดยอัตโนมัติ
  • ในแอปสแกนโค้ดบางแอป คุณต้องคลิกที่รูปภาพ ไม่ใช่ปุ่มแบบที่คุณต้องการเพื่อสร้างรูปภาพบนสมาร์ทโฟนของคุณ

3. กดปุ่มที่ระบุ หากจำเป็น

สุด! สมาร์ทโฟนของคุณอ่านรหัสและติดตามลิงก์ที่ระบุ ซึ่งไม่ได้เกิดขึ้นทันทีเสมอไป ในอุปกรณ์ส่วนใหญ่ การดำเนินการนี้อาจใช้เวลาสักครู่

คุณจะเริ่มเห็นรหัส QR ทุกที่ ใช้สำหรับการสอน แจ้ง อธิบาย และอื่นๆ อีกมากมาย ค้นหาและสแกนพวกเขา! รหัส QR จะช่วยคุณประหยัดเวลาและความพยายามอย่างมาก

วิธีสแกนรหัส QR บน Android

ตอนนี้เราจะแสดงวิธีใช้แอปสแกนรหัส QR บน Android

สั้น ๆ :
1. เปิด ร้านขายของเล่น .
2. ค้นหา เครื่องอ่านโค้ด QR .
3. เลือก เครื่องอ่านโค้ด QR(ผ่านการสแกน)
4. คลิก " ติดตั้ง".
5. เปิดโปรแกรม การอ่านรหัส QR.
7. หันกล้องไปที่รหัส QR
8. คลิก " ตกลง".

ขั้นตอนที่ 1... เปิด Play Store บน Androidเป็นไอคอนในแอปหรือบนหน้าจอหลัก

ขั้นตอนที่ 2. ป้อนเครื่องอ่านโค้ด QR ในเครื่องมือค้นหารายการแอปเครื่องอ่านโค้ด QR จะปรากฏขึ้น

  • บทความนี้อธิบายวิธีใช้เครื่องอ่านโค้ด QR แต่คุณสามารถเลือกแอปที่ต้องการได้ อย่าลืมอ่านเกี่ยวกับแอพก่อนดาวน์โหลด
  • ขั้นตอนควรเหมือนกันสำหรับแอปตัวอ่านโค้ด QR ทั้งหมด

ขั้นตอนที่ 3คลิกเครื่องอ่านโค้ด QR ที่พัฒนาโดย Scanชื่อของนักพัฒนาซอฟต์แวร์แสดงอยู่ใต้แต่ละแอพ คุณอาจต้องเลื่อนหน้าลงเพื่อค้นหาแอปที่สร้างโดย Scan

ขั้นตอนที่ 4คลิกติดตั้งป๊อปอัปจะปรากฏขึ้นเพื่อขออนุญาตเข้าถึงข้อมูลบน Android ของคุณ

ขั้นตอนที่ 5คลิก "ยอมรับ" QR Code Reader จะถูกติดตั้งบนอุปกรณ์ Android ของคุณ

    • เมื่อดาวน์โหลดแอปพลิเคชันแล้ว ปุ่ม "ติดตั้ง" จะเปลี่ยนเป็น "เปิด" และคุณจะมีไอคอนใหม่ในแอปพลิเคชัน

ขั้นตอนที่ 6เปิดเครื่องอ่านโค้ด QRเป็นไอคอนที่ดูเหมือนรหัส QR ในแอป แอปพลิเคชันจะเปิดขึ้นซึ่งดูเหมือนหน้าจอกล้องมาตรฐาน

ขั้นตอนที่ 7จัดแนวรหัส QR ในกรอบกล้องคล้ายกับวิธีถ่ายภาพเล็กน้อย ยกเว้นว่าคุณไม่จำเป็นต้องกดปุ่มใดๆ เมื่อเครื่องสแกนบาร์โค้ดอ่านรหัส ป๊อปอัปจะปรากฏขึ้นพร้อมกับ URL ในรหัส


ขั้นตอนที่ 8คลิกตกลงเพื่อเปิดเว็บไซต์การดำเนินการนี้จะเปิดเว็บเบราว์เซอร์เริ่มต้นของคุณและนำทางไปยัง URL ในโค้ด QR

อุปกรณ์พีซีทั่วไปตัวต่อไปที่ดูเหมือนไม่ซับซ้อน แต่บางครั้งก็สร้างปัญหาให้กับนักวิจัยคือคีย์บอร์ด

โดยทั่วไปแล้วอุปกรณ์นั้นเรียบง่าย โดยเฉพาะอย่างยิ่งไม่ใช่รุ่นที่ล้าสมัยที่เชื่อมต่อกับพอร์ต PS / 2 ดังที่แสดงโดยข้อมูลการทดลองจำนวนมาก ไมโครเซอร์กิตควบคุม "แป้นพิมพ์" จะสแกนการกดแป้นพิมพ์และส่งผ่านรหัสซีเรียลไปยังพอร์ต ความถี่สัญญาณนาฬิกาของการส่งสัญญาณนี้เป็นแบบทวีคูณ (ในกรณีส่วนใหญ่อย่างท่วมท้น) »6.3 หรือ 10 kHz แม้ว่าผู้เขียนจะพบสำเนาสองสามฉบับในช่วงหลายปีที่ผ่านมา แต่ความถี่สัญญาณนาฬิกานั้นอยู่ที่ 20 kHz

เมื่อคุณกดปุ่มใดๆ ค้างไว้ แป้นพิมพ์ทั้งหมดจะเริ่ม (หลังจากหยุดชั่วคราว) เพื่อส่งรหัสคีย์ "ad infinitum" ซ้ำ ในโหมดปกติ โดยปกติแล้วจะส่งผลให้บัฟเฟอร์โอเวอร์โฟลว์คอนโทรลเลอร์และทำงานผิดปกติภายในไม่กี่วินาที มีสัญญาณเสียงของระบบ "ลำโพง" - "สารภาพ" สาระสำคัญของโหมดการทดสอบ (โหมดที่ใช้บ่อยที่สุด) คือการบล็อกคำสั่งบัฟเฟอร์ล้น ซึ่งช่วยให้เมื่อกดปุ่ม เพื่อให้แน่ใจว่ามีการส่งอักขระที่เลือกอย่างไม่มีที่สิ้นสุดผ่านสายเคเบิล "แป้นพิมพ์"

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

10101010 (55) ปุ่ม "+; = "

01010101 (AA) ในตารางประเภท - ไม่เกี่ยวข้อง

ตารางทั่วไปของรหัสสแกนแสดงไว้ในตาราง 14.1

ตาราง 14.1- รหัสสแกนแป้นพิมพ์

กุญแจ

สแกนรหัส

กุญแจ

สแกนรหัส

กุญแจ

สแกนรหัส

กุญแจ

สแกนรหัส

ดังนั้น ในระหว่างการใช้งานโหมดทดสอบ ตัวอย่างเช่น การวางน้ำหนักบนปุ่ม "+" ในสายเคเบิล "แป้นพิมพ์" จะมีลำดับของแพ็กเก็ตพัลส์ต่อเนื่องเป็นอนันต์ ในกรณีนี้ อัตราการทำซ้ำของพัลส์ในแพ็กเก็ต (นั่นคือ ความถี่สัญญาณนาฬิกา) จะเท่ากับ 6.10 หรือ 20 kHz และอัตราการทำซ้ำของแพ็กเก็ตจะต่ำกว่ามาก รูปแบบข้อมูลแสดงในรูปที่ 14.1

ใช้สองบรรทัดสำหรับการแลกเปลี่ยนข้อมูลในสายคีย์บอร์ด - KBData และ KBSync เมื่อส่งรหัสสแกน แป้นพิมพ์จะตั้งค่าบิตถัดไปของข้อมูลในบรรทัด KBData และยืนยันการถ่ายโอนโดยโอนสัญญาณจาก "1" เป็น "0" บนสาย KBSync

ตัวควบคุมสามารถส่งสัญญาณความไม่พร้อมในการส่ง / รับข้อมูลที่ระดับต่ำบนสาย KBSync เวลาที่เหลือเมื่อไม่มีข้อมูลจะส่งสัญญาณทั้งสองสายจะมีระดับสัญญาณสูง



จากข้างบนนี้ ในสเปกตรัม PEMIN ของสายเคเบิลคีย์บอร์ด เราควรคาดหวังส่วนประกอบความถี่ที่มีความถี่สัญญาณนาฬิกา 1 / 76.04 · 10 -6 = 13.15 kHz ยิ่งไปกว่านั้น เนื่องจากมีสัญญาณที่เปลี่ยนเฟสสองสัญญาณที่มีช่วงเวลาต่างกัน (แต่หลายช่วง!) ส่วนประกอบความถี่คู่และคี่จะแตกต่างกันในแอมพลิจูด

ตามที่คาดไว้ PEMIN ของบรรทัดข้อมูลการซิงค์ไม่มีข้อมูลในหลักการ แต่การแยก PEMIN ออกจากที่อื่นไม่ใช่เรื่องง่ายเลย หนึ่งสายสัญญาณเป็นแบบซิงโครนัส ...

เกือบวิธีเดียวคือเลือกรหัสสแกนที่มีจำนวนตรรกะ "1" ขั้นต่ำในแพ็คเกจ นี่คือคีย์ "F3" และ F9 "(03 และ 01 ในรหัสฐานสิบหก) ไม่ใช้รหัส "00"

ออสซิลโลแกรมของรหัสสแกน "F3" แสดงอยู่ด้านล่าง


"ในแง่ของพลังงาน" อย่างเคร่งครัดหากคุณวัดส่วนประกอบความถี่ทั้งหมดของ PEMIN ด้วยรหัส "=" และตัวอย่างเช่นรหัส "F9" ดังนั้นความแตกต่างในการอ่านค่าของเครื่องรับในแต่ละส่วนประกอบความถี่ เป็นส่วนข้อมูลที่แท้จริงของพลังงาน PEMIN ยิ่งไปกว่านั้น นี่คือค่าสูงสุด งานค่อนข้างยากและน่าเบื่อหากไม่มีวิธีมอบความไว้วางใจให้กับ "หุ่นยนต์" ส่วนประกอบของ PEMIN สำหรับความถี่ต่ำดังกล่าวสามารถตรวจพบได้โดยไม่ยาก ดังนั้นความแตกต่าง "จับ" ...



ในทางปฏิบัติ SI ในกรณีส่วนใหญ่ พวกเขาเพียงวัดระดับ PEMIN (โดยไม่ลบอะไรเลย) และคำนวณพารามิเตอร์ความปลอดภัย เป็นไปได้และเป็นเช่นนั้น "ด้วยระยะขอบ" แต่ผู้เชี่ยวชาญจำเป็นต้องรู้สถานะที่แท้จริงของกิจการ

ในตอนท้ายของการตรวจสอบ - "pinout" ของตัวเชื่อมต่อ AT- และ PS / 2-keyboard


"รูปภาพ" บนเครื่องรับไม่ได้ดู "คลาสสิก" มากนัก แต่ก็เป็นที่จดจำได้ นี่คือตัวอย่างบางส่วน



สเปกตรัมแสดงให้เห็นการเพิ่มขึ้นของแอมพลิจูดของส่วนประกอบอย่างชัดเจนด้วยความถี่ที่ลดลง

นอกจากนี้ยังมีคุณลักษณะของการวัด "แป้นพิมพ์" ในช่วงความถี่นี้ (ตั้งแต่สิบ kHz ขึ้นไป) ความจริงก็คือแป้นพิมพ์ในตำแหน่งปกตินั้นอยู่ไม่ไกลจากยูนิตระบบ และในส่วนบนของ SB จะมีหน่วยจ่ายไฟแบบพัลซิ่ง ซึ่งเป็นแหล่ง PEMIN ที่ทรงพลังที่สุดสำหรับส่วนประกอบทั้ง "E" และ "H" ใน "แสง" ของสปอตไลท์การแสดงละคร การได้เห็น "แสง" ที่น่าเบื่อของแป้นพิมพ์เป็นศิลปะพิเศษ! ดังนั้นฉันจึงเสนอเทคนิคต่อไปนี้ ย้าย "คลอเดีย" ออกจาก SB ให้ไกลที่สุด ดีกว่า - บนสายต่อ PS / 2 ชนิด 2-2.5 เมตร

วางเสาอากาศให้ถูกนำทางจาก SB ให้น้อยที่สุด (สัญญาณที่มีแบนด์วิดท์ของตัวรับมากกว่า 10 kHz - สเปกตรัมต่อเนื่อง) ดังนั้น ให้เริ่มบิด "แป้นพิมพ์" และสายเคเบิลใกล้กับเสาอากาศแบบคงที่ (ไม่ใช่ในทางกลับกัน!) จากนั้น คุณจะมีโอกาสมากขึ้นในการตรวจจับสัญญาณ PEMIN ของแป้นพิมพ์ เพื่อดูส่วนประกอบ PEMIN บนหน้าจอเครื่องวิเคราะห์ด้วยตาของคุณเอง

จากทั้งหมดที่กล่าวมาใช้กับแป้นพิมพ์ PS / 2 แต่ตอนนี้พวกเขากำลังถูกแทนที่ด้วยคีย์บอร์ด USB อย่างหนาแน่น

โดยทั่วไป อินเทอร์เฟซนี้ได้รับการพิจารณาในรายละเอียดบางอย่างร่วมกับเครื่องพิมพ์ อย่างไรก็ตาม มันจะไม่ฟุ่มเฟือยที่จะให้ "การกำหนดเป้าหมาย" บางอย่างเกี่ยวกับแป้นพิมพ์

เรามาระลึกถึงการสร้างแพ็คเกจสำหรับอินเทอร์เฟซ USB เนื่องจากแป้นพิมพ์เชื่อมต่อด้วยความเร็วต่ำอย่างเคร่งครัด (ซึ่งอันที่จริงแล้วผ่านอินเทอร์เฟซ USB 1.0)

ขนาดเพย์โหลดข้อมูลสูงสุดสำหรับอุปกรณ์ความเร็วต่ำคือ 8 ไบต์ นั่นคือนี่คือสิ่งที่ต้องใช้รหัสสแกนแป้นพิมพ์

การดูสัญญาณ (โดยเฉพาะข้อมูล) บนสาย USB กลับกลายเป็นว่าไม่ใช่เรื่องง่าย อย่างไรก็ตาม นี่คือสิ่งที่เปิดเผยในสายเคเบิลของ "แป้นพิมพ์" USB ทั่วไปของรุ่น GENIUS KB-06XE โดยเฉพาะในบรรทัด "data +" (สาย) (รูปที่ 14.10)


ออสซิลโลแกรมทั้งสองนี้เปลี่ยนซึ่งกันและกันด้วยช่วงเวลาที่ไม่ระบุ (วุ่นวาย) และ "รูปภาพ" ของสัญญาณไม่ได้ขึ้นอยู่กับแป้นกดของแป้นพิมพ์ (หรือไม่มี) ไม่พบการเปลี่ยนแปลงอื่นๆ ในส่วน "ตัวแปร" ของแพ็คเกจ (เฟรม)

อัตราการทำซ้ำของแพ็กเก็ตเหล่านี้มีความเสถียรอย่างเข้มงวด (รูปที่ 14.11) และระยะเวลาของแต่ละแพ็กเก็ต (ดูบนออสซิลโลแกรม) ประมาณ 34 ± 1 μs


แพ็กเก็ตจะติดตามทุกๆ 4ms อย่างไรก็ตาม ควรสังเกตว่าจุดสิ้นสุดของแต่ละแพ็คเก็ต "กระวนกระวายใจ" ตลอดเวลา และเห็นได้ชัดคือ "กระวนกระวายใจ" แบบคลาสสิก ดังนั้นภาพสเปกตรัมจึงค่อนข้างเบลอและชัดเจนด้วยค่าเฉลี่ยที่ยาวเพียงพอเท่านั้น


นอกจากนี้ ควรคำนึงด้วยว่า เนื่องจากช่วงเวลาการทำซ้ำของพัลส์ที่แตกต่างกันและระยะเวลาที่แตกต่างกัน สเปกตรัมจึงมีลักษณะของส่วนผสมบางอย่างของสเปกตรัมต่อเนื่องและเส้นสเปกตรัม อย่างไรก็ตาม ลักษณะของกลีบของสเปกตรัม ซึ่งเป็นธรรมชาติสำหรับลำดับอนันต์ของแพ็กเก็ตและมีหลายส่วนใน "กลีบ" ของระยะเวลาเฉลี่ยของแพ็กเก็ต เฉพาะ "ศูนย์" ของฟังก์ชันเท่านั้นที่จะถูกปรับให้เรียบโดยกระวนกระวายใจและช่วงเวลาไม่ซ้ำชั่วคราวของแต่ละพัลส์ อย่างไรก็ตามรูปภาพนั้นค่อนข้างธรรมดา ที่ความละเอียดความถี่ปลีกย่อย สเปกตรัมเริ่มได้รับการแก้ไขใน "เส้น" เนื่องจากอัตราการทำซ้ำของแพ็กเก็ต (250 Hz) (รูปที่ 14.13) ดังนั้นด้วยวิธีที่ง่ายที่สุดและไม่ซิงโครไนซ์กับการส่งรหัสสแกนที่แท้จริง ออสซิลโลแกรม ระบุและแสดงภาพส่วนของเฟรม (แพ็กเก็ต) ที่รับผิดชอบการถ่ายโอนข้อมูลล้มเหลว อย่างไรก็ตาม เป็นที่ถกเถียงกันอยู่ว่า PEMIN ของสายคีย์บอร์ดจะยังเป็นแบบนี้และไม่ใช่อย่างอื่น เป็นที่ชัดเจนว่าจะต้องค้นหาความถี่ใดเป็นที่ชัดเจนว่ามันจะเป็นของแข็ง (ในกรณีใด ๆ ด้วยความละเอียดความถี่ของเครื่องรับมากกว่า 0.3 kHz) และชัดเจนว่าจะใช้ค่าใดแทนในการคำนวณเป็นนาฬิกา (ระยะเวลาชีพจรต่ำสุดในแพ็กเก็ตในการทดลองคือ 1.322 μs) ในการวัดสิ่งนี้ สำหรับ SI ใดๆ การมีออสซิลโลสโคป อย่างน้อยที่มีแบนด์วิดท์ 200 MHz ถือเป็นงานเล็กน้อย อันที่จริงโหมดการทดสอบนั้นคุณสามารถกดปุ่ม (ใดก็ได้) คุณไม่สามารถกดอะไรได้เลย แพ็กเก็ตจะถูกส่งผ่านอินเทอร์เฟซอยู่แล้ว และในการประมาณครั้งแรก เราถือว่าข้อมูลเหล่านี้เป็นข้อมูล (จนกว่าจะได้รับการพิสูจน์เป็นอย่างอื่น)

ออสซิลโลแกรมและสเปกตรัมที่นำเสนอได้มาจากออสซิลโลสโคป AKIP-4108/2 ที่เชื่อมต่อกับคอมพิวเตอร์เครื่องเดียวกันที่ทำการวัด :)).

เห็นได้ชัดว่าสเปกตรัมไปไกลกว่า 1 MHz (ออสซิลโลสโคปไม่ได้รับอนุญาตอีกต่อไป และไม่มีประเด็นในการเชื่อมต่อเครื่องวิเคราะห์) ส่วนที่เหลือเกิดจากสายเคเบิลเป็นเสาอากาศแบบสุ่มและระดับการป้องกัน

สำหรับโหมดอื่นๆ ของอินเทอร์เฟซ USB จำเป็นต้องใช้ออสซิลโลสโคปที่มีแบนด์วิดท์หลาย GHz

การพิจารณาสเปกตรัมอย่างต่อเนื่องเป็นอย่างไรและในเวลาเดียวกันให้อยู่ในกรอบของ NMI ปัจจุบันนั้นเป็นการสนทนาที่แยกจากกันและไม่ใช่สำหรับการอภิปรายแบบเปิดอนิจจา ... อย่างไรก็ตามในสิ่งพิมพ์ที่ตามมาคุณจะต้องกลับไปที่นั่น ไม่มีที่ไป ฉันจะพยายาม "อยู่ในขอบเขตของสิ่งที่ได้รับอนุญาต" ...

  1. มีแถบค้นหาที่ด้านบนของหน้าต่าง Google Play นี่คือสิ่งที่เราจะใช้ เราเปิดใช้งานและเขียนชื่อแอปพลิเคชันของเรา ไม่จำเป็นต้องป้อนให้ครบถ้วน ทันทีที่วัตถุที่ระบุในภาพหน้าจอปรากฏในผลการค้นหา เพียงแตะที่วัตถุนั้น
  1. เราจะเปลี่ยนเส้นทางไปยังหน้าแรกของโปรแกรม มีปุ่มสีเขียวขนาดใหญ่ที่ระบุว่าติดตั้ง คลิกเลย
  1. เรากำลังรอการสิ้นสุดการดาวน์โหลดแอปพลิเคชัน เนื่องจาก "น้ำหนัก" น้อยกว่า 5 MB เล็กน้อย กระบวนการจึงใช้เวลาไม่นาน
  1. พร้อม. หลังจากการติดตั้งอัตโนมัติสิ้นสุดลง เราสามารถเรียกใช้โปรแกรมได้จากที่นี่
  1. นอกจากนี้ ทางลัดการเปิดใช้จะปรากฏบนหน้าจอหลัก (หากเปิดใช้งานในการตั้งค่า)

การติดตั้งโปรแกรมเสร็จสมบูรณ์ และเราสามารถดำเนินการกับภาพรวมของการทำงานได้

ในภาพหน้าจอด้านล่าง คุณจะเห็นอินเทอร์เฟซการเขียนโปรแกรม ในที่นี้แบ่งออกเป็น 3 แท็บหลัก นอกจากนี้ยังมีไอคอนการตั้งค่าที่ทำในรูปแบบของเฟือง บนแท็บหลัก "SCAN" มี 4 เครื่องมือหลัก:

  • สแกนบาร์โค้ด. นี่คือเครื่องสแกน QR ที่ทำงานผ่านกล้อง
  • คีย์อินแบบแมนนวล ฟังก์ชั่นการป้อนข้อมูลด้วยตนเองเกี่ยวกับรหัส
  • ถอดรหัสจากไฟล์. การถอดรหัสจากไฟล์. จากที่นี่ คุณสามารถเปิดรหัส QR ที่ดาวน์โหลดไว้ก่อนหน้านี้และอ่านได้
  • ถอดรหัสจาก URL การสแกนโดยการอ้างอิง

ที่ด้านล่างมีปุ่มหลายปุ่มที่ไม่มีฟังก์ชันที่เป็นประโยชน์ คุณไม่ควรให้ความสนใจกับพวกเขา

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

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

ทันทีที่เราต้องการเริ่มการสแกนและเปิดเครื่องสแกนเอง โปรแกรมจะร้องขอการเข้าถึงทรัพยากรระบบที่จำเป็น โดยธรรมชาติแล้วจะต้องได้รับการแก้ไข คลิกปุ่มที่ทำเครื่องหมายไว้ในภาพหน้าจอ

ต่อไป เราเล็งเฟรมของสแกนเนอร์เพื่อให้แถบแนวนอนตกลงบน QR โดยตรง พยายามอย่าให้มือสั่นและในขณะเดียวกันก็รักษาโฟกัส การสแกนจะล้มเหลวโดยไม่มีความคมชัดปกติ

มีไฟพื้นหลังสำหรับการทำงานของเครื่องสแกนบาร์โค้ด QR ในสภาพแสงน้อย

เมื่อรู้รหัสแล้ว คุณจะเห็นข้อมูลที่แสดงในภาพหน้าจอด้านล่าง

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

  • สมุดโทรศัพท์ติดต่อ;
  • หมายเลขโทรศัพท์;
  • URL;
  • อีเมล;
  • แอปพลิเคชัน;
  • ที่ตั้ง;
  • ข้อความใด ๆ
  • บุ๊คมาร์ค;
  • เหตุการณ์ในปฏิทิน

ทั้งหมดมีลักษณะดังนี้:

เมื่อเลือกและตั้งค่าประเภทข้อมูลแล้ว เราเพียงแค่กดปุ่ม "เข้ารหัส" ในกรณีนี้ เราได้เข้ารหัสลิงก์แล้ว

เรามาลองเข้ารหัสข้อความตามอำเภอใจกัน ในการดำเนินการนี้ ให้เลือกรายการที่ต้องการ

ป้อนวลีในช่องที่กำหนดแล้วกดปุ่ม "เข้ารหัส"

ผลลัพธ์ดูดี มาเปลี่ยนสีกันอีกนิด เรากดปุ่มสำหรับสิ่งนี้

เลือกเฉดสีที่ต้องการจากจานสี

และชื่นชม QR ที่ได้รับ

ไปที่โปรแกรมถัดไปซึ่งมีฟังก์ชั่นที่น่าประทับใจ

เครื่องสแกนรหัส QR Droid

แอปพลิเคชันอื่นที่สามารถพบได้ใน Google Play คุณสามารถดาวน์โหลดผ่านลิงก์โดยตรงบนเว็บไซต์ Google สำหรับตอนนี้เราจะพิจารณาตัวโปรแกรมเอง

นี่คือลักษณะของทางลัดการเปิดใช้ QR Droid Code Scanner - คลิกที่มัน

แอปพลิเคชันนี้ไม่เหมือนกับแอปพลิเคชันก่อนหน้าซึ่งผลิตขึ้นในรัสเซียและทันทีที่เริ่มใช้งาน เราต้องคลิกที่ปุ่มที่มีข้อความว่า: "STARTING WORK"

สแกนเนอร์จะมองเห็นได้ทันที แต่ก่อนอื่น มาดูการตั้งค่ากันก่อน เราแตะที่ปุ่มที่มุมขวาบน

ในเมนูหลัก คุณสามารถดู 6 ปุ่มไทล์ที่เปลี่ยนเส้นทางผู้ใช้ไปยังส่วนที่ต้องการ นี่คือ:

ดังนั้นเพื่อใช้สแกนเนอร์ คุณต้องเปิดใช้งานในเมนูหลักและเมื่อวางเมาส์เหนือรหัส QR ให้กดปุ่ม "อ่าน"

ที่นี่หน้าจอเริ่มต้นถูกเลือกที่อยู่สำหรับ สำเนาสำรองและภาษาของอินเทอร์เฟซซอฟต์แวร์ได้รับการกำหนดค่า

ต่อไป เราสามารถตั้งค่าเครื่องสแกนได้ ใช้อัลกอริธึมที่เป็นกรรมสิทธิ์อย่างใดอย่างหนึ่ง: Zapper หรือ ZXing ด้านล่างนี้ คุณจะสามารถเปิดหรือปิดใช้งานเป้าเล็ง ตั้งค่าการทำงานอัตโนมัติหลังการสแกน และเปิดใช้งานการแสดงคำใบ้หรือคัดลอกลิงก์ไปยังคลิปบอร์ด

ในส่วนนี้ คุณสามารถกำหนดค่าซาวด์แทร็ก เปิดและปิดการสั่นได้ ขั้นตอนการบันทึกการดำเนินการในบันทึกและการโต้ตอบกับ นาฬิกาสมาร์ทแอนดรอยด์แวร์

จากนั้นเราจะสามารถส่งออกหรือนำเข้า สำรองหรือตั้งวันที่

อนุญาตให้ส่งข้อมูลที่ไม่ระบุชื่อ (ควรปิดการใช้งาน) เปิดใช้งานการตรวจสอบลิงก์ความปลอดภัยที่ได้รับระหว่างการสแกน หรือกำหนดค่าการสแกนเป็นชุด ฟังก์ชันต่างๆ เช่น การซูมหรือไฮไลต์มีให้ที่ด้านล่าง

แต่นี่ไม่ใช่จุดสิ้นสุดของการตั้งค่าของเรา นอกจากฟังก์ชันข้างต้นแล้ว เรามีดังต่อไปนี้:

  • การตั้งค่าการวางแนวหน้าจอ
  • ทำงานกับกล้องหน้า
  • ลิงก์แยกวิเคราะห์;
  • การแสดงของร้านค้า
  • ฟังก์ชั่นสลิปขยาย;
  • ข้อห้ามของอักขระพิเศษบางอย่าง
  • การเปิดใช้งานการแสดงตัวอย่างเว็บ
  • ค้นหาภาพที่บันทึกไว้

หน้าจอการตั้งค่าขั้นสุดท้ายมีคุณสมบัติที่น่าสนใจ เช่น การตั้งค่าจำนวนตำแหน่งสูงสุด การกำหนดค่า CSV ที่กำหนดเอง การเขย่าสมาร์ทวอทช์ และการบันทึกตำแหน่งที่ซ้ำกัน

นอกจากการตั้งค่าในเมนู QR Droid Code Scanner แล้ว ยังมีรายการที่เรียกว่า "เพิ่มเติม" ลองพิจารณาการทำงานของมัน

มีความเป็นไปได้ดังกล่าว:

พิจารณาแอปพลิเคชั่นสุดท้าย แต่ใช้งานได้จริงในรายการของเรา

NeoReader QR & เครื่องสแกนบาร์โค้ด

โปรแกรมนี้เหมือนกับโปรแกรมอื่นๆ คุณสามารถดาวน์โหลดและติดตั้งผ่าน Google playหรือตามลิงค์โดยตรง เมื่อเสร็จแล้วคุณสามารถไปทำงานกับเธอได้โดยตรง

ในการเปิดตัวครั้งแรก เราจะต้องปฏิบัติตามคำขอเข้าถึง คลิก "อนุญาต"

จากนั้นหน้าต่างพร้อมการตั้งค่าจะปรากฏขึ้น ที่นี่ คุณจะสามารถเลือกภาษา ระบุประเทศ เพศ และอายุของคุณได้ ช่องทำเครื่องหมายสองช่องด้านล่างช่วยให้คุณสามารถเปิดหรือปิดการเข้าถึงข้อมูลทางภูมิศาสตร์ของโปรแกรมได้

คุณสามารถเริ่มสแกนได้จริง เล็งกล้องไปที่รหัส QR และ NeoReader QR & Barcode Scanner จะจดจำเนื้อหาโดยอัตโนมัติ

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

ฟังก์ชันมาตรฐาน

สมาร์ทโฟนและแท็บเล็ตบางรุ่น (ขึ้นอยู่กับยี่ห้อ) มีฟังก์ชันการสแกนรหัส QR เป็นมาตรฐาน และทุกอย่างสามารถทำได้โดยไม่ต้องใช้แอปพลิเคชัน เราจะไม่แสดงรายการทั้งหมด เราจะแตะเฉพาะรุ่นจาก Xiaomi เท่านั้น

สรุป

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

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

วิดีโอสอน