Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

keyhac でキーカスタマイズ@Windows XP, Vista

      2013/07/15

トラックポイントつきのIBMのキーボードを手に入れたので、パソコンの操作をキーボードに集杓してみたいと思い、キーボードのキーカスタマイズを使いはじめました。

Windowsでキーカスタマイズをしたい場合、窓使いの憂鬱が有名ですが、Vistaに対応していないし、後継のソフトは有料だしマウス操作ができないので他のソフトウェアを探していたらPythonでカスタマイズを書けるkeyhacというソフトウェアを見つけました。作者さんに感謝です。

基本的な使い方は結構簡単で、起動したらconfig.pyとうファイルができるので、これをいじっていきます。

config.pyにカスタマイズ例が載っているので、キーを他のキーに割り当てるのは簡単にできます。デフォルトの設定では左のWindowsキー+矢印でウィンドウの位置を移動させたり、Windowsキー+F3でメモ帳を立ち上げたりできる設定になっています。

しかし、マウス操作の例がなく方法がわからず困ってました。マニュアルを見ていると pyautoという同じ作者さんが作られたソフトを内蔵しているらしく、この機能をつかうことでいろいろなWindowsの操作ができるようです。ただし、pyauto自体はAPIのドキュメントやサンプルが少ないのでやり方を書いておきます。ここではユーザが定義したモディファイアキー(U0)+Returnでマウスのミドルクリックを実現します。

まずはじめに、pyautoのモジュールをimportします。

from keyhac import *
from pyauto import *

configure関数の中でミドルクリックを行う関数をかいて、その関数をU0+Returnに割り当てます。

        def m_MClick():
            x, y = Input.getCursorPos()
            Input.send([MouseMiddleClick(int(x), int(y)),])
        keymap_global[ "U0-Return" ] = m_MClick

maznが適当にカスタマイズしてみたconfig.py全体はこんな感じです。無変換+○でいろいろな機能を実現していて、無変換 + h,j,k,lキーでviのようなカーソル操作、無変換+ “,”と”.”でブラウザの戻る・進む、無変換+Returnでミドルクリックができます。

from keyhac import *
from pyauto import *

def configure(keymap):
    # config.py編集用のテキストエディタの設定
    keymap.editor = u"notepad.exe"
    # 無変換キー(29)を仮想キー255に割り当て
    keymap.replaceKey( 29, 255 )
    # 255をユーザモディファイアキーに追加
    keymap.defineModifier( 255, "User0" )

    # どのウインドウにフォーカスがあっても効くキーマップ
    if 1:
        keymap_global = keymap.defineWindowKeymap()

        # vi風にカーソル移動
        keymap_global[ "U0-K" ] = keymap.command_InputKey("Up")
        keymap_global[ "U0-J" ] = keymap.command_InputKey("Down")
        keymap_global[ "U0-H" ] = keymap.command_InputKey("Left")
        keymap_global[ "U0-L" ] = keymap.command_InputKey("Right")
        keymap_global[ "U0-A" ] = keymap.command_InputKey("Home")
        keymap_global[ "U0-E" ] = keymap.command_InputKey("End")

        # Shift
        keymap_global[ "U0-S-K" ] = keymap.command_InputKey("S-Up")
        keymap_global[ "U0-S-J" ] = keymap.command_InputKey("S-Down")
        keymap_global[ "U0-S-H" ] = keymap.command_InputKey("S-Left")
        keymap_global[ "U0-S-L" ] = keymap.command_InputKey("S-Right")
        keymap_global[ "U0-S-A" ] = keymap.command_InputKey("S-Home")
        keymap_global[ "U0-S-E" ] = keymap.command_InputKey("S-End")

        # Ctrl
        keymap_global[ "U0-C-K" ] = keymap.command_InputKey("C-Up")
        keymap_global[ "U0-C-J" ] = keymap.command_InputKey("C-Down")
        keymap_global[ "U0-C-H" ] = keymap.command_InputKey("C-Left")
        keymap_global[ "U0-C-L" ] = keymap.command_InputKey("C-Right")

        # 戻る・進む
        keymap_global[ "U0-Comma" ] = "166"
        keymap_global[ "U0-Period" ] = "167"

        # U0-Returnでマウスのミドルクリック
        def m_MClick():
            x, y = Input.getCursorPos()
            Input.send([MouseMiddleClick(int(x), int(y)),])
        keymap_global[ "U0-Return" ] = m_MClick

 - IT技術 ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
Systemtapを使ってみる@RHEL 5.5 x86_64

Systemtap を使用してみたので覚え書き。 Systemtapでは、動的に …

no image
Tracの導入@Debian etch

Tracはメジャーなオープンソースのバグトラッキングシステム。 Subversi …

no image
PS3ファームウェアは3.0に!

PS3のファームウェアが着々と進化してますね。ついに3.0が2009/9/1にリ …

graboidでDockerイメージをダウンロード

Dockerを実行しているサーバがインターネットに接続されていないオフライン環境 …

no image
スイッチの初期化 @ Cisco Catalyst 2960

スイッチのパスワードを忘れてしまいログインできなくなった場合は初期化することにな …

no image
遅いネットワークでsshの応答が遅い

遅いネットワーク、特にモバイル端末経由でsshを使ったりする場合、一文字打つのに …

no image
LVM覚え書き@Fedora14

LVMの使い方をすぐ忘れてしまうので、覚え書き。 LVM用のパーティションを用意 …

no image
インストールしているThunderbird 2の拡張機能と不足機能

Thunderbirdに以下のアドオンをインストールしてみました。 Auto A …

no image
screenコマンド@cygwin with ck

cygwinのターミナルck上でscreenを使用しようとすると、デタッチ後にア …

no image
WordPressのPukiwikiプラグイン導入

以前pukiwikiを使っていたので便利かなと思い入れてみた。例えば <p …