Qt :: рдореБрдЦреНрдп рдЧрдгрдирд╛ QKeyEvent рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП 15 рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рдХреБрдВрдЬреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ (рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рджреЗрдЦреЗрдВ)ред рдЗрди рд╕рднреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХреАрдмреЛрд░реНрдб рдкрд░ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ (рдЗрдВрд╕реНрдЯреЙрд▓рд╡реЗрдиреНрдЯрдлрд┐рд▓реНрдЯрд░) рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЖрдкрдХреЛ рдСрдбрд┐рдпреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдкреНрд▓реЗрдмреИрдХ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ)ред
рд╡реНрдпреБрддреНрдХреНрд░рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рд▓реЗрдЦ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕рдПрдХреНрд╕ рдореЗрдВ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХрдВрдЯреНрд░реЛрд▓ рдХрдорд╛рдВрдб рднреЗрдЬрдирд╛ (рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рд╕рд╛рдордЧреНрд░реА рд╕рд┐рд╕реНрдЯрдо рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЪрдХреНрд░ рдХреЛ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЗрд╡реЗрдВрдЯ рдХреЗ рдореБрджреНрджреЗ рдХреЗ рдЖрдЧреЗ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╡рд░реНрдгрди рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдо рддреМрд░ рдкрд░ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- рдСрдбрд┐рдпреЛ рдкреНрд▓реЗрдмреИрдХ рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдирд╛;
- рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдЕрдиреБрдХрд░рдг;
- рдСрдбрд┐рдпреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдВрдбрд▓ рдЖрдкрдХреЛ рд╕реЛрдлреЗ рд╕реЗ рдЙрдареЗ рдмрд┐рдирд╛ рдСрдбрд┐рдпреЛ / рд╡реАрдбрд┐рдпреЛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдХреЛрдИ рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ рдЖрддреА рд╣реИ рддреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд▓реЗрдмреИрдХ рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ;
- рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рдХреАрдмреЛрд░реНрдб рдФрд░ рдорд╛рдЙрд╕ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИ (рдкреНрд░рд╕реНрддреБрдд рдХреЛрдб рдХреЛ рдХреБрдВрдЬреА рдХреЗ рдкреВрд░реНрдг рд╕реЗрдЯ рдкрд░ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж);
- "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо" рд╕рд┐рд╕реНрдЯрдо, рдирдП рдорд╛рдирд╡-рдорд╢реАрди рдЗрдВрдЯрд░рдлреЗрд╕ (рд╡реЙрдпрд╕ рдХрдорд╛рдВрдб рдХрдВрдЯреНрд░реЛрд▓, рдЖрджрд┐) рдХрд╛ рдирд┐рд░реНрдорд╛рдгред
рдЪреВрдВрдХрд┐ QEvent рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ "рдЕрдВрджрд░" рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдорд╛рдирдХ Qt рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдкрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ (рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдПрдХреНрд╕ рд╡рд┐рдВрдбреЛ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ рдХрдИ рдлреНрд░реЗрдорд╡рд░реНрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рд╡рд┐рд╡рд░рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо
SendKeyEventToSystem (Qt :: Key qtKey) рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рдЧрднрдЧ рдкреВрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬрдЧрд╣ рджреЗрдВрдЧреЗ, рдЬреЛ Qt :: рдХреБрдВрдЬреА рдЧрдгрдирд╛ рд╕реЗ рдХреБрдВрдЬреА рдХреЛрдб
рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реНрд▓реЙрдЯреНрд╕ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
void playPauseToogle() {
рд╣рдо
#ifdef OS_TYPE рдФрд░
#endif рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдбрд┐рдкреЗрдВрдбреЗрдВрдЯ рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░ рджреЗрдВрдЧреЗ
( рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЛрдб рдХрд╛ рдПрдХ рдФрд░ рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рдЕрд▓рдЧ macx.mm рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдХрд╛рд▓ рд▓реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ)ред
рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдХреАрдмреЛрд░реНрдб рдЗрдореНрдпреВрд▓реЗрд╢рди
рдЗрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ,
SendInput рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА MSDN
рд╡рд░реНрдЪреБрдЕрд▓-рдХреБрдВрдЬреА рдХреЛрдб рдкреГрд╖реНрда рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ <Windows.h> рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреА рд╣реЛрдЧреАред
#ifdef Q_OS_WIN32 #define WINVER 0x0500 #include <Windows.h> #endif
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рддреБрд░рдВрдд рдХреЛрдб рджреЗрддрд╛ рд╣реВрдВ (рд╡рд┐рдВрдбреЛрдЬ рднрд╛рдЧ рдореЗрдВ):
sendKeyEventToSystem(Qt::Key qtKey) {
рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдХреЗрд╡рд▓ 3 рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХреЛрдб рдорд┐рд▓рд╛рди рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИред
рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЕрдиреБрдХрд░рдг
рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХреБрдВрдЬреА рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ libXtst рдбреЗрд╡рд▓рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (
X11 рд░рд┐рдХреЙрд░реНрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдкреИрдХреЗрдЬ рд╕реЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛:
sudo apt-get install libxtst-dev
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛:
unix:!macx:LIBS += -lXtst -lX11
рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХреБрдВрдЬреА рдХреЗ рдХреЛрдб рдХреЗ рдЕрдиреБрд░реВрдк рдХрдИ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ (рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ X11 / keyymdef.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рд╣реИрдВ)ред
#ifdef Q_OS_LINUX #include <X11/Xlib.h> #include <X11/extensions/XTest.h> #define XF86AudioLowerVolume 0x1008ff11 #define XF86AudioMute 0x1008ff12 #define XF86AudioRaiseVolume 0x1008ff13 #define XF86AudioPlay 0x1008ff14 #define XF86AudioStop 0x1008ff15 #define XF86AudioPrev 0x1008ff16 #define XF86AudioNext 0x1008ff17 #define XF86AudioPause 0x1008ff31 #endif
рд▓рд┐рдирдХреНрд╕ рдЕрдиреБрдХрд░рдг рдХреЛрдб:
#ifdef Q_OS_LINUX unsigned int key; unsigned int keycode; switch (qtKey) { case Qt::Key_MediaPrevious: key = XF86AudioPrev; break; case Qt::Key_MediaTogglePlayPause: key = XF86AudioPlay; break; case Qt::Key_MediaNext: key = XF86AudioNext; break; default: return; break; }
рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░ рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЕрдиреБрдХрд░рдг
MacOS X рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ (рдорд╛рдзреНрдп рдЙрджрд╛рд╣рд░рдг C- рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдереЗ) рдЬрдм рддрдХ рдХрд┐ Google рдиреЗ
рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ рдХреЛрдХреЛ рдПрдХреАрдХрд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ (рдХреЛрдХреЛ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ) рдХреЗ рдПрдХ рд▓реЗрдЦ рдХреЗ рдкрд╛рд░ рдирд╣реАрдВ рдЖрдпрд╛ред ред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖рд╛ рдХреЗ рд▓реЗрдЦ рдореЗрдВ рдЖрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП C ++ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореБрдЭреЗ рд╕рдЯреАрдХ рд╡рд┐рдкрд░реАрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА - рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЬреЛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рдВрдХрд▓рдХ рдиреЗ рд╢рдкрде рд▓реА)ред рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рдХрд▓рд╛:
1. macx.mm рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдФрд░ рдЙрд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЛрдб рд░рдЦрд╛ (рд▓рд╛рдЗрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА
OBJECTIVE_SOURCES += macx.mm
2. macx.h рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдФрд░ рдЙрд╕рдореЗрдВ macx.mm рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ рдХреЛ рд░рдЦрд╛ (#include "macx.h" рдХреЛ macx.mm рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП)ред
3. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:
macx:LIBS += -framework ApplicationServices -framework IOKit
4. рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдХреЗ рдЕрдВрджрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЗрдбрд░ рдФрд░ macx.h рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
5. рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рд╕реНрд╡рд┐рдЪ-рдХреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдирдП рдмрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдпрд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдореЗрдВ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдорд┐рд▓рд╛:
#ifdef Q_OS_MAC #include <ApplicationServices/ApplicationServices.h> // UInt8 #include <IOKit/hidsystem/ev_keymap.h> // #include "mac.h" // Objective-C #endif
рдирд┐рдореНрди рдХреЛрдб
SendKeyEventToSystem рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ:
#ifdef Q_OS_MAC switch (qtKey) { case Qt::Key_MediaPrevious: HIDPostAuxKey( NX_KEYTYPE_PREVIOUS ); break; case Qt::Key_MediaTogglePlayPause: HIDPostAuxKey( NX_KEYTYPE_PLAY ); break; case Qt::Key_MediaNext: HIDPostAuxKey( NX_KEYTYPE_NEXT ); break; default: return; break; } #endif
Mac.mm рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:
#import <Cocoa/Cocoa.h> #import <IOKit/hidsystem/IOHIDLib.h> #import <IOKit/hidsystem/ev_keymap.h> #include "macx.h" static io_connect_t get_event_driver(void) { static mach_port_t sEventDrvrRef = 0; mach_port_t masterPort, service, iter; kern_return_t kr; if (!sEventDrvrRef) { // Get master device port kr = IOMasterPort( bootstrap_port, &masterPort ); check( KERN_SUCCESS == kr); kr = IOServiceGetMatchingServices( masterPort, IOServiceMatching( kIOHIDSystemClass ), &iter ); check( KERN_SUCCESS == kr); service = IOIteratorNext( iter ); check( service ); kr = IOServiceOpen( service, mach_task_self(), kIOHIDParamConnectType, &sEventDrvrRef ); check( KERN_SUCCESS == kr ); IOObjectRelease( service ); IOObjectRelease( iter ); } return sEventDrvrRef; } void HIDPostAuxKey(const UInt8 auxKeyCode ) { NXEventData event; kern_return_t kr; IOGPoint loc = { 0, 0 }; // UInt32 evtInfo = auxKeyCode << 16 | NX_KEYDOWN << 8; bzero(&event, sizeof(NXEventData)); event.compound.subType = NX_SUBTYPE_AUX_CONTROL_BUTTONS; event.compound.misc.L[0] = evtInfo; kr = IOHIDPostEvent( get_event_driver(), NX_SYSDEFINED, loc, &event, kNXEventDataVersion, 0, FALSE ); check( KERN_SUCCESS == kr ); // evtInfo = auxKeyCode << 16 | NX_KEYUP << 8; bzero(&event, sizeof(NXEventData)); event.compound.subType = NX_SUBTYPE_AUX_CONTROL_BUTTONS; event.compound.misc.L[0] = evtInfo; kr = IOHIDPostEvent( get_event_driver(), NX_SYSDEFINED, loc, &event, kNXEventDataVersion, 0, FALSE ); check( KERN_SUCCESS == kr ); }
рдирд┐рд╖реНрдХрд░реНрд╖:
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рдерд╛ рдХрд┐ рдЕрдм рддрдХ рдЦреБрд▓реЗ рддреМрд░ рдкрд░ рд╕реБрд▓рдн рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдХреАрдмреЛрд░реНрдб, рдорд╛рдЙрд╕ рдФрд░ рдЕрдиреНрдп рдШрдЯрдирд╛рдУрдВ рд╕рд╣рд┐рдд)ред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдРрд╕рд╛ рдХреЛрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдкреНрд░рд╕реНрддреБрдд рдХреЛрдб рдПрдХрджрдо рд╕рд╣реА рд╣реИ (рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдирдИ рдЪрд╛рдмрд┐рдпрд╛рдБ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╕реНрд╡рд┐рдЪ-рдХреЗрд╕ рдЕрдиреБрдХреНрд░рдо рдХреИрд╕реЗ рдмрдврд╝реЗрдЧрд╛)ред рдлрд┐рд░ рднреА, рдЗрд╕реЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдкрд░ рдЬреНрдЮрд╛рди рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЧреБрд▓реНрд▓рдХ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдпреЛрдЧрджрд╛рди рджреЗрдВред
рд▓реЗрдЦ рдкрд░ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕
рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рдЙрдмрдВрдЯреВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд╕рдм рдХреБрдЫ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред WMWare рдореЗрдВ рдпрд╣ рдЦрд╛рдореА рдирд╣реАрдВ рд╣реИ (рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред
рдкрд░рд┐рд╢рд┐рд╖реНрдЯ: рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХреБрдВрдЬреА рдФрд░ рдЙрдирдХреА рдкрд░рд┐рднрд╛рд╖рд╛ (#define рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреА рд╕реВрдЪреАред
Qt :: рдХреБрдВрдЬреА | рд╡рд┐рдВрдбреЛрдЬ | рд▓рд┐рдирдХреНрд╕ | рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ |
---|
Qt :: Key_VolumeDown | VK_VOLUME_DOWN | XF86AudioLowerVolume | NX_KEYTYPE_SOUND_DOWN |
Qt :: Key_VolumeMute | VK_VOLUME_MUTE | XF86AudioMute | NX_KEYTYPE_MUTE |
Qt :: Key_VolumeUp | VK_VOLUME_UP | XF86AudioRaiseVolume | NX_KEYTYPE_SOUND_UP |
Qt :: Key_BassBoost | | | |
Qt :: Key_BassUp | | | |
Qt :: Key_BassDown | | | |
Qt :: Key_TrebleUp | | | |
Qt :: Key_TrebleDown | | | |
Qt :: Key_MediaPlay | VK_MEDIA_PLAY_PAUSE | XF86AudioPlay | NX_KEYTYPE_PLAY |
Qt :: Key_MediaStop | VK_MEDIA_STOP | XF86AudioStop | |
Qt :: Key_MediaPrepret | VK_MEDIA_PREV_TRACK | XF86AudioPrev | NX_KEYTYPE_PREVIOUS |
Qt :: Key_MediaNext | VK_MEDIA_NEXT_TRACK | XF86AudioNext | NX_KEYTYPE_NEXT |
Qt :: Key_MediaRecord | | | |
Qt :: Key_MediaPause | | XF86AudioPause | |
Qt :: Key_MediaTogglePlayPause | VK_MEDIA_PLAY_PAUSE | XF86AudioPlay | NX_KEYTYPE_PLAY |
рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ:
1. рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг:
C ++ (Qt) рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ, sendkeys, kestrokes, рдЖрджрд┐ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА2.
SendInput рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╡рд░рдг рдФрд░ MSDN рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░
рдХреАрдмреЛрд░реНрдб рдХреЛрдб рдХреА рдПрдХ
рд╕реВрдЪреА ред
3.
C & X11 рдореЗрдВ рдореЗрджрд┐рдпрд╛рдХреА рдкреНрд░реЗрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг - рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрди рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ "xev" рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ (рдЙрдмрдВрдЯреВ рдореЗрдВ: "sudo apt-get install x11-utils") рдЖрдк рдкреНрд░рдореБрдЦ рдХреЛрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА
рд╕рд╛рде рдЖрд░реНрдХрд▓рд┐рдирдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрдЦ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
.org4.
рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ MacOS X рдореЗрдВ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдгред