電子工作

ショートカットキーボード

  • 閲覧数: 1652
  • 4
  • C.120x80.336741c6429a4accf933849f0cc87fbb
  • C.120x80.c19b1938b28aaab30788be4121e70562
  • C.120x80.db071d4340ffd901e3c9479dbf40240d

作品説明

久々の電子工作なのでリハビリ的な感じでプロトタイピングしてみました(´ω`)

普段のブラウジングから動画制作・音声編集等までよく使う「切り取り/コピー/貼り付け」などの各種ショートカットキーを1Clickでできるようにする補助キーボードです。

当初は余りものの4x4マトリクスキーパッドを流用するつもりでしたが、ごろ寝で使ったりするとき操作しづらくなったので「人間工学ニ基イテでざいんシテオリマス」的な感じに仕立てました(´ω`)ノ

レシピ

回路図はこちら(トリミングされちゃってますのでクリックしてご覧ください)(っ´ω`)っ

ショートカットキーボード回路図

ショートカットキーボード回路図


ソースコードは下記のような感じ(´ω`)USBDeviceをImportした後、とりあえず動かせるようにテキトーに組みました。

//---------------------------------------------------------------
// main.cpp / mbed Project ShortcutKeyboard
//---------------------------------------------------------------
#include "mbed.h"
#include "USBKeyboard.h"

// p9 ~ p20 までの12本をデジタル入力で使用
DigitalIn keys[] = {p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20};
USBKeyboard keyboard;

int main() {
    while(1) {
        for(int i=0; i<12; i++){
            keys[i].mode(PullDown);  // ぜんぶPullDown
        }
        
        // SW0 ( 親指の↑ ) : Altに割り当て(・・・てるんですがここ動作してません)
        if(keys[0]){                                  // 今度なおします(棒
            keyboard.keyCode(KEY_ALT);
            while(keys[0]){
                keyboard.keyCode(KEY_ALT);
                wait(0.01);
            };
        }
        // SW1 ( 親指の↓ ) : Return/Enter ( keyCodeのdefine探したんですが
        else if(keys[1]){                        //   見当たらなかったので無理クリ \n で )
            keyboard.putc('\n');
            wait(0.01);
            while(keys[1]);
        }
        // SW2 ( 人差し指の↑ ) : Ctrl + v, 貼り付け
        else if(keys[2]){
            keyboard.keyCode('v', KEY_CTRL);
            wait(0.01);
            while(keys[2]);
        }
        // SW3 ( 人差し指の真ん中 ) : Ctrl + c, コピー
        else if(keys[3]){
            keyboard.keyCode('c', KEY_CTRL);
            wait(0.01);
            while(keys[3]);
        }
        // SW4 ( 人差し指の↓ ) : Ctrl + x, 切り取り
        else if(keys[4]){
            keyboard.keyCode('x', KEY_CTRL);
            wait(0.01);
            while(keys[4]);
        }
        // SW5 ( 中指の↑ ) : Space
        else if(keys[5]){
            keyboard.putc(' ');
            wait(0.01);
            while(keys[5]);
        }
        // SW6 ( 中指の真ん中 ) : Ctrl + s, 保存(の場合が多い)
        else if(keys[6]){
            keyboard.keyCode('s', KEY_CTRL);
            wait(0.01);
            while(keys[6]);
        }
        // SW7 ( 中指の↓ ) : Ctrl + z, アンドゥ(作業を一つ前に戻す)
        else if(keys[7]){
            keyboard.keyCode('z', KEY_CTRL);
            wait(0.01);
            while(keys[7]);
        }
        // SW8 ( 薬指の↑ ) : Delete(・・・を割り当てる予定ですが未実装です)
        else if(keys[8]){
            // Delete key ?
        }
        // SW9 ( 薬指の↓ ) : Ctrl + y, リドゥ(戻した作業をもう一回やる)
        else if(keys[9]){                 // Ctrl + Shift + z がリドゥの場合もあるのでなんとも
            keyboard.keyCode('y', KEY_CTRL);
            wait(0.01);
            while(keys[9]);
        }
        // SW10 ( 小指の↑ ) : Ctrl + w, ここではChromeの「タブを閉じる」を想定
        else if(keys[10]){
            keyboard.keyCode('w', KEY_CTRL);
            wait(0.01);
            while(keys[10]);
        }
        // SW11 ( 小指の↓ ) : Ctrl + t, ここではChromeの「新しいタブを開く」を想定
        else if(keys[11]){
            keyboard.keyCode('t', KEY_CTRL);
            wait(0.01);
            while(keys[11]);
        }
        wait(0.01);
    }
}

それぞれのkeyCodeを書き換えれば別の操作もできますので、必要に応じてキー割り当てを切り替える機能とかつけてもいいですね(´ω`).。oO( Tumblr廃人コントローラーとかね )

コメント (0件)

コメントはまだありません