Keymap: static functions back to private methods

This commit is contained in:
John Scipione 2014-02-21 12:05:20 -05:00
parent 2943ba1354
commit a44b74d545
2 changed files with 85 additions and 80 deletions

View File

@ -38,74 +38,6 @@ static const rgb_color kDeadKeyColor = {152, 203, 255, 255};
static const rgb_color kLitIndicatorColor = {116, 212, 83, 255};
static const char*
name_for_modifier(uint32 modifier, bool pretty)
{
if (modifier == B_CAPS_LOCK)
return pretty ? B_TRANSLATE("Caps lock") : "caps_key";
else if (modifier == B_NUM_LOCK)
return pretty ? B_TRANSLATE("Num lock") : "num_key";
else if (modifier == B_SCROLL_LOCK)
return pretty ? B_TRANSLATE("Scroll lock") : "scroll_key";
else if (modifier == B_SHIFT_KEY) {
return pretty ? B_TRANSLATE_COMMENT("Shift", "Shift key")
: "shift_key";
} else if (modifier == B_LEFT_SHIFT_KEY)
return pretty ? B_TRANSLATE("Left shift") : "left_shift_key";
else if (modifier == B_RIGHT_SHIFT_KEY)
return pretty ? B_TRANSLATE("Right shift") : "right_shift_key";
else if (modifier == B_COMMAND_KEY) {
return pretty ? B_TRANSLATE_COMMENT("Command", "Command key")
: "command_key";
} else if (modifier == B_LEFT_COMMAND_KEY)
return pretty ? B_TRANSLATE("Left command") : "left_command_key";
else if (modifier == B_RIGHT_COMMAND_KEY)
return pretty ? B_TRANSLATE("Right command") : "right_command_key";
else if (modifier == B_CONTROL_KEY) {
return pretty ? B_TRANSLATE_COMMENT("Control", "Control key")
: "control_key";
} else if (modifier == B_LEFT_CONTROL_KEY)
return pretty ? B_TRANSLATE("Left control") : "left_control_key";
else if (modifier == B_RIGHT_CONTROL_KEY)
return pretty ? B_TRANSLATE("Right control") : "right_control_key";
else if (modifier == B_OPTION_KEY) {
return pretty ? B_TRANSLATE_COMMENT("Option", "Option key")
: "option_key";
} else if (modifier == B_LEFT_OPTION_KEY)
return pretty ? B_TRANSLATE("Left option") : "left_option_key";
else if (modifier == B_RIGHT_OPTION_KEY)
return pretty ? B_TRANSLATE("Right option") : "right_option_key";
else if (modifier == B_MENU_KEY)
return pretty ? B_TRANSLATE_COMMENT("Menu", "Menu key") : "menu_key";
return NULL;
}
static BMenuItem*
swap_modifiers_menu_item(Keymap* map, uint32 modifier, uint32 displayModifier,
uint32 oldCode, uint32 newCode)
{
int32 mask = B_SHIFT_KEY | B_COMMAND_KEY | B_CONTROL_KEY | B_OPTION_KEY;
const char* oldName = name_for_modifier(oldCode == 0x00 ? modifier
: map->Modifier(oldCode) & ~mask, false);
const char* newName = name_for_modifier(newCode == 0x00 ? modifier
: map->Modifier(newCode) & ~mask, false);
BMessage* message = new BMessage(kMsgUpdateModifierKeys);
if (newName != NULL)
message->AddUInt32(newName, oldCode);
if (oldName != NULL)
message->AddUInt32(oldName, newCode);
if (oldCode == newCode)
message->AddBool("unset", true);
return new BMenuItem(name_for_modifier(displayModifier, true), message);
}
static bool
is_left_modifier_key(uint32 keyCode)
{
@ -296,28 +228,28 @@ KeyboardLayoutView::MouseDown(BPoint point)
BMenuItem* item = NULL;
if (is_left_modifier_key(key->code) || isLockKey) {
item = swap_modifiers_menu_item(fKeymap, B_LEFT_SHIFT_KEY,
item = _CreateSwapModifiersMenuItem(B_LEFT_SHIFT_KEY,
isLockKey ? B_LEFT_SHIFT_KEY : B_SHIFT_KEY,
map.left_shift_key, key->code);
modifiersPopUp->AddItem(item);
if (key->code == map.left_shift_key)
item->SetMarked(true);
item = swap_modifiers_menu_item(fKeymap, B_LEFT_CONTROL_KEY,
item = _CreateSwapModifiersMenuItem(B_LEFT_CONTROL_KEY,
isLockKey ? B_LEFT_CONTROL_KEY : B_CONTROL_KEY,
map.left_control_key, key->code);
modifiersPopUp->AddItem(item);
if (key->code == map.left_control_key)
item->SetMarked(true);
item = swap_modifiers_menu_item(fKeymap, B_LEFT_OPTION_KEY,
item = _CreateSwapModifiersMenuItem(B_LEFT_OPTION_KEY,
isLockKey ? B_LEFT_OPTION_KEY : B_OPTION_KEY,
map.left_option_key, key->code);
modifiersPopUp->AddItem(item);
if (key->code == map.left_option_key)
item->SetMarked(true);
item = swap_modifiers_menu_item(fKeymap, B_LEFT_COMMAND_KEY,
item = _CreateSwapModifiersMenuItem(B_LEFT_COMMAND_KEY,
isLockKey ? B_LEFT_COMMAND_KEY : B_COMMAND_KEY,
map.left_command_key, key->code);
modifiersPopUp->AddItem(item);
@ -329,14 +261,14 @@ KeyboardLayoutView::MouseDown(BPoint point)
if (isLockKey)
modifiersPopUp->AddSeparatorItem();
item = swap_modifiers_menu_item(fKeymap, B_RIGHT_SHIFT_KEY,
item = _CreateSwapModifiersMenuItem(B_RIGHT_SHIFT_KEY,
isLockKey ? B_RIGHT_SHIFT_KEY : B_SHIFT_KEY,
map.right_shift_key, key->code);
modifiersPopUp->AddItem(item);
if (key->code == map.right_shift_key)
item->SetMarked(true);
item = swap_modifiers_menu_item(fKeymap, B_RIGHT_CONTROL_KEY,
item = _CreateSwapModifiersMenuItem(B_RIGHT_CONTROL_KEY,
isLockKey ? B_RIGHT_CONTROL_KEY : B_CONTROL_KEY,
map.right_control_key, key->code);
modifiersPopUp->AddItem(item);
@ -344,21 +276,21 @@ KeyboardLayoutView::MouseDown(BPoint point)
item->SetMarked(true);
}
item = swap_modifiers_menu_item(fKeymap, B_MENU_KEY, B_MENU_KEY,
item = _CreateSwapModifiersMenuItem(B_MENU_KEY, B_MENU_KEY,
map.menu_key, key->code);
modifiersPopUp->AddItem(item);
if (key->code == map.menu_key)
item->SetMarked(true);
if (is_right_modifier_key(key->code) || isLockKey) {
item = swap_modifiers_menu_item(fKeymap, B_RIGHT_OPTION_KEY,
item = _CreateSwapModifiersMenuItem(B_RIGHT_OPTION_KEY,
isLockKey ? B_RIGHT_OPTION_KEY : B_OPTION_KEY,
map.right_option_key, key->code);
modifiersPopUp->AddItem(item);
if (key->code == map.right_option_key)
item->SetMarked(true);
item = swap_modifiers_menu_item(fKeymap, B_RIGHT_COMMAND_KEY,
item = _CreateSwapModifiersMenuItem(B_RIGHT_COMMAND_KEY,
isLockKey ? B_RIGHT_COMMAND_KEY : B_COMMAND_KEY,
map.right_command_key, key->code);
modifiersPopUp->AddItem(item);
@ -368,19 +300,19 @@ KeyboardLayoutView::MouseDown(BPoint point)
modifiersPopUp->AddSeparatorItem();
item = swap_modifiers_menu_item(fKeymap, B_CAPS_LOCK, B_CAPS_LOCK,
item = _CreateSwapModifiersMenuItem(B_CAPS_LOCK, B_CAPS_LOCK,
map.caps_key, key->code);
modifiersPopUp->AddItem(item);
if (key->code == map.caps_key)
item->SetMarked(true);
item = swap_modifiers_menu_item(fKeymap, B_NUM_LOCK, B_NUM_LOCK,
item = _CreateSwapModifiersMenuItem(B_NUM_LOCK, B_NUM_LOCK,
map.num_key, key->code);
modifiersPopUp->AddItem(item);
if (key->code == map.num_key)
item->SetMarked(true);
item = swap_modifiers_menu_item(fKeymap, B_SCROLL_LOCK, B_SCROLL_LOCK,
item = _CreateSwapModifiersMenuItem(B_SCROLL_LOCK, B_SCROLL_LOCK,
map.scroll_key, key->code);
modifiersPopUp->AddItem(item);
if (key->code == map.scroll_key)
@ -1414,3 +1346,71 @@ KeyboardLayoutView::_SendFakeKeyDown(const Key* key)
fTarget.SendMessage(&message);
}
BMenuItem*
KeyboardLayoutView::_CreateSwapModifiersMenuItem(uint32 modifier,
uint32 displayModifier, uint32 oldCode, uint32 newCode)
{
int32 mask = B_SHIFT_KEY | B_COMMAND_KEY | B_CONTROL_KEY | B_OPTION_KEY;
const char* oldName = _NameForModifier(oldCode == 0x00 ? modifier
: fKeymap->Modifier(oldCode) & ~mask, false);
const char* newName = _NameForModifier(newCode == 0x00 ? modifier
: fKeymap->Modifier(newCode) & ~mask, false);
BMessage* message = new BMessage(kMsgUpdateModifierKeys);
if (newName != NULL)
message->AddUInt32(newName, oldCode);
if (oldName != NULL)
message->AddUInt32(oldName, newCode);
if (oldCode == newCode)
message->AddBool("unset", true);
return new BMenuItem(_NameForModifier(displayModifier, true), message);
}
const char*
KeyboardLayoutView::_NameForModifier(uint32 modifier, bool pretty)
{
if (modifier == B_CAPS_LOCK)
return pretty ? B_TRANSLATE("Caps lock") : "caps_key";
else if (modifier == B_NUM_LOCK)
return pretty ? B_TRANSLATE("Num lock") : "num_key";
else if (modifier == B_SCROLL_LOCK)
return pretty ? B_TRANSLATE("Scroll lock") : "scroll_key";
else if (modifier == B_SHIFT_KEY) {
return pretty ? B_TRANSLATE_COMMENT("Shift", "Shift key")
: "shift_key";
} else if (modifier == B_LEFT_SHIFT_KEY)
return pretty ? B_TRANSLATE("Left shift") : "left_shift_key";
else if (modifier == B_RIGHT_SHIFT_KEY)
return pretty ? B_TRANSLATE("Right shift") : "right_shift_key";
else if (modifier == B_COMMAND_KEY) {
return pretty ? B_TRANSLATE_COMMENT("Command", "Command key")
: "command_key";
} else if (modifier == B_LEFT_COMMAND_KEY)
return pretty ? B_TRANSLATE("Left command") : "left_command_key";
else if (modifier == B_RIGHT_COMMAND_KEY)
return pretty ? B_TRANSLATE("Right command") : "right_command_key";
else if (modifier == B_CONTROL_KEY) {
return pretty ? B_TRANSLATE_COMMENT("Control", "Control key")
: "control_key";
} else if (modifier == B_LEFT_CONTROL_KEY)
return pretty ? B_TRANSLATE("Left control") : "left_control_key";
else if (modifier == B_RIGHT_CONTROL_KEY)
return pretty ? B_TRANSLATE("Right control") : "right_control_key";
else if (modifier == B_OPTION_KEY) {
return pretty ? B_TRANSLATE_COMMENT("Option", "Option key")
: "option_key";
} else if (modifier == B_LEFT_OPTION_KEY)
return pretty ? B_TRANSLATE("Left option") : "left_option_key";
else if (modifier == B_RIGHT_OPTION_KEY)
return pretty ? B_TRANSLATE("Right option") : "right_option_key";
else if (modifier == B_MENU_KEY)
return pretty ? B_TRANSLATE_COMMENT("Menu", "Menu key") : "menu_key";
return NULL;
}

View File

@ -98,6 +98,11 @@ private:
void _EvaluateDropTarget(BPoint point);
void _SendFakeKeyDown(const Key* key);
BMenuItem* _CreateSwapModifiersMenuItem(uint32 modifier,
uint32 displayModifier, uint32 oldCode,
uint32 newCode);
const char* _NameForModifier(uint32 modifier, bool pretty);
BBitmap* fOffscreenBitmap;
BView* fOffscreenView;