2018/09/14

Recent entries from same category

  1. golang で tensorflow のススメ
  2. Go 言語の非同期パターン
  3. golang の html/template でレイアウトを扱う方法
  4. Golang と Vue.js で簡単なアプリケーションを作ってみた。
  5. Go言語で ping を打って「にゃーん」を表示させる

今日 Reddit で見付けた面白ネタ。

簡単そうだなと思ったので作ってみた。

とは言っても家にボタンらしきデバイスが無いので、カメラの自動シャッターボタンで代用。ダイソーで300円くらいで売ってます。

Linux で User Input (入力キャラクタデバイス) は /dev/input/ 配下のデバイスファイルを介してやり取りされます。以前この uinput を簡単に扱えるデーモンを作ったのでそちらを使います。

GitHub - mattn/uinputd: uinput launcher

uinputd uinput daemon Usage Run uinputd with specifying configuration file like below. -1 uinputd A f...

https://github.com/mattn/uinputd

まずは空の ~/.config/uinputd というファイルを作り uinputd -v で起動します。するとデバイス名と物理デバイス名が表示されるので ~/.config/uinputd を YAML で以下の様に設定します。

- device: XX:XX:XX:XX:XX:XX
  release: echo 押した

再度 uinputd を起動し、デバイスとなるボタンを押すと「押した」と表示されると思います。ここまで出来たらあとは、フォアグラウンドウィンドウで動いている gvim に対して if err != nil... を送りつけるコマンドを作ります。

#!/bin/bash

PROC=$(readlink /proc/$(xdotool getwindowfocus getwindowpid)/exe)
NAME=$(basename $PROC)

if [[ $NAME = "vim"* ]] || [[ $NAME = "gvim"* ]]; then
  $PROC --servername GVIM --remote-send "if err != nil {<nl>}<esc>O"
fi

これを ~/bin/vim-iferr というファイルに保存して実行権限を付け、先程の ~/.config/uinputd に設定します。

- device: XX:XX:XX:XX:XX:XX
  release: /home/mattn/bin/vim-iferr

簡単ですね。

Bluetooth3.1 IOS Androidスマートフォン タブレットPC カメラシャッターリモコンコントロール ブラック Bluetooth3.1 IOS Androidスマートフォン タブレットPC カメラシャッターリモコンコントロール ブラック

ノーブランド / ¥ 48 ()
 
発送可能時間:通常4~5営業日以内に発送


blog comments powered by Disqus