#include "stdafx.h"
#include <iostream>
+#include <sstream>
+#include <string>
+#include <locale>
+#include <algorithm>
#include <windows.h>
extern "C" {
TCHAR szApp[ 8 ];
TCHAR szValue[ 3 ];
- TCHAR szMod[ 3 ];
+ TCHAR szMod[ 256 ];
for ( int pin=0; pin<N_PIN; pin++ )
{
+ BYTE mode = -1;
+ BYTE value = 0;
+ BYTE modify = 0;
+ TCHAR* p;
BYTE* cur = &pImg[ pin*3+2 ];
wsprintf( szApp, _T("PIN%d"), pin+1 );
- int mode = (int)GetPrivateProfileInt( szApp, _T("MODE"), -1, pFilename );
+
+ mode = (int)GetPrivateProfileInt( szApp, _T("MODE"), -1, pFilename );
+
+ if ( GetPrivateProfileString( szApp, _T("VALUE"), _T(""), szValue, ARRAYSIZE(szValue), pFilename ) > 0 )
+ {
+ errno = 0;
+ value = (BYTE)_tcstol( szValue, &p, 16 );
+ if ( errno != 0 )
+ return false;
+ }
+ else
+ {
+ mode = -1;
+ }
+
+ if ( GetPrivateProfileString( szApp, _T("MODIFIER"), _T(""), szMod, ARRAYSIZE(szMod), pFilename ) > 0 )
+ {
+ switch ( mode )
+ {
+ case 0:
+ //\81@\83}\83E\83X\90Ý\92è
+ errno = 0;
+ modify = (BYTE)_tcstol( szMod, &p, 16 );
+ if ( errno != 0 )
+ return false;
+ break;
+ case 1:
+ // \83L\81[\83{\81[\83h\90Ý\92è
+ {
+ wistringstream iss( szMod );
+ wstring t;
+ while ( getline( iss, t, L' ' ) )
+ {
+ transform( t.begin(), t.end(), t.begin(), toupper );
+ if ( t == L"LEFT_CTRL" )
+ {
+ modify |= 1;
+ }
+ else if ( t == L"LEFT_SHIFT" )
+ {
+ modify |= 2;
+ }
+ else if ( t == L"LEFT_ALT" )
+ {
+ modify |= 4;
+ }
+ else if ( t == L"LEFT_GUI" )
+ {
+ modify |= 8;
+ }
+ else if ( t == L"RIGHT_CTRL" )
+ {
+ modify |= 16;
+ }
+ else if ( t == L"RIGHT_SHIFT" )
+ {
+ modify |= 32;
+ }
+ else if ( t == L"RIGHT_ALT" )
+ {
+ modify |= 64;
+ }
+ else if ( t == L"RIGHT_GUI" )
+ {
+ modify |= 128;
+ }
+ }
+ }
+ break;
+ }
+
+ }
cur[ 0 ] = mode;
- if ( mode < 0 )
- continue;
- GetPrivateProfileString( szApp, _T("VALUE"), _T(""), szValue, ARRAYSIZE(szValue), pFilename );
- GetPrivateProfileString( szApp, _T("MODIFIER"), _T(""), szMod, ARRAYSIZE(szMod), pFilename );
- TCHAR* p;
- errno = 0;
- cur[ 1 ] = (BYTE)_tcstol( szValue, &p, 16 );
- if ( errno != 0 )
- return false;
- cur[ 2 ] = (BYTE)_tcstol( szMod, &p, 16 );
- if ( errno != 0 )
- return false;
+ cur[ 1 ] = value;
+ cur[ 2 ] = modify;
}
return true;
}
;
; MODE == 1 ... keyboard
; VALUE == \83X\83L\83\83\83\93\83R\81[\83h(usage) 2\8c\8516\90i\95\\8bL
-; MODIFIER == SHIFT,CTRL,ALT,WIN\82Ì\89\9f\89º\8fó\91Ô(8bit) 2\8c\8516\90i\95\\8bL
-; bit 0 ... LEFT CTRL
-; bit 1 ... LEFT SHIFT
-; bit 2 ... LEFT ALT
-; bit 3 ... LEFT GUI
-; bit 4 ... RIGHT CTRL
-; bit 5 ... RIGHT SHIFT
-; bit 6 ... RIGHT ALT
-; bit 7 ... RIGHT GUI
+; HID\82Ìusage\82ð\8ew\92è\82·\82é\81BASCII\83R\81[\83h\82Æ\82Í\88Ù\82È\82é(\8eQ\8fÆ: Universal Serial Bus HID Usage Tables, 10 Keyboard/Keypad Page (0x07))
+; MODIFIER == SHIFT,CTRL,ALT,WIN\82Ì\89\9f\89º\8fó\91Ô
+; \88È\89º\82Ì\8cê\8bå\82ð\94¼\8ap\8bó\94\92\82Å\8bæ\90Ø\82Á\82½\95¶\8e\9a\97ñ
+; LEFT_CTRL LEFT_SHIFT LEFT_ALT LEFT_GUI
+; RIGHT_CTRL RIGHT_SHIFT RIGHT_ALT RIGHT_GUI
+; (\97á) LEFT_CTRL LEFT_SHIFT ... \8d¶CTRL\83L\81[\82Æ\8d¶SHIFT\83L\81[\82Ì\93¯\8e\9e\89\9f\82µ
;
; MODE == 2 ... joystick
; reviveUSB\82Ì\83t\83@\81[\83\80\83E\83F\83A\82ª\8aÔ\88á\82Á\82Ä\82é\82Ý\82½\82¢
[PIN1]
MODE = 1
-VALUE = 04 ; "a"
-MODIFIER = 00
+VALUE = 2B ; TAB
+MODIFIER =
[PIN2]
MODE = 1
-VALUE = 05 ; "b"
-MODIFIER = 00
+VALUE = 2B ; TAB
+MODIFIER = RIGHT_SHIFT
[PIN3]
-MODE = 1
-VALUE = 06 ; "c"
-MODIFIER = 00
+MODE =
+VALUE =
+MODIFIER =
[PIN4]
-MODE = 1
-VALUE = 07 ; "d"
-MODIFIER = 00
+MODE =
+VALUE =
+MODIFIER =
[PIN5]
-MODE = 1
-VALUE = 08 ; "e"
-MODIFIER = 00
+MODE =
+VALUE =
+MODIFIER =
[PIN6]
-MODE = 1
-VALUE = 09 ; "f"
-MODIFIER = 00
+MODE =
+VALUE =
+MODIFIER =
[PIN7]
-MODE = 1
-VALUE = 04 ; "a"
-MODIFIER = 00
+MODE =
+VALUE =
+MODIFIER =
[PIN8]
-MODE = 1
-VALUE = 04 ; "a"
-MODIFIER = 00
+MODE =
+VALUE =
+MODIFIER =
[PIN9]
-MODE = 1
-VALUE = 04 ; "a"
-MODIFIER = 00
+MODE =
+VALUE =
+MODIFIER =
[PIN10]
-MODE = 1
-VALUE = 04 ; "a"
-MODIFIER = 00
+MODE =
+VALUE =
+MODIFIER =
[PIN11]
-MODE = 1
-VALUE = 04 ; "a"
-MODIFIER = 00
+MODE =
+VALUE =
+MODIFIER =
[PIN12]
-MODE = 1
-VALUE = 04 ; "a"
-MODIFIER = 00
+MODE =
+VALUE =
+MODIFIER =