'c#' 검색 결과 1건

  1. 2008.05.11 Wii 리모콘으로 iTunes 제어하기 (4)

Wii 리모콘으로 iTunes 제어하기

주말 저녁에 시간이 남아서 Wii 리모콘으로 장난질을 초큼 더 해봤어요. 적외선 발광 다이오드라도 있으면 마이너리티 리포트 놀이를 해봤을텐데 어디서 구해야하는지 몰라서 --; 일단은 중력 센서를 가지고 놀아봤습니다.

뭘 할까 하다가 실제로 쓸만한걸 만들어봐야겠다 싶어서 제스처를 인식해서 키보드 입력으로 전환하는 프로그램을 하나 짜봤습니다. 일단은 왼쪽으로 움직이면 키보드 LEFT, 오른쪽으로 움직이면 키보드 RIGHT로 전환하게 해봤습니다.

자기 전에 누워서 음악 듣거나, 침대에서 프로젝터로 영화 보거나 할 때 좋을 것 같아요 ㅋ (SendKeys를 쓰기 때문에 사실 iTunes가 아니라 뭐든 제어할 수 있습니다)

조금 더 일반화해서 Firefox 제스처 플러그인처럼 만들면 아주 좋겠다는.



근데, 만들어놓고보니 어째 방향이 반대인듯 ㅎㅎ

Johnny Chung Lee 아저씨가 만든 .NET용 라이브러리를 사용했고, 코드는 대략 다음과 같습니다( 아쉽게도 JS가 아니고 C#으로 했어요 --; 간만에 C#을 하려니 완전 뭐가 뭔지 ㅋ ).

    class GestureDetector : IDisposable
    {
        private Wiimote wiimote;
        private bool started;
        private float init;
        private string dir;

        public GestureDetector()
        {
            this.wiimote = new Wiimote();
            this.wiimote.Connect();
            this.wiimote.SetReportType(Wiimote.InputReport.ButtonsAccel, true);
            this.wiimote.WiimoteChanged +=
                new WiimoteChangedEventHandler(wiimote_WiimoteChanged);
        }

        void wiimote_WiimoteChanged(object sender, WiimoteChangedEventArgs args)
        {
            WiimoteState state = args.WiimoteState;
            bool buttonB = state.ButtonState.B;
            float x = state.AccelState.X;

            if (!started && buttonB)
            {
                started = true;
                init = x;
            }
            else if (started && buttonB)
            {
                if (dir == null && x > init + 0.2)
                {
                    dir = "{LEFT}";
                }
                else if (dir == null && x < init - 0.2)
                {
                    dir = "{RIGHT}";
                }
            }
            else if (started && !buttonB)
            {
                started = false;
                if(dir != null) SendKeys.SendWait(dir);
                dir = null;
            }
        }

        public void Dispose()
        {
            this.wiimote.Disconnect();
        }
    }

(코드에 대한 설명은 생략)

아참, Wii Remote랑 PC를 연결하려면 블루투스 수신이 가능해야 합니다. 저는 USB 동글이? 라는걸 하나 샀어요. Wii Remote의 1, 2 버튼을 동시에 누르면 장치를 등록할 수 있습니다.
신고
< Newer     Older >

티스토리 툴바