G2028_パソコンキーボードマクロ

2026117

9:41

 

G2028_lpc812_pc_keybord_macro_new_circuit

 

Version:0.9 StartHTML:00000000 EndHTML:00000000 StartFragment:00000000 EndFragment:00000000 LPC812_USBKEY2.zip

 

 

変更点

 

 

キーボード基板の調査

 

 

 

 

 

 

26

25

24

23 

22 

21

20

19

18 

17  

16

 

 

26

 

 

 

 

 

 

 

 

 

 

 

 

 

25

 

 

 

 

 

 

 

 

 

 

 

 

 

24

  

ege 変化  

 

 

 

ege戻る

ege 変化

WIN

outlook

検索

音消える

 

 

23

ESC

無変換

 

 

 

z

a

TAB

q

1

???

 

 

22

検索

  

 

 

 

c

d

F3

e

3

F2

 

 

21

 

 

 

 

 

 

 

 

 

 

 

 

 

20 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

 

 

 

 

 

 

 

 

 

 

 

 

 

18

 

 

 

 

 

 

 

 

 

 

 

 

 

17 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

15

  

変換

 

 

 

x

s

  

w

2

F1

 

 

14

VR-

YouTube

次の再生

 

 

 

VR +

SHIFT

  

  

MEDIA

音楽再生

戻る  

 

 

13 

スリープ

  

 

 

 

 

CTRL

Ç

シャットダウン

  

F5

  

 

 

12

g

b

 

 

 

v

f

t

r

4

5

 

 

11

ALT

ALT

 

 

 

  

  

TEN 0

ScrLk

PrtScr

TEN 0

 

 

10

F6

\

 

 

 

,

k

[

i

8

^

 

 

9

h

n

 

 

 

m

j

y

u

7

6

 

 

8

  

ポップメニュー

 

 

 

.

l L

F7

o

9

F8

 

 

7

:

/

 

 

 

]

;

@

p

0

 

 

6

全体表示

F12

 

 

 

ENTER

]

BS

\| ー

F10

F9

 

 

5

スペース

 

 

 

NUML

TEN 1

TEN 4

TEN 7

シャットダウン

DEL

 

 

4

 

 

 

再生停止

ENTER

  

TEN +

  

行先頭

HOME

 

 

0-TEN

 

 

 

TEN /

TEN 2

TEN 5

TEN 8

スリープ

INS

 

 

.

TEN -

 

 

 

TEN *

TEN 3

TEN 6

TEN 9

page DW

page UP

 

 

EXP

電卓

 

 

 

再生停止

WIN

  

  

  

ホームページ

 

 

 

 

 

 

キーボードの代わりのスイッチ回路

 

 

べーす抵抗

C-E間抵抗

 

 

1K

25.8

 

 

2K

23.7

 

 

4.7K

27.8

 

 

10K

39.9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

入力データにゴミデータが出る

 

 

 

新しいプロジェクトを作成します

 

 

 

 

 

 

 

同時操作キーの作成

 

 

 

 

 

 

キーマトリックの修正コード

 

////////////////////////////////////////

//        キーマトリックス

////////////////////////////////////////

void        usb_key_out(char prm_cod)

{

uint8_t        bcod;

 

bcod = 23;

if(prm_cod == 'Z') usb_key_out2('S',21,bcod);

if(prm_cod == 'z') usb_key_out2(' ',21,bcod);

if(prm_cod == 'A') usb_key_out2('S',20,bcod);

if(prm_cod == 'a') usb_key_out2(' ',20,bcod);

if(prm_cod == 'Q') usb_key_out2('S',18,bcod);

if(prm_cod == 'q') usb_key_out2(' ',18,bcod);

if(prm_cod == '1') usb_key_out2(' ',17,bcod);

if(prm_cod == '!') usb_key_out2('S',17,bcod);

 

bcod = 22;

if(prm_cod == 'c') usb_key_out2(' ',21,bcod);

if(prm_cod == 'C') usb_key_out2('S',21,bcod);

if(prm_cod == 'd') usb_key_out2(' ',20,bcod);

if(prm_cod == 'D') usb_key_out2('S',20,bcod);

if(prm_cod == 'e') usb_key_out2(' ',18,bcod);

if(prm_cod == 'E') usb_key_out2('S',18,bcod);

if(prm_cod == '3') usb_key_out2(' ',17,bcod);

if(prm_cod == '#') usb_key_out2('S',17,bcod);

 

bcod = 15;

if(prm_cod == 'x') usb_key_out2(' ',21,bcod);

if(prm_cod == 'X') usb_key_out2('S',21,bcod);

if(prm_cod == 's') usb_key_out2(' ',20,bcod);

if(prm_cod == 'S') usb_key_out2('S',20,bcod);

if(prm_cod == 'w') usb_key_out2(' ',18,bcod);

if(prm_cod == 'W') usb_key_out2('S',18,bcod);

if(prm_cod == '2')  usb_key_out2(' ',17,bcod);

if(prm_cod == '\"') usb_key_out2('S',17,bcod);

 

bcod = 12;

if(prm_cod == 'g') usb_key_out2(' ',26,bcod);

if(prm_cod == 'G') usb_key_out2('S',26,bcod);

if(prm_cod == 'b') usb_key_out2(' ',25,bcod);

if(prm_cod == 'B') usb_key_out2('S',25,bcod);

if(prm_cod == 'v') usb_key_out2(' ',21,bcod);

if(prm_cod == 'V') usb_key_out2('S',21,bcod);

if(prm_cod == 'f') usb_key_out2(' ',20,bcod);

if(prm_cod == 'F') usb_key_out2('S',20,bcod);

if(prm_cod == 't') usb_key_out2(' ',19,bcod);

if(prm_cod == 'T') usb_key_out2('S',19,bcod);

if(prm_cod == 'r') usb_key_out2(' ',18,bcod);

if(prm_cod == 'R') usb_key_out2('S',18,bcod);

if(prm_cod == '4') usb_key_out2(' ',17,bcod);

if(prm_cod == '$') usb_key_out2('S',17,bcod);

if(prm_cod == '5') usb_key_out2(' ',16,bcod);

if(prm_cod == '%') usb_key_out2('S',16,bcod);

 

bcod = 10;

if(prm_cod == '\\') usb_key_out2(' ',25,bcod);        //

if(prm_cod == '_')  usb_key_out2('S',25,bcod);        //

if(prm_cod == ',') usb_key_out2(' ',21,bcod);        //カンマ0x2C

if(prm_cod == '<') usb_key_out2('S',21,bcod);        //カンマ0x2C

if(prm_cod == 'k') usb_key_out2(' ',20,bcod);

if(prm_cod == 'K') usb_key_out2('S',20,bcod);

if(prm_cod == '[') usb_key_out2(' ',19,bcod);

if(prm_cod == '{') usb_key_out2('S',19,bcod);

if(prm_cod == 'i') usb_key_out2(' ',18,bcod);

if(prm_cod == 'I') usb_key_out2('S',18,bcod);

if(prm_cod == '8') usb_key_out2(' ',17,bcod);

if(prm_cod == '(') usb_key_out2('S',17,bcod);

if(prm_cod == '^') usb_key_out2(' ',16,bcod);

if(prm_cod == '~') usb_key_out2('S',16,bcod);

 

bcod = 9;

if(prm_cod == 'h') usb_key_out2(' ',26,bcod);

if(prm_cod == 'H') usb_key_out2('S',26,bcod);

if(prm_cod == 'n') usb_key_out2(' ',25,bcod);

if(prm_cod == 'N') usb_key_out2('S',25,bcod);

if(prm_cod == 'm') usb_key_out2(' ',21,bcod);

if(prm_cod == 'M') usb_key_out2('S',21,bcod);

if(prm_cod == 'j') usb_key_out2(' ',20,bcod);

if(prm_cod == 'J') usb_key_out2('S',20,bcod);

if(prm_cod == 'y') usb_key_out2(' ',19,bcod);

if(prm_cod == 'Y') usb_key_out2('S',19,bcod);

if(prm_cod == 'u') usb_key_out2(' ',18,bcod);

if(prm_cod == 'U') usb_key_out2('S',18,bcod);

if(prm_cod == '7')  usb_key_out2(' ',17,bcod);

if(prm_cod == '\'') usb_key_out2('S',17,bcod);

if(prm_cod == '6') usb_key_out2(' ',16,bcod);

if(prm_cod == '&') usb_key_out2('S',16,bcod);

 

bcod = 8;

if(prm_cod == '.') usb_key_out2(' ',21,bcod);

if(prm_cod == '>') usb_key_out2('S',21,bcod);

if(prm_cod == 'l') usb_key_out2(' ',20,bcod);

if(prm_cod == 'L') usb_key_out2('S',20,bcod);

if(prm_cod == 'o') usb_key_out2(' ',18,bcod);

if(prm_cod == 'O') usb_key_out2('S',18,bcod);

if(prm_cod == '9') usb_key_out2(' ',17,bcod);

if(prm_cod == ')') usb_key_out2('S',17,bcod);

 

bcod = 7;

if(prm_cod == ':') usb_key_out2(' ',26,bcod);

if(prm_cod == '*') usb_key_out2('S',26,bcod);

if(prm_cod == '/') usb_key_out2(' ',25,bcod);

if(prm_cod == '?') usb_key_out2('S',25,bcod);

if(prm_cod == ']') usb_key_out2(' ',21,bcod);

if(prm_cod == '}') usb_key_out2('S',21,bcod);

if(prm_cod == ';') usb_key_out2(' ',20,bcod);        //セミコロン0x3B

if(prm_cod == '+') usb_key_out2('S',20,bcod);        //セミコロン0x3B

if(prm_cod == '@') usb_key_out2(' ',19,bcod);

if(prm_cod == '`') usb_key_out2('S',19,bcod);

if(prm_cod == 'p') usb_key_out2(' ',18,bcod);

if(prm_cod == 'P') usb_key_out2('S',18,bcod);

if(prm_cod == '0') usb_key_out2(' ',17,bcod);

 

if(prm_cod == '-') usb_key_out2(' ',16,bcod);

if(prm_cod == '=') usb_key_out2('S',16,bcod);

 

bcod = 6;

if(prm_cod == '\\') usb_key_out2(' ',18,bcod); // enmark

if(prm_cod == '|')  usb_key_out2('S',18,bcod); // enmark

 

bcod = 5;

if(prm_cod == ' ') usb_key_out2(' ',26,bcod); // SPACE

 

}

 

 

////////////////////////////////////////

//        キーマトリックス  サブコード

////////////////////////////////////////

void        usb_key_out2(char prm_shift,uint8_t prm_acod,uint8_t prm_bcod)

{

// 2号機の場合範囲がややこしくバグの基になるので範囲判定はしない

//if(7 < prm_acod) return;

//if(25 < prm_bcod) return;

 

//usb_key_init('B');

// prm_shift S シフト W Windowsキー

 

if(prm_shift == 'S' || prm_shift == 's') usb_shift(1);

if(prm_shift == 'W' || prm_shift == 'w') usb_start(1);

if(prm_shift == 'C' || prm_shift == 'c') usb_ctrl(1);

 

exp_pin_out(prm_acod,1); set_74HC595(Lach_595_pin);

 

exp_pin_out(prm_bcod,1); set_74HC595(Lach_595_pin);

wait_sec('m',20);

 

exp_pin_out(prm_acod,0); set_74HC595(Lach_595_pin);

exp_pin_out(prm_bcod,0); set_74HC595(Lach_595_pin);

wait_sec('m',20);

 

if(prm_shift == 'S' || prm_shift == 's') usb_shift(0);

if(prm_shift == 'W' || prm_shift == 'w') usb_start(0);

if(prm_shift == 'C' || prm_shift == 'c') usb_ctrl(0);

 

 

//usb_key_init('B');

}

 

// F1  ENT  ESCなど

void        usb_fun_out(char *prm)

{

if(prm[0] == 0) return;

if(prm[1] == 0) return;

 

if(prm[2] == 0) usb_fun_out2(prm);

else

{        if(prm[3] == 0) usb_fun_out3(prm);

}

}

 

void        usb_fun_out2(char *prm)

{

if(prm[0] == 'F' && prm[1] == '1') usb_key_out2(' ',16,15);

if(prm[0] == 'F' && prm[1] == '2') usb_key_out2(' ',16,22);

if(prm[0] == 'F' && prm[1] == '3') usb_key_out2(' ',19,22);

if(prm[0] == 'F' && prm[1] == '5') usb_key_out2(' ',17,13);

if(prm[0] == 'F' && prm[1] == '6') usb_key_out2(' ',26,10);

if(prm[0] == 'F' && prm[1] == '7') usb_key_out2(' ',19,8);

if(prm[0] == 'F' && prm[1] == '8') usb_key_out2(' ',16,8);

if(prm[0] == 'F' && prm[1] == '9') usb_key_out2(' ',16,6);

 

if(prm[0] == 'F' && prm[1] == 'A') usb_key_out2(' ',17,6);  // F10

if(prm[0] == 'F' && prm[1] == 'C') usb_key_out2(' ',25,6);  // F12

 

if(prm[0] == 'U' && prm[1] == 'P') usb_key_out2(' ',26,4); //

if(prm[0] == 'D' && prm[1] == 'W') usb_key_out2(' ',25,5);  //

if(prm[0] == 'R' && prm[1] == 'I') usb_key_out2(' ',25,3); //

if(prm[0] == 'L' && prm[1] == 'F') usb_key_out2(' ',25,4); //

 

if(prm[0] == 'B' && prm[1] == 'S') usb_key_out2(' ',19,6); //BS

 

wait_sec('m',20);

 

}

 

void        usb_fun_out3(char *prm)

{

if(prm[0]=='F' && prm[1]=='1' && prm[2]=='2') usb_key_out2(' ',17,6);//F10

if(prm[0]=='F' && prm[1]=='1' && prm[2]=='2') usb_key_out2(' ',25,6);//F12

 

if(prm[0]=='T' && prm[1]=='A' && prm[2]=='B') usb_key_out2(' ',19,23);//TAB

if(prm[0]=='E' && prm[1]=='N' && prm[2]=='T') usb_key_out2(' ',21,6);//ENT

if(prm[0]=='A' && prm[1]=='L' && prm[2]=='T') usb_key_out2(' ',25,11);//ALT

if(prm[0]=='S' && prm[1]=='P' && prm[2]=='C') usb_key_out2(' ',26,5);//SPC

if(prm[0]=='E' && prm[1]=='S' && prm[2]=='C') usb_key_out2(' ',26,23);//ESC

if(prm[0]=='D' && prm[1]=='E' && prm[2]=='L') usb_key_out2(' ',16,5);//DEL

if(prm[0]=='H' && prm[1]=='O' && prm[2]=='M') usb_key_out2(' ',16,4);//HOM

if(prm[0]=='P' && prm[1]=='R' && prm[2]=='T') usb_key_out2(' ',17,11);//PRT

//if(prm[0]=='E' && prm[1]=='N' && prm[2]=='D') usb_key_out2(' ',7,21);//END

if(prm[0]=='P' && prm[1]=='O' && prm[2]=='P') usb_key_out2(' ',25,8);//POP 右クリック

 

wait_sec('m',20);

}

 

void        usb_shift(uint8_t prm_dat)

{

uint8_t out_no = 27;

 

if(prm_dat == 0) exp_pin_out(out_no,0);

else exp_pin_out(out_no,1);

 

set_74HC595(Lach_595_pin);

wait_sec('m',25);

}

 

void        usb_start(uint8_t prm_dat)

{

uint8_t out_no = 28;

 

if(prm_dat == 0) exp_pin_out(out_no,0);

else exp_pin_out(out_no,1);

 

set_74HC595(Lach_595_pin);

wait_sec('m',900);

 

//        300msec では反応しなかった 800で成功したが 900にしておく

//        300 失敗 500成功 400成功

//        20msec でも成功した 一度成功するとなぜか?

//        しかし この処理は速度重視ではないので 900にしておく

}

 

void        usb_ctrl(uint8_t prm_dat)

{

uint8_t out_no = 29;

 

if(prm_dat == 0) exp_pin_out(out_no,0);

else exp_pin_out(out_no,1);

 

set_74HC595(Lach_595_pin);

wait_sec('m',80);

 

}

 

全体テスト

 

 

 

// 全体テスト

wait_sec('m',5000);

usb_moj_out("abcdefghijklmnopqrstuvwxy  z");

usb_fun_out("ENT");

usb_moj_out("ABCDEFGHIJKLMNOPQRSTUVWXY  Z");

usb_fun_out("ENT");

usb_moj_out("1234567890-^\\");

usb_fun_out("ENT");

usb_moj_out("!\"#$%&'()=~|");

usb_fun_out("ENT");

usb_moj_out("`{+*}<>?_");

usb_fun_out("ENT");

 

 

 

if(Exp_inp_data != inp_data_old)

{

// 変化あり

UART_msg_dec("Exp_inp=",Exp_inp_data,"\r\n");

 

 

inp_data_old = Exp_inp_data;

}

 

スイッチ回路の臨時接続

 

 

カレンダーモジュールの問題解決

 

2026.01.30 FRI (05:28) goma0099 -2544900-

 

ボタンに割り当てられた機能の修正

 

int8_t        usb_key_main(int8_t prm_old_dat)

{

int8_t        dat;

    uint8_t        cal_tbl[8];

    char        snd_buf[16+1];

    uint32_t        rnd;

 

dat = key_scan();

if(prm_old_dat == dat) return(dat);        // 変化なし

 

switch(dat)

{

case 0 :

// プリントスクリーン

usb_fun_out("PRT");

wait_sec('m',50);

break;

case 1 :

// PASS  パスワード  E:\\XDATA\\pass_cpy.lnk

usb_key_out2('W',18,12);        // Windows + R

usb_moj_out("e:\\xdata\\pass_cpy.lnk");

usb_fun_out("ENT");

break;

case 2 :

// ノートパッド

usb_key_out2('W',18,12);        // Windows + R

usb_moj_out("notepad");

usb_fun_out("ENT");

break;

case 3 :

// ファイルエクスプローラ

usb_key_out2(' ',26,1);        // EXP

 

break;

case 4 :

// E Drive Passward

 

break;

 

case 5 :

// CTRL+c

//UART_puts("No.8\r\n");

 

usb_ctrl(1);        // CTRL 同時押し

usb_moj_out("c");

            wait_sec('m',50);

            usb_ctrl(0);

            wait_sec('m',100);

break;

case 6 :

// paint 貼り付け

usb_key_out2('W',18,12);        // Windows + R

usb_moj_out("mspaint");

usb_fun_out("ENT");

            wait_sec('m',2000);

 

usb_fun_out("ALT");

            wait_sec('m',100);

usb_moj_out("EDP");

            wait_sec('m',100);

            //usb_fun_out3("ESC");

break;

 

case 7 :

// カット

//UART_puts("No.9\r\n");

 

usb_ctrl(1);        // CTRL 同時押し

usb_moj_out("x");

            wait_sec('m',50);

            usb_ctrl(0);

            wait_sec('m',100);

break;

case 8 :

// END

//usb_ctrl(1);        // CTRL 同時押し

//usb_fun_out3("END");

            //wait_sec('m',50);

            //usb_ctrl(0);

            //wait_sec('m',50);

break;

case 9 :

break;

 

case 10 :

// ペースト

//UART_puts("No.11\r\n");

usb_ctrl(1);        // CTRL 同時押し

usb_moj_out("v");

            wait_sec('m',50);

            usb_ctrl(0);

            wait_sec('m',100);

//usb_fun_out("ENT");

break;

case 11 :

// HOME  TOP

usb_ctrl(1);        // CTRL 同時押し

usb_fun_out3("HOM");

            wait_sec('m',50);

            usb_ctrl(0);

            wait_sec('m',50);

break;

case 12 :

// リンクCPY

usb_fun_out("POP");        // ワンノート段落コピー

            wait_sec('m',50);

usb_moj_out("p");

            wait_sec('m',50);

            usb_ctrl(0);

break;

case 13 :

// テキストのみペースト

usb_fun_out3("POP");

            wait_sec('m',50);

usb_moj_out("t");

            wait_sec('m',100);

break;

case 14 :

// タイムスタンプ

// 2024.11.16 SAN goma0099 -4765932-

// 時分追加

//RTC_8564_cal_get(cal_tbl);        // 時計ICを交換しました

ds1307_cal_red(cal_tbl);

 

wait_sec('m',200);

moj_dec_to_cha(cal_tbl[1]+1980,snd_buf,4,'0');

usb_moj_out(snd_buf);        //

usb_moj_out(".");

moj_dec_to_cha(cal_tbl[2],snd_buf,2,'0');

usb_moj_out(snd_buf);        //

usb_moj_out(".");

moj_dec_to_cha(cal_tbl[3],snd_buf,2,'0');

usb_moj_out(snd_buf);        //

usb_moj_out(" ");

 

switch(cal_tbl[0])

{

case 0 : usb_moj_out("SAN"); break;

case 1 : usb_moj_out("MON"); break;

case 2 : usb_moj_out("TUE"); break;

case 3 : usb_moj_out("WED"); break;

case 4 : usb_moj_out("THU"); break;

case 5 : usb_moj_out("FRI"); break;

case 6 : usb_moj_out("SAT"); break;

}

 

usb_moj_out(" (");

moj_dec_to_cha(cal_tbl[4],snd_buf,2,'0');

usb_moj_out(snd_buf);        //

usb_moj_out(":");

moj_dec_to_cha(cal_tbl[5],snd_buf,2,'0');

usb_moj_out(snd_buf);        //

usb_moj_out(")");

 

usb_moj_out(" goma0099 -");

rnd = moj_day_rnd_dec(cal_tbl[1]+1980,cal_tbl[2],cal_tbl[3]);

moj_dec_to_cha(rnd,snd_buf,0,' ');

usb_moj_out(snd_buf);

usb_moj_out("-");

break;

}

return(dat);

}