Yet Another Mado tsukai no Yuutsu(YAMY) ver.0.03

1. Tv

WindowspėpL[oCfBOύX\tgug̗JT(Ȍmayuƕ\L)v
(http://mayu.sourceforge.net/)̃L[͒uhCox[X烆[U
[htbNx[XɕύXh\tgEFAłB
ɊJImayufork邱ƂɂAWindows Vistaȍ~OS̃T|[g
ڎwĂ܂B

IWimayuł̓tB^hCoɂL[̒uĂ܂A
{vWFNgł͂WH_KEYBOARD_LL̃tbNSendInput() APIɕύX܂B
ɂAmayuقǂ̒wł̋͂
u͊҂łȂȂ̂́AhCoւ̏v邱ƂȂA
Vistaȍ~Windows(64bit)ւ̑Ήڎw܂B


2. t@C\

yamy.exe	... yamy32/yamy64̂ǂ炩N郉`
yamy32		... 32bityamy{
yamy64		... 64bityamy{
yamy32.dll	... 32bitŃtbNDLL
yamy64.dll	... 64bitŃtbNDLL
yamyd32		... 64bit32bitvZXtbN邽߂̕⏕vO
yamy.ini	... ݒt@C(mayu ł̃WXgݒɑ)
workaround.reg	... L[΍pScancode MapWXgTv
readme.txt      ... {hLg
*.mayu		... L[oChݒt@C


3. gp@

{IȎgp@́ug̗JTvƓłB
http://mayu.sourceforge.net/mayu/doc/README-ja.html
QƂĉB

ȉAug̗JTvƈقȂ镔ɂċLڂ܂B

3.1. }EXCxg̒u

̃}EXCxgL[CxgƓlɒu\łB
e}EXCxgE1-vtBbNX[IȃXLR[h
ƂĈ܂B
# WH_KEYBOARD_LLgyamyłE1-vtBbNX̃L[R[h
# EƂłȂ߁Aۂ̃L[R[hƏՓ˂\͂ȂB

}EXCxg̒u̓ftHgł̓ItłB
L邽߂ɂ.mayu t@C

def option mouse-event = true

ƋLq܂B

u\ȃ}EXCxg͈ȉ̒ʂłB
# ()͎g^XLR[h
* }EXhbO Drag(E1-0x00)
* {^ LButton(E1-0x01)
* E{^ RButton(E1-0x02)
* {^ MButton(E1-0x03)
* zC[Oi WheelForward(E1-0x04)
* zC[ WheelBackward(E1-0x05)
* X{^1 XButton1(E1-0x06)
* X{^2 XButton1(E1-0x07)
* XN[(`g)E TiltRight(E1-0x08) Vistaȍ~
* XN[(`g) TiltLeft(E1-0x09) Vistaȍ~

̂DragCxǵAꂩ}EX{^܂܃{^
ꏊȏ}EXړۂDownADown
Ƀ{^𗣂Up^CxgłB
DragCxg܂ł̈ړ臒l̓sNZPʂ

def option drag-threshold = 30

̂悤Ɏw肵܂B臒lƂ0w肷臒lw肵Ȃ
ꍇADragCxg͔܂B

1
WheelForward/WheelBackward/TiltRight/TiltLeftɂ͕I"Up"
Cxg܂̂ŁAyamył͉Down/Up
Cxg܂B̂߂̃CxgfBt@CA
ɂ邱Ƃ͂ł܂B

2
L[CxgƓlɃ}EXCxguvEBhEg
R[h𒲍邱Ƃł܂AL[CxgƈقȂ蒲
Cxĝ͎Ă܂B́uv[h甲ȂȂ
Ȃ߂̑[ułB

3
Vistaȍ~łyamyWŋNAoption mouse-event L
ꍇAǗҌ̃Av(u̗Lɂ炸)}EX
Cxg͂ȂȂ܂ByamyǗҌŋNΕW
EǗҌǂɂ}EXCxg͂܂B


3.2. NLSL[̃GXP[v

{̏ꍇA{ꏈɎg邢̃L[ɑ΂Ă
WH_KEYBOARD_LLtbNOɓꏈs邽߁Ayamyɂ
ɃtbNł܂B
ȉA֋Xケ̃L[NLSL[(National Language Support Key)
ƌĂт܂B

L[{[hCAEghCoƂkbd106.dllpĂꍇ
NLSL[͈ȉ4łB
# []̓XLR[h
* pESp[0x29]
* p(CapsLock)[0x3a]
* Ђ炪[0x70]
* ϊ[0x7b]

L[{[hCAEghCoƂkbd101.dllpĂꍇ
NLSL[͈ȉ2łB
# []̓XLR[h
* `(~)[0x29]
* CapsLock[0x3a]

NLSL[tbNłȂƂւ̑΍ƂĂ̓WXg
 Scancode Map gẴL[ꈵȂʂ̃L[
u@܂BScancode Map ̎dlɂẮA

http://www.microsoft.com/whdc/archive/w2kscan-map.mspx

ɏ񂪂܂B܂ȉ̃TCg̋LqQlɂȂ܂B

http://www.jaist.ac.jp/~fujieda/scancode.html
http://sgry.jp/articles/scancodemap.html

ARCłŊmFł Windows7 ̏ꍇAHKEY_LOCAL_MACHINE
 Scancode Map L̂悤łBRTMłłǂ͖mFłB

Ă workaround.reg ͋̓IȒũTvłB
̃Tvł͂NLSL[ E0 vtBbNXt邱ƂɂA
ʃL[ɕϊĂ܂B *.mayu ͂ Scancode Map ̉ł
E0tꂽL[{̃L[̂悤ɓ삷悤
ݒ肪ǉĂ܂B

workaround.mayu ɂ͂̑΍ɑΉǉ𒊏oĂ܂̂ŁA
Ǝ .mayu gĂꍇ͂QlɂĉB

܂upL[CtrlL[̓ւv̒PȒuŏ\
ꍇ͂ɍi Scancode Map 쐬Ăǂł傤B

workaround.reg ̂悤ȁu݂ȂL[ւ̒uvɂ΍
yamy삵ĂȂꍇ̃L[@\ȂȂƂp
܂B

workaround.reg̒u(ȉAuNLSL[̃GXP[vv
ƌĂ)yamy̓쒆̂ݍs@\IɎ܂B

yamyNɃWXgworkaround.regɏĂ
(OAEg邱ƂȂ)OSScancode Mapǂݍ܂A
WXgɖ߂܂ByamyIɂ(WXg͊Ɍ
߂Ă̂)POSɍēǂݍ݂݂̂w܂B
ɂAyamy̓쒆̂NLS̃GXP[v܂B

AXN[bN(ʃ[Uւ̊ȈՃ[U؂ւ܂)ꍇ
yсAyamy uꎞ~vꍇ̓GXP[vAɖ߂
ēxGXP[vs܂B

gp郌WXgWindows7ȊȌꍇ́A
HKEY_CURRENT_USER\KeyBoard Layout\Scancode Map
Windows7̏ꍇ́A
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\KeyBoard Layout\Scancode Map
łB

̋@\̓ftHgł͖łALɂ邽߂ɂ yamy.ini ɂāA

escapeNLSKeys=0

 

escapeNLSKeys=1

ɕύX܂B̋@\̗pɍۂĂ͈ȉ̓_ɗӂĉB

* Iȋ@\ł\ȓтȂ댯܂B

* yamys郆[USeDebugPrivilegeKvłBAdministrators
  O[vɑ郆[U͊ł̓Ă܂B
  UACLȏꍇ́AĊǗ҂ƂĎsKv܂B

* ΏۂƂȂNLSL[Scancode MapŒuĂꍇ
  GXP[v͍s܂B

* GXP[v̂߃WXgĂůԂyamy
  ُIꍇAGXP[vpScancode MapWXg
  c܂B̏ꍇAregeditgČɖ߂ĉB

* L̏uԈȊOyamyُIꍇAWXg͌ɖ߂
  ܂AOSScancode Map͎cĂ̂ŁAUOItE
  OIČɖ߂AyamyċNĉB

* VMware ɑ΂AScancode Map ͗LłAyamy ɂL[u
  ͓܂B̂߃GXP[vꂽ(E0-tꂽ)܂܂
  QXgOSɓ͂܂BQXg Windows ̏ꍇ̓QXgł yamy
  𓮍삳Ό̃L[ɒuł܂B܂ALinux ̏ꍇ
  setkeycodes R}hgăGXP[vꂽL[̃XL
  R[hɒuł܂BႦ101L[{[hgpĂꍇ
  ȉ̃R}hɂăGXP[vꂽ `(~)[0x29]  CapsLock[0x3a]
  ̃R[hɖ߂܂B
  > setkeycodes e029 41 e03a 58
  ̑̃XLR[h̒ułȂOSQXgꍇ yamy 
  ꎞ~ăGXP[vĉB


3.3. &CancelPrefix֐

PrefixԂIɉ邽߂̊֐&CancelPrefixǉ܂B
One ShotfBt@CAɎw肵ĂL[𗣂ۂPrefix
߂ɓ܂B

3.4. ̑

* CXg[͂܂Byamy-0.03.zip Cӂ̃tH_ɓWJA
  yamy.exe sĉB

* WXgł͂ȂAyamy.exe ƓtH_ɂ yamy.ini 
  ݒ̕ۑ܂B

* ݒt@C̓z[fBNgł͂ȂAyamy.exe ̂tH_
  .mayu Ƃt@CŒuĉB

* L[{[h̎ʂ͍̔s܂̂ŁANɃj[
  uIvœK؂ȐݒIĉB

* [gfXNgbvł̃OIłN}܂B


4. Es

* ʃbN̓L[u܂B܂A̐ɂʃbN
  ւ̑JڎɉĂL[ꍇÃL[ςȂ
  ɂȂ邱Ƃ܂B̏ꍇÃL[󉟂邱Ƃɂ
  ςȂ܂B Alt L[ςȂƁApX[h
  ͂łȂȂ̂ŒӂĉB

* [U[hł̃tbN̂߁Aȉ̏ꍇ͋@\ȂƎv܂B
  - WH_KEYBOARD_LL tbN鑼AvƂ̋
  - DirectInput gvO

* PauseL[̂悤ɃXLR[h E1 vtBbNXtL[
  ͒u܂B̂悤ȃL[gpꍇ Scancode Map
  WXg𕹗pĉB

* ZLeB\tgɂĂ̓tbNDLL̃CXg[ubN
  ꍇ܂̂ŁȀꍇ yamy32/yamy64 OƂēo^ĉB


5. rh@

Visual Studio 2008 Professional + Windows SDK v6.1ŊmFĂ܂B
yamỹrhɂx64pRpCKvɂȂ܂AVisual Studio 2008
̊̃CXg[ł̓CXg[܂̂ŒǉŃCXg[
Kv܂B

5.1.
yamy  boost_1_38_0 ̃\[X肵Aȉ̔zuɂēWJ܂B

./
   |
   +---boost_1_38_0/ ... http://www.boost.org/ 肵A[JCuWJ
   |
   +---yamy/ ... "git clone git://git.sourceforge.jp/gitroot/yamy/yamy.git"ɂWJ
       |
       +---proj/ ...
       +---tools/ ...

5.2.
yamy/proj/yamy.sln  Visual Studio ŊJA\[Vrh܂B

5.3.
yamy/{Debug,Release}/ ȉɃoCi zip pbP[W܂B


6. 쌠ECZX

YAMY̒쌠ECZX͈ȉ̒ʂł:

  Yet Another Mado tsukai no Yuutsu(YAMY)

    Copyright (C) 2009, KOBAYASHI Yoshiaki <gimy@users.sourceforge.jp>
      All rights reserved.

    Redistribution and use in source and binary forms,
    with or without modification, are permitted provided
    that the following conditions are met:

      1. Redistributions of source code must retain the above copyright
         notice, this list of conditions and the following disclaimer.
      2. Redistributions in binary form must reproduce the above
         copyright notice, this list of conditions and the following
         disclaimer in the documentation and/or other materials provided
         with the distribution.
      3. The name of the author may not be used to endorse or promote
         products derived from this software without specific prior
         written permission. 

    THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
    OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
    THE POSSIBILITY OF SUCH DAMAGE.


YAMY̔hług̗JTv̒쌠ECZX͈ȉ̒ʂł:

  g̗JT

    Copyright (C) 1999-2005, TAGA Nayuta <nayuta@users.sourceforge.net>
      All rights reserved.

    Redistribution and use in source and binary forms,
    with or without modification, are permitted provided
    that the following conditions are met:

      1. Redistributions of source code must retain the above copyright
         notice, this list of conditions and the following disclaimer.
      2. Redistributions in binary form must reproduce the above
         copyright notice, this list of conditions and the following
         disclaimer in the documentation and/or other materials provided
         with the distribution.
      3. The name of the author may not be used to endorse or promote
         products derived from this software without specific prior
         written permission. 

    THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
    OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
    THE POSSIBILITY OF SUCH DAMAGE.


YAMYpĂBoostCũCZX͈ȉ̒ʂł:

  Boost Software License - Version 1.0 - August 17th, 2003

  Permission is hereby granted, free of charge, to any person or organization
  obtaining a copy of the software and accompanying documentation covered by
  this license (the "Software") to use, reproduce, display, distribute,
  execute, and transmit the Software, and to prepare derivative works of the
  Software, and to permit third-parties to whom the Software is furnished to
  do so, all subject to the following:

  The copyright notices in the Software and this entire statement, including
  the above license grant, this restriction and the following disclaimer,
  must be included in all copies of the Software, in whole or in part, and
  all derivative works of the Software, unless such copies or derivative
  works are solely in the form of machine-executable object code generated by
  a source language processor.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
  SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
  FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  DEALINGS IN THE SOFTWARE.


7. ӎ

܂łȂug̗JTvȂYAMY݂͑܂łB
ug̗JTv̍҂ł鑽ޗRƊJɍvXɂ
؂Đ[\グ܂B


8. 

2009/09/19 ver.0.03

* }EXCxguLɌł܂ꍇC

* ͏XbhɂăL[̊JƑ҂sɍs悤ύX

* 葀IEANeBuɂƃtH[EmacsEditɂȂȂƂ(`Pbg#18663)C

* [XbggȂꍇɂWM_COPYDATAgĒʒm(`Pbg#17769,#18662C)

* ꎞ~̓tbNXLR[ĥ܂܃X[悤ɕύX(`Pbg#18691Q)

* yamy64  &InvestigateCommand @\ȂC

* Iɓ̃vZX mayu{32,64}.dll 폜łȂȂC

2009/08/30 ver.0.02

* yamy{32,64}/yamyd32  yamy.exe ƓtH_T悤ɕύX

* Vistał̌isɕWAṽL[}bvO[oɂȂC

* NLSL[̃GXP[v@\IɎ

* &CancelPrefix֐ǉ

* }EXCxg̒u@\ǉ

* [gfXNgbv̋N}p~

* rhVXeύX
  - makefileVC++2008̃vWFNgɈڍs
  - makefunczipł̃pbP[W쐬JScriptōĎ

* sC
  - nOĂvZXƏIłȂ(`Pbg#17643)
  - EVtgꂽ܂܂ɂȂ邱Ƃ(`Pbg#17607)
  - yamỹ_CAOۂ5bxt[Y邱Ƃ(`Pbg#17767)
  - bԃL[͂؂邱Ƃ(`Pbg#17576)

2009/06/28 ver.0.01

[X
ȉ́ug̗JTv̍ŏIł̕ύX_

* L[͒uhCo烆[U[hɕύX(NO_DRIVER}N)
  - hCoւ̃ANZXr
  - L[͂̃tbN WH_KEYBOARD_LL g
  - L[CxgSendInput() APIg
  - WM_COPYDATA ł̒ʒmŃXg[ꍇ̂Ń[XbgŒʒm(USE_MAILSLOT}N)
  - dbZ[W΍Ƃ !PM_REMOVE ȃbZ[WtbNDLLŖ
  - RShiftE0t邱ƂɑΉ{104,109}.mayuworkaroundǉ

* 64bitΉ(MAYU64}N)
  - GetWindowLong -> GetWindowLongPtr ̎gpAPIύX
  - LONG -> LONG_PTR ̌^ύX
  - HWND  DWORD ɃLXg 32bit<->64bit ԂŋL
  - 64bit  32bit vZXւ̃tbNCXg[ yamyd.cpp V
  - obj̏o̓fBNg32bit64bitŕ
  - WPARAM/LPARAM ̎̂ 64bit ł͈قȂ̂ŁAload_ARGUMENT()̃I[o[[hǉ
  - INVALID_HANDLE_VALUE=0xffffffff Ɖ肵Ȃ
  - notifyCommand()𖳌(ꎞI[u)

* CXg[ł̎s
  - CXg[rhΏۂO
  - WXg̑ւ yamy.ini Őݒ肷(USE_INI}N)

* O֘A
  - hook.cpp ɃfobO}Nǉ
  - fobK̓vZXł̓tbNDLL̃fobOo͂}~
  - Ot@CɋL^@\ǉ(LOG_TO_FILE}N:͖)
  - OS̃L[ԂOo͂u`FbNv@\ǉ

* oOC
  - Engine::setFocus()ŃNbVC
  - KeyIterator::KeyIterator()ŋ󃊃Xgassert failC
  - fobOrhł̓fobOŃ^CN

* ̑
  - exedll̃x[Xl[ mayu  yamy ɕύX
  - 32bit/64bit  exe Ăѕ郉`𓱓
  - tbNDLL̏̑唼 DllMain O
  - boost::regex ̍XVɔ tregex::use_except ̖폜
  - VC++9ftHg̃RpCɕύX
  - LOGNAME -> USERNAME
  - -GX  -EHsc ɕύX
  - nmake ̃IvV -k 폜
  - tbN邽 WM_NULL u[hLXg
