OSXの下で音量を変更できるアプリがあります。それが欠けているものは、サウンドアップ/ダウンキーを押したときに提供される視覚フィードバックです。誰でもプログラムでその動作を呼び出す方法を知っていますか? ありがとうOSXがサウンドレベルのグラフィックをプログラムで呼び出す
答えて
これは、上下のボリュームキーの物理的な押下をシミュレートし、OSに詳細を処理させることで実装します。ユーザーが視覚的なフィードバックを無効にしている可能性があります。おそらく変化します。これが最も安全な方法です。
ここでこのトリックを行いジョージ・ワーナーとケーシーFleserから少しコードです。これが実際にあなたが物事をしたいやり方であることを注意深く考えてみてください。
// Save as sound_up.m
// Compile: gcc -o sound_up sound_up.m -framework IOKit -framework Cocoa
#import <Cocoa/Cocoa.h>
#import <IOKit/hidsystem/IOHIDLib.h>
#import <IOKit/hidsystem/ev_keymap.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;
}
static void HIDPostAuxKey(const UInt8 auxKeyCode)
{
NXEventData event;
kern_return_t kr;
IOGPoint loc = { 0, 0 };
// Key press event
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);
// Key release event
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);
}
int main(int argc, char *argv[]) {
HIDPostAuxKey(NX_KEYTYPE_SOUND_UP);
}
その他の興味深いキーコードが含まれます:NX_KEYTYPE_SOUND_DOWN
、NX_KEYTYPE_MUTE
、NX_KEYTYPE_PLAY
。
ああ、IOKitのものが必要な場合があります。私はこれを見て、それがどのように機能するか見るつもりです。 – Lazloman
これは実際にボリュームを完全に増減させます。つまり、一度に1つの "ブロック"になります。私がやりたいことは、オプションキーと上/下ボタンを押して音量が小数点以下になるように、つまりブロックの四分の一に増やすことができたときに、プレライオンの存在を再現することです。私は分量でコードの音量を増減することができますが、OSに音量の分数増減を同じ分数、つまり一度に4分の1ブロック分だけ報告するようにしたいと考えています。私はIOKitを見て、私がこれをすることができるかどうかを見ていきます、ありがとう、これは私にいくつかのアイデアを与えます。 – Lazloman
- 1. プログラムで呼び出すブートストラップバリ
- 2. ViewModelのメソッドをプログラムで呼び出す
- 3. ボタンのクリックメソッドをプログラムで呼び出す
- 4. プログラムでデリゲートでストーリーボードを呼び出す
- 5. のReadFileプログラムの呼び出しがdebug_heap.cpp
- 6. プログラムでInViewerSearchを呼び出す方法
- 7. クリップボードメニューをプログラムで呼び出す方法
- 8. プログラムでdidEndOnExitを呼び出す
- 9. JavaでCプログラムを呼び出す
- 10. プログラムでSOAP Webサービスを呼び出す
- 11. プログラムでSendToを呼び出す
- 12. プログラムでブラウザを呼び出す
- 13. 同じスパイダーをプログラムで呼び出す
- 14. プログラムでアノテーションプロセッサを呼び出す
- 15. プログラムでリボンアクションを呼び出す
- 16. Uikit3 - モーダルをプログラムで呼び出す
- 17. 他のプログラム(Mac OSX)からのBashスクリプトによるAntの呼び出し
- 18. Pythonプログラムの呼び出しが
- 19. 別のJavaプログラムを呼び出す
- 20. editActionsForRowAtIndexPathはプログラムで呼び出す
- 21. cプログラム呼び出し関数の呼び出し
- 22. UIグラフィック要素の自己呼び出しイニシャライザ
- 23. install4j 7 - Mac OSXのhandleQuit()がもう呼び出されない
- 24. プログラム型のUI:super.loadViewを呼び出さず、super.viewDidLoadを呼び出しますか?
- 25. CプログラムからJavaを呼び出す
- 26. JavaからVBプログラムを呼び出す
- 27. PHPからRPGプログラムを呼び出す
- 28. swi_prolog C++プログラムを呼び出す
- 29. C++プログラムからコンソールアプリケーションを呼び出す
- 30. pyqtでQfiledialogを呼び出すとプログラムが終了します
私は考えていましたが、私はもっと明確にすべきでしたが、私がやっているのは、キープレスよりも小さなインクリメントで音量を上げたり下げたりすることです。私はキーイベントを投稿すると、意図した分数増分ではなく、標準的な増分で音量が上がります。 – Lazloman
その場合は正直なところ、デフォルトのOS Xボリューム通知を使ってはいけません。これは、レベルが1ブロックのアトミックな増分/減分として示されているからです。ユーザーが実際に作成しているときに、あなたが言うように、はるかに細かい変更。 –
私はLionの前にあった動作を再作成しようとしています。これはもうできないと言っていますか? – Lazloman