ΠΊΠ°ΠΊ ΡΠ·Π½Π°ΡΡ ΡΠΊΠ°Π½ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΡΠΈ windows
Π Π°Π±ΠΎΡΠ° Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ. Π§ΠΈΡΠ°Π΅ΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Ρ ΠΊΠ»Π°Π²ΠΈΡ.
Π Π½Π°ΡΠ°Π»Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ: Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Ρ ΠΊΠ»Π°Π²ΠΈΡ?
ΠΠΈΡΠ½ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΠΈΠ·ΡΡΠΈΡΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΡΠΏΠΎΠ΄Π²ΠΈΠ³Π»Π° Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΠΎΡΠ΄Π΅Π»Π΅ ΡΠΊΠΎΠ»ΠΎΠ³ΠΎΠ². ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ Π»ΡΠ΄Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΡΡΡΠ°Ρ ΠΊΠ°ΠΊ Π±ΠΎΡΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ², Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π±Π΅Π· Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ, Π΄Π° ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ»ΠΊΠΎΠΌ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΡΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ.
ΠΠ°ΡΠΈΠ½Π°Π΅ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡ Π²ΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎ (ΡΠΎΡ, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π½Π° ΠΎΠ±ΡΡΠ²ΠΊΠ°Ρ Π±ΡΠΌΠ°ΠΆΠ΅ΠΊ), ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡ βΠΠΎΠ½ΡΠ»?β, ΡΠΎΡ β βΠΠ°, ΠΏΠΎΠ½ΡΠ».β Π£Ρ ΠΎΠ΄ΠΈΡΡ, ΡΠ΅ΡΠ΅Π· Π΄Π΅Π½Ρ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡ ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ βΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρβ, βΠ’Π°ΠΌ ΡΡΠΎ-ΡΠΎ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΎΠΊΠΎΡΠΊΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡβ ΠΈ Ρ.Π΄. ΠΈ Ρ.ΠΏ. Π‘ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡ βΠ§ΡΠΎ Π΄Π΅Π»Π°Π»?β ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π·Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ β ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅Ρβ¦ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π» ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ? ΠΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. Π‘ΠΈΠ΄Π΅ΡΡ ΡΠ΅Π»ΡΠΉ Π΄Π΅Π½Ρ Π·Π° ΡΠΏΠΈΠ½ΠΎΠΉ Ρ Π½Π΅Π³ΠΎ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ β Π½Π΅ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΠ°ΡΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π·Π° ΡΠΎΠ±ΠΎΠΉ Π²ΡΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π» β ΠΈΠ·ΡΠ²Π΅ΡΡΡΠ²ΠΎ. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΏΡΠΎΡΡΠΈΠ» Π΄Π°Π»ΡΡΠ΅ Π½Π΅ΠΊΡΠ΄Π°, Π΄Π°ΠΆΠ΅ Π½Π΅ HintβΡ ΡΠ΄Π΅Π»Π°Π», Π° Π² ΡΡΠΏΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΠΌ, ΡΡΠΎ ΠΊΡΠ΄Π° ΠΏΠΈΡΠ°ΡΡ. ΠΠ΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ. Π ΠΈΡΠΎΠ³Π΅, ΡΠΎΠ΄ΠΈΠ»Π°ΡΡ ΠΏΡΠΎΡΡΠ°Ρ, Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΈΠ΄Π΅Ρ β ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΊΡ-ΡΠΏΠΈΠΎΠ½Π°, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π»Π° Π²ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡ ΡΠ²ΠΎΡΠΈΡ Π½Π°Π΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΠ² ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊΠ°, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°Π΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ (ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π» ΠΊΡΠ΄Π°β¦ΠΌΠ°Π»ΠΎ Π»ΠΈ). ΠΠΎΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΌΠΎΠΈΠΌ ΠΏΡΠ΅Π²Π΄ΠΎ-ΡΠΏΠΈΠΎΠ½ΠΎΠΌ ΠΌΠ½Π΅ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°Π½ΠΈΡ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ.
ΠΡ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°Π½ΠΈΡ Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ:
Π‘ΡΠ°Π·Ρ ΠΎΠ³ΠΎΠ²ΠΎΡΡΡΡ β Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Π½Π΅ Π±ΡΠ΄Ρ Π²ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π²Π΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ ΠΌΠΎΠ΅Π³ΠΎ βΡΠΏΠΈΠΎΠ½Π°β, ΡΠΎΠ»ΡΠΊΠΎ ΡΡ ΡΠ°ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠ½Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ Windows API, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ, Π° ΡΡΠΎ ΡΠΆΠ΅ ΡΠ΅Π»Π°Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Π°ΠΌ. Π Π±ΡΡΠ΅ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΎΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π΄Π²Π° Π±Π°ΠΉΡΠ° Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» (Π²Π΅ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ° β 32 Π±Π°ΠΉΡΠ°, ΡΠΎ Π΅ΡΡΡ 16 Π½Π°ΠΆΠ°ΡΠΈΠΉ ΠΊΠ»Π°Π²ΠΈΡ) β ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄, Π²ΡΠΎΡΠΎΠΉ β ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ (Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ ΠΎΠ½ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ). Π ΡΠΈΡΠ»ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Ρ ΡΡΠ΅Π±ΡΡΡΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΎΡΠ΅Π½Ρ ΡΠ΅Π΄ΠΊΠΎ, Π½ΠΎ ΡΡΠΎΠ±Ρ ΠΈΡ ΡΠ·Π½Π°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΊΠΎΠΉ Π½Π° PascalβΠ΅:
Π’ΠΎ Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ al ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΊΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»Π°, Π° Π² ah β ΡΠΊΠ°Π½ ΠΊΠΎΠ΄.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ΄Ρ.
ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ΄Ρ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ. Π’ΠΎ Π΅ΡΡΡ, Π·Π½Π°Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΡΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎ 100% ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ Ρ ΠΎΡΡ ΡΠ΅ΡΠ΅Π· Π½Π΅Π΄Π΅Π»Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎ ΠΎΠ½ ΡΠ°ΠΊΠΎΠ³ΠΎ Π½Π°ΠΆΠΈΠΌΠ°Π» (ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ). ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π·Π½Π°Ρ ΡΠ΅ΠΊΡΡΡΡ ΡΠ°ΡΠΊΠ»Π°Π΄ΠΊΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎ ΠΏΠΈΡΠ°Π» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½ΠΎ ΡΡΠΎ ΡΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ Π»ΠΎΠ²ΡΡΠΊΡ Π΄Π»Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ»Π°Π²Π»ΠΈΠ²Π°ΡΡ Π²ΡΠ΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ ΠΈ ΠΏΠΈΡΠ°ΡΡ Π»ΠΎΠ³-ΡΠ°ΠΉΠ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ.
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΠΏΡΡΠ½ΡΠΉ Π³Π»Π°Π· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΡΡΠ°Π·Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ ΠΈΠ· DLL, ΡΡΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ. Π ΠΈΠ΄Π΅Π°Π»Π΅ Π² DLL ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΊΠΎΠ΄Ρ ΠΈ ΠΎΡΡΡΠ»Π°ΡΡ ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° ΡΠ° Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΡΡΡ ΠΏΠΈΡΠ΅Ρ ΠΈΡ ΡΠ°ΠΉΠ», Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ ΡΠ³ΠΎΠ΄ΠΈΡΡΡΡ ΠΈ ΡΠ°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
Π·Π΄Π΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π±ΡΠ»Π° Π»ΠΈ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ°. ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ». ΠΡΠ»ΠΈ ΡΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ±ΡΠ°ΡΡ, ΡΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ Π±ΡΠ΄Π΅Ρ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡΡΡ, Ρ.Π΅. Π² ΡΠ°ΠΉΠ» Π·Π°ΠΏΠΈΡΠ΅ΡΡΡ Π½Π°ΠΆΠ°ΡΠ°Ρ ΠΊΠ»Π°Π²ΠΈΡΠ° ΠΈ ΠΎΡΠΏΡΡΠ΅Π½Π½Π°Ρ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΈΡΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π»ΠΎΠ²ΡΡΠΊΠΈ Ρ ΡΠ΄Π΅Π»Π°Π» Π²ΠΎΡ ΡΠ°ΠΊΡΡ ΡΠΎΡΠΌΡ:
Π Π²Π΅ΡΡ
Π½ΠΈΠΉ Memo Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠ΅ΠΊΡΡ, Π° Π² Π½ΠΈΠΆΠ½Π΅ΠΌ, ΠΏΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, Π²ΡΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π»ΠΎΠ³-ΡΠ°ΠΉΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ βΠ½Π° Π»Π΅ΡΡβ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ, ΡΡΠΎ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ Ρ.Π΄. ΠΈ Ρ.ΠΏ.
ΠΡΡΠ°ΡΠΈ, ΡΠΎΠ²Π΅ΡΡΡ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎ-Π±ΠΎΠ»ΡΡΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΡ Π½Π° ΡΠ°ΠΉΠΌΠ΅ΡΠ΅, ΠΈΠ½Π°ΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΠΏΠ΅Π²Π°ΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π½Π°ΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈΠ· DLL. ΠΡΠ΄Π΅ΠΌ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ (Π° ΠΈΡ Π°ΠΆ 2 ΡΡΡΠΊΠΈ) ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎΡΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΡΠΌΡ ΠΏΠΈΡΠ΅ΠΌ:
ΠΠ° ΡΠΎΠ±ΡΡΠΈΠ΅ onCreate Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΊΡΡΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π»ΠΎΠ³-ΡΠ°ΠΉΠ» ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π°ΡΡ Π»ΠΎΠ²ΡΡΠΊΡ.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π° Π·Π°ΠΊΡΡΡΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π»ΠΎΠ²ΡΡΠΊΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ³ΡΡΠ·ΠΈΡΡ:
ΠΡΠ²ΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π»ΠΎΠ³-ΡΠ°ΠΉΠ»Π° Π² Memo Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ:
ΠΠΎΡ ΠΈ Π²ΡΠ΅, ΡΡΠΎ ΠΎΡ Π½Π°Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ. Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ² ΡΡΠ΄ΠΎΠΌ Ρ Π½ΠΈΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ DLL) ΠΈ Π»ΡΠ±ΡΠ΅ΠΌΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ:
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅ Π² wParam ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, Π° Π² LParam β ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ·Π½Π°ΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ. ΠΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ Π² HEX-ΡΠΎΡΠΌΠ΅ ΠΈ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ ΠΈΡ
ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ. ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ β ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ, ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Π²ΠΌΠ΅ΡΡΠ΅.
ΠΠΈΡ Ρ ΡΠ΅ΡΡΡΠ΅ΠΉΠ½: ΡΡΠΈΠΌ ΠΏΠΈΠ½Π³Π²ΠΈΠ½Π° ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Π° ΠΊΠ»Π°Π²ΠΈΡ
Π§ΡΠΎ Π±Ρ ΡΡ ΡΠ°ΠΌ Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°Π» Π½Π° ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅, X-ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΡΠ΄ΡΡ, Π² ΠΎΠ±ΡΠ΅ΠΌ-ΡΠΎ, Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ, ΡΡΠΎ Π½Π° Π½Π΅ΠΉ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½ΠΎ. ΠΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ ΡΠ½Π°ΡΠ°Π»Π° ΠΈΠΊΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°Π²ΠΈΡ ΡΠ΄ΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΆΠ΅ ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ². ΠΡΠ»ΠΈ Π² Windows ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΡ ΠΊΠ»Π°Π²ΠΈΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ Π² Linux ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈ Π² X-Window.
Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΡΠΈ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ xev, Π²Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠΎΡΡΠ°Π² Π₯-ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΎΡΠ»Π΅ Π΅Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΊΠ½ΠΎ Event Tester, ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ»Π°Π²ΠΈΡΠΈ, Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ Π²ΡΠ΄Π°Π²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄:
$ xev
.
KeyRelease event, serial 31, synthetic NO, window 0x3e00001,
root 0x67, subw 0x0, time 279734676, (311,611), root:(1104,687),
state 0x2000, keycode 236 (keysym 0x1008ff19, XF86Mail), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 31, synthetic NO, window 0x2600001,
root 0x67, subw 0x0, time 265877259, (883,334), root:(886,358),
state 0x0, keycode 161 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
ΠΡΠ²ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡΡΠΊΠΈ ΠΏΡΠΈ ΠΏΡΠΎΡ ΠΎΠ΄Π΅ Π½Π°Π΄ ΠΎΠΊΠ½ΠΎΠΌ Event Tester. ΠΠ»Π°Π²ΠΈΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊ KeyRelease, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ keycode ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ·Π½Π°ΡΡ. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π°ΠΆΠ°ΡΡ Π΄Π²Π΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ. ΠΠ»Π°Π²ΠΈΡΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 236 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π΄Π»Ρ X-ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² keysym, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ XF86Mail, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² KDE Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ. ΠΠ»Ρ ΠΊΠ»Π°Π²ΠΈΡΠΈ Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ 161 ΠΊΠΎΠ΄ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»Π°Π²ΠΈΡΠ° Π½Π°ΠΆΠΈΠΌΠ°Π΅ΡΡΡ, Π½ΠΎ Π΅Π΅ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ Π½Π΅ Π²ΡΠ΄Π°Π΅ΡΡΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ΄ΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π Π²ΡΠ²ΠΎΠ΄Π΅ dmesg Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΡΡΠΎΠΊΠ°:
Use ‘setkeycodes 0xec ‘ to make it known.
Π’ΠΎ Π΅ΡΡΡ ΡΠ΅Π±Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ setkeycodes, ΠΏΡΠΈ ΡΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ keycode Π²ΡΠ±ΡΠ°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. ΠΠ΅ΡΠ΅Π²Π΅Π΄ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΡΠΈΡΡΡ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ (Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠΎΠ² ΡΡΠΎ ΡΠΌΠ΅ΡΡ) ΠΈ ΠΏΡΠΈΠ±Π°Π²Ρ 128. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ 0xec=236, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ 364. ΠΡΠ»ΠΈ Π΅ΡΡΡ ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ, ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΡ ΠΈ Π½Π΅Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, Π·Π°ΠΏΡΡΡΠΈΠ² Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΡΠΈΠ»ΠΈΡΡ getkeycodes ΠΈΠ»ΠΈ dumpkeys. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²ΡΠ²ΠΎΠ΄ Β«getkeycodes | grep Β» Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π°Π», Π·Π½Π°ΡΠΈΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
ΠΠΎΠΌΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ ΡΠΏΠΎΡΠΎΠ±Π½Π° ΠΈ ΡΡΠΈΠ»ΠΈΡΠ° Π₯Keycaps (www.jwz.org/xkeycaps), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΠΎΠ½Ρ-ΡΠ½Π΄ΠΎΠΌ ΠΊ Xmodmap.
Π ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° xev, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄, Π²ΡΠ΄Π°Π²Π°Π΅ΠΌΡΠΉ ΡΠ΄ΡΠΎΠΌ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ showkey ΠΈΠ»ΠΈ getkeycodes:
$ showkey
ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π±ΡΠ»Π° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ UNICODE
Π½Π°ΠΆΠΌΠΈΡΠ΅ Π»ΡΠ±ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΡΠ΅ΡΠ΅Π· 10 ΡΠ΅ΠΊ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ).
0xe0 0x6c 0xe0 0xec
ΠΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π΅ ΡΠΈΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠ΅, Π²ΡΠΎΡΡΠ΅ β ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π½Π°ΠΆΠ°ΡΠΈΡ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠ² Π² X-Window
$ cat /usr/include/X11/XF86keysym.h
/*
* Keys found on some «Internet» keyboards.
*/
#define XF86XK_Standby 0x1008FF10
#define XF86XK_AudioLowerVolume 0x1008FF11
#define XF86XK_AudioRaiseVolume 0x1008FF13
#define XF86XK_AudioPlay 0x1008FF14
#define XF86XK_AudioStop 0x1008FF15
#define XF86XK_Mail 0x1008FF19
keycode 161 XF86Calculator
keycode 174 XF86AudioLowerVolume
keycode 176 XF86AudioRaiseVolume
keycode 162 XF86AudioPause
Π ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΏΡΠΈΠ½ΡΠΈΠΏ, Π΄ΡΠΌΠ°Ρ, ΡΡΠ΅Π½. ΠΡΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π½ΠΎΡΠΈΡΡ ΠΊΠ°ΠΊ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΌ, ΡΠ°ΠΊ ΠΈ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΠΎ ΠΌΠΎΠΈΠΌ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡΠΌ, ΠΊΠΎΠ΄Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΊΠ»Π°Π²ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ. ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅ΡΡ ΡΠ°ΠΉΠ» Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏ, Π΅ΡΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ»Π°Π²Π΅ ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π±ΡΠ΄Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π° Gnome Ρ GDM ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ Π² ΠΎΠ±ΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΠ°ΠΉΠ» /etc/X11/Xmodmap.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΡΠ΅Π»ΡΠ±ΠΎΠΏΡΡΠ½Π΅ΠΉΡΠΈΠΉ ΡΠ°ΠΉΠ» /etc/X11/Xsession.d/80ubuntu-xmodmap ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ:
/usr/bin/xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || true
/.icewm, ΠΏΠΎΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠΎΠΊΡ:
Π Fluxbox ΡΡΡΠΎΠΊΠ° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
Π ΠΊΠΎΠ½ΡΠΈΠ³Π°Ρ ΠΎΠ±ΡΡΠ½ΠΎ Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΎΠΊΠΎΠ½Π½ΡΠΌΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°ΠΌΠΈ, Π΄ΡΠΌΠ°Ρ, ΡΡ Π±Π΅Π· ΡΡΡΠ΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΡΡΡ ΡΠ°ΠΌ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅Π°ΠΊΡΠΈΠΈ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ
$ setkeycodes 0xec 118
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΠΎΠΉ ΡΠ°ΡΠΊΠ»Π°Π΄ΠΊΠΈ. Π Ubuntu ΠΈ Π²ΡΠ΅Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ , Π±Π°Π·ΠΈΡΡΡΡΠΈΡ ΡΡ Π½Π° Debian, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ /etc/console-setup/boottime.kmap.gz. ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΊΠ»Π°Π²ΠΈΡΠ°ΠΌΠΈ Π½Π΅Ρ, Π·Π°Π½ΠΎΡΠΈΠΌ ΡΡΡ ΡΡΡΠΎΠΊΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠ°ΡΡΠΎΠ²ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² /etc/init.d/rc.local.
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΡΠ°Π»ΠΎΡΡ Π·Π°Π΄Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ΄Π΅ΡΡ ΠΏΡΠΎΡΡΠΎΡ Π΄Π»Ρ ΡΠ²ΠΎΡΡΠ΅ΡΡΠ²Π° Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π² ΠΈΠΊΡΠ°Ρ . Π keymaps(5) ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ keycode Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
< plain | >keycode keynumber = keysym
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π½Π° ΠΎΠ΄Π½Ρ Π½Π°Π·Π°Π΄ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ»Π°Π²ΠΈΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 105
keycode 105 = Decr_Console
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π½Π° ΠΎΠ΄Π½Ρ Π²ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΈ ΠΊΠ»Π°Π²ΠΈΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 106
alt keycode 106 = Incr_Console
ΠΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΡΠ²ΠΎΠΈ Π²Π°ΡΠΈΠ°Π½ΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ :
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 120 Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ F100; Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°Π΄Π°Π½ΠΎ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. ΠΠΌΠ΅ΡΡΠΎ F100, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΠΌΡ.
/.console-setup), Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΠΉΠ», ΡΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ
Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΡΠ»ΠΈ ΡΡ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΡΠ΅ΡΠΈΡΡΡΡ Π½Π° ΡΡΠΎΡ ΡΠ°Π³, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΎΠ½, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ Π½Π° ΠΏΠ΅ΡΠ²ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ, Π° Π² ΠΊΠΎΠ½ΡΠ΅ Π½Π΅ Π·Π°Π±ΡΠ΄Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Π½ΠΎΡΡΠ±ΡΠΊΠ΅
$ sudo mcedit /etc/acpi/events/lid
$ sudo mcedit /etc/acpi/events/power
ΠΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, Π² KUbuntu ΡΡ Π½Π°ΠΉΠ΄Π΅ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ Π΄Π΅ΠΌΠΎΠ½Π° acpid:
$ sudo /etc/init.d/acpid restart
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ KeyTouch (keytouch.sf.net) Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΡΠΎΠΌΠ½Π΅Π΅, ΡΡΠ° ΡΡΠΈΠ»ΠΈΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΡ ΠΊΠ»Π°Π²ΠΈΡ. Π₯ΠΎΡΡ Ρ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠ±ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΡΠ²ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΎΡΠ»ΠΈΡΠ°ΡΡΠ΅Π΅ΡΡ ΠΎΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ° ΡΠ°ΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΡΠΎΠΌΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ² ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π³ΠΎΡΠΎΠ²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ.
ΠΠΎΠ»Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΠ°ΡΡΠΈ
ΡΠΈΡΠ°ΠΉ Π² ΡΠ½Π²Π°ΡΡΠΊΠΎΠΌ Π½ΠΎΠΌΠ΅ΡΠ΅ Π₯Π°ΠΊΠ΅ΡΠ°!
2 ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π²Π²Π΅Π΄Π΅Ρ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΈΡΠ»ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΆΠΌΠ΅Ρ ΠΊΠ°ΠΊΡΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠ»Π°Π²ΠΈΡΡ. ΠΡΠΏΠΎΠ»Π½ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, Π±ΡΠ»Π° Π»ΠΈ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ°, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠ°Ρ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π Π΅Π·ΠΈΠ΄Π΅Π½ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠ³ΡΡ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅, Π²ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π§ΡΠΎ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Microsoft Windows, ΡΠΎ ΠΎΠ½Π° Π±ΡΠ»Π° ΠΎΠΏΠΈΡΠ°Π½Π° Π² 11 ΡΠΎΠΌΠ΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°Β», ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Microsoft Windows Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°Β».
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°
ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΡΠΎΠ½ΠΊΠΈΠΌ ΠΊΠ°Π±Π΅Π»Π΅ΠΌ. ΠΠ°Π»ΠΎΠ³Π°Π±Π°ΡΠΈΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠ½ΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
Π§ΡΠΎ ΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ?
ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΠ°ΠΌ Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ! Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠ³Π΄Π° Π²Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΡΠ΅ Π½Π° ΠΊΠ»Π°Π²ΠΈΡΠΈ, ΠΎΠ½ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π½ΠΎΠΌΠ΅Ρ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π² ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ.
ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ°
ΠΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΡΡ ΡΡ Π΅ΠΌΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠ·Π»Π°Ρ ΠΌΠ°ΡΡΠΈΡΡ (ΡΠΈΡ. 2.1).
Π ΠΈΡ.2.1. Π£ΠΏΡΠΎΡΠ΅Π½Π½Π°Ρ ΡΡ Π΅ΠΌΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π½ΡΠ»Ρ, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΠΉ. ΠΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½Π° ΠΊΠ»Π°Π²ΠΈΡΠ° Π½Π΅ Π½Π°ΠΆΠ°ΡΠ°, ΡΡΠΎΠ²Π΅Π½Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ Π½Π° Π²ΡΠ΅Ρ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ (ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΡΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΡ ΠΏΠΈΡΠ°Π½ΠΈΡ +5 Π ΡΠ΅ΡΠ΅Π· ΡΠ΅Π·ΠΈΡΡΠΎΡΡ).
ΠΡΠ»ΠΈ Π²Ρ Π½Π°ΠΆΠΌΠ΅ΡΠ΅ Π½Π° ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ ΠΊΠ»Π°Π²ΠΈΡΡ, ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΎΠΊΠ°ΠΆΡΡΡΡ Π·Π°ΠΌΠΊΠ½ΡΡΡΠΌΠΈ. ΠΠΎΠ³Π΄Π° Π½Π° ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π½ΡΠ»Ρ, ΡΠΎ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ Π½Π° Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π½ΡΠ»Ρ.
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΠΉ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΡΠΎΠ²Π΅Π½Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π½ΡΠ»Ρ, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ Π½Π°ΠΆΠ°ΡΠΈΠ΅ Π½Π° ΠΊΠ»Π°Π²ΠΈΡΡ. ΠΠ½ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π² ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π² ΠΌΠ°ΡΡΠΈΡΠ΅. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΈ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΎΡΠΏΡΡΠΊΠ°Π΅ΡΠ΅ Π½Π°ΠΆΠ°ΡΡΡ ΡΠ°Π½Π΅Π΅ ΠΊΠ»Π°Π²ΠΈΡΡ.
Π‘ΠΊΠ°Π½-ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΡΠΈ
ΠΠΎΠΌΠ΅Ρ ΠΊΠ»Π°Π²ΠΈΡΠΈ, ΠΏΠΎΡΡΠ»Π°Π΅ΠΌΡΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ, ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡ Π΅ΠΌΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ, Π½ΠΎ Π½Π΅ ΠΎΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π½Π°Π½Π΅ΡΠ΅Π½Π½ΡΡ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ ΠΊΠ»Π°Π²ΠΈΡ. ΠΡΠΎΡ Π½ΠΎΠΌΠ΅Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠΌ (Scan Code). Π‘Π»ΠΎΠ²ΠΎ scan («ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅»), ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π΅Ρ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΡΠΊΠ°Π½ΠΈΡΡΠ΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ.
ΠΠΎΠ΄ ASCII Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ
ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½ΡΠΆΠ΅Π½ Π½Π΅ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ, Π° ΠΊΠΎΠ΄, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΡΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠ΅ (ΠΊΠΎΠ΄ ASCII).
ΠΠΎΠ΄ ASCII Π½Π΅ ΡΠ²ΡΠ·Π°Π½ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠΎ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° ASCII Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»Π°Π²ΠΈΡΠ° Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Β«1Β» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ΅ ΠΈ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΡΠΈΠΌΠ²ΠΎΠ»Π° Β«!Β» (Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π±ΡΠ»Π° Π½Π°ΠΆΠ°ΡΠ° Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠ»Π°Π²ΠΈΡΠ΅ΠΉ ).
ΠΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ΄ ASCII Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ MS-DOS ΡΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ BIOS. ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ°ΡΡΠΈΡΡΡΡΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠΌΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΌΠΈ Π² ΡΠΎΡΡΠ°Π² Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ MS-DOS, ΡΠ°ΠΊ ΠΈ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
Π Π΅ΠΆΠΈΠΌ Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ°
ΠΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΡ Π½Π° ΠΊΠ»Π°Π²ΠΈΡΡ ΠΈ Π½Π΅ ΠΎΡΠΏΡΡΠΊΠ°ΡΡ Π΅Π΅, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌ Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ°. ΠΡΠΈ ΡΡΠΎΠΌ Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠΌ Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ°, ΠΏΠΎΡΡΠ»Π°Π΅ΡΡΡ ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ. Π Π΅ΠΆΠΈΠΌ Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ° ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ Π²Π²ΠΎΠ΄ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ 16-Π±Π°ΠΉΡΠΎΠ²ΡΠΉ Π±ΡΡΠ΅Ρ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ.
Π’ΠΈΠΏΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡ
ΠΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. ΠΡΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² IBM PC/XT, 84-ΠΊΠ»Π°Π²ΠΈΡΠ½Π°Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π΄Π»Ρ IBM PC/AT ΠΈ 101-ΠΊΠ»Π°Π²ΠΈΡΠ½Π°Ρ (ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ) ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π΄Π»Ρ IBM PC/AT. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π±ΠΎΡΡ (XT/AT), ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΊΡΡΡΠΊΠ΅. ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Microsoft Windows ΠΏΠΎΠ»ΡΡΠΈΠ»Π° ΡΠΈΡΠΎΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅, ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π½Π΅Π΅ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. Π ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ ΡΠΈΠΏΠ° IBM PC/AT Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠ΅ΡΠ²Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΠ±Π»ΠΈΡΡΠ΅Ρ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅Π½Ρ Start, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π»Π΅Π²ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΌΡΡΠΈ, Π° Π²ΡΠΎΡΠ°Ρ β Π²ΡΠ·ΠΎΠ² ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΌΡΡΠΈ.
ΠΠΎΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠΎΠ², ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ, Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠΈΠΏΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°.
ΠΠΎΠΌΠΏΡΡΡΠ΅Ρ IBM PC/XT
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ ΡΠΈΠΏΠ° IBM PC/XT ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΡΡΡ Ρ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠΈ 60h ΠΈ 61h.
ΠΠΎΡΡ 60h Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡΡ 61h ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ, ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π±ΠΈΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ Π±ΠΈΡΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° Π² ΡΠ΅Π³ΠΈΡΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π±ΠΈΡΠ°, Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π°ΠΏΠΈΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠΎΡΡ:
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΊΠΎΡΠΎΡΡΠ½ΡΠΌΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΆΠΈΠ³Π°ΡΡ ΠΈΠ»ΠΈ Π³Π°ΡΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Ρ Scroll Lock, Num Lock ΠΈ Caps Lock, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π½Π° Π»ΠΈΡΠ΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
ΠΠ»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΡ 60h Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π·Π°ΠΏΠΈΡΠΈ. ΠΡΠΎΡ ΠΏΠΎΡΡ ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Π½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ Intel 8042, ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΠΌ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ, ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΡΡΠ° 60h Π½Π° Π·Π°ΠΏΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
Β· ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π² ΡΠ΅ΠΆΠΈΠΌ Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ°;
Β· ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Π° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ°;
Β· ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π°ΠΌΠΈ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ Π½Π° Π»ΠΈΡΠ΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
ΠΡΠΎΡΠ΅ΡΡΠΎΡ 8042 ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π½ΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. Π§Π΅ΡΠ΅Π· ΠΏΠΎΡΡ 64h, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ±ΡΠΎΡ (ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅) ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° 80286 Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΈΠ· Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΡΠΉ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎΠ± ΡΡΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ ΠΈΠ· 6 ΡΠΎΠΌΠ° Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°Β», ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΠΠ°ΡΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Intel 80286/80386/80486Β».
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠ»Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ 8042, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅Π³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡΡΡΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΏΡΠΎΡΠΈΡΠ°Π² ΡΠ»ΠΎΠ²ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ 8042 ΠΈΠ· ΠΏΠΎΡΡΠ° Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ 64h. ΠΠΈΡ Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ 1 Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ.
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° 8042:
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠΆΠ΄Π΅ΡΡΡ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° 8042, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ»Π°ΡΡ Π΅ΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π·Π°ΠΏΠΈΡΠ°Π² Π΅Π΅ Π² ΠΏΠΎΡΡ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ 60h:
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΡΡΠΎΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ°. ΠΡΠΎΡΠΎΠΉ ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π±Π°ΠΉΡΡ ΡΠ°ΠΊΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² ΠΏΠΎΡΡ 60h, ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΠ²ΡΠΈΡΡ Π² Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° 8042 Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ:
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΡΠ΅ΠΆΠΈΠΌΠ° Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ° Π² ΠΏΠΎΡΡ 60h Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 0F3h, Π·Π°ΡΠ΅ΠΌ Π±Π°ΠΉΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°. ΠΠΈΠΆΠ΅ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ Π±Π°ΠΉΡΠ° ΡΠ΅ΠΆΠΈΠΌΠ° Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ°:
ΠΠ΅ΡΠΈΠΎΠ΄ Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΡΠ»ΠΎΠΊ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Π°, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π² ΠΎΠ΄Π½Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½ΠΈΠΆΠ΅, Π½ΠΎ ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 9 ΠΈΠ»ΠΈ 15h.
ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ°, mc:
ΠΠ°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ
ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ BIOS ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ° ΡΠ°Π²Π½ΡΠΌ 500 ΠΌΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄Π΅ Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΠ°, ΡΠ°Π²Π½ΡΠΌ 10 ΠΏΠΎΠ²ΡΠΎΡΠ°ΠΌ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π΄Π»Ρ Π²Π°Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π°ΠΌΠΈ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ Π½Π° Π»ΠΈΡΠ΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 0EDh. ΠΡΠ»Π΅Π΄ Π·Π° ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π² ΠΏΠΎΡΡ 60h Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π±Π°ΠΉΡ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ:
1 β Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ Scroll Lock;
0 β Π²ΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π΅ΡΠ΄ΠΈΠΎΠ΄ Scroll Lock
1 β Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ Num Lock;
0 β Π²ΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ Num Lock
1 β Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ Caps Lock;
0 β Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ Caps Lock
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° KBDLED
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ KBDLED, ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π°ΠΌΠΈ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ Π½Π° Π»ΠΈΡΠ΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ (Π»ΠΈΡΡΠΈΠ½Π³ 2.1). Π’Π°ΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΡΡΠ° 60h, ΡΠ°ΠΊ ΠΊΠ°ΠΊ BIOS Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° Π²ΠΊΠ»ΡΡΠΈΡ Π²ΡΠ΅ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Ρ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° Π²Ρ Π½Π΅ Π½Π°ΠΆΠΌΠ΅ΡΠ΅ Π»ΡΠ±ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΊΠ»ΡΡΠΈΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Ρ.
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° KBDLED ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ DOS, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Microsoft Windows NT.
ΠΠΈΡΡΠΈΠ½Π³ 2.1. Π€Π°ΠΉΠ» kbdled\kbdled.c
ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° ΠΊ Π»ΠΈΠ½ΠΈΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ IRQ1. ΠΡΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ INT 09h.
ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ BIOS, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈ ΡΠ΅Π·ΠΈΠ΄Π΅Π½ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ INT 09h. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΡΠ΅ΠΏΠΎΡΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ INT 09h
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π² ΡΠΎΡΡΠ°Π² BIOS?
ΠΡΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
Β· ΡΠΈΡΠ°Π΅Ρ ΠΈΠ· ΠΏΠΎΡΡΠ° 60h ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ;
Β· Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ASCII Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π±ΡΡΠ΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π°Π½Π½ΡΡ BIOS;
Β· ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π² Π΅Π΄ΠΈΠ½ΠΈΡΡ Π±ΠΈΡ 7 ΠΏΠΎΡΡΠ° 61h, ΡΠ°Π·ΡΠ΅ΡΠ°Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ;
Β· Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠΎΡ Π±ΠΈΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅;
Β· Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π² ΠΏΠΎΡΡ 20h Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 20h Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.
ΠΡΡΠ΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
ΠΡΡΠ΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈΠΌΠ΅Π΅Ρ Π΄Π»ΠΈΠ½Ρ 32 Π±Π°ΠΉΡΠ° ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ IBM PC/XT ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 0000h:041Eh.
Π ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ IBM PC/AT ΠΈ IBM PS/2 ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ Π΄Π²ΡΡ ΡΠ»ΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ Ρ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠΈ 0000h:0480h (ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ° Π½Π°ΡΠ°Π»Π° Π±ΡΡΠ΅ΡΠ°) ΠΈ 0000h:0482h (ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ° Π±ΡΡΠ΅ΡΠ°). ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΈ ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, 001Eh ΠΈ 003Eh. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° 0040h, ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° Π² IBM PC/AT ΠΈ IBM PS/2 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π΅Π³ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² IBM PC/XT.
ΠΡΡΠ΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ°ΠΌΡΠ΅ ΡΡΠ°ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΠΎΡΠ΅ΡΡΠ½Ρ. ΠΠ²Π΅ ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π°Π½Π½ΡΡ BIOS Ρ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠΈ 0000h:041Ah ΠΈ 0000h:041Ch ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° Π½Π°ΡΠ°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ Π±ΡΡΠ΅ΡΠ°. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΡΠ°Π²Π½Ρ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ, Π±ΡΡΠ΅Ρ ΠΏΡΡΡ.
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· Π±ΡΡΠ΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΎΠ±Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π°ΡΠ°Π»ΠΎ Π±ΡΡΠ΅ΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ BIOS INT 16h, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ ΠΎΠΏΠΈΡΠ΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅.
Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ Π½Π° Π½Π°ΡΠ°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ INT 09h ΠΈ INT 16h. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΈΠ· Π±ΡΡΠ΅ΡΠ° ΠΊΠΎΠ΄Ρ Π½Π°ΠΆΠ°ΡΡΡ ΠΊΠ»Π°Π²ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ INT 16h.
ΠΡΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ Π±ΡΡΠ΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈΠ»ΠΈ Π±ΡΡΠ΅ΡΠ°, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π°Π½Π½ΡΡ BIOS ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ INT 09h Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΡΠΈΠ³Π½Π°Π».
ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ
Π Π°Π±ΠΎΡΠ° Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ AT ΠΈ PS/2
Π Π·Π°ΠΌΠ΅ΡΠΊΠ΅ ΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΠΌΡ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. Π Π°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠΊΠΈ. ΠΠΎΡ ΠΎΠ½Π°.
ΠΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
Π‘ΡΠ°Π·Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²:
Π’ΠΈΠΏΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡ
Π Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ΅ Ρ Π²ΡΡΡΠ΅ΡΠ°Π» ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡ:
Some chipsets support emulating USB keyboards and mice as standard PS/2 devices, but many chipsets donβt.
Π ΡΡΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠΊΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠΉ Ρ AT-PS/2.
ΠΠ΅ΠΉΡΡΠ²ΡΡΡΠΈΠ΅ Π»ΠΈΡΠ°
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ²:
Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΠΏΡΡΠ°ΡΡ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ (ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΠ°, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½Π°Ρ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ½ΡΠΊΠΎΠΉ ΠΏΠ»Π°ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°) ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° (ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Ρ ΠΊΠ»Π°Π²ΠΈΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌΡ Π±Π»ΠΎΠΊΡ).
Π‘ΠΊΠ°Π½-ΠΊΠΎΠ΄Ρ
ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ»Π°Π²ΠΈΡΡ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Ρ. Π½. ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠ°Ρ ΠΊΠ»Π°Π²ΠΈΡΠ° Π±ΡΠ»Π° Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π° ΠΈ ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ (Π½Π°ΠΆΠ°Π»ΠΈ Π΅Π΅ ΠΈΠ»ΠΈ ΠΎΡΠΏΡΡΡΠΈΠ»ΠΈ). Π’ΠΎ Π΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ (make), Π° ΠΏΡΠΈ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΠΈ β Π΄ΡΡΠ³ΠΎΠΉ (break). Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠΈ Π½Π°Π±ΠΎΡΠ° ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊ ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ: Π½Π°Π±ΠΎΡ 1, Π½Π°Π±ΠΎΡ 2 ΠΈ Π½Π°Π±ΠΎΡ 3 (scan codes set 1, set 2, set 3). ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° XT ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π±ΠΎΡ 1. ΠΠ»Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ Ρ AT-PS/2, Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π±ΠΎΡ 2 [Chapweske], ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΡΠΌΠ΅Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ 2 Π² Π½Π°Π±ΠΎΡ 1 (ΡΡΡ ΠΎΠΏΡΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈ Π²ΡΠΊΠ»ΡΡΠ°ΡΡ, ΠΎΠ± ΡΡΠΎΠΌ Π½ΠΈΠΆΠ΅).
Scan codes set 1
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠ² Π½Π°Π±ΠΎΡΠ° 1 (ΠΊΠ°ΠΊ Π½Π°ΠΆΠ°ΡΠΈΡ, ΡΠ°ΠΊ ΠΈ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ) ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ°. ΠΠΎΠ΄ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΠ°ΠΊ: break = make AND 0x80, Π³Π΄Π΅ break β ΠΊΠΎΠ΄ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ, make β ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΈΡ, AND β ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ Π. ΠΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΈ Π΄Π²ΡΡ Π±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠ΄Ρ. ΠΡΠ»ΠΈ ΠΊΠΎΠ΄ Π΄Π²ΡΡ Π±Π°ΠΉΡΠΎΠ²ΡΠΉ, ΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ Π±Π°ΠΉΡΠΎΠΌ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π°ΠΉΡ 0xE0. Π ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ². ΠΡΠΎΠ±Π½ΡΠΊΠΎΠΌ ΡΡΠΎΡΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ Insert ΠΈ Pause. Π£ Insert ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ Π±Π°ΠΉΡ, Ρ Pause β ΠΈΠ· ΡΠ΅ΡΡΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄Π° ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ Ρ Pause Π½Π΅Ρ.
ΠΠ»Π°Π²ΠΈΡΠ° | ΠΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΈΡ (make) | ΠΠΎΠ΄ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ (break) |
---|---|---|
A | 0x1E | 0x9E |
Insert | 0xE0, 0x52 | 0xE0, 0xD2 |
Print Screen | 0xE0, 0x2A, 0xE0, 0x37 | 0xE0, 0xB7, 0xE0, 0xAA |
Pause | 0xE1, 0x1D, 0x45, 0xE1, 0x9D, 0xC5 | β |
Scan codes set 2
Π Π½Π°Π±ΠΎΡΠ΅ 2 Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠ² Π½Π°ΠΆΠ°ΡΠΈΡ (make) ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡΠΎΠ²ΡΠ΅. ΠΠΎΠ΄Ρ ΠΆΠ΅ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· Π΄Π²ΡΡ Π±Π°ΠΉΡΠΎΠ², ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ 0xF0, Π° Π²ΡΠΎΡΠΎΠΉ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ ΡΠΎ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠΌ Π½Π°ΠΆΠ°ΡΠΈΡ. ΠΠ°ΠΊ ΠΈ Π² Π½Π°Π±ΠΎΡΠ΅ 1, Π² Π½Π°Π±ΠΎΡΠ΅ 2 Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π΄Π²ΡΡ Π±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠ΄Ρ Π½Π°ΠΆΠ°ΡΠΈΡ. Π ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π² Π½Π°Π±ΠΎΡΠ΅ 1, Π² Π½Π°Π±ΠΎΡΠ΅ 2 ΠΏΠ΅ΡΠ²ΡΠΌ Π±Π°ΠΉΡΠΎΠΌ Π² Π΄Π²ΡΡ Π±Π°ΠΉΡΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ 0xE0. ΠΡΠ»ΠΈ ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΈΡ Π΄Π²ΡΡ Π±Π°ΠΉΡΠΎΠ²ΡΠΉ, ΡΠΎ ΠΊΠΎΠ΄ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ β ΡΡΠ΅Ρ Π±Π°ΠΉΡΠΎΠ²ΡΠΉ, ΠΏΡΠΈΡΠ΅ΠΌ Π±Π°ΠΉΡΡ ΠΈΠ΄ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅: 0xE0, 0xF0, Π²ΡΠΎΡΠΎΠΉ Π±Π°ΠΉΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Π° Π½Π°ΠΆΠ°ΡΠΈΡ. Π ΡΠ½ΠΎΠ²Π° ΠΎΡΠΎΠ±Π½ΡΠΊΠΎΠΌ ΡΡΠΎΡΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ Insert ΠΈ Pause. Π£ Insert ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΡ ΡΠ΅ΡΡΡΠ΅Ρ Π±Π°ΠΉΡ, ΠΊΠΎΠ΄ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ β ΠΈΠ· ΡΠ΅ΡΡΠΈ. Π£ Pause ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π²ΠΎΡΡΠΌΠΈ Π±Π°ΠΉΡ, Π° ΠΊΠΎΠ΄Π° ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ Π½Π΅Ρ Π²ΠΎΠ²ΡΠ΅. Π ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠ² Π½Π°Π±ΠΎΡΠ° 2.
ΠΠ»Π°Π²ΠΈΡΠ° | ΠΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΈΡ (make) | ΠΠΎΠ΄ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ (break) |
---|---|---|
A | 0x1C | 0xF0, 0x1C |
Insert | 0xE0, 0x70 | 0xE0, 0xF0, 0x70 |
Print Screen | 0xE0, 0x12, 0xE0, 0x7C | 0xE0, 0xF0, 0x7C, 0xE0, 0xF0, 0x12 |
Pause | 0xE1, 0x14, 0x77, 0xE1, 0xF0, 0x14, 0xF0, 0x77 | β |
Scan codes set 3
ΠΠ°Π±ΠΎΡ 3 Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Π΄Π²Π° Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΉ: Π² Π½Π΅ΠΌ Π²ΡΠ΅ ΠΊΠΎΠ΄Ρ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡΠΎΠ²ΡΠ΅, Π° Π²ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ Π΄Π²ΡΡ Π±Π°ΠΉΡΠΎΠ²ΡΠ΅ (ΠΏΠ΅ΡΠ²ΡΠΉ Π±Π°ΠΉΡ β 0xF0, Π²ΡΠΎΡΠΎΠΉ β ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΈΡ). ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅.
ΠΠ»Π°Π²ΠΈΡΠ° | ΠΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΈΡ (make) | ΠΠΎΠ΄ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ (break) |
---|---|---|
A | 0x1C | 0xF0, 0x1C |
Insert | 0x67 | 0xF0, 0x67 |
Print Screen | 0x57 | 0xF0, 0x57 |
Pause | 0x62 | 0xF0, 0x62 |
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠ² Π² ASCII ΠΊΠΎΠ΄Ρ
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠ² Π² ΠΊΠΎΠ΄Ρ ASCII β ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΡΡΡΡ ASCII ΠΊΠΎΠ΄Ρ, Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ β ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Ρ. Π§ΡΠΎΠ±Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠ² 2 Π½Π° ΡΠ·ΡΠΊΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠ² ΠΈΠ· ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π² Microsoft Excel, ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π΅ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Π° ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Ρ ΠΈΠ΄ΡΡ Π½Π΅ ΠΏΠΎΠ΄ΡΡΠ΄, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΡΡΡΠ΅ ΠΌΠ΅ΡΡΠ° Π½ΡΠ»Π΅Π²ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ. Π‘ΡΠΎΠ»Π±Π΅Ρ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»ΠΈΡΡ ASCII ΠΊΠΎΠ΄Ρ, Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π» Π² ΡΠ°ΠΉΠ» Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²:
ΠΠΎΡΡΡ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° 0x64 ΠΈ 0x60
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠΎΡΡΡ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° 0x64 ΠΈ 0x60 (ΡΡΠΈ ΠΏΠΎΡΡΡ ΡΠ²ΡΠ·Π°Π½Ρ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ; ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² β 1 Π±Π°ΠΉΡ). Π ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΡΠΈ ΠΏΠΎΡΡΡ.
ΠΠΎΡΡ | ΠΠΎΡΡΡΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° |
---|---|---|---|
0x60 | Π§ΡΠ΅Π½ΠΈΠ΅ | Π§ΠΈΡΠ°ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ | in al, 0x60 |
0x60 | ΠΠ°ΠΏΠΈΡΡ | ΠΠΈΡΠ°ΡΡ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ | out 0x60, al |
0x64 | Π§ΡΠ΅Π½ΠΈΠ΅ | Π§ΠΈΡΠ°ΡΡ ΡΠ΅Π³ΠΈΡΡΡ ΡΡΠ°ΡΡΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ | in al, 0x64 |
0x64 | ΠΠ°ΠΏΠΈΡΡ | ΠΠΎΡΠ»Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ | out 0x64, al |
ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ Adam Chapweske, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΡΠ°Π½ΠΈΡΠ° Π² ΠΏΠΎΠ½ΡΡΠΈΡΡ Β«Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅ΡΒ» ΠΈ Β«Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅ΡΒ». ΠΡΠΈΡΠ΅ΠΌ ΠΏΡΡΠ°Π½ΠΈΡΠ° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΈ Π² Π΅Π³ΠΎ ΡΡΠ°ΡΡΠ΅ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌ ΡΠ»Π°Π³ΠΎΠ² IBF ΠΈ OBF Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΆΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡΠΌ ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΌ Π±ΡΡΠ΅ΡΠ°Ρ ). ΠΡ ΠΏΡΠΈΠΌΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ: Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΏΠΎΡΡΠ° 0x60 (ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΏΡΠΈΡΡΠ»Π°Π΅ΠΌΡΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π² ΠΎΡΠ²Π΅Ρ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°), ΡΠΎ ΠΎΠ½ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈΡ ΠΈΠ· Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ; Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΠΎΡΡ 0x60 (ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΡΡΠΎ ΠΏΠΎΡΠ»Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ Π»ΠΈΠ±ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΏΠΎΡΠ»Π°Π» ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ β ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ ΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°Π·Π΄Π΅Π» Π½ΠΈΠΆΠ΅), ΡΠΎ ΠΎΠ½ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΡ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
ΠΠ°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΠΈΡΠ°ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΊΠ»Π°Π²ΠΈΡ. ΠΠΎΠ³Π΄Π° Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Π±Π°ΠΉΡ, ΠΏΡΠΈΡΠ»Π°Π½Π½ΡΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² 1 ΡΠ»Π°Π³ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Output Buffer Full (OBF) β ΡΠ°ΠΌΡΠΉ ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΡΠ°ΡΡΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ IRQ1. ΠΠΎΠ³Π΄Π° Π²Ρ ΡΡΠΈΡΡΠ²Π°Π΅ΡΠ΅ Π±Π°ΠΉΡ ΠΈΠ· Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΡΠ»Π°Π³ OBF ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ Π² 0. ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΡΠΈΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ»Π°Π³ OBF ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² 1 β Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ ΡΡΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΡΠ°ΡΡΡΠ°. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ΅Π½ΠΈΡ Π±Π°ΠΉΡΠ° ΠΈΠ· Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ» Π² ΡΡΠ½ΠΊΡΠΈΡ Keyboard_ReadOutputBuffer (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄). ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΈΡΠ°Π΅ΡΠ΅ Π±Π°ΠΉΡΡ ΠΈΠ· Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ IRQ1, ΡΠΎ ΠΈ ΡΠ°ΠΊ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΠ»Π°Π³ OBF ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΈ ΡΠ±Π΅ΠΆΠ΄Π°ΡΡΡΡ Π² ΡΡΠΎΠΌ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ°Π· Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
Π£ Π½Π°Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. Π’Π°ΠΊΠ°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π² Π΄Π²ΡΡ ΡΠ»ΡΡΠ°ΡΡ :
Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π½Π°Π΄ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠ»Π°Π³ Input Buffer Full (IBF) β ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠΎΡΠ»Π΅ OBF Π±ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΡΠ°ΡΡΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Π±Π°ΠΉΡ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΠ»Π°Π³ IBF ΡΠ±ΡΠΎΡΠ΅Π½ Π² 0. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π±Π°ΠΉΡΠ° Π² Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ» Π² ΡΡΠ½ΠΊΡΠΈΡ Keyboard_WriteInputBuffer (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄).
ΠΠΎΠΌΠ°Π½Π΄Ρ
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΡΠ»Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈ ΡΠ°ΠΌΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ Π² ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ AT. Π PS/2 Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΈΡΠ°ΡΡ ΡΠ΅Π³ΠΈΡΡΡ ΡΡΠ°ΡΡΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ) ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ IRQ1 ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ). ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ). Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½Π°, ΠΏΡΠΈΡΡΠ»Π°Π΅Ρ Π² ΠΎΡΠ²Π΅Ρ Π½Π΅ΠΊΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ). ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈ ΡΠ°ΠΌΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΈΠΌΠ΅ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠ΅ΡΡ Π½Π°Π±ΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΎΠ½ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π½ΠΈΠΆΠ΅.
ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΡΠ»ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΠ»Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π΅Π΅ Π² ΠΏΠΎΡΡ 0x64. ΠΡΠ»ΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΡΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Π½Ρ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° (ΠΏΠΎΡΡ 0x60). Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π² ΡΠ²ΠΎΠΉ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΡΠΈΡΠ»ΠΎ (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΈΠ· ΠΏΠΎΡΡΠ° 0x60) β Π½Π΅ΠΊΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π°Π½Π°Π»ΠΎΠ³ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΠ½ΠΊΡΠΈΡΡ . Π ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ (Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π΅ΡΡΡ Π² [Chapweske] ΠΈ [ΠΠ΅ΡΠ²ΠΈΠΆΡΠΊΠΈΠΉ]).
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ | ΠΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ | ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ | ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|---|---|
Read Command Byte | 0x20 | Π½Π΅Ρ | command byte |
Write Command Byte | 0x60 | command byte | Π½Π΅Ρ |
Keyboard interface test | 0xAB | Π½Π΅Ρ | 0x00 β ok; 0x01 β Ρlock line stuck low; 0x02 β clock line stuck high; 0x03 β data line stuck low; 0x04 β data line stuck high |
Mouse interface test | 0xA9 | Π½Π΅Ρ | 0x00 β ok; 0x01 β Ρlock line stuck low; 0x02 β clock line stuck high; 0x03 β data line stuck low; 0x04 β data line stuck high |
Controller self-test | 0xAA | Π½Π΅Ρ | 0x55 β ok |
Enable mouse interface | 0xA8 | Π½Π΅Ρ | Π½Π΅Ρ |
Disable mouse interface | 0xA7 | Π½Π΅Ρ | Π½Π΅Ρ |
ΠΠ· Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠΌΠΈ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Read Command Byte ΠΈ Write Command Byte. Command Byte β ΡΡΠΎ 8-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π°Π³ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° (ΡΠΌ. ΡΠ°Π±Π»ΠΈΡΡ Π½ΠΈΠΆΠ΅).
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
AT | β | XLAT | PC | EN | OVR | SYS | β | INT |
PS/2 | β | XLAT | EN2 | EN | β | SYS | INT2 | INT |
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠΌΠΈ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ»Π°Π³ΠΈ (ΠΎΠ± ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»Π°Π³Π°Ρ ΡΠΈΡΠ°ΠΉΡΠ΅ Π² [Chapweske]):
ΠΠ°ΠΏΠΈΡΡ Π±Π°ΠΉΡΠ° Π² ΠΏΠΎΡΡ 0x64 Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ» Π² ΡΡΠ½ΠΊΡΠΈΡ Keyboard_SendCommand (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ β Π½Π΅Ρ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ β Π½Π΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ Keyboard_SendCommand ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Keyboard_WriteInputBuffer (ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ) ΠΈ Keyboard_ReadOutputBuffer (ΡΡΠΎΠ±Ρ ΡΡΠΈΡΠ°ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅). Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ΠΎΠ² Π² Π½Π°Π±ΠΎΡ 1: ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠ½ ΡΡΠΈΡΡΠ²Π°Π΅Ρ command byte ΠΈΠ· ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡ al, Π·Π°ΡΠ΅ΠΌ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ Π±ΠΈΡ XLAT Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ al Π² 0, Π° ΠΏΠΎΡΠΎΠΌ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° al ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² command byte.
ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΡΠ»ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 1 Π±Π°ΠΉΡ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΠ»Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅, Π΅Π΅ Π½Π°Π΄ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ (ΠΏΠΎΡΡ 0x60). ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°Π΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ Π»ΡΠ±ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² Π΅Π³ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ (Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ). ΠΠΎΠΌΠ°Π½Π΄Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Π½Ρ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠ°ΠΌΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. Π ΠΎΡΠ²Π΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΡΡΠ»Π°Π΅Ρ Π±Π°ΠΉΡ 0xFA (Acknowledge), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΈΠ½ΡΡΠ° ΠΈΠ»ΠΈ 0xFE (Resend), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΡΠΎΡ Π±Π°ΠΉΡ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΈΠ· Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠ΅ Ρ ΠΌΠΎΠ΅ΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅:
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ | ΠΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ | ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ | ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|---|---|
RESEND | 0xFE | Π½Π΅Ρ | ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠΎΡΠ»Π°Π½Π½ΡΠΉ Π±Π°ΠΉΡ ΠΈΠ»ΠΈ 0xFE (Resend) |
DISABLE | 0xF5 | Π½Π΅Ρ | 0xFA (Acknowledge) ΠΈΠ»ΠΈ 0xFE (Resend) |
ENABLE | 0xF4 | Π½Π΅Ρ | 0xFA (Acknowledge) ΠΈΠ»ΠΈ 0xFE (Resend) |
SET_SCAN_CODE_SET | 0xF0 | 0x01, 0x02 ΠΈΠ»ΠΈ 0x03 | 0xFA (Acknowledge) ΠΈΠ»ΠΈ 0xFE (Resend) |
Echo | 0xEE | Π½Π΅Ρ | 0xEE (Echo) ΠΈΠ»ΠΈ 0xFE (Resend) |
Set/Reset LEDs | 0xED | Π±ΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠ°: Π±ΠΈΡ 0 β ScrollLock, Π±ΠΈΡ 1 β NumLock, Π±ΠΈΡ 2 β CapsLock | 0xFA (Acknowledge) ΠΈΠ»ΠΈ 0xFE (Resend) |
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠ»ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠ»Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌΡ Π±Π»ΠΎΠΊΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Ρ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ), Π° Π·Π°ΡΠ΅ΠΌ β ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
; Disable keyboard
push word KEYBOARD_COMMAND_DISABLE
call Keyboard_WriteInputBuffer
call Keyboard_ReadOutputBuffer
; Enable keyboard
push word KEYBOARD_COMMAND_ENABLE
call Keyboard_WriteInputBuffer
call Keyboard_ReadOutputBuffer
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ β Π€ΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ» Π² ΡΠ°ΠΉΠ» keyboard.inc.
; AT-PS/2 Keyboard Controller Status Register Bits
KEYBOARD_CONTROLLER_STATUS_PERR equ 10000000b
KEYBOARD_CONTROLLER_STATUS_RxTO equ 01000000b
KEYBOARD_CONTROLLER_STATUS_TO equ 01000000b
KEYBOARD_CONTROLLER_STATUS_TxTO equ 00100000b
KEYBOARD_CONTROLLER_STATUS_MOBF equ 00100000b
KEYBOARD_CONTROLLER_STATUS_INH equ 00010000b
KEYBOARD_CONTROLLER_STATUS_A2 equ 00001000b
KEYBOARD_CONTROLLER_STATUS_SYS equ 00000100b
KEYBOARD_CONTROLLER_STATUS_IBF equ 00000010b ; if IBF=0, Input Buffer is empty and you can write data to it; if IBF=1 Input Biffer is full and you shouldn’t write data to it
KEYBOARD_CONTROLLER_STATUS_OBF equ 00000001b ; if OBF=1, Output Buffer is full and you can read data from it; if OBF=0 Output Buffer is empty and you shouldn’t read data from it
; AT-PS/2 Keyboard Commands (do not confuse «Keyboard» and «Keyboard Controller»)
KEYBOARD_COMMAND_RESET equ 0xFF ; Causes keyboard to enter «Reset» mode
KEYBOARD_COMMAND_RESEND equ 0xFE ; Used to indicate an error in reception.
KEYBOARD_COMMAND_SET_KEY_TYPE_MAKE equ 0xFD ; Allows the host to specify a key that is to send only make codes.
KEYBOARD_COMMAND_SET_KEY_TYPE_MAKE_BREAK equ 0xFC ; Similar to «Set Key Type Make», but both make codes and break codes are enabled (typematic is disabled).
KEYBOARD_COMMAND_SET_KEY_TYPE_TYPEMATIC equ 0xFB ; Similar to previous two commands, except make and typematic is enabled; break codes are disabled.
KEYBOARD_COMMAND_SET_ALL_KEYS_TYPEMATIC_MAKE_BREAK equ 0xFA ; Default setting. Make codes, break codes, and typematic repeat enabled for all keys.
KEYBOARD_COMMAND_SET_ALL_KEYS_MAKE equ 0xF9 ; Causes only make codes to be sent; break codes and typematic repeat are disabled for all keys.
KEYBOARD_COMMAND_SET_ALL_KEYS_MAKE_BREAK equ 0xF8 ; Similar to the previous two commands, except only typematic repeat is disabled.
KEYBOARD_COMMAND_SET_ALL_KEYS_TYPEMATIC equ 0xF7 ; Similar to the previous three commands, except only break codes are disabled. Make codes and typematic repeat are enabled.
KEYBOARD_COMMAND_SET_DEFAULT equ 0xF6 ; Load default typematic rate/delay (10.9cps / 500ms), key types (all keys typematic/make/break), and scan code set (2).
KEYBOARD_COMMAND_DISABLE equ 0xF5 ; Keyboard stops scanning, loads default values (see «Set Default» command), and waits further instructions.
KEYBOARD_COMMAND_ENABLE equ 0xF4 ; Reenables keyboard after disabled using previous command.
KEYBOARD_COMMAND_SET_TYPEMATIC_RATE_DELAY equ 0xF3 ; Host follows this command with one argument byte that defines the typematic rate and delay.
KEYBOARD_COMMAND_SET_SCAN_CODE_SET equ 0xF0 ; Host follows this command with one argument byte, that specifies which scan code set the keyboard should use.
KEYBOARD_COMMAND_ECHO equ 0xEE ; The keyboard responds with «Echo» (0xEE).
KEYBOARD_COMMAND_SET_RESET_LEDS equ 0xED ; The host follows this command with one argument byte, that specifies the state of the keyboard’s Num Lock, Caps Lock, and Scroll Lock LEDs.
; Flags that can be combined to form an argument of command KEYBOARD_COMMAND_SET_RESET_LEDS
KEYBOARD_LED_CAPS_LOCK equ 00000100b
KEYBOARD_LED_NUM_LOCK equ 00000010b
KEYBOARD_LED_SCROLL_LOCK equ 00000001b
; Parts of scan codes
KEYBOARD_SPECIAL_KEY equ 0xE0
KEYBOARD_BREAK_KEY equ 0xF0
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ IRQ1 ΠΎΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
ΠΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ IRQ1 Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° ΡΠΊΠ°Π½-ΠΊΠΎΠ΄Π° Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ, Ρ. Π΅. Π΅ΡΠ»ΠΈ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠ°Π» ΠΊΠ»Π°Π²ΠΈΡΡ Insert, ΡΠΊΠ°Π½-ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠΉ Π² Π½Π°Π±ΠΎΡΠ΅ 2 ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ Π±Π°ΠΉΡ (0xE0, 0x70), ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π²Π° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ IRQ1. ΠΊΠΎΠ΄ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ Insert ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ Π±Π°ΠΉΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ Π΅Π΅ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΡΡΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ IRQ1. ΠΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ IRQ1, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ scan code set 2. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ»Π°Π²ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΠ°Π½-ΠΊΠΎΠ΄, ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π΅Π³ΠΎ Π² ASCII-ΠΊΠΎΠ΄ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π° ΡΠΊΡΠ°Π½.
; cursor position (0. 1999). initial value of 160 places the cursor to the 4th row on the screen.
cursor dd 240
. exit :
pop edi
pop ax
jmp int_EOI