キーボードドライバのパッチあて

XPERIA X1はFn併用に割り当てられていないキーがたくさんあるので、記号に割り当てるようkeypad.dllをいじってみました。あとSoftキーがApp2(0xc2)やApp3(0xc3)になっているんで、ここはSoft1(0x70)とSoft2(0x71)に変更してみました。


なお、id:tmytさんが手を入れられたKeypad.dllをベースに色々追加してみましたが、XPANELキー(0xea)はキーダウンは0xeaだけど、キーアップが0xeaにスキャンコード0xffがついてくるようで、そこをつぶせなかったので使い方によっては若干変な動きをします。私はXPANELキーに短押でWIN、長押でXPANELにしたかったのですが、普通に割り当ててもうまくいかず、試行錯誤のうえSortInchKeyでXPANEL(0xea)をコード登録のうえ、XPANELにスキャン:0xffで短押にアプリ実行PQz_KEY.exe、パラメータにD:0x5b U:0x5bでWINキー割当、長押にアプリ実行PMRunner.exe(tmytさん作)でXPANEL起動の設定ができました。あとFnで割り当てしきれなかった{}は、PQzIIのProgramからPQz_KEY.exeでCtrl+Tに0x10+0xdbで{、Cntl+Yに0x10+0xddで}としてみました。



で、こんな感じになってます。

キー コード キー(Fn+) コード(Fn+)
Win 0x5b
Q 0x51 Fn + Q = ! 0x21
W 0x57 Fn + W = " 0x22
E 0x45 Fn + E = / 0x2f
R 0x52 Fn + R = & 0x26
T 0x54 Fn + T = ( 0x28
Y 0x59 Fn + Y = ) 0x29
U 0x55 Fn + U = 1 0x31
I 0x49 Fn + I = 2 0x32
O 0x4f Fn + O = 3 0x33
P 0x50 Fn + P = ; 0x3b
0x08 Fn + ← = Del 0x2e
Tab 0x09
A 0x41 Fn + A = ^ 0x5e
S 0x53 Fn + S = % 0x25
D 0x44 Fn + D = $ 0x24
F 0x46 Fn + F = [ 0xdb
G 0x47 Fn + G = ] 0xdd
H 0x48 Fn + H = - 0x2d
J 0x4a Fn + J = 4 0x34
K 0x4b Fn + K = 5 0x35
L 0x4c Fn + L = 6 0x36
Enter 0x0d
@ 0x40 Fn + @ = _ 0x5f
Z 0x5a Fn + Z = ~ 0x7e
X 0x58 Fn + X = \ 0x5c
C 0x43 Fn + C = < 0x3c
V 0x56 Fn + V = > 0x3e
B 0x42 Fn + B = = 0x3d
N 0x4e Fn + N = + 0x2b
M 0x4d Fn + M = 7 0x37
0x3a Fn + : = 8 0x38
' 0xde Fn + ' = 9 0x39
Fn 0xec
Sym 0xeb
au 0xed
Space 0x20
, 0xbc Fn + , = * 0x2a
. 0xbe Fn + . = 0 0a30
? 0x3f Fn + ? = # 0x23
OK 0x5c
Soft1 0x70 (0xc2+scan:0xffから振り直し)
Soft2 0x71 (0xc3+scan:0xffから振り直し)
Phone 0x72
Phone End 0x73
XPANEL 0xea
OK
LEFT 0x25+0x84
UP 0x26+0x84
RIGHT 0x27+0x84
DOWN 0x28+0x84


試してみたいという奇特な方は・・・
オレオレ署名なんでDark_Sign_cert.cabSDKCertで署名してから、XperiaHackedKeypad.dll.CABをいれてください。
インストール後再起動したらキーボードが効かなくなっているかもしれませんが、dllがstopしているだけなのでFdcSoftのTaskMgrなどからServiceを開始すれば大丈夫です。
Dark_sign_cert.cab
XperiaHackedKeypad.dll.CAB


SDKCert修正版
SDKCerts.CAB
XperiaHackedKeypad.dll.CAB


とはいったものの、私は比較的最近XPERIA X1を手に入れましたが、皆さん既に長く使われてると思うのでこの辺はとっくに解決してますよね。


(追記)4/19 11:46
さっき再起動したら、XPANELキーはスキャンコード0xffをはいてませんでした。昨日は寝ぼけてたのかも。。。ということで、XPANEL長押しは解決できてません。それと再起動のたびkeypad.dllのServiceがとまっているようなので、そこもどうにかする必要がありそうです。もう少し調べてみることにします。


(追記)4/19 20:28
オレオレ署名だと再起動の度にいちいちService立ち上げないといけないので、KovskyKitchenに入っていたSDKSamplePrivDeveloper.cerで署名しなおしました。今回デバイスに署名は入れなおしませんでしたが、たぶん依然に入れたSDKCerts.cabで通ってるのだと思いますのでそれも一緒に置いておきます。
XPANELのスキャンコード0xffはSortInchKeyとかで色々設定いじっているとやはり出てくるときがあるみたいで挙動がよくわかりません。ということで長押し割り当ては依然できず。。。