« Teslaの派生版を作成しました その5 | トップページ | Teslaの派生版を作成しました その6 »

2009年3月22日 (日)

Macと外付けテンキー その8(ロジクール VN-350)

DentakuTenkey1.1.0にて動作するとのことです。
()が*(となる場合はテンキーをJISキーボードに設定すれば()が入力される様になります。

Leopardの場合シャットダウン時にオプションが自動記憶されませんので、オプションを設定した後に一旦DentakuTenkeyを終了して下さい。それによりオプションが記憶され次回起動時からは設定が不要となります。

さて、ここまでくるとFKBT22MBが動作しないとは考え難いので、どなたかお持ちの方試して報告をお願いします m(_ _)m

« Teslaの派生版を作成しました その5 | トップページ | Teslaの派生版を作成しました その6 »

Mac」カテゴリの記事

コメント

1月にFKBT22MBを購入して、少し試しました。本業が忙しく、きちんと問題点を整理出来ていないので、報告を先送りにしていました。

とりあえず、気付いた問題点は 3点

・NumLock を押すと a と入力される
(NumLock としても機能している)
・= を押すと、16 と入力される
(NumLock してても、してなくても)
・Esc、Tab が機能しない?(勘違いかも)

もう少ししっかり確認をしたいのですが、なかなか本業が落ち着かないので‥‥‥。

VenderID は 0x04b4 を、
ProductID は 0x0101 を使っています。

ありがとうございます。

現象からすると処理が呼ばれていないように見えます。
Numlockキーにてカーソルモードとテンキーモードを行き来できましたか?

時間がある時で結構ですので、以下を確認していただけると助かります。

・レシーバを外した状態でMacを起動しコンソールを立ち上げます。
・レシーバを装着しコンソールのkbdとchkの出力を確認します。

レシーバを装着した時に出力されるキーボードのVendor IDとProduct IDとチェック用の値が一致している必要がありますので、一応確認をお願いいたします m(_ _)m

先週は、お礼も書かずに書きなぐってしまい、申し訳ありません。

改めまして、いしおかと申します。DentakuTenkeyの開発、どうもありがとうございます。このサイトを見て、購入を決めました。型番が微妙に違うのは、実物が来るまで気付きませんでした(それよりも、大きさに驚きました)。

それで、確認項目ですが、やっぱ違っていました。コンソールのその部分を貼り付けます。

09/04/03 10:00:25 kernel DentakuTenkey::notifier_hookKeyboard
09/04/03 10:00:25 kernel DentakuTenkey::replaceKeyboardEvent name = IOHIDKeyboard
09/04/03 10:00:25 kernel DentakuTenkey::replaceKeyboardEvent 0x5410000 (a1df3e)
09/04/03 10:00:25 kernel DentakuTenkey::notifier_hookKeyboard
09/04/03 10:00:25 kernel DentakuTenkey::replaceKeyboardEvent name = IOHIDConsumer
09/04/03 10:00:25 kernel DentakuTenkey::checkVendorAndProduct (chk[0x0, 0x0], kbd[0x45e, 0x8502])
09/04/03 10:00:25 kernel DentakuTenkey::timeoutHandler 1
09/04/03 10:00:25 kernel DentakuTenkey::checkVendorAndProduct (chk[0x0, 0x0], kbd[0x413c, 0x2105])

checkVendorAndProductが2行あります。

sudo sysctl -w で書き換えないといけないと思うのですが、FKB22MBのVendorID = 0x04b4, ProductID = 0x0101 ではまずいのでしょうか。最初は、確かこれを入力したと思います。

よろしくお願いします。

こんにちは。

0x45eはMicrosoft、0x413cはDellの様ですが、いずれかのキーボードを使っていますか?
そちらでない方の値がテンキーのvendor IDとなる可能性が高いと思います。

また、それを確実にするために、1つ前でコメントしたようにレシーバをはずした状態で電源を投入しコンソールを起動して下さい。
この時点で出力されているcheckVendorAndProductは関係ない機器のものですので無視して下さい。
その後レシーバを装着してテンキーが使える状態とします。その時に追加される出力を確認して下さい。
この場合、checkVendorAndProductの出力は1つだけ追加されるはずです。

以上、お手数をお掛けしますが上記の方法で確認をお願いいたします m(_ _)m
ではでは。

ずいぶん時間が経ってしまい、申し訳ありません。あと、詳しいインストール手順のページ、どうもありがとうございます。

それで、VenderID, ProductID ですが、Dell のキーボードを繋いで試していたため、Dell の ID が表示されていたようです。HHK に繋ぎ替えたら、0x413c は出なくなったので、0x45e が VenderID と思われます(HHKは 0x853 のようです)。

で、sudo sysctl -w で入力したのですが、NumLock で a が出る症状は変わっていません。= で 16 が出るのは無くなったのですが、何も出ません。試しに、最初に入れた ID の 0x04b4, 0x0101 を入力してみたのですが、NumLock については変化はありませんでした。ということで、解決はしておりません。

とりあえず、コンソールの出力を貼っておきます。

Apr 30 17:54:00 macmini sudo[1527]: **** : TTY=ttys000 ; PWD=/Users/**** ; USER=root ; COMMAND=/usr/sbin/sysctl -w dentakutenkey.vendorid=0x45e
Apr 30 17:54:00 macmini kernel[0]: DentakuTenkey::checkVendorAndProduct (chk[0x45e, 0x0], kbd[0x853, 0x100])
Apr 30 17:54:22 macmini sudo[1528]: **** : TTY=ttys000 ; PWD=/Users/**** ; USER=root ; COMMAND=/usr/sbin/sysctl -w dentakutenkey.productid=0x8502
Apr 30 17:54:22 macmini kernel[0]: DentakuTenkey::checkVendorAndProduct (chk[0x45e, 0x8502], kbd[0x853, 0x100])
Apr 30 17:54:39 macmini kernel[0]: DentakuTenkey::checkVendorAndProduct (chk[0x45e, 0x8502], kbd[0x45e, 0x8502])
Apr 30 17:54:55 macmini KeyboardSetupAssistant[1530]: writeKeyboardType <34050-1118-0> 42
Apr 30 17:54:55 macmini KeyboardSetupAssistant[1530]: writeKeyboardType <256-2131-15> 42
Apr 30 17:55:29 macmini kernel[0]: DentakuTenkey::checkVendorAndProduct (chk[0x45e, 0x8502], kbd[0x853, 0x100])
Apr 30 17:56:50 macmini kernel[0]: DentakuTenkey::checkVendorAndProduct (chk[0x45e, 0x8502], kbd[0x45e, 0x8502])

うーん、よく分からない状態ですね。
 
debugオプションで確認をと思ったのですが、私のミスでソースからdebugオプションがなくなってました (^^;
 
ソフトを修正しますのでゴールデンウィーク明けまでお待ち下さい m(_ _)m

遅くなりました m(_ _)m

ちょっと余裕がなくて説明も手抜きになっています (^^;

下記のファイルをダウンロードしてインストールして下さい。
(アドレスバーにURLをコピーペースト下さい)

 http://www.geocities.jp/nasukoji_7/download/DentakuTenkey_1.1.1.zip

旧版をアンインストールした後v1.1.1をインストールして下さい。
vendorid,productidを設定後、下記をターミナルにて実行して下さい。

 sudo sysctl -w dentakutenkey.debug=1

上記にてデバッグオプションが有効となり、押されたキーの情報がコンソールに出力されるようになります。

テンキー上のキーを押してもコンソールにデータ出力されない場合、vendorid,productidが合っていないことが考えられます。

下記のデータを書き込んでいただけますでしょうか。

1.NumLockキーを押した時に出力されるデータ
2.「=」キーを押した時に出力されるデータ
3.「1」キーを押した時に出力されるデータ
4.「+」キーを押した時に出力されるデータ

以上、お手数をお掛けしますが宜しくお願いいたします。

どうもありがとうございます。
早速、ログを取ってみました。

ログの形式は次のような感じで、

kernel[0]: caught hid event type 10 flags 0x0 key 0 charCode 97 charSet 0 origCharCode 97 origCharSet 0 kbdType 42
kernel[0]: send hid event type 10 flags 0x0 key 0 charCode 97 charSet 0 origCharCode 97 origCharSet 0 kbdType 42

caught と send は常にセットで出力され、中身が食い違うことはありませんでした。
それぞれの caught/send の type 〜
origCharCode を列挙します。

NumLock: a が表示される。NumLock としても機能している。

type 10 flags 0x0 key 0 charCode 97 charSet 0 origCharCode 97
type 11 flags 0x0 key 0 charCode 97 charSet 0 origCharCode 97

=: 今回は、どういう訳か何も表示されませんでした。

type 12 flags 0x80020 key 58 charCode 0 charSet 0 origCharCode 0
type 10 flags 0x280020 key 83 charCode 49 charSet 0 origCharCode 49
type 10 flags 0x280020 key 88 charCode 54 charSet 0 origCharCode 54
type 12 flags 0x200000 key 58 charCode 0 charSet 0 origCharCode 0
type 11 flags 0x200000 key 83 charCode 49 charSet 0 origCharCode 49
type 11 flags 0x200000 key 88 charCode 54 charSet 0 origCharCode 54

(同じセットが二回ログに出ます)

1: 1が表示される。

type 10 flags 0x200000 key 83 charCode 49 charSet 0 origCharCode 49
type 11 flags 0x200000 key 83 charCode 49 charSet 0 origCharCode 49

+: +が表示される。

type 10 flags 0x200000 key 69 charCode 43 charSet 0 origCharCode 43
type 11 flags 0x200000 key 69 charCode 43 charSet 0 origCharCode 43

よろしくお願いします。

ありがとうございます。
だいたい状況がつかめました。
 
Numlockと=キー以外は、現状で正常動作すると思いますがいかがでしょうか?
 
=キーについては、alt+6+1が送られてくるはずでしたがalt+1+6となっており予定外な状態です。
もしWindowsもお持ちでしたら、=キーで=が入力されるか確認していただけないでしょうか?
 
Numlockでaが入力される件については、押した時に送られてくるUSBキーコードの調査が必要です。
debugオプションを改造しますのでお待ち下さい。
 
ではでは。

NumLock と = 以外は問題なしだと思います。

それで、WindowsXP で確認しました。ちゃんと = が入力されました。

キーコードですが、xev の出力だったらすぐに取れます。xterm での挙動はいつもと同じでした。参考になるでしょうか。

テンキーの = を押した時:

KeyPress event, serial 26, synthetic NO, window 0xa00001,
root 0xdd, subw 0x0, time 1106433036, (-280,55), root:(286,139),
state 0x0, keycode 66 (keysym 0xff7e, Mode_switch), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

KeyRelease event, serial 26, synthetic NO, window 0xa00001,
root 0xdd, subw 0x0, time 1106433037, (-280,55), root:(286,139),
state 0x2000, keycode 66 (keysym 0xff7e, Mode_switch), same_screen YES,
XLookupString gives 0 bytes:

キーボードの = を押した時:

KeyPress event, serial 26, synthetic NO, window 0xa00001,
root 0xdd, subw 0x0, time 1106436214, (-280,55), root:(286,139),
state 0x0, keycode 32 (keysym 0x3d, equal), same_screen YES,
XLookupString gives 1 bytes: (3d) "="
XmbLookupString gives 1 bytes: (3d) "="
XFilterEvent returns: False

KeyRelease event, serial 26, synthetic NO, window 0xa00001,
root 0xdd, subw 0x0, time 1106436302, (-280,55), root:(286,139),
state 0x0, keycode 32 (keysym 0x3d, equal), same_screen YES,
XLookupString gives 1 bytes: (3d) "="


テンキーの NumLock を押した時:

KeyPress event, serial 26, synthetic NO, window 0xa00001,
root 0xdd, subw 0x0, time 1106056040, (377,237), root:(397,279),
state 0x0, keycode 8 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XmbLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False

KeyRelease event, serial 26, synthetic NO, window 0xa00001,
root 0xdd, subw 0x0, time 1106056176, (377,237), root:(397,279),
state 0x0, keycode 8 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"

テンキーの NumLock をもう一度押した時(NumLock解除):

KeyPress event, serial 26, synthetic NO, window 0xa00001,
root 0xdd, subw 0x0, time 1106063330, (377,237), root:(397,279),
state 0x0, keycode 8 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XmbLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False

KeyRelease event, serial 26, synthetic NO, window 0xa00001,
root 0xdd, subw 0x0, time 1106063466, (377,237), root:(397,279),
state 0x0, keycode 8 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"

v1.1.2を作成しました。

 http://www.geocities.jp/nasukoji_7/download/DentakuTenkey_1.1.2.zip

強引にFKBT22MBに対応してみました (^^;
・テンキーからの'a'の入力を無視します(Numlock以外から'a'が来ることは無いため)
・Alt+1+6を'='にすり替えます

上記が上手くいくかの確認をお願いいたします。

また、下記にてNumlockを押した時に送られて来るUSBキーコードを調べて下さい。

 sudo sysctl -w dentakutenkey.debug=2
 コマンド入力後Numlockキーを連打してください(Numlock以外は押さないで下さい)
 ある時点(16回目以内)でコンソールに 'USB key code was detected (0x??)' が出力されますので、出力された行を書き込んで下さい。

以上、お手数をお掛けしますが宜しくお願いいたします。

どうもありがとうございます。

入力については、問題ありませんでした。ちゃんと = が入力され、NumLock では a は出なくなりました。これで、実用上の問題は無くなりました。重ね重ね、どうもありがとうございます。

そして、key code の方ですが、detected とは出力されませんでした。コンソールのログを貼り付けます。

caught 以降の 8行が繰り返し出力されます。ただ、キーを打った回数だけ出る訳ではないようです。

COMMAND=/usr/sbin/sysctl -w dentakutenkey.debug=2

caught hid event type 12 flags 0x80020 key 58 charCode 0 charSet 0 origCharCode 0 origCharSet 0 kbdType 42
caught hid event type 10 flags 0x280020 key 83 charCode 49 charSet 0 origCharCode 49 origCharSet 0 kbdType 42
caught hid event type 10 flags 0x280020 key 88 charCode 54 charSet 0 origCharCode 54 origCharSet 0 kbdType 42
caught hid event type 12 flags 0x200000 key 58 charCode 0 charSet 0 origCharCode 0 origCharSet 0 kbdType 42
caught hid event type 11 flags 0x200000 key 83 charCode 49 charSet 0 origCharCode 49 origCharSet 0 kbdType 42
DentakuTenkey::searchUSBKeycode 1
caught hid event type 11 flags 0x200000 key 88 charCode 54 charSet 0 origCharCode 54 origCharSet 0 kbdType 42
DentakuTenkey::searchUSBKeycode 1

私に出来ることであれば試しますので、何なりと言ってください。

どうもありがとうございます。
なんとか使えそうな感じになってきましたね (^^;

>私に出来ることであれば試しますので、何なりと言ってください。

ありがとうございます m(_ _)m
では、お言葉に甘えて (^^;
key codeのテストについてですが、添付されたログはNumlockキーを押した時に出力されたものでしょうか?
ログからは=キーが押されているような感じがします。
もしNumlockでなかった場合は再度テストをお願いできますでしょうか。

さらに、Excelにおいて0または00キーを押すと問題があるようですので、debug=1で0と00キーを押した時のログを添付していただけますでしょうか。

以上、お手数をお掛けしますが宜しくお願いいたします。

すみません。間違えてました。改めてログを貼り付けます。ただ、"detected" は出てきませんでした。

NumLock (debug=2) :

caught hid event type 10 flags 0x0 key 0 charCode 97 charSet 0 origCharCode 97 origCharSet 0 kbdType 42
caught hid event type 11 flags 0x0 key 0 charCode 97 charSet 0 origCharCode 97 origCharSet 0 kbdType 42

それから、もうひとつの方。

0 (debug=1) : caught/send, type 10/11 の組み合わせで 4行ログに出力されました。

key 82 charCode 48 charSet 0 origCharCode 48 origCharSet 0 kbdType 42

00: 同様に 8行出力されました。

で、バックスペースのように文字が消えるという現象は、起こりませんでした(上のログは、10, 100 と入力した時のもので、エクセルにもちゃんと表示されました)。

よろしくお願いします。

何度もテストにお付き合い頂きありがとうございます m(_ _)m
 
Numlockは……よく分からないですね (^^;
現状でFKBT22MBが使えそうですので、これ以上の深追いは止める事にします。
 
文字が消える現象はAmazonのレビューでも報告されていますので、何か条件があるようですね。
Macの種類・Excelのバージョンはどのようになっていますでしょうか?
 
ではでは。

こちらの環境は、

MacMini (intel Core2 Duo, 2007年秋購入),
Mac OS X 10.5.7,
Office 2008 for Mac 12.1.7 (090302アップデート適用済み)

です。amazon の書き込みは、DentakuTenkey を使って無い状態ですよね。自分の時も、入れていない状態では挙動が変だったような気もします(入れたり外したりしてたので、わからなくなっています)。

とりあえず、昨日から仕事の方で数値入力がぐっと増えたのですが、問題なく使えています。間に合ってよかったです。本当に、どうもありがとうございました。

# 普段使いが HHK でテンキーレスなので、たくさん数字を入れるのは大変なので。

また、何かあったら書き込みます。なすこじさんの方で試してもらいたいことがあったら、直接メールを送っていただければ(サイトチェックの頻度は落ちると思います)、出来る限り試します。

どうもありがとうございます。
 
何とか使えるものになったようで何よりです。
また何かありましたらご協力お願いいたします m(_ _)m
 
Excdlについては、「Macと外付けテンキー その9」のコメント欄にても問題が指摘されていますので、現象が発生する方の書き込みを待つことにします。
 
ではでは。

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Macと外付けテンキー その8(ロジクール VN-350):

« Teslaの派生版を作成しました その5 | トップページ | Teslaの派生版を作成しました その6 »

無料ブログはココログ