Windows Android рд╣реЗрдбрд╕реЗрдЯ рдмрдЯрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдХ

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

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

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

рдПрдВрдбреНрд░реЙрдЗрдб рд╣реЗрдбрд╕реЗрдЯ рдмрдЯрди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ


рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣реЗрдбрд╕реЗрдЯ рдмрдЯрди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдЗрд╕ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдкрд╛рдпрд╛ред рд╡рд╣рд╛рдВ рдПрдХ рдЪрд╛рд░реНрдЯ рд╣реИред



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдЖрдк рд╣реЗрдбрд╕реЗрдЯ рдкрд░ рдПрдХ рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╕рд░реНрдХрд┐рдЯ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдиреЛрдЯ 0 рдУрдо рдХреЗ рдкреНрд░рддрд┐рд░реЛрдз рдХреЗ рд╕рд╛рде рдмрдЯрди рдП (рдкреНрд▓реЗ / рдкреЙрдЬрд╝ / рд╣реБрдХ) рд╣реИ, рдЬреЛ рдХрд┐ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рд╣реИред рдпрджрд┐ рд╣рдо рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдореЗрдВ рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ, рддреЛ рд╣рдо рдкреНрд▓реЗ / рдкреЙрдЬрд╝ рдмрдЯрди рдХреЛ рджрдмрд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдкрд░реАрдХреНрд╖рдг


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


рдмрд┐рдВрдЧреЛ

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмрдЯрди рджрдмрд╛рдиреЗ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рддрд░рдВрдЧ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ: see1 рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪрд╛рдирдХ рдЧрд┐рд░рд╛рд╡рдЯ 1 рдХреЗ рд▓рд┐рдП рдЕрдЪрд╛рдирдХ рд╕рдВрдХреНрд░рдордг рдФрд░ 0. рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдШрдЯрдиреЗ рдХреЗ рдмрд╛рдж рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рд╣рдЬрддрд╛ рд╕реЗ, рдореИрдВ рдорд╛рдиреВрдВрдЧрд╛ рдХрд┐ рд╕рд┐рдЧреНрдирд▓ 1 рдкрд░ рдХреВрджрддрд╛ рд╣реИ рдФрд░ рдмрдЯрди рдЬрд╛рд░реА рд╣реЛрдиреЗ рддрдХ рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЕрд▓рдЧ рджрд┐рдЦрддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдпрджрд┐ рдЖрдк рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рд╕реЗ рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреИрдкреНрдЪрд░ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдРрд╕реА рддрд╕реНрд╡реАрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЕрднреА рднреА рдЖрд╕рд╛рди рд╣реИред

рдкрд╛рдпрдерди рдХреЗ рд╕рд╛рде рдзреНрд╡рдирд┐ рдкрд░ рдХрдмреНрдЬрд╛


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

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

рдереЛрдбрд╝рд╛ рд╕рд╛ рдХреЛрдбрд┐рдВрдЧ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрддрд╛ рд╣реИ:

import sounddevice as sd SAMPLE_RATE = 1000 # Sample rate for our input stream BLOCK_SIZE = 100 # Number of samples before we trigger a processing callback class HeadsetButtonController: def process_frames(self, indata, frames, time, status): mean = sum([y for x in indata[:] for y in x])/len(indata[:]) print(mean) def __init__(self): self.stream = sd.InputStream( samplerate=SAMPLE_RATE, blocksize=BLOCK_SIZE, channels=1, callback=self.process_frames ) self.stream.start() if __name__ == '__main__': controller = HeadsetButtonController() while True: pass 

рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рд▓рдЧрд╛рддрд╛рд░ рдирдореВрдиреЛрдВ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмреИрдЪ рдХреЗ рдФрд╕рдд рдореВрд▓реНрдп рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рд╣рдо рдирдореВрдирд╛ рджрд░ рдХреЛ 1000 рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдзреНрд╡рдирд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ (44100 рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЯреАрдХрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмреНрд▓реЙрдХ рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмрдлрд░ рдореЗрдВ рдХрд┐рддрдиреЗ рдирдореВрдиреЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░, рд╣рдо рдмрд╣реБрдд рдХрдо рдорд╛рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред 100 рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдФрд░ 1000 рдХрд╛ рдирдореВрдирд╛ рджрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 10 рдмрд╛рд░ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ 100 рдирдореВрдиреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ: рд╢рд╛рдпрдж рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ


рдЕрдм рд╣рдо рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреИрдкреНрдЪрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдмрдЯрди рдкреНрд░реЗрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрдВрддреНрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдкреНрд░реЗрд╕ рдХрд░рдиреЗ рдкрд░ рд╕рд┐рдЧреНрдирд▓ 1 рдкрд░ рдХреВрджрддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдмрддрд╛рддрд╛ рд╣реИ: рдпрджрд┐ рдПрди рд▓рдЧрд╛рддрд╛рд░ рдмреНрд▓реЙрдХ рдореЗрдВ 0.9 рд╕реЗ рдКрдкрд░ рдПрдХ рд╕рдВрдХреЗрдд рдореВрд▓реНрдп рд╣реИ, рдЕрд░реНрдерд╛рдд, рдПрдХ рдХреНрд▓рд┐рдХред

рд╣рдо рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:

 import sounddevice as sd SAMPLE_RATE = 1000 # Sample rate for our input stream BLOCK_SIZE = 100 # Number of samples before we trigger a processing callback PRESS_SECONDS = 0.2 # Number of seconds button should be held to register press PRESS_SAMPLE_THRESHOLD = 0.9 # Signal amplitude to register as a button press BLOCKS_TO_PRESS = (SAMPLE_RATE/BLOCK_SIZE) * PRESS_SECONDS ... def process_frames(self, indata, frames, time, status): mean = sum([y for x in indata[:] for y in x])/len(indata[:]) if mean < PRESS_SAMPLE_THRESHOLD: self.times_pressed += 1 if self.times_pressed > BLOCKS_TO_PRESS and not self.is_held: # The button was pressed! self.is_held = True else: self.is_held = False self.times_pressed = 0 ... 

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

рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЗрдмреИрдХ рдирд┐рдпрдВрддреНрд░рдг


рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ "рдмрдЯрди рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛" рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ! рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдСрдбрд┐рдпреЛ рдкреНрд▓реЗрдмреИрдХ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред Google рдлрд┐рд░ рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ: рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реА рдЖрднрд╛рд╕реА рдХреБрдВрдЬреА рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдХреЗ рдкреНрд▓реЗрдмреИрдХ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ pywin32 рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдЬреЛ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдкрд╛рдпрдерди рд╢реЗрд▓ рд╣реИред рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдХрд░, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 import win32api import win32con VK_MEDIA_PLAY_PAUSE = 0xB3 def toggle_play(): win32api.keybd_event(VK_MEDIA_PLAY_PAUSE, 0, 0, 0) 

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

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


рдФрд░ рдРрд╕рд╛ рдХреНрдпрд╛ рд╣реБрдЖ

рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ 51 рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдПрдВрдбреНрд░реЙрдЗрдб рд╣реЗрдбрд╕реЗрдЯ рдкрд░ рдмрдЯрди рд╕рдХреНрд░рд┐рдп рдХрд░рддреА рд╣реИрдВред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╕реНрд░реЛрдд рдХреЛрдб Github рдкрд░ рд╣реИ ред

рд░реБрдХреЛ, рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ!


рдХрдИ рдШрдВрдЯреЛрдВ рддрдХ рдЦреБрд╢реА рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдПрдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛:



рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рдЧрднрдЧ 30% CPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ! рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд▓рдВрдмреЗ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдпрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореБрдЦреНрдп рд▓реВрдк рдореБрдЦреНрдп рд▓реВрдк рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╣рд╛рдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рд╕рдорд╛рдзрд╛рди рдмрд╕ рдзрд╛рдЧреЗ рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП euthanize рдХрд░рдирд╛ рд╣реИ: рдЪреВрдВрдХрд┐ рдХреЙрд▓рдмреИрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдЕрднреА рднреА рд▓реВрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

 from time import sleep if __name__ == '__main__': controller = HeadsetButtonController() while True: sleep(10) 



рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рдмрд╛рдж рднреА рдкрд╛рдЗрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди pythonw.exe рдирд╛рдордХ рдПрдХ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рдмрд┐рдирд╛ рдбреЗрдорди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рд╣рдо Microsoft \ Windows \ Start Menu \ Programs \ Startup рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЙрд░реНрдЯрдХрдЯ рд░рдЦрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ - рдлрд┐рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪреБрдкрдЪрд╛рдк рдЪрд▓рддрд╛ рд╣реИред

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


All Articles