various fixes , clean up, Numlock taken into account
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8466 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
+64
-56
@@ -51,41 +51,6 @@ print_key( char *chars, int32 offset )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Keymap::GetChars(uint32 keyCode, uint32 modifiers, char **chars, int32 *numBytes)
|
|
||||||
{
|
|
||||||
int32 offset = 0;
|
|
||||||
switch (modifiers & 0xff) {
|
|
||||||
case B_SHIFT_KEY: offset = fKeys.shift_map[keyCode]; break;
|
|
||||||
case B_CAPS_LOCK: offset = fKeys.caps_map[keyCode]; break;
|
|
||||||
case B_CAPS_LOCK|B_SHIFT_KEY: offset = fKeys.caps_shift_map[keyCode]; break;
|
|
||||||
case B_OPTION_KEY: offset = fKeys.option_map[keyCode]; break;
|
|
||||||
case B_OPTION_KEY|B_SHIFT_KEY: offset = fKeys.option_shift_map[keyCode]; break;
|
|
||||||
case B_OPTION_KEY|B_CAPS_LOCK: offset = fKeys.option_caps_map[keyCode]; break;
|
|
||||||
case B_OPTION_KEY|B_SHIFT_KEY|B_CAPS_LOCK: offset = fKeys.option_caps_shift_map[keyCode]; break;
|
|
||||||
case B_CONTROL_KEY: offset = fKeys.control_map[keyCode]; break;
|
|
||||||
default: offset = fKeys.normal_map[keyCode]; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*numBytes = fChars[offset++];
|
|
||||||
|
|
||||||
switch( *numBytes ) {
|
|
||||||
case 0:
|
|
||||||
// Not mapped
|
|
||||||
*chars = NULL;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// 1-, 2-, 3-, or 4-byte UTF-8 character
|
|
||||||
{
|
|
||||||
char *str = *chars = new char[*numBytes + 1];
|
|
||||||
strncpy(str, &(fChars[offset]), *numBytes );
|
|
||||||
str[*numBytes] = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Keymap::DumpKeymap()
|
Keymap::DumpKeymap()
|
||||||
{
|
{
|
||||||
@@ -109,6 +74,13 @@ Keymap::DumpKeymap()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
file format in big endian :
|
||||||
|
struct key_map
|
||||||
|
uint32 size of following charset
|
||||||
|
charset (offsets go into this with size of character followed by character)
|
||||||
|
*/
|
||||||
|
// we load a map from a file
|
||||||
status_t
|
status_t
|
||||||
Keymap::Load(entry_ref &ref)
|
Keymap::Load(entry_ref &ref)
|
||||||
{
|
{
|
||||||
@@ -141,6 +113,7 @@ Keymap::Load(entry_ref &ref)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// we save a map from a file
|
||||||
status_t
|
status_t
|
||||||
Keymap::Save(entry_ref &ref)
|
Keymap::Save(entry_ref &ref)
|
||||||
{
|
{
|
||||||
@@ -177,6 +150,9 @@ Keymap::Save(entry_ref &ref)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* we need to know if a key is a modifier key to choose
|
||||||
|
a valid key when several are pressed together
|
||||||
|
*/
|
||||||
bool
|
bool
|
||||||
Keymap::IsModifierKey(uint32 keyCode)
|
Keymap::IsModifierKey(uint32 keyCode)
|
||||||
{
|
{
|
||||||
@@ -196,13 +172,14 @@ Keymap::IsModifierKey(uint32 keyCode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// tell if a key is a dead key, needed for draw a dead key
|
||||||
uint8
|
uint8
|
||||||
Keymap::IsDeadKey(uint32 keyCode, uint32 modifiers)
|
Keymap::IsDeadKey(uint32 keyCode, uint32 modifiers)
|
||||||
{
|
{
|
||||||
int32 offset;
|
int32 offset;
|
||||||
uint32 tableMask = 0;
|
uint32 tableMask = 0;
|
||||||
|
|
||||||
switch (modifiers & 0xff) {
|
switch (modifiers & 0xcf) {
|
||||||
case B_SHIFT_KEY: offset = fKeys.shift_map[keyCode]; tableMask = B_SHIFT_TABLE; break;
|
case B_SHIFT_KEY: offset = fKeys.shift_map[keyCode]; tableMask = B_SHIFT_TABLE; break;
|
||||||
case B_CAPS_LOCK: offset = fKeys.caps_map[keyCode]; tableMask = B_CAPS_TABLE; break;
|
case B_CAPS_LOCK: offset = fKeys.caps_map[keyCode]; tableMask = B_CAPS_TABLE; break;
|
||||||
case B_CAPS_LOCK|B_SHIFT_KEY: offset = fKeys.caps_shift_map[keyCode]; tableMask = B_CAPS_SHIFT_TABLE; break;
|
case B_CAPS_LOCK|B_SHIFT_KEY: offset = fKeys.caps_shift_map[keyCode]; tableMask = B_CAPS_SHIFT_TABLE; break;
|
||||||
@@ -261,6 +238,7 @@ Keymap::IsDeadKey(uint32 keyCode, uint32 modifiers)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// tell if a key is a dead second key, needed for draw a dead second key
|
||||||
bool
|
bool
|
||||||
Keymap::IsDeadSecondKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey)
|
Keymap::IsDeadSecondKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey)
|
||||||
{
|
{
|
||||||
@@ -269,7 +247,7 @@ Keymap::IsDeadSecondKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey)
|
|||||||
|
|
||||||
int32 offset;
|
int32 offset;
|
||||||
|
|
||||||
switch (modifiers & 0xff) {
|
switch (modifiers & 0xcf) {
|
||||||
case B_SHIFT_KEY: offset = fKeys.shift_map[keyCode]; break;
|
case B_SHIFT_KEY: offset = fKeys.shift_map[keyCode]; break;
|
||||||
case B_CAPS_LOCK: offset = fKeys.caps_map[keyCode]; break;
|
case B_CAPS_LOCK: offset = fKeys.caps_map[keyCode]; break;
|
||||||
case B_CAPS_LOCK|B_SHIFT_KEY: offset = fKeys.caps_shift_map[keyCode]; break;
|
case B_CAPS_LOCK|B_SHIFT_KEY: offset = fKeys.caps_shift_map[keyCode]; break;
|
||||||
@@ -286,10 +264,6 @@ Keymap::IsDeadSecondKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey)
|
|||||||
if (!numBytes)
|
if (!numBytes)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
char chars[4];
|
|
||||||
strncpy(chars, &(fChars[offset+1]), numBytes );
|
|
||||||
chars[numBytes] = 0;
|
|
||||||
|
|
||||||
int32* deadOffsets[] = {
|
int32* deadOffsets[] = {
|
||||||
fKeys.acute_dead_key,
|
fKeys.acute_dead_key,
|
||||||
fKeys.grave_dead_key,
|
fKeys.grave_dead_key,
|
||||||
@@ -302,30 +276,49 @@ Keymap::IsDeadSecondKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey)
|
|||||||
|
|
||||||
for (int32 i=0; i<32; i++) {
|
for (int32 i=0; i<32; i++) {
|
||||||
if (offset == deadOffset[i])
|
if (offset == deadOffset[i])
|
||||||
return i+1;
|
return true;
|
||||||
|
|
||||||
uint32 deadNumBytes = fChars[deadOffset[i]+1];
|
uint32 deadNumBytes = fChars[deadOffset[i]];
|
||||||
|
|
||||||
if (!deadNumBytes)
|
if (!deadNumBytes)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (strncmp(chars, &(fChars[deadOffset[i]]), deadNumBytes ) == 0) {
|
if (strncmp(&(fChars[offset+1]), &(fChars[deadOffset[i]+1]), deadNumBytes ) == 0)
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// get the char for a key given modifiers and active dead key
|
||||||
void
|
void
|
||||||
Keymap::DeadKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey, char** chars, int32* numBytes)
|
Keymap::GetChars(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey, char** chars, int32* numBytes)
|
||||||
{
|
{
|
||||||
int32 offset;
|
int32 offset;
|
||||||
|
|
||||||
*numBytes = 0;
|
*numBytes = 0;
|
||||||
|
*chars = NULL;
|
||||||
|
|
||||||
switch (modifiers & 0xff) {
|
// here we take NUMLOCK into account
|
||||||
|
if (modifiers & B_NUM_LOCK)
|
||||||
|
switch (keyCode) {
|
||||||
|
case 0x37:
|
||||||
|
case 0x38:
|
||||||
|
case 0x39:
|
||||||
|
case 0x48:
|
||||||
|
case 0x49:
|
||||||
|
case 0x4a:
|
||||||
|
case 0x58:
|
||||||
|
case 0x59:
|
||||||
|
case 0x5a:
|
||||||
|
case 0x64:
|
||||||
|
case 0x65:
|
||||||
|
modifiers ^= B_SHIFT_KEY;
|
||||||
|
}
|
||||||
|
|
||||||
|
// here we choose the right map given the modifiers
|
||||||
|
switch (modifiers & 0xcf) {
|
||||||
case B_SHIFT_KEY: offset = fKeys.shift_map[keyCode]; break;
|
case B_SHIFT_KEY: offset = fKeys.shift_map[keyCode]; break;
|
||||||
case B_CAPS_LOCK: offset = fKeys.caps_map[keyCode]; break;
|
case B_CAPS_LOCK: offset = fKeys.caps_map[keyCode]; break;
|
||||||
case B_CAPS_LOCK|B_SHIFT_KEY: offset = fKeys.caps_shift_map[keyCode]; break;
|
case B_CAPS_LOCK|B_SHIFT_KEY: offset = fKeys.caps_shift_map[keyCode]; break;
|
||||||
@@ -337,15 +330,13 @@ Keymap::DeadKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey, char** ch
|
|||||||
default: offset = fKeys.normal_map[keyCode]; break;
|
default: offset = fKeys.normal_map[keyCode]; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 numBytes2 = fChars[offset];
|
// here we get the char size
|
||||||
|
*numBytes = fChars[offset];
|
||||||
|
|
||||||
if (!numBytes2)
|
if (!*numBytes)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
char chars2[4];
|
// here we take an potential active dead key
|
||||||
strncpy(chars2, &(fChars[offset+1]), numBytes2 );
|
|
||||||
chars2[numBytes2] = 0;
|
|
||||||
|
|
||||||
int32 *dead_key;
|
int32 *dead_key;
|
||||||
switch(activeDeadKey) {
|
switch(activeDeadKey) {
|
||||||
case 1: dead_key = fKeys.acute_dead_key; break;
|
case 1: dead_key = fKeys.acute_dead_key; break;
|
||||||
@@ -353,11 +344,20 @@ Keymap::DeadKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey, char** ch
|
|||||||
case 3: dead_key = fKeys.circumflex_dead_key; break;
|
case 3: dead_key = fKeys.circumflex_dead_key; break;
|
||||||
case 4: dead_key = fKeys.dieresis_dead_key; break;
|
case 4: dead_key = fKeys.dieresis_dead_key; break;
|
||||||
case 5: dead_key = fKeys.tilde_dead_key; break;
|
case 5: dead_key = fKeys.tilde_dead_key; break;
|
||||||
//default: return;
|
default:
|
||||||
|
{
|
||||||
|
// if not dead, we copy and return the char
|
||||||
|
char *str = *chars = new char[*numBytes + 1];
|
||||||
|
strncpy(str, &(fChars[offset+1]), *numBytes );
|
||||||
|
str[*numBytes] = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if dead key, we search for our current offset char in the dead key offset table
|
||||||
|
// string comparison is needed
|
||||||
for (int32 i=0; i<32; i++) {
|
for (int32 i=0; i<32; i++) {
|
||||||
if (strncmp(chars2, &(fChars[dead_key[i]+1]), numBytes2 ) == 0) {
|
if (strncmp(&(fChars[offset+1]), &(fChars[dead_key[i]+1]), *numBytes ) == 0) {
|
||||||
*numBytes = fChars[dead_key[i+1]];
|
*numBytes = fChars[dead_key[i+1]];
|
||||||
|
|
||||||
switch( *numBytes ) {
|
switch( *numBytes ) {
|
||||||
@@ -374,14 +374,22 @@ Keymap::DeadKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey, char** ch
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
return;
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if not found we return the current char mapped
|
||||||
|
*chars = new char[*numBytes + 1];
|
||||||
|
strncpy(*chars, &(fChars[offset+1]), *numBytes );
|
||||||
|
(*chars)[*numBytes] = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t _restore_key_map_();
|
status_t _restore_key_map_();
|
||||||
|
|
||||||
|
|
||||||
|
// we make our input server use the map in /boot/home/config/settings/Keymap
|
||||||
status_t
|
status_t
|
||||||
Keymap::Use()
|
Keymap::Use()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,11 +25,10 @@ public:
|
|||||||
status_t Load(entry_ref &ref);
|
status_t Load(entry_ref &ref);
|
||||||
status_t Save(entry_ref &ref);
|
status_t Save(entry_ref &ref);
|
||||||
void DumpKeymap();
|
void DumpKeymap();
|
||||||
void GetChars(uint32 keyCode, uint32 modifiers, char **chars, int32 *numBytes);
|
|
||||||
bool IsModifierKey(uint32 keyCode);
|
bool IsModifierKey(uint32 keyCode);
|
||||||
uint8 IsDeadKey(uint32 keyCode, uint32 modifiers);
|
uint8 IsDeadKey(uint32 keyCode, uint32 modifiers);
|
||||||
bool IsDeadSecondKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey);
|
bool IsDeadSecondKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey);
|
||||||
void DeadKey(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey, char** chars, int32* numBytes);
|
void GetChars(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey, char** chars, int32* numBytes);
|
||||||
status_t Use();
|
status_t Use();
|
||||||
private:
|
private:
|
||||||
char *fChars;
|
char *fChars;
|
||||||
|
|||||||
+133
-161
@@ -419,6 +419,8 @@ MapView::MapView(BRect rect, const char *name, Keymap* keymap)
|
|||||||
fCurrentMap(keymap),
|
fCurrentMap(keymap),
|
||||||
fCurrentMouseKey(0)
|
fCurrentMouseKey(0)
|
||||||
{
|
{
|
||||||
|
SetViewColor(B_TRANSPARENT_COLOR);
|
||||||
|
|
||||||
BRect frameRect = BRect(14, 16, Bounds().right-12, 30);
|
BRect frameRect = BRect(14, 16, Bounds().right-12, 30);
|
||||||
BRect textRect = frameRect;
|
BRect textRect = frameRect;
|
||||||
textRect.OffsetTo(B_ORIGIN);
|
textRect.OffsetTo(B_ORIGIN);
|
||||||
@@ -430,362 +432,470 @@ MapView::MapView(BRect rect, const char *name, Keymap* keymap)
|
|||||||
|
|
||||||
AddChild(fTextView);
|
AddChild(fTextView);
|
||||||
|
|
||||||
|
for (uint32 j = 0; j<128; j++)
|
||||||
|
fKeysToDraw[j] = false;
|
||||||
|
|
||||||
BRect keyRect = BRect(11,50,29,68);
|
BRect keyRect = BRect(11,50,29,68);
|
||||||
int32 i = 1;
|
uint32 i = 1;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
|
|
||||||
// Fx keys
|
// Fx keys
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(36,0);
|
keyRect.OffsetBySelf(36,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(27,0);
|
keyRect.OffsetBySelf(27,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(27,0);
|
keyRect.OffsetBySelf(27,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
|
|
||||||
// Pause, PrintScreen, ...
|
// Pause, PrintScreen, ...
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(35,0);
|
keyRect.OffsetBySelf(35,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
|
|
||||||
// 1st line : numbers and backspace
|
// 1st line : numbers and backspace
|
||||||
i++;
|
i++;
|
||||||
keyRect = BRect(11,78,29,96);
|
keyRect = BRect(11,78,29,96);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
keyRect.right += 18;
|
keyRect.right += 18;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
keyRect.left += 18;
|
keyRect.left += 18;
|
||||||
|
|
||||||
// Insert, pg up ...
|
// Insert, pg up ...
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(35,0);
|
keyRect.OffsetBySelf(35,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
|
|
||||||
// 2nd line : tab and azerty ...
|
// 2nd line : tab and azerty ...
|
||||||
i = 0x26;
|
i = 0x26;
|
||||||
keyRect = BRect(11,96,38,114);
|
keyRect = BRect(11,96,38,114);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(27,0);
|
keyRect.OffsetBySelf(27,0);
|
||||||
keyRect.right -= 9;
|
keyRect.right -= 9;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
keyRect.right += 9;
|
keyRect.right += 9;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
keyRect.left += 9;
|
keyRect.left += 9;
|
||||||
|
|
||||||
// Suppr, pg down ...
|
// Suppr, pg down ...
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(35,0);
|
keyRect.OffsetBySelf(35,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
|
|
||||||
// 3rd line : caps and qsdfg ...
|
// 3rd line : caps and qsdfg ...
|
||||||
i = 0x3b;
|
i = 0x3b;
|
||||||
keyRect = BRect(11,114,47,132);
|
keyRect = BRect(11,114,47,132);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(36,0);
|
keyRect.OffsetBySelf(36,0);
|
||||||
keyRect.right -= 18;
|
keyRect.right -= 18;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
keyRect.right += 18;
|
keyRect.right += 18;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
keyRect.left += 18;
|
keyRect.left += 18;
|
||||||
|
|
||||||
// 4th line : shift and wxcv ...
|
// 4th line : shift and wxcv ...
|
||||||
i = 0x4b;
|
i = 0x4b;
|
||||||
keyRect = BRect(11,132,56,150);
|
keyRect = BRect(11,132,56,150);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(45,0);
|
keyRect.OffsetBySelf(45,0);
|
||||||
keyRect.right -= 27;
|
keyRect.right -= 27;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
keyRect.right += 27;
|
keyRect.right += 27;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
keyRect.left += 27;
|
keyRect.left += 27;
|
||||||
|
|
||||||
//5th line : Ctrl, Alt, Space ...
|
//5th line : Ctrl, Alt, Space ...
|
||||||
i = 0x5c;
|
i = 0x5c;
|
||||||
keyRect = BRect(11,150,38,168);
|
keyRect = BRect(11,150,38,168);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(27,0);
|
keyRect.OffsetBySelf(27,0);
|
||||||
keyRect.OffsetBySelf(26,0);
|
keyRect.OffsetBySelf(26,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(27,0);
|
keyRect.OffsetBySelf(27,0);
|
||||||
keyRect.right += 92;
|
keyRect.right += 92;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.right -= 92;
|
keyRect.right -= 92;
|
||||||
keyRect.OffsetBySelf(92,0);
|
keyRect.OffsetBySelf(92,0);
|
||||||
keyRect.OffsetBySelf(27,0);
|
keyRect.OffsetBySelf(27,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(26,0);
|
keyRect.OffsetBySelf(26,0);
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
|
|
||||||
// Arrows
|
// Arrows
|
||||||
i++;
|
i++;
|
||||||
keyRect = BRect(298,150,316,168);
|
keyRect = BRect(298,150,316,168);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i = 0x57;
|
i = 0x57;
|
||||||
keyRect.OffsetBySelf(-18,-18);
|
keyRect.OffsetBySelf(-18,-18);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
|
|
||||||
// numkeys
|
// numkeys
|
||||||
i = 0x22;
|
i = 0x22;
|
||||||
keyRect = BRect(369,78,387,96);
|
keyRect = BRect(369,78,387,96);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i = 0x37;
|
i = 0x37;
|
||||||
keyRect.OffsetBySelf(-54, 18);
|
keyRect.OffsetBySelf(-54, 18);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
keyRect.bottom += 18;
|
keyRect.bottom += 18;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i = 0x48;
|
i = 0x48;
|
||||||
keyRect.bottom -= 18;
|
keyRect.bottom -= 18;
|
||||||
keyRect.OffsetBySelf(-54, 18);
|
keyRect.OffsetBySelf(-54, 18);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i = 0x58;
|
i = 0x58;
|
||||||
keyRect.OffsetBySelf(-36, 18);
|
keyRect.OffsetBySelf(-36, 18);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.OffsetBySelf(18,0);
|
keyRect.OffsetBySelf(18,0);
|
||||||
keyRect.bottom += 18;
|
keyRect.bottom += 18;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i = 0x64;
|
i = 0x64;
|
||||||
keyRect.bottom -= 18;
|
keyRect.bottom -= 18;
|
||||||
keyRect.OffsetBySelf(-54, 18);
|
keyRect.OffsetBySelf(-54, 18);
|
||||||
keyRect.right += 18;
|
keyRect.right += 18;
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
i++;
|
i++;
|
||||||
keyRect.right -= 18;
|
keyRect.right -= 18;
|
||||||
keyRect.OffsetBySelf(36,0);
|
keyRect.OffsetBySelf(36,0);
|
||||||
fKeysRect[i] = keyRect;
|
fKeysRect[i] = keyRect;
|
||||||
|
fKeysToDraw[i] = true;
|
||||||
|
|
||||||
for (uint8 j = 0; j<128; j++)
|
for (uint32 j = 0; j<128; j++)
|
||||||
fKeysVertical[j] = false;
|
fKeysVertical[j] = false;
|
||||||
|
|
||||||
fKeysVertical[0x5e] = true;
|
fKeysVertical[0x5e] = true;
|
||||||
|
|
||||||
fActiveDeadKey = 0;
|
fActiveDeadKey = 0;
|
||||||
|
|
||||||
|
for (int8 j=0; j<16; j++)
|
||||||
|
fOldKeyInfo.key_states[j] = 0;
|
||||||
|
fOldKeyInfo.modifiers = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -829,128 +939,24 @@ MapView::Draw(BRect rect)
|
|||||||
StrokeLine(BPoint(r.right-9, r.bottom), BPoint(r.right-2, r.bottom));
|
StrokeLine(BPoint(r.right-9, r.bottom), BPoint(r.right-2, r.bottom));
|
||||||
StrokeLine(BPoint(r.right, r.bottom-9), BPoint(r.right, r.bottom-2));
|
StrokeLine(BPoint(r.right, r.bottom-9), BPoint(r.right, r.bottom-2));
|
||||||
|
|
||||||
int32 i = 1;
|
InvalidateKeys();
|
||||||
|
|
||||||
// Esc key
|
// Esc key
|
||||||
DrawKey(i);
|
|
||||||
|
|
||||||
DrawBorder(BRect(10,49,30,69));
|
DrawBorder(BRect(10,49,30,69));
|
||||||
|
|
||||||
// Fx keys
|
// Fx keys
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
DrawBorder(BRect(46, 49, 120, 69));
|
DrawBorder(BRect(46, 49, 120, 69));
|
||||||
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
DrawBorder(BRect(127, 49, 201, 69));
|
DrawBorder(BRect(127, 49, 201, 69));
|
||||||
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
DrawBorder(BRect(208, 49, 282, 69));
|
DrawBorder(BRect(208, 49, 282, 69));
|
||||||
|
|
||||||
// Pause, PrintScreen, ...
|
// Pause, PrintScreen, ...
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
DrawBorder(BRect(297, 49, 353, 69));
|
DrawBorder(BRect(297, 49, 353, 69));
|
||||||
|
|
||||||
// 1st line : numbers and backspace
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
// Insert, pg up ...
|
// Insert, pg up ...
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
DrawBorder(BRect(297, 77, 353, 115));
|
DrawBorder(BRect(297, 77, 353, 115));
|
||||||
|
|
||||||
// 2nd line : tab and azerty ...
|
|
||||||
i = 0x26;
|
|
||||||
DrawKey(i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
// Suppr, pg down ...
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
// 3rd line : caps and qsdfg ...
|
|
||||||
i = 0x3b;
|
|
||||||
|
|
||||||
DrawKey(i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
// 4th line : shift and wxcv ...
|
|
||||||
i = 0x4b;
|
|
||||||
DrawKey(i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
|
|
||||||
//5th line : Ctrl, Alt, Space ...
|
|
||||||
i = 0x5c;
|
|
||||||
DrawKey(i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
SetHighColor(80,80,80);
|
SetHighColor(80,80,80);
|
||||||
StrokeLine(BPoint(10,169), BPoint(10,77));
|
StrokeLine(BPoint(10,169), BPoint(10,77));
|
||||||
StrokeLine(BPoint(282,77));
|
StrokeLine(BPoint(282,77));
|
||||||
@@ -971,13 +977,6 @@ MapView::Draw(BRect rect)
|
|||||||
StrokeLine(BPoint(11,169));
|
StrokeLine(BPoint(11,169));
|
||||||
|
|
||||||
// Arrows
|
// Arrows
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
i = 0x57;
|
|
||||||
DrawKey(i);
|
|
||||||
|
|
||||||
SetHighColor(80,80,80);
|
SetHighColor(80,80,80);
|
||||||
StrokeLine(BPoint(297,169), BPoint(297,149));
|
StrokeLine(BPoint(297,169), BPoint(297,149));
|
||||||
StrokeLine(BPoint(315,149));
|
StrokeLine(BPoint(315,149));
|
||||||
@@ -990,33 +989,6 @@ MapView::Draw(BRect rect)
|
|||||||
StrokeLine(BPoint(298,169));
|
StrokeLine(BPoint(298,169));
|
||||||
|
|
||||||
// numkeys
|
// numkeys
|
||||||
i = 0x22;
|
|
||||||
DrawKey(i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
i = 0x37;
|
|
||||||
DrawKey(i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
i = 0x48;
|
|
||||||
DrawKey(i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
i = 0x58;
|
|
||||||
DrawKey(i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
i = 0x64;
|
|
||||||
DrawKey(i);
|
|
||||||
DrawKey(++i);
|
|
||||||
|
|
||||||
DrawBorder(BRect(368, 77, 442, 169));
|
DrawBorder(BRect(368, 77, 442, 169));
|
||||||
|
|
||||||
// lights
|
// lights
|
||||||
@@ -1107,6 +1079,15 @@ MapView::Draw(BRect rect)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
MapView::InvalidateKeys()
|
||||||
|
{
|
||||||
|
for (uint32 i=0; i<128; i++)
|
||||||
|
if (fKeysToDraw[i+1])
|
||||||
|
DrawKey(i+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MapView::DrawKey(uint32 keyCode)
|
MapView::DrawKey(uint32 keyCode)
|
||||||
{
|
{
|
||||||
@@ -1253,7 +1234,7 @@ MapView::DrawKey(uint32 keyCode)
|
|||||||
|
|
||||||
char *str;
|
char *str;
|
||||||
int32 numBytes;
|
int32 numBytes;
|
||||||
fCurrentMap->GetChars(keyCode, fOldKeyInfo.modifiers, &str, &numBytes);
|
fCurrentMap->GetChars(keyCode, fOldKeyInfo.modifiers, fActiveDeadKey, &str, &numBytes);
|
||||||
if (str) {
|
if (str) {
|
||||||
bool hasGlyphs;
|
bool hasGlyphs;
|
||||||
if (deadKey>0) {
|
if (deadKey>0) {
|
||||||
@@ -1331,8 +1312,6 @@ MapView::MessageReceived(BMessage *msg)
|
|||||||
const uint8 *states;
|
const uint8 *states;
|
||||||
ssize_t size;
|
ssize_t size;
|
||||||
|
|
||||||
//msg->PrintToStream();
|
|
||||||
|
|
||||||
if ((msg->FindData("states", 'UBYT', (const void **)&states, &size)!=B_OK)
|
if ((msg->FindData("states", 'UBYT', (const void **)&states, &size)!=B_OK)
|
||||||
|| (msg->FindInt32("modifiers", (int32 *)&info.modifiers)!=B_OK))
|
|| (msg->FindInt32("modifiers", (int32 *)&info.modifiers)!=B_OK))
|
||||||
break;
|
break;
|
||||||
@@ -1341,7 +1320,7 @@ MapView::MessageReceived(BMessage *msg)
|
|||||||
fOldKeyInfo.modifiers = info.modifiers;
|
fOldKeyInfo.modifiers = info.modifiers;
|
||||||
for (int8 i=0; i<16; i++)
|
for (int8 i=0; i<16; i++)
|
||||||
fOldKeyInfo.key_states[i] = states[i];
|
fOldKeyInfo.key_states[i] = states[i];
|
||||||
Invalidate();
|
InvalidateKeys();
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
int32 keyCode = -1;
|
int32 keyCode = -1;
|
||||||
@@ -1357,12 +1336,6 @@ MapView::MessageReceived(BMessage *msg)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fActiveDeadKey) {
|
|
||||||
|
|
||||||
}
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
if (keyCode<0)
|
if (keyCode<0)
|
||||||
for (int8 i=0; i<16; i++) {
|
for (int8 i=0; i<16; i++) {
|
||||||
uint8 stbits = states[i];
|
uint8 stbits = states[i];
|
||||||
@@ -1380,30 +1353,27 @@ MapView::MessageReceived(BMessage *msg)
|
|||||||
if (Window()->IsActive()
|
if (Window()->IsActive()
|
||||||
&& msg->what == B_KEY_DOWN) {
|
&& msg->what == B_KEY_DOWN) {
|
||||||
fTextView->MakeFocus();
|
fTextView->MakeFocus();
|
||||||
char *str;
|
char *str = NULL;
|
||||||
int32 numBytes;
|
int32 numBytes;
|
||||||
if (fActiveDeadKey) {
|
if (fActiveDeadKey) {
|
||||||
fCurrentMap->DeadKey(keyCode, fOldKeyInfo.modifiers, fActiveDeadKey, &str, &numBytes);
|
fCurrentMap->GetChars(keyCode, fOldKeyInfo.modifiers, fActiveDeadKey, &str, &numBytes);
|
||||||
if (numBytes>0) {
|
if (numBytes>0) {
|
||||||
fTextView->FakeKeyDown(str, numBytes);
|
fTextView->FakeKeyDown(str, numBytes);
|
||||||
}
|
}
|
||||||
fActiveDeadKey = 0;
|
fActiveDeadKey = 0;
|
||||||
Invalidate();
|
InvalidateKeys();
|
||||||
} else {
|
} else {
|
||||||
fCurrentMap->GetChars(keyCode, fOldKeyInfo.modifiers, &str, &numBytes);
|
fCurrentMap->GetChars(keyCode, fOldKeyInfo.modifiers, fActiveDeadKey, &str, &numBytes);
|
||||||
fActiveDeadKey = fCurrentMap->IsDeadKey(keyCode, fOldKeyInfo.modifiers);
|
fActiveDeadKey = fCurrentMap->IsDeadKey(keyCode, fOldKeyInfo.modifiers);
|
||||||
if (fActiveDeadKey)
|
if (fActiveDeadKey)
|
||||||
Invalidate();
|
InvalidateKeys();
|
||||||
else if (numBytes>0) {
|
else if (numBytes>0) {
|
||||||
fTextView->FakeKeyDown(str, numBytes);
|
fTextView->FakeKeyDown(str, numBytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete str;
|
delete str;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@@ -1440,7 +1410,7 @@ MapView::MouseDown(BPoint point)
|
|||||||
DrawKey(fCurrentMouseKey);
|
DrawKey(fCurrentMouseKey);
|
||||||
char *str = NULL;
|
char *str = NULL;
|
||||||
int32 numBytes;
|
int32 numBytes;
|
||||||
fCurrentMap->GetChars(fCurrentMouseKey, fOldKeyInfo.modifiers, &str, &numBytes);
|
fCurrentMap->GetChars(fCurrentMouseKey, fOldKeyInfo.modifiers, fActiveDeadKey, &str, &numBytes);
|
||||||
if (numBytes>0) {
|
if (numBytes>0) {
|
||||||
fTextView->FakeKeyDown(str, numBytes);
|
fTextView->FakeKeyDown(str, numBytes);
|
||||||
delete str;
|
delete str;
|
||||||
@@ -1454,6 +1424,7 @@ MapView::MouseDown(BPoint point)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MapView::MouseUp(BPoint point)
|
MapView::MouseUp(BPoint point)
|
||||||
{
|
{
|
||||||
@@ -1464,6 +1435,7 @@ MapView::MouseUp(BPoint point)
|
|||||||
DrawKey(value);
|
DrawKey(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MapView::MouseMoved(BPoint point, uint32 transit, const BMessage *msg)
|
MapView::MouseMoved(BPoint point, uint32 transit, const BMessage *msg)
|
||||||
{
|
{
|
||||||
@@ -1476,7 +1448,7 @@ MapView::MouseMoved(BPoint point, uint32 transit, const BMessage *msg)
|
|||||||
DrawKey(fCurrentMouseKey);
|
DrawKey(fCurrentMouseKey);
|
||||||
char *str = NULL;
|
char *str = NULL;
|
||||||
int32 numBytes;
|
int32 numBytes;
|
||||||
fCurrentMap->GetChars(fCurrentMouseKey, fOldKeyInfo.modifiers, &str, &numBytes);
|
fCurrentMap->GetChars(fCurrentMouseKey, fOldKeyInfo.modifiers, fActiveDeadKey, &str, &numBytes);
|
||||||
if (numBytes>0) {
|
if (numBytes>0) {
|
||||||
fTextView->FakeKeyDown(str, numBytes);
|
fTextView->FakeKeyDown(str, numBytes);
|
||||||
delete str;
|
delete str;
|
||||||
|
|||||||
@@ -45,11 +45,12 @@ public:
|
|||||||
void MouseDown(BPoint point);
|
void MouseDown(BPoint point);
|
||||||
void MouseUp(BPoint point);
|
void MouseUp(BPoint point);
|
||||||
void MouseMoved(BPoint point, uint32 transit, const BMessage *msg);
|
void MouseMoved(BPoint point, uint32 transit, const BMessage *msg);
|
||||||
|
void InvalidateKeys();
|
||||||
private:
|
private:
|
||||||
key_info fOldKeyInfo;
|
key_info fOldKeyInfo;
|
||||||
BRect fKeysRect[128];
|
BRect fKeysRect[128];
|
||||||
bool fKeysVertical[128];
|
bool fKeysVertical[128];
|
||||||
|
bool fKeysToDraw[128];
|
||||||
uint8 fKeyState[16];
|
uint8 fKeyState[16];
|
||||||
BFont fCurrentFont;
|
BFont fCurrentFont;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user