рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдХреАрдмреЛрд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛: рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рдХрд┐рд╕реА рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЬреЛрдбрд╝рдХрд░, рдЙрд╕ рдкрд░ рдЯреЗрдХреНрд╕реНрдЯ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП? рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдореИрдВ рд╕рдлрд▓ рд░рд╣рд╛ред рдореЗрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдкрд░ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдХреАрдмреЛрд░реНрдб рдкрд░ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╣рдо рдХреНрдпреВрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реА ++ рдкрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рд▓рд┐рдЦреЗрдВрдЧреЗред




рдПрдХ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛


рддреЛ, рд▓рд┐рдирдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реИрдкрдЯреЙрдк рд╣реИ рдФрд░ рдПрдХ рдпрд╛рдорд╛рд╣рд╛ DGX-200 рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рд╣реИред рд╣рдо рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдХреЛ рдпреВрдПрд╕рдмреА-рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реИрдкрдЯреЙрдк рд╕реЗ тАЛтАЛрдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдкрд╣рдЪрд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:



рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдПрдХ рдирд┐рд░рдВрддрд░ рдзрд╛рд░рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдХреА рдЪрд╛рдмрд┐рдпрд╛рдБ рджрдмрд╛рддреЗ рд╕рдордп рдЕрдиреНрдп рдкреНрд░рддреАрдХ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрдереНрдп: рдпрджрд┐ рдЖрдк рдЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ / dev / midi2 рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдХреЙрд▓рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдЙрди рдиреЛрдЯреЛрдВ рдХреЛ рдЪрд▓рд╛рдПрдЧрд╛ рдЬреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рджрдмрд╛рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рд░реБрдХреЗред

рдЕрдЧрд▓рд╛ рдХрд╛рдо рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реИред рд▓рдВрдмреЗ Google рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкреЛрд░реНрдЯрдореАрдбреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдмрд▓реНрдХрд┐ рджреБрд░реНрд▓рдн рд╣реИ, рдореБрдЭреЗ рдХрд╛рдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдорд┐рд▓реЗред рдЦреИрд░, рдЕрдм рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ:
int count = Pm_CountDevices(); for(int i = 0; i < count; i++) { const PmDeviceInfo* info = Pm_GetDeviceInfo(i); qDebug() << i << ": " << info->name << " input: " << info->input << " output: " << info->output; } 

рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛:
 0: Midi Through Port-0 input: 0 output: 1 1: Midi Through Port-0 input: 1 output: 0 2: YAMAHA Portable G MIDI 1 input: 0 output: 1 3: YAMAHA Portable G MIDI 1 input: 1 output: 0 

рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЖрдИрдбреА рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рд╣реИред рдбрд┐рд╡рд╛рдЗрд╕ 3 рд╣рдореЗрдВ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рд╕реЗ рдЗрдирдкреБрдЯ (рдЗрдирдкреБрдЯ = 1) рд╕реНрдЯреНрд░реАрдоред рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдЯреНрд░реАрдо рдЦреЛрд▓реЗрдВ:
 PortMidiStream* stream = 0; PmError e = Pm_OpenInput(&stream, good_id, 0, 100, 0, 0); if (e != pmNoError) { qWarning() << "Can't open input, error: " << e << endl; return 2; } 

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рдордп-рд╕рдордп рдкрд░ рдбреЗрдЯрд╛ рдкрдврд╝рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╕рдордп-рд╕рдордп рдкрд░ рдЯрд╛рдЗрдорд░ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрдпреВрдЯреА рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп (рд╕рдЪреНрдЪрд╛) рдФрд░ рд╕реЛ рдЬрд╛рдПрдЧрд╛ред
 PmEvent event; // ,       int c = Pm_Read(stream, &event, 1); //      if (c > 0 && Pm_MessageStatus(event.message) == 144) { unsigned int note = Pm_MessageData1(event.message), volume = Pm_MessageData2(event.message); //   note  volume } 

рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпреЗ рдореИрдЬрд┐рдХ рдирдВрдмрд░ рдХреНрдпрд╛ рд╣реИрдВ, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдорд┐рдбреА рдХрдорд╛рдВрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдорд┐рдбреА рдЖрдЬреНрдЮрд╛


рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ (рдЙрд░реНрдл рдорд┐рдбреА рдХрдорд╛рдВрдб) рдореЗрдВ рддреАрди рдкреВрд░реНрдгрд╛рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдкреЛрд░реНрдЯрдореАрдбреА рдореЗрдВ рд╕реНрдЯреЗрдЯрд╕, рдбреЗрдЯрд╛ 1, рдбреЗрдЯрд╛ 2 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред рд╣рдо рдХреЗрд╡рд▓ рд╕реНрдерд┐рддрд┐ 144 рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ - рдкрд╣рд▓реЗ рдЪреИрдирд▓ рдкрд░ рдПрдХ рдиреЛрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдиреЛрдЯ рдирдВрдмрд░ рдХреЛ data1, рдФрд░ рдЗрд╕рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ data2 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдкрд░ рдкрд╣рд▓реЗ рд╕рдкреНрддрдХ рдХреА "рдЕрдк" рдХреБрдВрдЬреА рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХрдорд╛рдВрдб 144 60 95 рдЖрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдЖрдк рд░рд┐рд▓реАрдЬ рдХрд░рддреЗ рд╣реИрдВ - 144 60 0 ред

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

рдиреЛрдЯ рдФрд░ рддрд╛рд░ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛


рдореИрдВрдиреЗ рдиреЛрдЯ рдХреЛ "3 рд╕реА" рдпрд╛ "3 рд╕реА #" рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд╣рд╛рдВ 3 рдУрдХреНрдЯреЗрд╡ рдирдВрдмрд░ рд╣реИ (рдФрд░ рдСрдХреНрдЯреЗрд╡ "рд▓рд╛" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдЖрд╕рд╛рди рд╣реИ), рд╕реА рдиреЛрдЯ рдкрджрдирд╛рдо ("рдкрд╣рд▓реЗ") рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдПрдХ рддреЗрдЬ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 class Note { public: Note(int midi_number); QString to_string() const; int tone, octave; }; Note::Note(int midi_number) { int n = midi_number - 21; octave = n / 12; tone = (n - octave * 12); } QString Note::to_string() const { return QObject::tr("%1%2").arg(octave).arg( tone == 0? "A": tone == 1? "A#": tone == 2? "B": tone == 3? "C": tone == 4? "C#": tone == 5? "D": tone == 6? "D#": tone == 7? "E": tone == 8? "F": tone == 9? "F#": tone == 10? "G": tone == 11? "G#": "??" ); } 

рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдХреЙрд░реНрдб рджрдмрд╛рддрд╛ рд╣реИ (рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдиреЛрдЯ), рддреЛ рдХрдИ рд╕рдВрджреЗрд╢ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рдЖрддреЗ рд╣реИрдВред рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬреАрд╡рд╛ рд╕реЗ рдПрдХрд▓ рдкреНрд░реЗрд╕ рдХреЛ рднреЗрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдгреЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЙрд░реНрдб рдХрд╛ рдЕрдВрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдкреНрд▓рд╕ рдиреЛрдЯреЗрд╢рди рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ: "3 рд╕реА # + 3 рдИ + 3 рдЬреА"ред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдиреЛрдЯ рдпрд╛ рдХреЙрд░реНрдб рджрдмрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд▓реЗрдЖрдЙрдЯ рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдиреЛрдЯреЗрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рдиреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдкрд░ рдХреБрдВрдЬреА рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреБрдВрдЬреА рдХреА рд░рд┐рд╣рд╛рдИ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕рдВрд╢реЛрдзрдХ (Shift, Ctrl, рдЖрджрд┐) рдЕрдиреНрдп рдХреБрдВрдЬрд┐рдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВред рд╕рднреА рд╕рдВрдпреЛрдЬрди рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЦреНрдп рдЕрдиреБрдХрд░рдг


рд╣реБрд░реНрд░реЗ, рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдм рдиреЛрдЯреЛрдВ рдХреЛ рджрдмрд╛рдпрд╛ рдФрд░ рдЫреЛрдбрд╝рд╛ рдЬрд╛рдПред рдЕрдм рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреАрдмреЛрд░реНрдб рдкрд░ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВред рд╣рдо рдЙрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдореБрдЭреЗ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдорд┐рд▓рд╛ рдерд╛ред
 #include <X11/Xlib.h> #include <X11/keysym.h> #include <X11/extensions/XTest.h> Display* display = XOpenDisplay(0); void emulate_key(QString key, bool pressed) { KeySym sym = XStringToKeysym(key.toAscii()); if (sym == NoSymbol) { qWarning() << "Failed to emulate key: " << key; return; } XTestFakeKeyEvent(display, XKeysymToKeycode(display, sym), pressed, 0); XFlush(display); } 

рдореИрдВрдиреЗ XStringToKeysym рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЗрд╕рдХреЗ рдирд╛рдо рд╕реЗ рдПрдХ рдХреБрдВрдЬреА рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛, рдЬрд┐рд╕реЗ рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЗрдВрдЧреЗред рд╢реАрд░реНрд╖рд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓ /usr/include/X11/keysymdef.h рдореЗрдВ рдорд╛рдиреНрдп рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

рд▓реЗрдЖрдЙрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлреЙрд░реНрдо рдХреЗ рд▓реЗрдЖрдЙрдЯ.ini рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
 ; letters X = 3C#+3G# Y = 3D#+3G# Z = 3E+3G# ; navigation Space = 2E Return = 1A+2A BackSpace = 4C# Delete = 4D# Left = 4A Right = 4C 

рдЦрд╝рд╛рдХрд╛


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

рдЖрдЗрдП 26 рд▓реИрдЯрд┐рди рдЕрдХреНрд╖рд░реЛрдВ рдкрд░ 26 рдХреБрдВрдЬреА (рдП рд╕реЗ рдЬреА #) рдкрд░ рдлрд┐рдЯ рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕рд╛рдд рд╢реНрд╡реЗрдд рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рд░реЛрдВ рдХрд╛ рдЪреБрдирд╛рд╡ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдпреЗ A рд╕реЗ G рддрдХ рдХреЗ рдЕрдХреНрд╖рд░ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдорддреМрд░ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрдм рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧ рдХреА рдШрдЯрддреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╢реЗрд╖ рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд▓рд┐рдЦрд╛ рдФрд░ рд╕реВрдЪреА рдХреЗ рд╢реАрд░реНрд╖ рдХреЗ рдХрд░реАрдм рдЕрдХреНрд╖рд░реЛрдВ рд╕реЗ рдПрдХ рд╢рдмреНрдж рдХреА рд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореБрдЭреЗ HINTS рд╢рдмреНрдж рдорд┐рд▓рд╛, рдФрд░ рдореИрдВрдиреЗ рдЗрди рдкрддреНрд░реЛрдВ рдХреЛ рдкрд╛рдБрдЪ рдХрд╛рд▓реА рдХреБрдВрдЬрд┐рдпрд╛рдБ рджреАрдВред рд╢реЗрд╖ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдПрдХ рд╣реА рд╕рдкреНрддрдХ рдХреЗ рднреАрддрд░ рдмрдбрд╝реЗ рдФрд░ рдЫреЛрдЯреЗ рддрд┐рд╣рд╛рдИ рдЕрд╕рд╛рдЗрди рдХрд┐рдПред рдЕрдиреНрдп рдЕрдХреНрд╖рд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрд╕реА) рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИред

рд╢реЗрд╖ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рднреА рдХреАрдмреЛрд░реНрдб рдкрд░ рдЬрдЧрд╣ рдорд┐рд▓реАред рдореБрдЭреЗ рдпрд╣ рд▓реЗрдЖрдЙрдЯ рдорд┐рд▓рд╛:



рдореНрдпреВрдЬрд╝рд┐рдХрд▓ рдиреЛрдЯреЗрд╢рди рдПрдбрд┐рдЯрд░ рдореНрдпреВрдЬрд╝рд┐рдХрдХреЛрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкреЛрд╕реНрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╡реАрдбрд┐рдпреЛ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕реЗрдЯ рдФрд░ рдХреАрдмреЛрд░реНрдб рдХреЗ рдмрдЬрд╛рдп рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рд╕рдВрдХрд▓рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдб рдЧрд┐рддреБрдм рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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


All Articles