рдУрдХреНрдЯреЛрдбреЙрди: рдЧрд╣рд░реЗ рднреВрдорд┐рдЧрдд рдЬрд╛ рд░рд╣рд╛ рд╣реИ

рдЗрд╕ рдирд┐рдмрдВрдз рдореЗрдВ, рдореИрдВ рдСрдХреНрдЯреЛрдбрди рдХреАрдмреЛрд░реНрдб рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ рдереЛрдбрд╝рд╛ рд╣рдЯрдХрд░ рдЙрди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдБрдЧрд╛, рдЬреЛ рд╣рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реБрдИ рдереАрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреАрдЖрдИ) рдФрд░ рдШрд░-рдирд┐рд░реНрдорд┐рдд рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛ рдбреЙрдХ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рдиреБрдХрд╕рд╛рди рд╣рд░ рдХрджрдо рдкрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдХрднреА рднреА рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдпрд╛ рдпрд╣ рдХрд┐рддрдирд╛ рдХрдард┐рди рдХрд╛рдо рд╣реИред рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣ рд╕рдордп рд╕реАрдорд┐рдд рд╣реИ - рд╣рдореЗрд╢рд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рджрд░реНрд╢рдиреА рдпрд╛ рдкреНрд░рд╕реНрддреБрддрд┐ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдорд╛рдзрд╛рди рд╣рд░ рд╕рдВрднрд╡ рддрд░реАрдХреЗ рд╕реЗ рдвреВрдВрдврдирд╛ рд╣реЛрдЧрд╛


рдкреИрдЯреНрд░рд┐рдХ рдкреНрд▓реБрд▓ / рдПрдПрдлрдкреА / рдЧреЗрдЯреА рдЗрдореЗрдЬ рджреНрд╡рд╛рд░рд╛ рдлреЛрдЯреЛ

... рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╢рд╛рдпрдж рд╣реА рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реИред

рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрд╡рд▓рдкрд░, рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░ рдФрд░ рд░реЗрдбрд┐рдпреЛ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдУрдХрдЯреЛрдбрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реВрдВред рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдореЗрд░реА рдореБрдЦреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ .NET рдкрд░ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╡рд┐рдХрд╛рд╕ рд╣реБрдЖ рд╣реИ, рдореЗрд░рд╛ рдмрдЪрдкрди ZX рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рд╛рде рдЦреБрд╢ рдерд╛ рдФрд░ рддрджрдиреБрд╕рд╛рд░, Z80 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЗ рд╕рд╛рдеред рдирддреАрдЬрддрди, рдореБрдЭреЗ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд▓рдЧрд╛ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд┐рдЧреНрдирд▓ рдФрд░ рдЯрд╛рдЗрдо рдбрд╛рдпрдЧреНрд░рд╛рдо рдХреЗ рд╕реНрддрд░ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рдирд┐рд╢рд╛рди рдирд╣реАрдВ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ - рдореБрдЭреЗ рдЕрднреА рднреА рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╡рд┐рдХрд╛рд╕ рдкрд╕рдВрдж рд╣реИред рдФрд░ рдЬрдм рдореБрдЭреЗ рдПрдХ рдореМрд▓рд┐рдХ рдирдпрд╛ рдХреАрдмреЛрд░реНрдб, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдмрдирд╛рдиреЗ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЧрдИ, рддреЛ рдореИрдВ рдмрд╕ рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред

рдореБрдЭреЗ рд╕рднреА рд╣реИрдХреНрд╕ рдкрд░ рдЧрд░реНрд╡ рдирд╣реАрдВ рд╣реИ (рдЬреЛ рдореИрдВ рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)ред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрдврд╝рдиреЗ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рдЬрд┐рд╕рд╕реЗ рдирдВрдЧреЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНтАНрд╡рдпрди рдХрд╛рд░реНрдп рдЬреЛ рдЗрдЪреНрдЫреБрдХ рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ, рднрд╛рд╡реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдирд┐рд╡реЗрд╢рдХреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХреЗред рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдпрд╣ рд╕рдм рдХреЛрдб рдЕрдм рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ :)

рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреА рдПрдХ рдФрд░ рдкреВрд░реА рддрд╕реНрд╡реАрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рдиреЗрддрд╛ рдПрд▓реЗрдХреНрд╕рд┐рд╕реЗрдВрдХреЛ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛрдЧреА: рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХреА рдЦреЛрдЬ рдореЗрдВ рдУрдХрдЯреЛрдбрди рдХреАрдмреЛрд░реНрдб

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдирдВрдмрд░ 1 - рдмреНрд▓реВрдЯреВрде


рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдиреЗ рдмреНрд▓реВрдЯреВрде рд╢реЗрдпрд░рд┐рдВрдЧ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреАрдмреЛрд░реНрдб рдФрд░ рдлреЛрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрдХрдиреАрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдерд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реЛ рдирд╣реАрдВ рдкрд╛рдпрд╛ред
рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдХрд┐, 2.3 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдПрдВрдбреНрд░реЙрдЗрдб рдиреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмреАрдЯреА-рдХреАрдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдерд╛ред рдЬреИрд╕реЗ рд╣реА рд╕рд┐рд╕реНрдЯрдо рдиреЗ "рдпреБрдЧреНрдорд┐рдд" рдХреАрдмреЛрд░реНрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдЙрд╕рдиреЗ рддреБрд░рдВрдд рдЗрд╕реЗ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдЗрдирдкреБрдЯ рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдЪреВрдБрдХрд┐ рд╣рдо рдРрд╕рд╛ рд╣реА рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рдереЗ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдУрдХреЗрдбреЙрди рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХреЗ рдПрдХ рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде рджреЛ рдЕрдХреНрд╖рд░ - "рд╣рдорд╛рд░рд╛" рдФрд░ "рд╕рд┐рд╕реНрдЯрдо" рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВрдЧреЗред рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЕрддреНрдпрдзрд┐рдХ рдмрд╛рддреВрдиреА рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛ рдордлрд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдлреЛрди "рд░реБрдЯреЗрдб" рдерд╛, рдФрд░ рдХрд░реНрдиреЗрд▓ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЦреБрджрд╛рдИ рд╢реБрд░реВ рд╣реБрдИ рддрд╛рдХрд┐ рдЖрдк рдХреАрдмреЛрд░реНрдб рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХреЗрдВред рдпрд╣ рд╕реНрдерд╛рди рдХрд╛рдорд╡рд╛рд╕рдирд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрди рдЧрдпрд╛ред
рдкреНрд░рдкрддреНрд░ рдХреА рдПрдХ рдЧрдВрджреА рд╣реИрдХ рдХреЛ open_device рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

if ((id.vendor == 0x05AC && id.product == 0x0239)) // VID  PID   { LOGI("Ignoring device %04x %04x", id.vendor, id.product); close(fd); fd = -1; return -1; } 


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдо рдмрд╕ рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдЕрдм рдУрдПрд╕ рдиреЗ рдХреАрдмреЛрд░реНрдб рдХреЛ рд╣рдорд╕реЗ рд▓реЗрдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреАрдЖрдИ рдХреЗ рдмреНрд▓реВрдЯреВрде рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рдлрд┐рд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛: рдореИрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреАрдЯреА рд╕реЙрдХреЗрдЯ рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ - рдорд╛рдирдХ рдлрд╝рдВрдХреНрд╢рди createRfcommSocketToServiceRecord рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЧрд┐рд░ рдЧрдпрд╛ред рдХрд╣рд╛рдиреА рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдиреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрд╛ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрд╛ред рдирддреАрдЬрддрди, рдпрд╣ (рддрдм рднреА) рдорд╛рд░реНрдХреЗрдЯ рд╕реЗ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рд░рд┐рд╡рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдмреАрдЯреА-рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде "рдкреБрд░рд╛рдиреЗ" рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдереА рдЬреЛ рд╕реНрд╡рдпрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ, рдЖрдбрдореНрдмрд░ рдХреА рдЖрдбрд╝ рдХреЗ рдкреАрдЫреЗ, рд╕реБрдВрджрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:

 private static BluetoothSocket createBluetoothSocket(int type, int fd, boolean auth, boolean encrypt, String address, int port) { try { Class[] parameterTypes = new Class[] { Integer.TYPE, // type Integer.TYPE, // fd Boolean.TYPE, // auth Boolean.TYPE, // encrypt String.class, // address Integer.TYPE // port }; Constructor<BluetoothSocket> constructor = BluetoothSocket.class.getDeclaredConstructor(parameterTypes); constructor.setAccessible(true); Object[] parameters = new Object[] { Integer.valueOf(type), Integer.valueOf(fd), Boolean.valueOf(auth), Boolean.valueOf(encrypt), address, Integer.valueOf(port), }; return (BluetoothSocket)constructor.newInstance(parameters); } catch (Exception ex) { return null; } } BluetoothSocket intrSocket = createBluetoothSocket(3 /* TYPE_L2CAP */, -1, false, false, "DC:2C:26:A0:C2:50" /* MAC-address */, 0x13 /* INTR port */); 


рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдирд┐рдЬреА рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдмреБрд▓рд╛ рд░рд╣рд╛ рд╣реИ! рдЬрдм рдХреЛрдб рдХрд╛ рдкреНрд░рд╕реНрддреБрдд рдЯреБрдХрдбрд╝рд╛ рд▓рд┐рдпрд╛ рдФрд░ рддреБрд░рдВрдд рдЕрд░реНрдЬрд┐рдд рдХрд┐рдпрд╛ рддреЛ рдЖрд╢реНрдЪрд░реНрдп рдФрд░ рднреА рдмрдврд╝ рдЧрдпрд╛ред рд╕рдордЭреЗрдВ рдХрд┐ рдХреНрдпрд╛, рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ рдХреЛрдИ рд╕рдордп рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЙрд╕ рд░реВрдк рдореЗрдВ рд╕рд╣реА рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╡рд┐рдХрд╛рд╕ рдХреА рдХрдорд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ - рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ "рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ" рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ - рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдордиреЗ рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдмреНрд▓реВрдЯреВрде-рдХреАрдмреЛрд░реНрдб, рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЬрд╛рджреВ рдЬрд▓реНрдж рд╣реА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рдерд╛ред

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк # 2 - рдпреВрдПрд╕рдмреА рдЫрд┐рдкрд╛рдИ рдХреАрдмреЛрд░реНрдб


рдЬреИрд╕реЗ рд╣реА рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рддреИрдпрд╛рд░ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрдВ рдмрд╣реБрдд рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рд╕рдордп рд╣рдордиреЗ рдЬрд┐рд╕ рдореБрдЦреНрдп рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛, рд╡рд╣ рд╕реИрдорд╕рдВрдЧ рдЧреИрд▓реЗрдХреНрд╕реА рдПрд╕ 2 рдерд╛ред рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╕реНрдерд┐рд░ рдпреВрдПрд╕рдмреА-рд╣реЛрд╕реНрдЯ рдерд╛, рдЬрд┐рд╕реЗ рд╣рдо рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рдереЗред рдЯреЗрдиреЗрд╕реА 1.0 рдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдмрд╣реБрдд рдЧрд▓рдд рдирд┐рдХрд▓рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрд╡рд╕рд░ рдереЗ, рдФрд░ рдпрд╣ рдХрд┐ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг, 2.0 рдХреЛ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдВрддрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЫрд┐рдкрд╛-рд╕рдВрдЧрдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ред рдпрджрд┐ 1.0 рдХреЗрд╡рд▓ рдПрдХ рдЫрд┐рдкрдХрд▓реА рдХреАрдмреЛрд░реНрдб рдпрд╛ рдорд╛рдЙрд╕ рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ 2.0 рдкрд░ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реЙ рдЫрд┐рдкрд╛рдИ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдерд╛ рдХреЗ рд╕рд╛рде рд╕рдВрддреЛрд╖ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред HID- рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╕рдордп, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдлрд┐рд░ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реБрдИ - рдЬрдм рдХрдиреЗрдХреНрдЯ рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдиреЗ рдЗрд╕реЗ рдПрдХ рдЗрдирдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛, рдФрд░ рднреЗрдЬреЗ рдЧрдП рдЕрдХреНрд╖рд░ рджреЛ рдмрд╛рд░ - рд╣рдорд╛рд░реЗ рдФрд░ рдУрдПрд╕ рджреНрд╡рд╛рд░рд╛ рдореБрджреНрд░рд┐рдд рдХрд┐рдП рдЧрдПред

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╛рдзрд╛рди рдЕрдм рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рдерд╛ - рдЙрдиреНрд╣реЛрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╕рд┐рд╕реНрдЯрдо рдкрд░рд┐рд╡рд░реНрддрди рдереЗред рдпрджрд┐ рд╣рдо рдПрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдЧреИрд▓реЗрдХреНрд╕реА рдПрд╕ 2 рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдореЗрдВ рдЪрдордХрддреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдПрд╕ 2 рд╕реЗ рдЬреБрдбрд╝реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдпреВрдПрд╕рдмреА рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдХреАрдмреЛрд░реНрдб рдХреЗ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдмрдЯрди рдкреНрд░реЗрд╕ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рдорджрдж рдмрди рдЧрдИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реА рдЯреЗрдиреАрд╕ рдХрд┐рд╕реА рддрд░рд╣ рдСрдХреНрдЯреЛрдбрди рдЬреЙрдпрд╕реНрдЯрд┐рдХреНрд╕ рдХреЗ рд╡рд┐рдЪрд▓рди рдХреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХ рдмрдЯрди рджрдмрд╛рдиреЗ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреА рдереАред рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ 3 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдкреИрдХреЗрдЬ рднреЗрдЬрдиреЗ рд╢реБрд░реВ рдХрд┐рдП:

  1. рд╕реНрдХреИрди рдХреЛрдб "Num 0" ... "Num 9" рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рд╕реНрдерд┐рддрд┐ рд╣рдо рдкреНрд░реЗрд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
  2. рд╕реНрдХреИрди рдХреЛрдб "Num 0" ... "Num 4" - рдЬреЙрдпрд╕реНрдЯрд┐рдХ рд╡рд┐рдЪрд▓рди рдХреА рджрд┐рд╢рд╛ред 0 - рдмрд╛рдИрдВ рдУрд░, 1 - рдиреАрдЪреЗ, ..., 4 - рдХреЗрдВрджреНрд░реАрдп рджрдмрд╛рд╡ред
  3. "Num +" рдпрджрд┐ рдХреЛрдИ рдкреНрд░реЗрд╕ рдпрд╛ "Num -" рд╣реИ рддреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ред


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмрд╛рдИрдВ рдУрд░ рдкрд╣рд▓реЗ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХреЗ рдПрдХ рд╕рд░рд▓ рдзрдХреНрдХрд╛ рдиреЗ рд╣рдореЗрдВ "00+" рдХрд╛ рдЕрдиреБрдХреНрд░рдо рджрд┐рдпрд╛, "00-" рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ред рдПрдХ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдЬрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛, рдЖрдк рджреВрд╕рд░реЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЗрд╕ рддрд░рд╣ рдЖрдк рдХрдИ рдмрдЯрди рдХреЗ рдПрдХ рд╕рд╛рде рджрдмрд╛рдиреЗ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рд╢рд┐рдлреНрдЯ рдореЛрдб рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред

рдлрд┐рд░ рднреА, рд╡рд╣рд╛рдБ рдЕрднреА рднреА рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд scancodes рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдерд╛ред рд╕рд┐рд╕реНрдЯрдо рдПрдкреАрдЖрдИ рдиреЗ рдЙрдиреНрд╣реЗрдВ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЧрд╣рд░рд╛рдИ рддрдХ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП, Android * nix рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИред рд╡рд╛рдВрдЫрд┐рдд рдлрд╝рд╛рдЗрд▓ / рджреЗрд╡ / рдЗрдирдкреБрдЯ рдореЗрдВ рдереА, рдФрд░ рдЖрдХрд╛рд╢ рдореЗрдВ рддрд╛рд░реЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕реЗ рдЗрд╡реЗрдВрдЯ 7 рдпрд╛ рдИрд╡реЗрдВрдЯ 8 рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред рдХреЗрд╡рд▓ рд░реВрдЯ рдХреА рдкрд╣реБрдВрдЪ рдереА, рдЗрд╕рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд░реВрдЯ рд╣реЛрдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рдм рдерд╛ рдФрд░ рд╕реАрдорд┐рдд рдерд╛ - рдПрдХ рдлреНрд▓реИрд╢рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рд░реВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдЪрд┐рдд рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ (рдпрд╛ рд╣рдо рдЗрд╕реЗ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХреЗ)ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рд╕рдм рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ:

 Process root = Runtime.getRuntime().exec("su"); //   su DataOutputStream shellStream = new DataOutputStream(root.getOutputStream()); shellStream.writeBytes("cat /dev/input/event7 & && cat /dev/input/event8 &"); //     ,    ,    InputStream inputStream = root.getInputStream(); InputStream errorStream = root.getErrorStream(); //  16-    byte[] buf = new byte[16]; if (inputStream.available() > 15) { int data = inputStream.read(buf, 0, 16); } 


рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реИ, рдХрдИ рдкреНрд░рджрд░реНрд╢рдирд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЕрднреА рднреА рдЬреАрд╡рд┐рдд рд╣реИред рд╕рдордп рдХреЗ рд╕рд╛рде, рдХреЛрдб рдХреЛ рдПрдиреНрдмреЛрд▓реНрдб рдХрд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рд╣рд╛рд░реНрдбрдХреЛрдб рдХреЗ рдмрдЬрд╛рдп рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд▓рдЧрд╛ред

рдЦреИрд░, рдлрд┐рд░ рдЖрдпрд╛ рд╕реНрд╡рд░реНрдг рдпреБрдЧред рдЧреИрд▓реЗрдХреНрд╕реА рдПрд╕ 2 рдХреЗ рд▓рд┐рдП 4 рд╡рд╛рдВ рдПрдВрдбреНрд░реЙрдЗрдб рдирд┐рдХрд▓рд╛, рдФрд░ рдЯреЗрдиреА 2.0 рдХрд╛ рдСрд░реНрдбрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдпрд╛ред рдирдП OS рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ USB рд╣реЛрд╕реНрдЯ API рдХреЗ рд╕рд╛рде рдирдП рд░реЙ HID рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдбреЙрдХрд┐рдВрдЧ рдЗрддрдирд╛ рд╕реНрдореВрдж рдерд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдЗрд╕ рдирд┐рдмрдВрдз рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рдмреИрдарддрд╛ред рдПрдХ рдкреБрд░рд╛рдирд╛ рд╕рдкрдирд╛ рд╕рдЪ рд╣реБрдЖ, рдСрдХреНрдЯреЛрдбрди рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд┐рдП рдмрд┐рдирд╛ "рд╕реНрдЯреЙрдХ" рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рд╣рдореЗрдВ рдЫреЛрдЯреЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдирдореВрдиреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рд╛ рдЬреЛ рдмрд╕ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдзреНрдпрд╛рди рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдмреИрд╕рд╛рдЦреА рдХреЗ рдмрд┐рдирд╛ рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╣рдмрд░ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдпреВрдПрд╕рдмреА рдкрд░ рдпреВрдПрд╕рдмреА рд╣реЛрд╕реНрдЯ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрднреА рдмрд╛рдд рдирд╣реАрдВ рдХреАред рддреЛ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдП!

Source: https://habr.com/ru/post/In212941/


All Articles