前回の続き。
経緯
オカムラの電動デスクを使っており、それと互換性のあるLinakのUSBケーブルを入手してPCと連携した。
そこまでは良かったんだけれど、付属のツールが自分の用途と微妙に合っておらず、キーボード操作できない点と、必要もないアラートを定期的にポップアップしてくるのが不満だった。
導入
メインがWin機なので当然そのままは使えない。
そのためだけのraspiを買ったりはしたくなかったので、Win上に最小構成の制御用のUbuntu仮想マシンを立てた。
ハイパーバイザのUSBデバイス共有で「USB Control Link」を共有すると、ゲスト上で制御用USBケーブルが認識できた。
ツールの導入は、ソースと依存パッケージを単純に引っ張ってくるだけで使えた。
apt-get install g++ libusb-1.0-0-dev
git clone https://github.com/ranma1988/usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable.git
cd usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable
make
相対位置調整できるようにする
高さの数値を引数に渡すと、その高さまで調整してくれる。
./example-moveTo 6000
これだけでかなり便利ではあるのだけれど、絶対位置での指定しかできないので、相対位置の調整も出来るようにした。
adjust.sh
#!/bin/sh cd `dirname $0` height=`./example-getStatus 1 | sed -e "s/^.*height: *//g" | sed -e "s/ = .*//g"` ./example-moveTo `expr $height + $1`
Winから叩けるようにする
操作のたびいちいちゲストに入ってられないので、batを作ってWinから一発で叩けるようにした。
move.bat
@echo off cd %~dp0 set ADDR=192.168.254.128 set KEY=ubuntu_privatekey.ppk set USR=root ssh %USR%@%ADDR% -i %KEY% /root/usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable/example-moveTo %1
adjust.bat
@echo off cd %~dp0 set ADDR=192.168.254.128 set KEY=ubuntu_privatekey.ppk set USR=root ssh %USR%@%ADDR% -i %KEY% /root/usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable/adjust.sh %1
ホットキー化する
キーボードから一発で呼べるように、Autohotkeyに組み込んだら完成。
それぞれの値は適当に調整して決め打ちしている。
desksit(){ run,D:\datas\program\swift\move.bat 0 } deskstand(){ run,D:\datas\program\swift\move.bat 4000 } deskmax(){ run,D:\datas\program\swift\move.bat 10000 } deskup(){ run,D:\datas\program\swift\adjust.bat 1000 } deskdown(){ run,D:\datas\program\swift\adjust.bat -1000 } >+Delete::deskmax() >+PGUP::deskstand() >+PGDN::desksit() >^PGUP::deskup() >^PGDN::deskdown()
おわり
物理ボタンでの操作や付属のソフトウェアでの操作時は、指定した高さになるまでボタンを押し続ける必要があった。
移動し切るまで押したまま待つ必要も無くなり、一回呼べば勝手に指定位置まで動かしてくれるので、ちょっと楽になった。
これでデスクもベッドなどと同様に、ホットキーで一発で操作できるようになったので満足した。