added get_modifier_key() as proposed by Olivier Cortes. Thanks.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28812 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -14,6 +14,7 @@
|
|||||||
#define IS_SET_KEY_REPEAT_DELAY 'Isrd'
|
#define IS_SET_KEY_REPEAT_DELAY 'Isrd'
|
||||||
#define IS_GET_KEY_INFO 'Igki'
|
#define IS_GET_KEY_INFO 'Igki'
|
||||||
#define IS_GET_MODIFIERS 'Igmd'
|
#define IS_GET_MODIFIERS 'Igmd'
|
||||||
|
#define IS_GET_MODIFIER_KEY 'Igmk'
|
||||||
#define IS_SET_MODIFIER_KEY 'Ismk'
|
#define IS_SET_MODIFIER_KEY 'Ismk'
|
||||||
#define IS_SET_KEYBOARD_LOCKS 'Iskl'
|
#define IS_SET_KEYBOARD_LOCKS 'Iskl'
|
||||||
#define IS_GET_MOUSE_SPEED 'Igms'
|
#define IS_GET_MOUSE_SPEED 'Igms'
|
||||||
|
|||||||
@@ -376,12 +376,10 @@ get_mouse_type(int32 *type)
|
|||||||
BMessage command(IS_GET_MOUSE_TYPE);
|
BMessage command(IS_GET_MOUSE_TYPE);
|
||||||
BMessage reply;
|
BMessage reply;
|
||||||
|
|
||||||
_control_input_server_(&command, &reply);
|
status_t err = _control_input_server_(&command, &reply);
|
||||||
|
if (err != B_OK)
|
||||||
if (reply.FindInt32("mouse_type", type) != B_OK)
|
return err;
|
||||||
return B_ERROR;
|
return reply.FindInt32("mouse_type", type);
|
||||||
|
|
||||||
return B_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -391,7 +389,9 @@ set_mouse_type(int32 type)
|
|||||||
BMessage command(IS_SET_MOUSE_TYPE);
|
BMessage command(IS_SET_MOUSE_TYPE);
|
||||||
BMessage reply;
|
BMessage reply;
|
||||||
|
|
||||||
command.AddInt32("mouse_type", type);
|
status_t err = command.AddInt32("mouse_type", type);
|
||||||
|
if (err != B_OK)
|
||||||
|
return err;
|
||||||
return _control_input_server_(&command, &reply);
|
return _control_input_server_(&command, &reply);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -404,10 +404,11 @@ get_mouse_map(mouse_map *map)
|
|||||||
const void *data = 0;
|
const void *data = 0;
|
||||||
ssize_t count;
|
ssize_t count;
|
||||||
|
|
||||||
_control_input_server_(&command, &reply);
|
status_t err = _control_input_server_(&command, &reply);
|
||||||
|
if (err == B_OK)
|
||||||
if (reply.FindData("mousemap", B_RAW_TYPE, &data, &count) != B_OK)
|
err = reply.FindData("mousemap", B_RAW_TYPE, &data, &count);
|
||||||
return B_ERROR;
|
if (err != B_OK)
|
||||||
|
return err;
|
||||||
|
|
||||||
memcpy(map, data, count);
|
memcpy(map, data, count);
|
||||||
|
|
||||||
@@ -421,7 +422,9 @@ set_mouse_map(mouse_map *map)
|
|||||||
BMessage command(IS_SET_MOUSE_MAP);
|
BMessage command(IS_SET_MOUSE_MAP);
|
||||||
BMessage reply;
|
BMessage reply;
|
||||||
|
|
||||||
command.AddData("mousemap", B_RAW_TYPE, map, sizeof(mouse_map));
|
status_t err = command.AddData("mousemap", B_RAW_TYPE, map, sizeof(mouse_map));
|
||||||
|
if (err != B_OK)
|
||||||
|
return err;
|
||||||
return _control_input_server_(&command, &reply);
|
return _control_input_server_(&command, &reply);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -432,7 +435,9 @@ get_click_speed(bigtime_t *speed)
|
|||||||
BMessage command(IS_GET_CLICK_SPEED);
|
BMessage command(IS_GET_CLICK_SPEED);
|
||||||
BMessage reply;
|
BMessage reply;
|
||||||
|
|
||||||
_control_input_server_(&command, &reply);
|
status_t err = _control_input_server_(&command, &reply);
|
||||||
|
if (err != B_OK)
|
||||||
|
return err;
|
||||||
|
|
||||||
if (reply.FindInt64("speed", speed) != B_OK)
|
if (reply.FindInt64("speed", speed) != B_OK)
|
||||||
*speed = 500000;
|
*speed = 500000;
|
||||||
@@ -457,7 +462,9 @@ get_mouse_speed(int32 *speed)
|
|||||||
BMessage command(IS_GET_MOUSE_SPEED);
|
BMessage command(IS_GET_MOUSE_SPEED);
|
||||||
BMessage reply;
|
BMessage reply;
|
||||||
|
|
||||||
_control_input_server_(&command, &reply);
|
status_t err = _control_input_server_(&command, &reply);
|
||||||
|
if (err != B_OK)
|
||||||
|
return err;
|
||||||
|
|
||||||
if (reply.FindInt32("speed", speed) != B_OK)
|
if (reply.FindInt32("speed", speed) != B_OK)
|
||||||
*speed = 65536;
|
*speed = 65536;
|
||||||
@@ -637,13 +644,34 @@ get_keyboard_id(uint16 *id)
|
|||||||
|
|
||||||
_control_input_server_(&command, &reply);
|
_control_input_server_(&command, &reply);
|
||||||
|
|
||||||
reply.FindInt16("id", (int16 *)&kid);
|
status_t err = reply.FindInt16("id", (int16 *)&kid);
|
||||||
|
if (err != B_OK)
|
||||||
|
return err;
|
||||||
*id = kid;
|
*id = kid;
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
get_modifier_key(uint32 modifier, uint32 *key)
|
||||||
|
{
|
||||||
|
BMessage command(IS_GET_MODIFIER_KEY);
|
||||||
|
BMessage reply;
|
||||||
|
uint32 rkey;
|
||||||
|
|
||||||
|
command.AddInt32("modifier", modifier);
|
||||||
|
_control_input_server_(&command, &reply);
|
||||||
|
|
||||||
|
status_t err = reply.FindInt32("key", (int32 *) &rkey);
|
||||||
|
if (err != B_OK)
|
||||||
|
return err;
|
||||||
|
*key = rkey;
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
set_modifier_key(uint32 modifier, uint32 key)
|
set_modifier_key(uint32 modifier, uint32 key)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -520,6 +520,9 @@ InputServer::MessageReceived(BMessage* message)
|
|||||||
case IS_GET_MODIFIERS:
|
case IS_GET_MODIFIERS:
|
||||||
status = HandleGetModifiers(message, &reply);
|
status = HandleGetModifiers(message, &reply);
|
||||||
break;
|
break;
|
||||||
|
case IS_GET_MODIFIER_KEY:
|
||||||
|
status = HandleGetModifierKey(message, &reply);
|
||||||
|
break;
|
||||||
case IS_SET_MODIFIER_KEY:
|
case IS_SET_MODIFIER_KEY:
|
||||||
status = HandleSetModifierKey(message, &reply);
|
status = HandleSetModifierKey(message, &reply);
|
||||||
break;
|
break;
|
||||||
@@ -722,6 +725,43 @@ InputServer::HandleGetModifiers(BMessage* message, BMessage* reply)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
InputServer::HandleGetModifierKey(BMessage* message, BMessage* reply)
|
||||||
|
{
|
||||||
|
int32 modifier;
|
||||||
|
|
||||||
|
if (message->FindInt32("modifier", &modifier) == B_OK) {
|
||||||
|
switch (modifier) {
|
||||||
|
case B_CAPS_LOCK:
|
||||||
|
return reply->AddInt32("key", fKeys.caps_key);
|
||||||
|
case B_NUM_LOCK:
|
||||||
|
return reply->AddInt32("key", fKeys.num_key);
|
||||||
|
case B_SCROLL_LOCK:
|
||||||
|
return reply->AddInt32("key", fKeys.scroll_key);
|
||||||
|
case B_LEFT_SHIFT_KEY:
|
||||||
|
return reply->AddInt32("key", fKeys.left_shift_key);
|
||||||
|
case B_RIGHT_SHIFT_KEY:
|
||||||
|
return reply->AddInt32("key", fKeys.right_shift_key);
|
||||||
|
case B_LEFT_COMMAND_KEY:
|
||||||
|
return reply->AddInt32("key", fKeys.left_command_key);
|
||||||
|
case B_RIGHT_COMMAND_KEY:
|
||||||
|
return reply->AddInt32("key", fKeys.right_command_key);
|
||||||
|
case B_LEFT_CONTROL_KEY:
|
||||||
|
return reply->AddInt32("key", fKeys.left_control_key);
|
||||||
|
case B_RIGHT_CONTROL_KEY:
|
||||||
|
return reply->AddInt32("key", fKeys.right_control_key);
|
||||||
|
case B_LEFT_OPTION_KEY:
|
||||||
|
return reply->AddInt32("key", fKeys.left_option_key);
|
||||||
|
case B_RIGHT_OPTION_KEY:
|
||||||
|
return reply->AddInt32("key", fKeys.right_option_key);
|
||||||
|
case B_MENU_KEY:
|
||||||
|
return reply->AddInt32("key", fKeys.menu_key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return B_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
InputServer::HandleSetModifierKey(BMessage* message, BMessage* reply)
|
InputServer::HandleSetModifierKey(BMessage* message, BMessage* reply)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ class InputServer : public BApplication {
|
|||||||
status_t HandleGetSetKeyRepeatDelay(BMessage* message, BMessage* reply);
|
status_t HandleGetSetKeyRepeatDelay(BMessage* message, BMessage* reply);
|
||||||
status_t HandleGetKeyInfo(BMessage* message, BMessage* reply);
|
status_t HandleGetKeyInfo(BMessage* message, BMessage* reply);
|
||||||
status_t HandleGetModifiers(BMessage* message, BMessage* reply);
|
status_t HandleGetModifiers(BMessage* message, BMessage* reply);
|
||||||
|
status_t HandleGetModifierKey(BMessage* message, BMessage* reply);
|
||||||
status_t HandleSetModifierKey(BMessage* message, BMessage* reply);
|
status_t HandleSetModifierKey(BMessage* message, BMessage* reply);
|
||||||
status_t HandleSetKeyboardLocks(BMessage* message, BMessage* reply);
|
status_t HandleSetKeyboardLocks(BMessage* message, BMessage* reply);
|
||||||
status_t HandleGetSetMouseSpeed(BMessage* message, BMessage* reply);
|
status_t HandleGetSetMouseSpeed(BMessage* message, BMessage* reply);
|
||||||
|
|||||||
Reference in New Issue
Block a user