積極的にメモっていく姿勢

題名詐欺。更新頻度の低さが売り。

任意の文字列をワンボタンで入力しきる機を作った

床に Arduino Leonardo 互換機が落ちていました.手に取りこそしましたが,しまうところを考え始めるとストレスで押しつぶされそうになったので,便利なものを作り,常に使うことでしまう場所を考える必要を消し去りました.
 
作ったのは様々なメールアドレスや ID ,パスワード等をワンボタンで入力してくれる最高便利機械です.先にいっておきますが,パスワードの使い回しはよくないです.パスワードマネージャーを使うなりなんなりしましょう.
 
使ったボードはこちらのブログの方と同じものです.公式サイトを探す気力が尽きたので,これで許してください.
arduino.hateblo.jp  

運用の様子です.別に自分の部屋で使えればいいので,ブレッドボードそのままで置いて使っています.

Arduino Leonardo 互換ボードが USB ポートに接続されている様子が写っています
USB A を延長して干渉を防ぎ無理やりつなげている
ブレッドボードにタクトスイッチが 2 つ,Arduino Leonardo 互換ボードに接続されている様子が写っています
基板を起こす気力もないのでブレッドボードそのままです
 
ソースコードも回路もマジでなんの工夫もありません.回路に関しては,内部プルアップを使っているおかげで,GND とポートの間にタクトスイッチを挟んでいるだけなので,回路図は割愛します.ソースコードは一応載せておきます.なんかでコピペしたくなるかもしれないので.

#include "Keyboard_jp.h"
// Keyboard_jp.h は https://mgt.blog.ss-blog.jp/2016-01-14 より拝借
// Mac なら標準の <Keyboard.h> でも問題なく動く

char nankanomojiretsu[ ] = "ninninomojiretsu_hoge@fug[a"
const int NANKA_NO_PORT = 9;

void setup() {
  pinMode(NANKA_NO_PORT, INPUT_PULLUP);
}

void loop() {
  if( digitalRead(NANKA_NO_PORT) == LOW ) {
    for (int i = 0; i < sizeof(nankanomojiretsu); i++){
      Keyboard.print(nankanomojiretsu[i]);
    }
  }
  // スイッチを増やしたら増やしただけ同じのを書けばいい
  
  // 1 回だけ発動するためのトラップ
  // ちゃんと立ち上がりを取るのがめんどかった
  while( digitalRead(NANKA_NO_PORT) == LOW );
  // || で読む digitalRead を増やして使ってるけど複数入力でも対応できてる感じする
}

ちょっとだけハマりポイントがあったので,それだけメモしておきます.

キー配列の問題を考慮したデータを作らないといけない

Windows 11

Arduino Leonardo 側は US101 キーボードのつもりで文字を解釈して送信する一方で,Windows 側では JP106 キーボードがつながっていると思って受信して文字を解釈するため,ソースコード内に書いたままの文字が出ませんでした.
 
たとえば =Windows 側に送るつもりで,ソースコード内に = とそのまま打ち込んで Keyboard.print( ) すると,^ が出てきます.確かに US101 キーボードの = の位置と同じところの JP106 キーボードのキーを確認すると ^ が鎮座しています. (参考までにキー配列の画像を載せてくださっている記事をリンクします) pentan.info

そうなんか~と思いながら US101 キーボードを眺めていると,US101 キーボード側に文字の割り当てがないのに,JP106 キーボードに割り当てのあるキーがあることに気づきました.リンク先の図では右側にある |_ です._ はメールアドレスでも ID でも パスワードでも使われがちなので困りました.みんなどうしているのかなと思ってググってみたら,このブログがヒットしました.
 
先ほどの記事の方と同じく,以下のブログに掲載のあった Keyboard_jp.cppKeyboard_jp.h をありがたく拝借し試してみたところ,無事ソースコード内に記載のとおりの文字が Keyboard.print( )Windows 側に送られました.もちろん _ もそのまま受け取ることができました.
mgt.blog.ss-blog.jp  

Mac

完成を確信したので Mac にも繋いでみたところ,記号が軒並み意図通り出力されません.ここで,接続した瞬間に出てきたキーボードの設定ウィザードみたいなのを即消したことを思い出して設定に潜っていきましたが,よくわかりませんでした.たぶんここで JP106 キーボードと設定すればいいんでしょうけれども,眠かったのでなかったことにしました.
 
それでも動かないのは癪なので Keyboard_jp.h から Keyboard.h に戻す形でソースコードを書き換えて書き込み再度接続したところ,満足に文字が出てきました.Mac では謎の HID キーボードは US101 キーボードとして取り扱うのかもしれません.ちゃんと調べてはいません.でも使えるからもうこれでいいです.  

床に落ちているもので積極的に工作しよう

作って使ってしまえば,きれいに片付ける必要がなくなるのでおすすめです.

おまけ

Canva でアイキャッチを作る機能を使ってみました.どこかの SNSSDGs に配慮して(?)リンクの詳細文字列を表示するのをやめたので,こういうサムネイルに文字が入っているのが大事になってしまいました.

Canva でつくったサムネイル画像です.画像は左右で要素が異なります.左側はブレッドボードの写真で制作の様子を表していて,その写真の左上に重ねる形で「積極的に目盛っていく姿勢」とブログのタイトルを記載し,写真の右下に「@tomio2480」と筆者情報を記載してあります.右側はブログタイトルである「任意の文字列をワンボタンで入力しきる機を作った」と大きく記載されています.
Canva に感謝しながらどこかの SNS を見つめています