keys pressed are now displayed, locks too

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8292 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2004-07-04 20:16:21 +00:00
parent 8cc69e62c5
commit 69acfa4da9
2 changed files with 238 additions and 144 deletions
+236 -144
View File
@@ -53,6 +53,8 @@ KeymapWindow::KeymapWindow( BRect frame )
fMapView = new MapView(BRect(149,29,601,209), "mapView"); fMapView = new MapView(BRect(149,29,601,209), "mapView");
AddChild(fMapView); AddChild(fMapView);
SetPulseRate(10000);
} }
@@ -329,7 +331,7 @@ KeymapWindow::UseKeymap()
MapView::MapView(BRect rect, const char *name) MapView::MapView(BRect rect, const char *name)
: BView(rect, name, B_FOLLOW_LEFT|B_FOLLOW_TOP, B_WILL_DRAW) : BView(rect, name, B_FOLLOW_LEFT|B_FOLLOW_TOP, B_WILL_DRAW | B_PULSE_NEEDED)
{ {
} }
@@ -338,44 +340,6 @@ MapView::MapView(BRect rect, const char *name)
void void
MapView::Draw(BRect rect) MapView::Draw(BRect rect)
{ {
/*rgb_color color = HighColor();
BPoint points[] = { BPoint(11,19), BPoint(139,19), BPoint(141,21),
BPoint(141,119), BPoint(139,121), BPoint(118,121),
BPoint(118,126), BPoint(117,127), BPoint(33,127),
BPoint(32,126), BPoint(32,121),BPoint(11,121),
BPoint(9,119),BPoint(9,21),BPoint(11,19) };
SetHighColor(LowColor());
FillRect(BRect(9,19,141,127));
if(fIsDesktop) {
SetHighColor(184,184,184);
FillPolygon(points, 15);
SetHighColor(96,96,96);
StrokePolygon(points, 15);
FillRect(BRect(107,121,111,123));
SetHighColor(0,0,0);
StrokeRect(BRect(14,24,136,116));
SetHighColor(0,255,0);
FillRect(BRect(101,122,103,123));
} else {
SetHighColor(152,152,152);
StrokeLine(BPoint(11,13), BPoint(67,13));
StrokeLine(BPoint(67,21));
StrokeLine(BPoint(139,21));
StrokeLine(BPoint(139,119));
StrokeLine(BPoint(11,119));
StrokeLine(BPoint(11,13));
StrokeRect(BRect(14,24,136,116));
SetHighColor(255,203,0);
FillRect(BRect(12,14,66,21));
SetHighColor(240,240,240);
StrokeRect(BRect(12,22,137,117));
StrokeLine(BPoint(138,22), BPoint(138,22));
StrokeLine(BPoint(12,118), BPoint(12,118));
SetHighColor(200,200,200);
StrokeRect(BRect(13,23,138,118));
}
SetHighColor(color);*/
BRect r = Bounds(); BRect r = Bounds();
SetHighColor(0,0,0); SetHighColor(0,0,0);
StrokeRect(r); StrokeRect(r);
@@ -404,217 +368,297 @@ 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));
bool pressed = false; int32 i = 1;
#define isPressed(i) (fOldKeyInfo.key_states[i>>3] & (1 << (7 - i%8)) )
// Esc key // Esc key
BRect keyRect = BRect(11,50,29,68); BRect keyRect = BRect(11,50,29,68);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
DrawBorder(keyRect.InsetByCopy(-1, -1)); DrawBorder(keyRect.InsetByCopy(-1, -1));
// Fx keys // Fx keys
i++;
keyRect.OffsetBySelf(36,0); keyRect.OffsetBySelf(36,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
DrawBorder(BRect(keyRect.left - 55, 49, keyRect.right + 1, 69)); DrawBorder(BRect(keyRect.left - 55, 49, keyRect.right + 1, 69));
i++;
keyRect.OffsetBySelf(27,0); keyRect.OffsetBySelf(27,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
DrawBorder(BRect(keyRect.left - 55, 49, keyRect.right + 1, 69)); DrawBorder(BRect(keyRect.left - 55, 49, keyRect.right + 1, 69));
i++;
keyRect.OffsetBySelf(27,0); keyRect.OffsetBySelf(27,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
DrawBorder(BRect(keyRect.left - 55, 49, keyRect.right + 1, 69)); DrawBorder(BRect(keyRect.left - 55, 49, keyRect.right + 1, 69));
// Pause, PrintScreen, ... // Pause, PrintScreen, ...
i++;
keyRect.OffsetBySelf(35,0); keyRect.OffsetBySelf(35,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
DrawBorder(BRect(keyRect.left - 37, 49, keyRect.right + 1, 69)); DrawBorder(BRect(keyRect.left - 37, 49, keyRect.right + 1, 69));
// 1st line : numbers and backspace // 1st line : numbers and backspace
i++;
keyRect = BRect(11,78,29,96); keyRect = BRect(11,78,29,96);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
keyRect.right += 18; keyRect.right += 18;
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
keyRect.left += 18; keyRect.left += 18;
// Insert, pg up ... // Insert, pg up ...
i++;
keyRect.OffsetBySelf(35,0); keyRect.OffsetBySelf(35,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(0x20));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(0x21));
DrawBorder(BRect(keyRect.left - 37, 77, keyRect.right + 1, 115)); DrawBorder(BRect(keyRect.left - 37, 77, keyRect.right + 1, 115));
// 2nd line : tab and azerty ... // 2nd line : tab and azerty ...
i = 0x26;
keyRect = BRect(11,96,38,114); keyRect = BRect(11,96,38,114);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(27,0); keyRect.OffsetBySelf(27,0);
keyRect.right -= 9; keyRect.right -= 9;
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
keyRect.right += 9; keyRect.right += 9;
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
keyRect.left += 9; keyRect.left += 9;
// Suppr, pg down ... // Suppr, pg down ...
i++;
keyRect.OffsetBySelf(35,0); keyRect.OffsetBySelf(35,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
// 3rd line : caps and qsdfg ... // 3rd line : caps and qsdfg ...
i = 0x3b;
keyRect = BRect(11,114,47,132); keyRect = BRect(11,114,47,132);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(36,0); keyRect.OffsetBySelf(36,0);
keyRect.right -= 18; keyRect.right -= 18;
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
keyRect.right += 18; keyRect.right += 18;
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
keyRect.left += 18; keyRect.left += 18;
// 4th line : shift and wxcv ... // 4th line : shift and wxcv ...
i = 0x4b;
keyRect = BRect(11,132,56,150); keyRect = BRect(11,132,56,150);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(45,0); keyRect.OffsetBySelf(45,0);
keyRect.right -= 27; keyRect.right -= 27;
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
keyRect.right += 27; keyRect.right += 27;
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
keyRect.left += 27; keyRect.left += 27;
//5th line : Ctrl, Alt, Space ... //5th line : Ctrl, Alt, Space ...
i = 0x5c;
keyRect = BRect(11,150,38,168); keyRect = BRect(11,150,38,168);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(27,0); keyRect.OffsetBySelf(27,0);
keyRect.OffsetBySelf(26,0); keyRect.OffsetBySelf(26,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(27,0); keyRect.OffsetBySelf(27,0);
keyRect.right += 92; keyRect.right += 92;
DrawKey(keyRect, pressed, true); DrawKey(keyRect, isPressed(i), true);
i++;
keyRect.right -= 92; keyRect.right -= 92;
keyRect.OffsetBySelf(92,0); keyRect.OffsetBySelf(92,0);
keyRect.OffsetBySelf(27,0); keyRect.OffsetBySelf(27,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(26,0); keyRect.OffsetBySelf(26,0);
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
SetHighColor(80,80,80); SetHighColor(80,80,80);
StrokeLine(BPoint(10,169), BPoint(10,77)); StrokeLine(BPoint(10,169), BPoint(10,77));
@@ -636,14 +680,18 @@ MapView::Draw(BRect rect)
StrokeLine(BPoint(11,169)); StrokeLine(BPoint(11,169));
// Arrows // Arrows
i++;
keyRect = BRect(298,150,316,168); keyRect = BRect(298,150,316,168);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i = 0x57;
keyRect.OffsetBySelf(-18,-18); keyRect.OffsetBySelf(-18,-18);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
SetHighColor(80,80,80); SetHighColor(80,80,80);
StrokeLine(BPoint(297,169), BPoint(297,149)); StrokeLine(BPoint(297,169), BPoint(297,149));
@@ -657,50 +705,69 @@ MapView::Draw(BRect rect)
StrokeLine(BPoint(298,169)); StrokeLine(BPoint(298,169));
// numkeys // numkeys
i = 0x22;
keyRect = BRect(369,78,387,96); keyRect = BRect(369,78,387,96);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i = 0x37;
keyRect.OffsetBySelf(-54, 18); keyRect.OffsetBySelf(-54, 18);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
keyRect.bottom += 18; keyRect.bottom += 18;
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i = 0x48;
keyRect.bottom -= 18; keyRect.bottom -= 18;
keyRect.OffsetBySelf(-54, 18); keyRect.OffsetBySelf(-54, 18);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i = 0x58;
keyRect.OffsetBySelf(-36, 18); keyRect.OffsetBySelf(-36, 18);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.OffsetBySelf(18,0); keyRect.OffsetBySelf(18,0);
keyRect.bottom += 18; keyRect.bottom += 18;
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i = 0x64;
keyRect.bottom -= 18; keyRect.bottom -= 18;
keyRect.OffsetBySelf(-54, 18); keyRect.OffsetBySelf(-54, 18);
keyRect.right += 18; keyRect.right += 18;
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
i++;
keyRect.right -= 18; keyRect.right -= 18;
keyRect.OffsetBySelf(36,0); keyRect.OffsetBySelf(36,0);
DrawKey(keyRect, pressed); DrawKey(keyRect, isPressed(i));
DrawBorder(BRect(keyRect.left - 37, 77, keyRect.right + 19, 169)); DrawBorder(BRect(keyRect.left - 37, 77, keyRect.right + 19, 169));
// lights // lights
#define isLighted(i) (fOldKeyInfo.modifiers & i)
DrawBorder(BRect(368, 49, 442, 69)); DrawBorder(BRect(368, 49, 442, 69));
BFont font(be_plain_font); BFont font(be_plain_font);
@@ -717,7 +784,7 @@ MapView::Draw(BRect rect)
StrokeLine(BPoint(lightRect.right-1, lightRect.top), lightRect.LeftTop()); StrokeLine(BPoint(lightRect.right-1, lightRect.top), lightRect.LeftTop());
StrokeLine(BPoint(lightRect.left, lightRect.bottom-1)); StrokeLine(BPoint(lightRect.left, lightRect.bottom-1));
SetHighColor(0,55,0); SetHighColor(0,55,0);
if (pressed) if (isLighted(B_NUM_LOCK))
SetHighColor(0,178,0); SetHighColor(0,178,0);
FillRect(lightRect.InsetByCopy(1,1)); FillRect(lightRect.InsetByCopy(1,1));
SetHighColor(64,64,64); SetHighColor(64,64,64);
@@ -731,7 +798,7 @@ MapView::Draw(BRect rect)
StrokeLine(BPoint(lightRect.right-1, lightRect.top), lightRect.LeftTop()); StrokeLine(BPoint(lightRect.right-1, lightRect.top), lightRect.LeftTop());
StrokeLine(BPoint(lightRect.left, lightRect.bottom-1)); StrokeLine(BPoint(lightRect.left, lightRect.bottom-1));
SetHighColor(0,55,0); SetHighColor(0,55,0);
if (pressed) if (isLighted(B_CAPS_LOCK))
SetHighColor(0,178,0); SetHighColor(0,178,0);
FillRect(lightRect.InsetByCopy(1,1)); FillRect(lightRect.InsetByCopy(1,1));
SetHighColor(64,64,64); SetHighColor(64,64,64);
@@ -745,7 +812,7 @@ MapView::Draw(BRect rect)
StrokeLine(BPoint(lightRect.right-1, lightRect.top), lightRect.LeftTop()); StrokeLine(BPoint(lightRect.right-1, lightRect.top), lightRect.LeftTop());
StrokeLine(BPoint(lightRect.left, lightRect.bottom-1)); StrokeLine(BPoint(lightRect.left, lightRect.bottom-1));
SetHighColor(0,55,0); SetHighColor(0,55,0);
if (pressed) if (isLighted(B_SCROLL_LOCK))
SetHighColor(0,178,0); SetHighColor(0,178,0);
FillRect(lightRect.InsetByCopy(1,1)); FillRect(lightRect.InsetByCopy(1,1));
SetHighColor(64,64,64); SetHighColor(64,64,64);
@@ -889,3 +956,28 @@ MapView::DrawBorder(BRect borderRect)
StrokeLine(BPoint(borderRect.left + 1, borderRect.bottom), borderRect.RightBottom()); StrokeLine(BPoint(borderRect.left + 1, borderRect.bottom), borderRect.RightBottom());
StrokeLine(BPoint(borderRect.right, borderRect.top + 1)); StrokeLine(BPoint(borderRect.right, borderRect.top + 1));
} }
void
MapView::Pulse()
{
key_info info;
bool need_update = false;
get_key_info(&info);
if (fOldKeyInfo.modifiers != info.modifiers) {
need_update = true;
}
for (int8 i=0; i<16; i++)
if (fOldKeyInfo.key_states[i] != info.key_states[i]) {
need_update = true;
break;
}
if (need_update) {
fOldKeyInfo.modifiers = info.modifiers;
for (int8 j=0; j<16; j++)
fOldKeyInfo.key_states[j] = info.key_states[j];
Invalidate();
}
}
+2
View File
@@ -25,7 +25,9 @@ public:
void Draw(BRect rect); void Draw(BRect rect);
void DrawKey(BRect rect, bool pressed, bool vertical = false); void DrawKey(BRect rect, bool pressed, bool vertical = false);
void DrawBorder(BRect borderRect); void DrawBorder(BRect borderRect);
void Pulse();
key_info fOldKeyInfo;
}; };