使用 wii遙控器來做PCB layout

Sep 24, 2007 2 分鐘 780 字 #wii

本來興致勃勃地要拿wii控制器來玩全民打棒球 ,但是中間遇到了困難就再用google找有關線上遊戲擋外掛的資料.在過程中又激盪出一個特別的想法.

前一篇有提到如何用wii手把來玩全民打棒球,搞成以後就順便來改善一下工作中一直固定姿勢的困援。

在我工作上因為人力很精簡 ,有時我要充個數去做PCB 的layout工作. 一做起碼就是一兩天跑不掉 ,整天就是左手掛在鍵盤上按快捷鍵 ,右手移動滑鼠. 如果把螢幕遮住還真跟打online game沒什麼兩樣咧 !一塊板子layout完也是腰酸背痛的. 正好在找資料的過程中看到了一盞明燈—

手裡鍵

乍看之下 ,wii的控制器跟手裡鍵長得還真像啊 .在寫了一個glovePIE 的 script後稍微試了一下, 以後要再被抓去充數lay PCB時就可以舒服地靠在椅子上輕鬆lay囉!

另外還有一個理由跟手裡鍵的說明又是不謀而合 ,既然有了glovePIE可以寫腳本 ,那以後就不必再被PowerPCB這種很貴的商用軟體給綁住了 ,不論是用便宜的EAGLE甚至是gEDA裡的PCB ,只要改寫腳本檔都可以使用相同的方式來操作了 ,厲害吧 ?Protel 快降價吧 ,PowerPCB 快降價吧 !

// Code for using PADS PowerPCB 5.x


'debug = 'x '+ mouse.CursorPosX + 'y' + mouse.Cursorposy
'debug= 'pitch '+ wiimote.pitch


if var.init==0 then
   var.init=1
   var.width=10
endif


if wiimote.B==false then

   key.Shift=wiimote.A

   if wiimote.one then
      var.xpos=mouse.CursorPosX
      var.ypos=mouse.CursorPosy

      key.Escape=true
      wait (1ms)
      key.Escape=false

      mouse.CursorPos=[680, 472]
      mouse.RightButton=true
      wait (1ms)
      mouse.RightButton=false
      wait (1ms)
      mouse.CursorPos=[731, 511]
      mouse.LeftButton=true
      wait (1ms)
      mouse.LeftButton=false
      mouse.CursorPos=[var.xpos,var.ypos]
      wait (1s)

   endif

   if wiimote.two then
      var.xpos=mouse.CursorPosX
      var.ypos=mouse.CursorPosy


      key.Escape=true
      wait (1ms)
      key.Escape=false

      mouse.CursorPos=[680, 472]
      mouse.RightButton=true
      wait (1ms)
      mouse.RightButton=false
      wait (1ms)
      mouse.CursorPos=[731, 623]
      mouse.LeftButton=true
      wait (1ms)
      mouse.LeftButton=false
      mouse.CursorPos=[var.xpos,var.ypos]

      wait (1s)

   endif




   if wiimote.Left then
      mouse.CursorPos=[14, 963]
      mouse.LeftButton=true
      wait (1ms)
      mouse.LeftButton=false
      wait (100ms)
   endif

   if wiimote.right then
      mouse.CursorPos=[1250, 963]
      mouse.LeftButton=true
      wait (1ms)
      mouse.LeftButton=false
      wait (100ms)
   endif

   if wiimote.up then
      mouse.CursorPos=[1265, 98]
      mouse.LeftButton=true
      wait (1ms)
      mouse.LeftButton=false
      wait (100ms)
   endif
   if wiimote.down then
      mouse.CursorPos=[1265, 942]
      mouse.LeftButton=true
      wait (1ms)
      mouse.LeftButton=false
      wait (100ms)
   endif


   if wiimote.Minus then
      var.width --
      type 'w '+ var.width
      key.Enter=true
      wait (0.5ms)
      key.Enter=false
      wait (100ms)
   endif

   if wiimote.Plus then
      var.width ++
      type 'w '+ var.width
      key.Enter=true
      wait (0.5ms)
      key.Enter=false
      wait (100ms)

   endif
else
    if wiimote.a then
       ^Q=true
       wait (1ms)
       ^Q=false
       wait (0.5s)

    end if

    if wiimote.Roll > 50 then
       ^R=true
       wait (1ms)
       ^R=false
       wait (0.5s)
    endif

    if wiimote.Pitch > 50 then
       type 'ss '
       wait (0.5s)
    endif


   if wiimote.Minus then
      var.width = var.width-5
      type 'w '+ var.width
      key.Enter=true
      wait (0.5ms)
      key.Enter=false
      wait (1ms)
   endif

   if wiimote.Plus then
      var.width =var.width+5
      type 'w '+ var.width
      key.Enter=true
      wait (0.5ms)
      key.Enter=false
      wait (1ms)

   endif

endif

if wiimote.home then
   debug=' home'
   type 'w '+ var.width
   key.Enter=true
   wait (0.5ms)
   key.Enter=false
   wait (0.5ms)

endif



if mouse.WheelDown then
   'debug=' wheel down'
   mouse.CursorPos=[640, 512]
   ^W=true
   wait (0.5ms)
   ^W=false
   mouse.RightButton=true
   wait (0.5ms)
   mouse.RightButton=false
   wait (0.1s)
   key.Escape=true
   wait (0.1ms)
   key.Escape=false

endif

if mouse.wheelup then
   'debug=' wheel up'
   mouse.CursorPos=[640, 512]
   ^W=true
   wait (0.5ms)
   ^W=false
   mouse.LeftButton=true
   wait (0.5ms)
   mouse.LeftButton=false
   wait (0.1s)
   key.Escape=true
   wait (1ms)
   key.Escape=false
endif

if mouse.MiddleButton
   'debug=' middle'
   ^B=true

   wait (0.5ms)
   ^B=false

endif
`