lisz-works

技術系だけど関係ないこと多い系ブログ

Pythonでキーボード操作!キーを打たずに自動化できちゃう!?

【スポンサーリンク】

Python ロゴ pyAutoGUIでキー操作をする方法です。

これを使えばキーボード操作を自動化することができます!

マウスで操作する方法はコチラ

www.lisz-works.com

文字列のキー入力模擬

typewrite()は、文字列を渡すと、その文字列のキー入力を行います。

>>> import pyautogui as pgui
>>> 
>>> def testKey():
    pgui.click(50,50)
    pgui.typewrite('Hello, pyautogui key!')
    
>>> testKey()

左上に適当にメモ帳を配置して実行すると、見事「Hello, pyautogui key!」が書かれます。

文字列の入力

1キーごとのキー入力模擬

typewrite()は、配列に入力したいキーに対応した文字列を渡すことで、1キーごとのキー入力を模擬してくれます。

こんな感じ。

>>> def testKey2():
    pgui.click(50, 50)
    pgui.typewrite(['a', 'b', 'left', 'left', 'X', 'Y'])
    
>>> testKey2()

これを実行すると、「XYab」と書かれます。

文字の入力

これは

  1. a入力
  2. b入力
  3. 左キー(bの前にカーソル)
  4. 左キー(aの前にカーソル)
  5. X入力
  6. Y入力

と入力されているから。

ポイントは真ん中にある「'left'」ですね。

特殊キーに対応した文字列

typewrite()は、各キーに対応した文字列を待ち受けています。

例えば今回のように「←キー」を入力させたい場合。

「'left'」が対応した文字列なので、「'left'」を渡してあげます。

すると「←キー」の入力を模擬してくれます。

キー文字列 対象のキー
'a', 'A', '1', '@'など 各キーの文字
'enter', 'return', '\n' Enter
'esc' Esc
'shiftleft', 'shiftright' 左右のShift
'altleft', 'altright' 左右のAlt
'ctrlleft', 'ctrlright' 左右のCtrl
'tab', '\t' Tab
'backspace' バックスペース
'delete' デリート
'pageup', 'pagedown' ページアップ/ページダウン
'home' HOME
'end' END
'up', 'down', 'left', 'right' 上下左右
'f1', 'f2', 'f3', and so on ファンクションキー(F1, F2など)
'volumemute' 音量 ミュート
'volumedown' 音量 下げる
'volumeup' 音量 上げる
'pause' Pause
'capslock' CapsLock
'numlock' NumLock
'scrolllock' ScrollLock
'insert' Insert
'printscreen' Print Screen
'winleft', 'winright' 左右のWindowsキー
'command' Mac OS XのCommand
'option' Mac OS XのOption

複合キーの入力

普段キーは単発で使うだけではないですよね?

例えば

  1. Ctrl+Cでコピー
  2. Windows+EでPC(またはクイックアクセスやマイコンピュータ)*1
  3. Alt+F4でウィンドウを閉じる

とかとか。

今回は試しに、Alt+Tabでウィンドウ変更をしてみましょう。

>>> def tabChg():
    pgui.keyDown('alt')
    pgui.keyDown('tab')
    pgui.keyUp('tab')
    pgui.keyDown('tab')
    pgui.keyUp('tab')
    pgui.keyDown('tab')
    pgui.keyUp('tab')
    pgui.keyUp('alt')
>>> tabChg()

実行すると3回分Alt+Tabを押して、3回分ウィンドウ変更をします。

あとがき

特定の入力を毎回行わなければならない……

というケースがあったとき役立ちそうですね!

マウスとキーボードの自動化を組み合わせれば、色々なことができそうですね!

www.lisz-works.com

*1:設定とWindowsのバージョンによって異なる