/tigervnc/vncviewer/cocoa.mm
int cocoa_event_keysym(const void *event)
{
:
modifiers = 0;
if ([nsevent modifierFlags] & NSAlphaShiftKeyMask)
modifiers |= alphaLock;
if ([nsevent modifierFlags] & NSShiftKeyMask)
modifiers |= shiftKey;
if ([nsevent modifierFlags] & NSAlternateKeyMask)
modifiers |= optionKey;
//追加
int code = my_event_keysym(key_code,modifiers);
if ( code != -1 ) return code;
chars = key_translate(key_code, modifiers);
if (chars == nil)
return NoSymbol;
:
}
//追加
static const int kvk_map_qwerty[][3] = {
{ 0x00, XK_a ,XK_A },
{ 0x01, XK_s ,XK_S },
{ 0x02, XK_d ,XK_D },
{ 0x03, XK_f ,XK_F },
{ 0x04, XK_h ,XK_H },
{ 0x05, XK_g ,XK_G },
{ 0x06, XK_z ,XK_Z },
{ 0x07, XK_x ,XK_X },
{ 0x08, XK_c ,XK_C },
{ 0x09, XK_v ,XK_V },
{ 0x0B, XK_b ,XK_B },
{ 0x0C, XK_q ,XK_Q },
{ 0x0D, XK_w ,XK_W },
{ 0x0E, XK_e ,XK_E },
{ 0x0F, XK_r ,XK_R },
{ 0x10, XK_y ,XK_Y },
{ 0x11, XK_t ,XK_T },
{ 0x12, XK_1 ,XK_exclam },
{ 0x13, XK_2 ,XK_quotedbl },
{ 0x14, XK_3 ,XK_numbersign },
{ 0x15, XK_4 ,XK_dollar },
{ 0x16, XK_6 ,XK_ampersand },
{ 0x17, XK_5 ,XK_percent },
{ 0x18, XK_asciicircum ,XK_asciitilde },
{ 0x19, XK_9 ,XK_parenright },
{ 0x1A, XK_7 ,XK_quoteright },
{ 0x1B, XK_minus ,XK_equal },
{ 0x1C, XK_8 ,XK_parenleft },
{ 0x1D, XK_0 , XK_0 },
{ 0x1E, XK_bracketleft ,XK_braceleft },
{ 0x1F, XK_o ,XK_O },
{ 0x20, XK_u ,XK_U },
{ 0x21, XK_at ,XK_grave },
{ 0x22, XK_i ,XK_I },
{ 0x23, XK_p ,XK_P },
{ 0x25, XK_l ,XK_L },
{ 0x26, XK_j ,XK_J },
{ 0x27, XK_colon ,XK_asterisk },
{ 0x28, XK_k ,XK_K },
{ 0x29, XK_semicolon ,XK_plus },
{ 0x2A, XK_bracketright ,XK_braceright },
{ 0x2B, XK_comma ,XK_less },
{ 0x2C, XK_slash ,XK_question },
{ 0x2D, XK_n ,XK_N },
{ 0x2E, XK_m ,XK_M },
{ 0x2F, XK_period ,XK_greater },
{ 0x5D, XK_backslash, XK_bar },
{ 0x5E, XK_underscore , XK_underscore },
{ 0x68, XK_Kanji },
};
int my_event_keysym(UInt16 key_code,UInt32 modifiers)
{
int i;
int shift = (shiftKey & modifiers)? 1 : 0;
for (i = 0;i < sizeof(kvk_map_qwerty)/sizeof(kvk_map_qwerty[0]);i++){
if (key_code == kvk_map_qwerty[i][0])
return kvk_map_qwerty[i][1 + shift];
}
return -1;
}
1 件のコメント:
Hi, thank you very much. I was having the issue of key mapping in my mac for tiger-vnc when trying to connect to a vncserver. Changing the source code for key-mapping according to your code and recompiling and making the binary, solved my issue. Thank you very very much.
The error being generated was:
No symbol for key code 0x01 (in the current state)
No symbol for key code 0x05 (in the current state)
コメントを投稿