【改良3】【仕事効率化】使っていない 2in1 PC(またはタブレット)を有効活用、マクロパッドとして復活させる


はじめに

以前Arduinoを使用して2in1 PC(またはタブレット)をマクロパッドとして使用する方法を紹介しました。
touch-sp.hatenablog.com
今回は新しいページを追加します。
新しいページは冒頭の写真にあるようなものです。


よく入力する文字列をクリック一つで入力するためのものになります。

変更点

KeyboardWidgeクラスを定義したファイルを作成

「keyboard.py」という名前で以下を書きました。

from PySide6.QtCore import Signal
from PySide6.QtWidgets import QGridLayout, QSizePolicy, QPushButton, QWidget
from functools import partial

buttons = [
    { 'text': '<h2></h2>', 'serialNum': 40},
    { 'text': '<h3></h3>', 'serialNum': 41},
    { 'text': '<h4></h4>', 'serialNum': 42},
    { 'text': '</br>', 'serialNum': 43},
    { 'text': '</br></br>', 'serialNum': 44},
    { 'text': '<a href = ""></a>', 'serialNum': 45},
    { 'text': 'python -m pip install --upgrade pip', 'serialNum': 46},
    { 'text': '--cache-dir python_cache', 'serialNum': 47},
    { 'text': 'pip install torch torchvision', 'serialNum': 48},
    { 'text': 'GitHub token', 'serialNum': 49}
]

class KeyboardWidge(QWidget):

    push_button_signal = Signal(int)

    def __init__(self):
        super().__init__()

        self.button_list = []
        for i in range(12):
            self.button_list.append(QPushButton())
            self.button_list[-1].setStyleSheet('font: 20px; font-weight: bold;')
            self.button_list[-1].setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)
            
        for i, each_button in enumerate(buttons):
            self.button_list[i].setText(each_button.get('text'))
            self.button_list[i].clicked.connect(partial(self.button_push, each_button.get('serialNum')))    

        layout = QGridLayout()
        for i in range(12):
            layout.addWidget(self.button_list[i], i % 6, i / 6)
        self.setLayout(layout)
    
    def button_push(self, x: int) -> None:
        self.push_button_signal.emit(x)

メインファイルの変更

「main.py」に以下の2行を追加するだけです。

from keyboard import KeyboardWidge
{ 'name': 'Keyboard', 'icon': './icon/pen-tool.svg', 'widget': KeyboardWidge}

Arduino Leonardoのスケッチを変更する

まずは「Keyboard.h」を「Keyboard_jp.h」に変更しました。
この変更についてはこちらを参照して下さい。

#include <Keyboard_jp.h>



次に以下を追加しました。

//Keyboard settings
    case 40:
    Keyboard.write(KEY_KANA);
    Keyboard.write(KEY_KANJI);
    Keyboard.print("<h2></h2>");
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    break;
    case 41:
    Keyboard.write(KEY_KANA);
    Keyboard.write(KEY_KANJI);
    Keyboard.print("<h3></h3>");
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    break;
    case 42:
    Keyboard.write(KEY_KANA);
    Keyboard.write(KEY_KANJI);
    Keyboard.print("<h4></h4>");
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    break;
    case 43:
    Keyboard.write(KEY_KANA);
    Keyboard.write(KEY_KANJI);
    Keyboard.print("</br>");
    break;
    case 44:
    Keyboard.write(KEY_KANA);
    Keyboard.write(KEY_KANJI);
    Keyboard.print("</br></br>");
    break;
    case 45:
    Keyboard.write(KEY_KANA);
    Keyboard.write(KEY_KANJI);
    Keyboard.print("<a href=\"\"></a>");
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    Keyboard.write(KEY_LEFT_ARROW);
    break;
    case 46:
    Keyboard.write(KEY_KANA);
    Keyboard.write(KEY_KANJI);
    Keyboard.print("python -m pip install --upgrade pip");
    break;
    case 47:
    Keyboard.write(KEY_KANA);
    Keyboard.write(KEY_KANJI);
    Keyboard.print("--cache-dir python_cache");
    break;
    case 48:
    Keyboard.write(KEY_KANA);
    Keyboard.write(KEY_KANJI);
    Keyboard.print("pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu113");
    break;
    case 49:
    Keyboard.write(KEY_KANA);
    Keyboard.write(KEY_KANJI);
    Keyboard.print("ghp_m4h3yfj73luWkuyMV9oVX4Iwge06C8EV0uy");
    break;



GitHub tokenは各自変更して下さい。上記の文字列はランダムに作成したものになっています。

Keyboard.write(KEY_KANA);
Keyboard.write(KEY_KANJI);

この2行があれば現在のIMEモードにかかわらず必ず英数字が入力されます。

前回までの記事

使っていない 2in1 PC(またはタブレット)を有効活用、マクロパッドとして復活させる
【改良1】使っていない 2in1 PC(またはタブレット)を有効活用、マクロパッドとして復活させる
【改良2】使っていない 2in1 PC(またはタブレット)を有効活用、マクロパッドとして復活させる

つづき

Arduinoを使わない方法を記事にしました。
touch-sp.hatenablog.com