カテゴリー: Developments

  • クリップボードロギングツール

    C#学習中… 学習目的なので車輪の再開発です。

    バグ修正

    以下のバグを修正しました。

    • 任意の項目をCtrl+ダブルクリックするとアプリが異常終了する。
    • Deleteキーでファイルを削除後、項目選択フォーカスが先頭行に強制される。
    • 複数の項目を選択できる。
    • 再起動時にタブおよび項目の並び順がリセットされる。
    • アプリの再起動に時間がかかり応答しなくなる。

    機能修正

    • タブの選択時に最左端・最右端でループするように修正しました。
    • 項目の選択時にCtrl+HomeキーとHomeキーだけの動作を統一しました。Ctrl+EndキーとEndキーだけの動作を統一しました。
    • エクスプローラの表示時にメイン画面を閉じるように修正しました。

    機能追加

    • ランチャー機能

    作ったもの

    https://github.com/kozawa-tokyo/clipboardio
    clipboardio_20250322.zip

    使用方法

    ランチャー機能

    launcherDataフォルダ配下に任意のフォルダを作成し、実行したいファイルを格納してください。

    C:\tool\clipboardio
    └─ launcherData
        └─ 「ランチャー」フォルダ

    フォルダ名がタブ名になります。「ランチャー」フォルダ配下の.txt、.exe、.lnk(ショートカット)ファイルが起動できること確認済です。フォルダは対象外です。

    その他の機能説明などについては、過去の投稿を参照してください。
    https://kozawa.tokyo/blog/?tag=clipboardio

    補足

    「クリップボードロギングツール」は、左手は添えるだけ、「キーのリマッピング(KeyRemap.ahk)」は、右手は添えるだけです。高尚なコンセプトのもと制作しております。🙏

    1. 右手で右Shiftを2回押下する。
      →クリップボードロギングツールが表示される。
    2. 「ランチャー」タブからアプリを起動する。
      →アプリの画面が表示される。
    3. 左手でAlt+1キーなどを押下する。
      →キーのリマッピング(KeyRemap.ahk)でアプリの画面が移動される。
    4. 左手でAltキーを押下したまま、右手で矢印キーを操作して画面サイズを微調整する。(ここで伏線は回収されましたよ?)
    5. アプリを使用する。
    6. Alt+F4キーでアプリを終了する。

    マウスを使用せずにちょっとした作業が完結できます。「クリップボードロギングツール」と「キーのリマッピング(KeyRemap.ahk)」はセット商品です。ご愛顧くださいませ。( ー`дー´)キリッ

    既知の不具合

    まだまだバグだらけです…

    所感

    以下のWin32APIでIniFileの読み書きを行っていたけれどサードパーティー製ライブラリに置き換えました。

    GetPrivateProfileString 関数 (winbase.h)
    WritePrivateProfileStringW 関数 (winbase.h)

    Win32APIが遅すぎるのWin32APIのバグですよね?

    あとは、ランチャーのアイコンを横に並べて「CLaunch」みたいに作りたかったけど、左右キーはタブの切り替えで使用していて、タブのキーボードフォーカス、論理フォーカスの制御ができず一旦挫折。

    フォーカスの概要

    リストのアイテムを選択するのにも苦労させられていますし、WPFアプリ難しいですねえ。Formアプリで作った方が良かったかもしれない。

    応援・寄付のお願い

    Amazonギフトカード
    欲しいものリスト

    メールアドレス「develop.kozawa@gmail.com」です。
    🍻より良いフリーソフトのためにー 🐾

  • キーのリマッピング

    自分用に修正したので貼っておこー

    機能追加

    Winキー:Shiftキーと同じ処理を割り当てました。Alt+Qなどを複数回押下するときにAlt+Win+Qで画面サイズの変更の方向を逆転します。左手の親指でAlt+Winを押下することを想定しています。

    2ストローク:Alt+Q、A、W、Sキーで画面高さを変更した後、Alt+1、3キーで画面幅を変更できるよう修正しました。Alt+Q、A、W、Sキーで高さ、Alt+1、3で幅を変更してください。

    補足

    2ストロークキーのタイムアウト処理や2キー目のクリア処理等が必要ですが未実装です。前回のキー操作を内部で保持しているため、初回のキー操作では意図した方向に画面サイズが変更されない場合があります。その場合は、Alt+2キーで画面位置を初期化後、再度操作してください。(Alt+2キーは2ストローク未対応です)

    機能変更(仕様変更)

    修正前:2024/07/21公開
    Alt + q,a,w,sキーの押下後にAlt + 矢印キーで画面移動を追加(実用的な機能ではない)

    修正後:本投稿公開日
    Alt + q,a,w,s,e,d,1,3キーの押下後にAlt + 矢印キーで画面サイズを変更(実用的な機能への伏線?)

    右手は添えるだけで左手だけで完結したいけどAlt+Q、A、W、Sキーで高さ、Alt+1、3で幅を変更するのは分かりづらい使いづらい。だからと言ってマウスの上にいる右手をいちいちキーボートの矢印キーまで移動して画面サイズを変更するのか?そんなことをするなら素直にマウスで画面サイズを変更するよな。常考。

    画面サイズの変更間隔を10%から5%に修正しました。

    ; 画面サイズ定義1
    LEFT_WIDTH := [0.5, 0.6, 0.7, 0.3, 0.4]
    CENTER_WIDTH := [0.5, 0.6, 0.7, 0.3, 0.4]
    RIGHT_WIDTH := [0.5, 0.6, 0.7, 0.3, 0.4]
    UPPER_HEIGHT := [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 0.3, 0.4]
    LOWER_HEIGHT := [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 0.3, 0.4]
    ; 画面サイズ定義2
    LEFT_WIDTH := [0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.25, 0.3, 0.35, 0.4, 0.45]
    CENTER_WIDTH := [0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.25, 0.3, 0.35, 0.4, 0.45]
    RIGHT_WIDTH := [0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.25, 0.3, 0.35, 0.4, 0.45]
    UPPER_HEIGHT := [0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.25, 0.3, 0.35, 0.4, 0.45]
    LOWER_HEIGHT := [0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.25, 0.3, 0.35, 0.4, 0.45]

    10%間隔の定義も残していますのでお好みで修正してください。

    スクリプトの処理が上から下に流れます。画面サイズ定義1の値を画面サイズ定義2の値で上書きしています。25行目~29行目の先頭にセミコロンを付けるか行ごと削除すると19行目~23行目の処理が有効になり従来の10%間隔の定義となります。

    スクリプト実行中にスクリプトファイルを修正した場合、タスクトレイから「Reload Script」を実行してください。

    作ったもの

    https://github.com/kozawa-tokyo/keyremap
    keyremap_20250322.zip

    その他

    コードをリファクタリングしました。不具合対応の処理を移動したりコメントの修正など行っています。

    今回変更していないファイルもすべて圧縮しました。使用しているDLLも最新(Windows 11 binary, works with 24H2, 26100.2605)版をバンドルしています。Windows 10などの旧環境で問題が発生する場合は以下のサイトからDLLをダウンロードして差し替えてください。

    ; ----------------------------------------
    ; DLL関連関数
    ; VirtualDesktopAccessor.dll
    ; Copyright (c) 2015-2023 Jari Otto Oskari Pennanen
    ; https://github.com/Ciantic/VirtualDesktopAccessor
    ; https://opensource.org/license/mit
    ; ----------------------------------------

    フォルダ構成を変更しました。dllフォルダを追加しています。

    C:\tool\keyremap*
    │ KeyRemap.ahk
    ├─dll
    │ VirtualDesktopAccessor.dll
    └─images
       ├─dark
       │   1.png
       │   2.png
       │   3.png
       │   4.png
       │   5.png
       │   6.png
       │   R.png
       └─light
          1.png
          2.png
          3.png
          4.png
          5.png
          6.png
          R.png

    *:任意のフォルダで使用できます。

    また、過去の投稿に「keyremap」タグを付けて参照できるようにしました。大きく3つの機能があります。

    • キーのリマップ
    • アクティブ画面の移動
    • 仮想デスクトップの移動

    使用方法の詳細については、過去の投稿を参照してください。

    https://kozawa.tokyo/blog/?tag=keyremap

    応援・寄付のお願い

    Amazonギフトカード
    欲しいものリスト

    メールアドレス「develop.kozawa@gmail.com」です。
    🍻より良いフリーソフトのためにー 

  • RunCat for Windows

    C#学習中…

    RunCat

    https://kyome.io/runcat/

    以下のソースを流用させていただきました。🙇
    https://github.com/Kyome22/RunCat_for_windows
    https://github.com/Kyome22/menubar_runcat

    作ったもの

    https://github.com/kozawa-tokyo/runcat
    RunCat_for_windows_20250203.zip

    修正箇所

    • macOS版のネコαアイコンを使用してアイコンサイズを大きくしました。
    • アイコンを左右反転しました。
    • 「Runner Speed Limit」メニューに「CPU 5%」を追加しました。
    • タスクマネージャーの起動を「Task Manager」メニューに移動しました。

    動作環境

    TRIGKEY/ミニPC環境

    • OS:Windows 11 Pro
    • バージョン:24H2
    • ビルド:26100

    おもちゃツールのため、起動に制限などはかけていませんが、タスクバー関連のソフトを使用している場合は意図したとおりに動かない場合があります。

    インストール手順

    任意のフォルダに展開してください。

    C:\tool\RunCat_for_windows
    ├─ resources
    ├─ RunCat.deps.json
    ├─ RunCat.dll
    ├─ RunCat.exe
    ├─ RunCat.ini
    ├─ RunCat.pdb
    └─ RunCat.runtimeconfig.json

    使用方法

    RunCat.exe を起動します。
    →タスクトレイに常駐します。

    猫アイコンをダブルクリックしてください。
    →タスクバーに猫アイコンが追加されます。

    タスクバーに猫アイコンが表示されない場合は、タスクトレイの「^」ボタンで表示されるポップアップ内に表示されていないか確認してください。ポップアップ内に猫アイコンが存在している場合は、猫アイコンをドラッグしてタスクバー上に都度移動してください(×3回)。ポップアップ内にも猫アイコンが存在していない場合は、本アプリは使用できません。

    タスクバー上に3匹表示されている状態でダブルクリックすると大きな猫アイコンになります。

    蛇足

    どう頑張っても16×16pxの制限を突破できない

    本家の方が書かれているとおりタスクトレイの使用領域を広げることは難しいようです。そのため、複数の猫アイコン(小)を生成して描画領域を確保して、その上に猫アイコン(大)を表示するウインドを被せています。

    🫠🫠🫠いい感じのアニメーション付けたい。。。

    既知の不具合

    • たまにアプリが異常終了します。
      バックグラウンドにプロセスが残存していると再起動ができません。タスクマネージャーからRunCatプロセスを強制終了してください。
    • 全画面表示しているアプリがあっても、その画面の上に猫アイコン(大)が表示される場合があります。猫アイコン(小)に変更してください。
    • 猫アイコン(大)を表示後に、その左右の他アプリのアイコンを移動すると猫アイコン(大)に隠れてアイコンが表示できない場合があります。猫アイコン(小)に戻してアイコン位置を変更してください。これは今後も直せないと思われるので仕様です。

    など多数あります。

    注意事項

    • 3秒に1度CPU使用率を取得しています。多少なりともシステム負荷が増加すること予めご承知おきください。

    定義ファイル(RunCat.ini)

    [Application]
    lrReverse=True
    
    ;Large
    ;OffsetX=5
    ;OffsetY=5
    ;CatWidth=64
    ;CatHeight=38
    
    ;Medium
    OffsetX=10
    OffsetY=10
    CatWidth=50
    CatHeight=25
    
    ;Small
    ;OffsetX=20
    ;OffsetY=15
    ;CatWidth=30
    ;CatHeight=20

    最近プロパティファイルについて調べた結果、脱INIファイルは難しいことが分かりました。ユーザーが値を修正する場合、XMLよりは古き良きINIファイルの方が使い易いと思います。設定画面を作る予定もないので今後もINIファイルを使用していくことになりそうです。

    [Application]
    lrReverse= 猫アイコンの向き。Trueで左向き、Falseで右向きに。

    OffsetX=10
    OffsetY=10
    CatWidth=50
    CatHeight=25

    上記は、猫アイコン(大)の表示位置を微修正するための座標およびサイズです。OffsetX/OffsetYは左上が基点のオフセット値、CatWidth/CatHeightは、猫アイコン(大)のサイズで縦横比固定で伸縮される動作となります。

    解像度:1920×1080、拡大/縮小:100%のシングルモニタ環境で動作確認していますが、高解像度のディスプレイ等では予期しない位置に猫アイコン(大)が表示される可能性があります。

    なお、実際に使用している以下のファイルは、126×77ピクセルです。

    resources
     └─ cat
       └─ png
         ├─ 0.png
         ├─ 1.png
         ├─ 2.png
         ├─ 3.png
         └─  4.png

    今後の予定

    今回、macOS版の初期値で表示されるネコα だけを使用していますが、その他のネコβ、ネコγぐらいまでは使えるようにする予定です。今年中ぐらいを目途に。

  • クリップボードロギングツール

    C#学習中… 学習目的なので車輪の再開発です。

    Clibor

    目指したのはこちら。

    https://chigusa-web.com/clibor

    ミニPCにインストールして使っています。クリップボードツールでググると必ず上がってくる有名どころですね。

    クリップNOTE

    真似したのはこちら。

    http://www.ost-net.com/clipnoteA/clip01.html

    会社の社給パソコンにインストールして使っています。快適な入力支援ソフトです。間違いない。

    作ったもの

    WPF版

    https://github.com/kozawa-tokyo/clipboardio
    clipboardio_20250125.zip

    Releaseフォルダ配下を配布すれば他の環境で実行できるのか、.NETの野良アプリを配布するのは初めてで確認がとれていない。これらのリリース作業も含めてひと通り動作確認するために、C#学習3か月を記念して初回リリースします。

    ファイルサイズが10MB近くあってRaspiに置くとblogの公開に支障がありそうなのでGitHubにアップロードしました。バイナリだけです。ソースファイルは、いつになるかは分かりませんが、バグ修正が落ち着いた後に学習用の試行錯誤処理をキレイにして公開できればと思います。

    動作環境

    TRIGKEY/ミニPC環境

    • OS:Windows 11 Pro
    • バージョン:24H2
    • ビルド:26100

    まだまだバグだらけなので上記環境でのみ起動するように制限しています。

    インストール手順

    任意のフォルダに展開してください。

    C:\tool\clipboardio
    ├─ CommunityToolkit.Mvvm.dll
    ├─ GongSolutions.WPF.DragDrop.dll
    ├─ Microsoft.Web.WebView2.Core.dll
    ├─ Microsoft.Web.WebView2.Core.xml
    ├─ Microsoft.Web.WebView2.WinForms.dll
    ├─ Microsoft.Web.WebView2.WinForms.xml
    ├─ Microsoft.Web.WebView2.Wpf.dll
    ├─ Microsoft.Web.WebView2.Wpf.xml
    ├─ Microsoft.Xaml.Behaviors.dll
    ├─ clipData
    ├─ clipboardio.deps.json
    ├─ clipboardio.dll
    ├─ clipboardio.exe
    ├─ clipboardio.ini
    ├─ clipboardio.pdb
    ├─ clipboardio.runtimeconfig.json
    ├─ phraseData
    ├─ resource
    ├─ runtimes
    └─ script

    使用方法

    clipboardio.exe を起動します。
    →タスクトレイに常駐します。

    基本動作

    クリップボードのデータをファイルに保存します。

    対象データ

    • テキスト
    • 画像
    • HTML

    保存フォルダ

    C:\tool\clipboardio
    └─clipData
      ├─ bitmap
      ├─ html*
      └─ unicodeText

    ファイル名は、クリップボードの更新時刻です。

    *:html配下は、「HTML クリップボードの形式」に準拠です。そのままHTMLファイルとして表示できるファイルではありません。

    メイン画面の表示

    右Shiftキー×2回:メイン画面表示
    右Shiftキー×2回:メイン画面非表示
    右Shiftキー×2回:メイン画面最前面移動
    Esc:メイン画面非表示
    タスクトレイアイコンクリック:メイン画面表示

    ツールバー
    アイコン1つ目:選択項目の格納場所をファイラーで表示
    アイコン2つ目:アプリの再起動

    リストビュー
    クリップボードのテキストの先頭1行をリスト表示

    テキストボックス
    クリップボードのテキストの複数行を表示
    ※後述の定義ファイルを編集した場合、画像およびHTMLを表示可能

    ステータスバー
    ペースト先の画面のタイトル文字列を表示

    画面右上「×」ボタン
    メイン画面非表示
    ※アプリを終了する場合はタスクトレイのアイコンから「閉じる」を選択してください。

    操作方法

    左右キー:タブ切り替え(phraseDataフォルダにフォルダやファイルを作成することで複数のタブが表示されます)。

    上下キー:項目選択

    Enterキー:メイン画面表示時にアクティブだった画面に選択項目のテキスト等をペーストします。ペースト先の画面のタイトル文字列はステータスバーに表示されます。

    右Shiftキーをダムダムして矢印キーで項目を選択してEnterする操作が基本となります。左手は添えるだけです。必ず成功するわけではありません。

    これを貼っておこー

    Ctrl+Enter:選択項目のコピーだけ(ペーストはしない)

    Ctrl+「+」キー:画面フォントを+0.5ポイント
    Ctrl+「-」キー:画面フォントを-0.5ポイント
    Ctrl+「0」キー:画面フォントを14ポイントにリセット

    Ctrl+「e」キー:選択項目のファイルをファイラーで表示

    Deleteキー:選択項目に対応するファイルを削除(ごみ箱に移動)

    Ctrl+「G」キー:秀丸またはサクラエディタがインストールされている場合は、Grepダイアログを表示。秀丸は32bit版を想定しています。定義ファイルでインストールパスを変更可能

    Ctrl+「F」キー:「クリップボード」タブの「値」カラムにフィルタ入力領域を表示・非表示だけ。項目のフィルタ処理は今後実装予定。

    「1」~「0」キー:タブの選択
    ※定型文フォルダ配下にフォルダ・ファイルを作成した場合のみ有効

    スペースキー:Pythonスクリプトが埋め込まれている場合、Pythonスクリプトを実行して画面下部のテキストボックスに表示

    F5キー:アプリ再起動

    定型文フォルダ

    C:\tool\clipboardio
    └─phraseData

    フォルダまたはファイル(txt、csv、tsv)を作成します。ファイルはUTF8/CRLF前提です。フォルダ名、ファイル名がタブ名になります。(拡張子なし・あり)

    作成したフォルダまたはファイルを画面に反映するためにはアプリを再起動する必要があります。

    例:


    C:\tool\clipboardio
    └─phraseData
       └─ 「定型文」フォルダ
       │   └─ ファイル1.txt
       │   └─ ファイル2.txt
       └─ ファイル.txt
       └─ ファイル.csv
       └─ ファイル.tsv

    「定型文」、「ファイル.txt」、「ファイル.csv」、「ファイル.tsv」のタブが生成されます。タブおよびリストの項目はドラッグアンドドロップで入れ替え可能ですが、「クリップボード」タブは最左端固定です。

    フォルダ:テキストファイルのみ格納できます。ファイル名が「ラベル」列に、テキストファイルの先頭1行目だけが「値」列に読み込まれます。「クリップボード」タブと同様にEnterキーでペーストできます。

    複数行を定型文としてペーストしたい場合はフォルダ配下にテキストファイルを作成してください。

    「ファイル.txt」:「ラベル」列に行番号が表示されます。
    「ファイル.csv」:「ラベル」列に1カラム目の文字列が表示されます。
    「ファイル.tsv」:「ラベル」列に1カラム目の文字列が表示されます。

    1行単位でペーストしたい場合はファイルを作成してください。

    「script」フォルダ

    定型文フォルダ配下のファイルには、「script」フォルダに作成したPythonスクリプトの実行結果を埋め込むことが可能です。

    例1:
    C:\tool\clipboardio
    └─ script
    │  └─ 現在日時.py
    └─ phraseData
       └─ 「定型文」フォルダ
           └─ ファイル3.txt

    ファイル3.txt の内容
    ————————————————————
    【現在日時】 です。
    ————————————————————

    【】カッコ内の文字列が、scriptフォルダのPythonスクリプトのファイル名(拡張子なし)に対応しています。

    Pythonスクリプトを実行結果の標準出力がペースト時に反映されます。

    ペースト文字列
    ————————————————————
    2025-01-25 09:36:51.640573 です。
    ————————————————————

    Pythonがインストールされていることが前提です。

    Download the latest version for Windows
    https://www.python.org/downloads

    コマンドプロンプトで以下が実行できるか事前に確認してください。
    python C:\tool\clipboardio\script\現在日時.py

    例2:

    ファイル4.txt の内容
    ————————————————————
    【年】/【月】/【日】 【時】:【分】:【秒】
    ————————————————————

    上記のファイル4.txtの場合は、ペースト時に以下の6ファイルのPythonスクリプトが逐次実行されてペーストされます。

    年.py
    月.py
    日.py
    時.py
    分.py
    秒.py

    少しラグがあります。今後並列実行に修正予定。

    ペースト文字列
    ————————————————————
    2025/01/25 09:41:02
    ————————————————————

    例3:

    Pythonスクリプトが単独で実行できることが前提です。標準ライブラリ以外を使用する場合は、事前に依存するパッケージをインストールしてください。

    C:\tool\clipboardio
    └─ script
    │  └─ clipboard.py
    └─ phraseData
       └─「定型文」フォルダ
           └─ ファイル5.txt

    clipboard.py
    ————————————————————
    import urllib.parse
    import pyperclip

    clip = pyperclip.paste()

    print(clip, end=””)
    ————————————————————

    clipboard.pyにはクリップボードを扱うためのpyperclipパッケージが必要となります。

    コマンドプロンプト
    pip install pyperclip

    コマンドプロンプト
    python C:\tool\clipboardio\script\clipboard.py

    事前にpipコマンド等でパッケージをインストールしてPythonスクリプトが実行できるか事前に確認してください。

    ファイル5.txt
    ————————————————————
    https://kozawa.tokyo/images/【clipboard】
    ————————————————————

    上記のファイル5.txtの場合は、clipboard.pyでクリップボードのテキストを取得して、固定文字列に結合/埋め込みしています。

    「script」フォルダのファイル一覧

    C:\tool\clipboardio
    └─ script
        現在日時.py ・・・ 上記の例1
        月.py ・・・ 上記の例2
        時.py
        日.py
        年.py
        秒.py
        分.py
        曜日.py
        clipboard.py ・・・ 上記の例3
        string_count.py ・・・ クリップボード内の文字数をカウント
        decode_url.py ・・・ クリップボード内の文字列をURLデコード

    「定型文」フォルダ配下および「script」フォルダ配下については、必要なファイルやスクリプトをユーザーが作成・追加する想定です。

    Pythonスクリプトでネットワークやデータベースから情報を取得したり、アプリを起動したり、Pythonスクリプトを噛ませることで何でもできるかと思いますが、この辺りはユーザーのやりたいこと次第ですね。

    今後、必要に応じてスクリプトを追加していく予定ですが、どのようなスクリプトがあれば便利に使えるのか検討/見当するところからです。

    定義ファイル(clipboardio.ini)

    [Application]
    fontName=Yu Gothic UI
    fontSize=14
    hotKey=RShiftKey
    minInterval=50
    maxInterval=200
    restartFlag=False
    fileManager=C:\Program Files\HmFilerClassic\HmFilerClassic.exe
    fileManagerArg=/select,%s
    editor=C:\Program Files (x86)\Hidemaru\Hidemaru.exe
    editorArg=/d%s /g
    editor2=C:\Program Files (x86)\sakura\sakura.exe
    editorArg2=-GREPMODE -GREPDLG -GFILE="*.txt" -GFOLDER=%s
    startTag=【
    endTag=】
    imageFileVisible=False
    htmlFileVisible=False
    
    [Window]
    title=Clipboard I/O
    height=372
    width=644
    minColumnWidth=[100,100,125,50]
    marginColumnWidth=60
    
    ; 灰色
    ItemBackground1=#FFFFFF
    ItemBackground2=#F0F0F0
    SelectBorderBrush=Gray
    SelectBorderThickness=2
    ; 赤色
    ;ItemBackground1=#FFFFFF
    ;ItemBackground2=#FFD5EC
    ;SelectBorderBrush=Red
    ;SelectBorderThickness=2
    ; 青色
    ;ItemBackground1=#FFFFFF
    ;ItemBackground2=#D9E5FF
    ;SelectBorderBrush=Blue
    ;SelectBorderThickness=2
    ; 紫色
    ;ItemBackground1=#FFFFFF
    ;ItemBackground2=#EAD9FF
    ;SelectBorderBrush=#5507FF
    ;SelectBorderThickness=2
    
    [clipboardTab]
    maxRoadFile=50
    tabLabel=クリップボード
    columnWidth=[0,378,147,59]
    
    [customTabInfo]
    tabCount=1
    [customTab0]
    tabLabel=blog
    columnWidth=[100,484,0,0]
    itemCount=6
    item0=webp.txt
    item1=rp4-img.txt
    item2=png.txt
    item3=jpg.txt
    item4=http-img.txt
    item5=avif.txt

    編集する場合は、メモ帳で編集してください。

    文字コード:Shift-JIS
    改行コード:CRLF

    です。clipboardio.iniファイルだけSJIS、他のファイルはUTF8です。Iniファイルを修正するAPIが古い。脱Iniファイルも追い追いやっていきます。


    ————————————————————
    [Application]
    fontName=フォント名
    fontSize=フォントサイズ
    hotKey=ホットキー定義
    minInterval=ホットキーのタイプ間隔下限値
    maxInterval=ホットキーのタイプ間隔上限値
    restartFlag=Trueで起動後に画面表示。
    fileManager=秀丸ファイラーClassicパス。存在しなければエクスプローラを起動
    fileManagerArg=ファイラー引数
    editor=エディタパス
    editorArg=エディタ引数
    editor2=エディタパス
    editorArg2=エディタ引数
    startTag=Pythonスクリプト名開始タグ
    endTag=Pythonスクリプト名終了タグ
    imageFileVisible=Trueで「クリップボード」タブに画像ファイル名表示
    htmlFileVisible=Trueで「クリップボード」タブにHTMLファイル名表示

    [Window]
    title=メイン画面タイトル
    height=メイン画面高さ
    width=メイン画面幅
    minColumnWidth=リストカラムの最小幅
    marginColumnWidth=リストカラムのマージン(スクロールバー幅)

    ; 灰色
    ItemBackground1=リストのゼブラ色
    ItemBackground2=リストのゼブラ色
    SelectBorderBrush=項目の選択色
    SelectBorderThickness=項目の選択幅
    ・・・

    [clipboardTab]
    maxRoadFile=起動時に「クリップボード」タブに読み込むファイル数
    tabLabel=「クリップボード」タブのラベル文字列
    columnWidth=「クリップボード」タブのカラム幅

    [customTabInfo]
    tabCount=タブ数(phraseDataフォルダ配下のフォルダ・ファイル数)
    [customTab0]
    tabLabel=タブラベル
    columnWidth=リストのカラム幅
    itemCount=リストのアイテム数
    item0=アイテムのファイル名/順序
    ————————————————————

    カラー変更

    ; 灰色
    ItemBackground1=#FFFFFF
    ItemBackground2=#F0F0F0
    SelectBorderBrush=Gray
    SelectBorderThickness=2

    色を変更する場合は、上記の4行を修正してください。

    定義ファイルの編集後にアプリ再起動が必要です。F5キーです。

    既知の不具合

    • Ctrl+ダブルクリックでアプリが異常終了する。
    • Deleteキーでファイル削除後、アイテムの選択フォーカスが0に強制される。
    • 複数項目選択できてしまう
    • 起動時に画面がちらつく(画面の初期化が完了していないとキーボートフックの通知先が取得できずメイン画面が表示できない)

    など多数あります。

    注意事項

    パスワードなどの機微情報をコピーした場合、作成された当該ファイルを削除してください。Deleteキーです。

    コピーしたデータはすべて残していく仕様のため、大きなファイルを頻繁にコピーするような作業には向いていません。ディスク使用量を確認して必要に応じて不要なファイルを削除してください。

    所感

    • System.Windows.Forms(Formsアプリ)
    • System.Windows.Window(WPFアプリ) <= 今ここ
    • WinUI 3

    C#初心者だけど愚見を述べたい。酒でも飲みながら…

  • キーのリマッピング

    もう「Microsoft PowerToys」の「FancyZones」でいいかもしれないけど、自分用に修正したので貼っておこー

    バグ修正

    • Alt+Qキーでの画面移動時に高さの指定に誤りがありましたので修正しました。

    機能変更

    Alt+Q、Alt+A、Alt+W、Alt+Sキー:画面幅を固定値(スクリーン幅/2)としていた処理を修正しました。
    →Alt+1キーまたはAlt+3キーで画面幅を変更した後、Alt+Q、Alt+A、Alt+W、Alt+Sキーで高さを変更してください。

    機能追加

    Alt+F12:アクティブ画面の位置・サイズを埋め込んだスクリプト文字列をメッセージボックスで表示します。

    !F12:: {
        WinGetPos &x, &y, &width, &height, WinGetID("A")
        message := Format('WinMove({1}, {2}, {3}, {4}, WinGetID("A"))', x, y, width, height)
        A_Clipboard := message
        MsgBox(message,, "OK")
    }

    →クリップボードに「WinMove(0, 0, 960, 516, WinGetID(“A”))」のようなスクリプト文字列がコピーされます。固定位置に画面を移動させたい場合に任意のホットキーに割り当ててください。

    例:Alt+4、Alt+5、Alt+6

    ; 画面位置設定例
    !*4:: WinMove(0, 0, 960, 516, WinGetID("A"))
    !*5:: WinMove(500, 250, 960, 600, WinGetID("A"))
    !*6:: WinMove(960, 516, 960, 516, WinGetID("A"))

    スクリプト修正後はスクリプトのリロードが必要です。

    作ったもの

    keyremap_20250122.zip

  • Ctrl押しっぱなし問題

    バグ修正

    • Ctrlキーの押下が解除されない

    この件、AutohotKey界隈ではよく知られた現象らしく、Ctrlキー以外にも修飾キー全般で押しっぱなしになる不具合が発生する模様。

    ググると沢山情報が出てくる。

    • AutoHotkey:キー押しっぱなし病・ホットキーすり抜け病対策の研究
    • AutoHotkeyの押しっぱなし問題
    • 快適キーボード操作のためのキーカスタマイズ 〜AutoHotKeyのキー押しっぱなし問題とScrollLockの非推奨~
    • 【AutoHotkey】キーが押しっぱなしになる現象の対策メモ(2024年6月最新版)
    • AutoHotkeyでShiftの単押しと修飾キーとしての押しっぱなしを別のキーマップにする
    • AutoHotkeyを始めるなら最初にこれを書いておこう

    ・・・

    機能修正

    SendMode "Event"
    
    ; 不具合対処
    ; 稀に修飾キーが押下した状態のままになる現象が発生する。
    ; ホットキー終了時に必ずCtrl/Altキーを上げる。
    sendWrap(key)
    {
        try
            Send key
        finally
            Send "{Ctrl Up}"
    }
    setWindowPositionWrap(windowPosition, monitorNum*)
    {
        try
            if (monitorNum.Length > 0)
                setWindowPosition(windowPosition, monitorNum[1])
            else
                setWindowPosition(windowPosition)
        finally
            Send "{Alt Up}"
    }
    ^!r:: {
        Send "{Ctrl Down}"
        Send "{Ctrl Up}"
        Send "{Alt Down}"
        Send "{Alt Up}"
        Reload
    }

    現象がまったく出なくなるような対処方法はないようだけど、SendをSendEventに変更したら発生頻度が下がったとの情報があったので「SendMode “Event”」の1行を追加した。

    また、send/setWindowPosition関数をWrapしてホットキーの終了時に無条件でCtrl/AltのUpイベントを発行するように修正した。無条件でUpイベントが発生することによる副作用が懸念されるけれど押しっぱなしになるよりは良いかと思われる。

    暫定対処で追加したCtrl+Alt+Rキーの処理は残してAltキーの対処も追加しておいた。

    これでも再発するならsleepを入れたり、修飾キーをF13~F14キーに割り当てたり、別の方法で試行錯誤しながら修正していくことになる。

    しばらく様子見です。

    作ったもの

    keyremap_20241222.zip

  • キーのリマッピング

    自分用に修正したので貼っておこー  

    バグ修正

    • Ctrlキーの押下が解除されない

    エレコムのキーボードに変えてからCtrlキーを使ったホットキーでタイポした場合に上記の不具合が顕在化する場合がある。

    再現方法不明。発生頻度は高くない。RealforceやHHKBでは発生しないので安いキーボードのスイッチが原因と思われる。

    チャタリングが発生する

    AutoHotkeyを最新バージョンに入れ替えても改善されず。

    Downloads

    機能追加

    スクリプトでの対処はできないので現象発生時のリカバリー用に以下のホットキーを追加した。

    ^!r:: {
        Send "{Ctrl down}"
        Sleep 100
        Send "{Ctrl up}"
        Sleep 100
        Reload
    }

    Ctrl+Alt+Rキー:ソフトウェア的にCtrlキーを押下してスクリプトをリロードする。

    作ったもの

    keyremap_20241215.zip

  • kozawa.tokyoドメイン更新完了のお知らせ

    ドメイン更新メールきた。

    2019年:106 円
    2020年:1,012 円
    2021年:1,628 円
    2022年:1,628 円
    2023年:1,628 円
    2024年:2,002 円
    2025年:3,200 円 <= これ

    高くなりすぎだわ。.tokyo 止めようかな… kozawa 辞めようかな… 🤔

  • 「Python」で簡単にGUIを構築できる国産フレームワーク「TkEasyGUI」がv1.0に

    https://forest.watch.impress.co.jp/docs/news/1637592.html

    TkEasyGUI – Pythonで最も素早くデスクトップアプリを創るライブラリ

    https://note.com/kujirahand/n/n33a2df3aa3e5

    WindowsのGUIが汚い… これはどうにもならんですね。🤔

  • 「もうええでしょ」のダウンロード方法

    YT-DLP

    yt-dlp is a feature-rich command-line audio/video downloader with support for thousands of sites.

    https://github.com/yt-dlp/yt-dlp?#release-files

    yt-dlp.exeをダウンロードし、URLを引数にして実行する。

    yt-dlp.exe https://www.youtube.com/watch?v=FCt2mryVhtM

    →「もうええでしょ [FCt2mryVhtM].mp4」がダウンロードされる。

    以上

    補足

    ダウンロード時に以下の警告メッセージが出力されます。低画質のmp4ファイルのダウンロードで良い場合は対処不要です。

    WARNING: ffmpeg not found. The downloaded format may not be the best available. Installing ffmpeg is strongly recommended: https://github.com/yt-dlp/yt-dlp#dependencies

    FFmpeg Static Auto-Builds

    https://github.com/yt-dlp/FFmpeg-Builds#downloads

    WINDOWS X64:「ffmpeg-master-latest-win64-gpl.zip」

    警告メッセージに従い ffmpeg をダウンロードしてパスを通すと警告が消えてmkvファイルがダウンロードされるようになります。

    FORMAT SELECTION

    By default, yt-dlp tries to download the best available quality if you don’t pass any options.

    ファイル形式を指定しない場合は、最も高画質な形式でダウンロードされます。

    You can also use a file extension (currently 3gpaacflvm4amp3mp4oggwavwebm are supported) to download the best quality format of a particular file extension served as a single file.

    ファイルの拡張子は、-f mp4 のように指定できます。