質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

4回答

2338閲覧

Windowsのキーカスタマイズソフトの開発でオススメの言語

minato_hy

総合スコア68

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2016/04/17 07:09

編集2016/04/17 07:10

####実現したいこと
ソフトウェアのインストールができないWindows機でもMacのように、Ctrl+fbnpでのカーソル移動や「無変換」「変換」キーでのIMEオンオフなどがしたいです。後者はIMEの設定で可能なので、前者を可能にするソフトウェアを個人で開発できるかを知りたいです。
要件は以下のようなものなのですが、開発が可能かどうか、また可能な場合はオススメの言語はなにか、といったアドバイスをいただけますでしょうか。

####要件

  • xkeymacsやenthumbleのように、Ctrlや無変換を押しているとfbnpでのカーソル移動などができるもの。
  • インストールが不要。
  • キーのリマッピングでレジストリを弄らない?

ちなみに今までに触ったことがある言語は、Python(3年)、C言語(半年)、Java(1年)程度です。
以上、よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

Yet Another Mado tsukai no Yuutsu (YAMY)が参考になるかも知れません。ソースコード(C++)も公開されていますので、どうやったらできるのかがわかると思います。BSDライセンスのようですので、ライセンスに従えばソースをコピーすることも可能です。

YAMYはドライバーを使わないユーザーモードフックベースで行っています。WH_KEYBOARD_LLを使ってキーをフックし、SendInput()を使ってキーイベントを発生しています。ドライバーを入れたりレジストリを編集したりしているわけではないので、インストール無しにすることはできるかと思います。ただし、できることに限界があり、アプリケーションによっては動作しません。YAMY自体もあまり保守されていないため、最新のWindowsでもそのまま動くかどうかはわかりません。

投稿2016/04/17 14:33

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minato_hy

2016/04/19 12:30

具体的なソースのあるプロジェクトまで提示していただき大変ありがたいです。 保守されていないにしても、方向性を掴むだけでも参考にできるかもしれないのでじっくり読んでみます。
guest

0

インストール不要というのはインストーラーを使わないということでしょうか。単にインストーラーを使わなくても動くように作れば良いだけで、特別なことは何もありません。

キーボードのレイアウトを変えるだけならキーマッピングの変更(レジストリ書き換え)だけで済みますが、Ctrl+F,B,N,Pでカーソル移動させたいとなると、アプリケーションの挙動を変えることになるので、簡単にはできません。

xkeymacsやenthumbleのように、Ctrlや無変換を押しているとfbnpでのカーソル移動などができるもの。

おそらく、キー入力をフックして挙動を変えているのだと思います。フックとは、システムやアプリの本来の処理に割り込んで、何らかの処理を追加したり独自の処理に置き換えたりすることです。例えば、CtrlキーとFキーが押されたときにカーソルキーが押されたことにする、というようなことが可能になります。「キー入力 フック」などのキーワードで検索すればいろいろ出てくると思います。

Windows APIを直接呼び出す必要があるため、必然的に開発言語はC/C++となります。

投稿2016/04/17 09:11

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minato_hy

2016/04/17 10:49

的確なキーワードを教えていただきありがとうございます! こっち方面のソフトウェアの開発には触れたことがなく、どう調べるかすら解らなかったのでとても助かりました。 しばらくフック周りの検索とC(++)の勉強を続けてみます。
guest

0

要望のようなことをやるには、

  • グローバルフックを使う
  • フィルタドライバを作成する

の方法が考えられますが、現在は後者が推奨されています。

グローバルフックの場合Windows APIを呼び出せることと、DLLが作成できればいいので、C#やVisual Basicなどでも書けますが、APIを扱うのに余計なテクニックが必要なので、結局は最初からCで書いた方が簡単かもしれません。フックの競合などにより自分や他のアプリケーションやシステム全体が不安定になる場合があります。(なので推奨されていません)

フィルタドライバはデバイスドライバそのものなので基本Cで書くことになります。実装に問題が無ければ比較的安定しています。インストールが必要なので、要求事項は厳密には満たしていません。

投稿2016/04/17 23:49

suzukis

総合スコア1449

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minato_hy

2016/04/19 12:33

フィルタドライバというものもあるのですね……! インストールの定義がまだあいまいなので、もし問題なかった場合は調べてみます。
guest

0

前者を可能にするソフトウェアを個人で開発できるかを知りたいです。

可能です。
どのアプリに対して、どのレベルで行うかによります。

xkeymacsやenthumbleのように、Ctrlや無変換を押していると
fbnpでのカーソル移動などができるもの。

の様な事をしなくても、10キー付モデルなら、方法はあるので、
そうじゃないよって云う事なら、アプリとの競合をどうやって避けるかを
まず、考えないと。
FBNPカーソル?それってemacs ってな話ですか?

インストールが不要。

どのレベルのインストールの話なのか、
自アプリのみで、ランタイムや、.NetFramwork に依存しない、ということなのか?

キーのリマッピングでレジストリを弄らない?

方法によります。
Windows hook を使う処まで望むのか、望まないのか?
⇒OS毎に、他アプリとの、共存まで考える必要が出ます。
どこまでやるの?に繋がります。

投稿2016/04/17 09:18

daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問