ページ

2010年1月15日金曜日

shiftキー、commandキー、optionキーの状態を取得する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

覚え書き。

shiftキー、commandキー、optionキーの状態を取得する。これらのキーは Modifier key と呼ばれていて NSEvent から取得できる。

こんな感じ。

NSUInteger modifierFlags = [[NSApp currentEvent] modifierFlags];

if (modifierFlags & NSShiftKeyMask) {
  // Shift key is ON
     :

Mac Dev Center: NSEvent Class Reference ーmodifierFlags


Mac OS X v10.6 からは NSEvent にクラスメソッドが追加されていてもっと簡単に取れる。

NSUIneger modifierFlags = [NSEvent modifierFlags];

Mac Dev Center: NSEvent Class Reference - modifierFlags




NSResponder には Modifier key のON/OFFイベントを処理するメソッドが用意されている。

- (void)flagsChanged:(NSEvent *)theEvent
{
  :
  if (modifierFlags & NSShiftKeyMask) {
    // Shift key is ON
       :
  } else {
    // Shift key is OFF
       :
  }
}
Mac Dev Center: NSResponder Class Reference - flagsChanged :

- - - -
こんなに簡単に取れるとは思わなかった。Quartz Event などに手を出してハマるところだった。