[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r3066 - in trunk/pingus: data/controller src/input
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r3066 - in trunk/pingus: data/controller src/input |
Date: |
Sun, 2 Sep 2007 19:20:57 +0200 |
Author: grumbel
Date: 2007-09-02 19:20:57 +0200 (Sun, 02 Sep 2007)
New Revision: 3066
Added:
trunk/pingus/data/controller/usbmouse.scm
Modified:
trunk/pingus/src/input/usbmouse_driver.cpp
trunk/pingus/src/input/usbmouse_driver.hpp
Log:
- added scroller support to usbmouse as well as an example config file
Added: trunk/pingus/data/controller/usbmouse.scm
===================================================================
--- trunk/pingus/data/controller/usbmouse.scm 2007-09-02 16:09:13 UTC (rev
3065)
+++ trunk/pingus/data/controller/usbmouse.scm 2007-09-02 17:20:57 UTC (rev
3066)
@@ -0,0 +1,33 @@
+(pingus-controller
+ (standard-pointer
+ (usbmouse:pointer (device "/dev/input/mx500")))
+
+ (standard-scroller
+ (usbmouse:scroller (device "/dev/input/marblemouse")))
+
+ (primary-button
+ (usbmouse:button (device "/dev/input/mx500") (button 0)))
+
+ (secondary-button
+ (usbmouse:button (device "/dev/input/mx500") (button 1)))
+
+ (pause-button
+ (usbmouse:button (device "/dev/input/mx500") (button 4)))
+
+ (fast-forward-button
+ (usbmouse:button (device "/dev/input/mx500") (button 3)))
+
+;; (armageddon-button
+;; (usbmouse:button (device "/dev/input/mx500") (button 4)))
+
+ (escape-button
+ (sdl:keyboard-button (key "escape")))
+
+ (action-up-button
+ (usbmouse:button (device "/dev/input/mx500") (button 6)))
+
+ (action-down-button
+ (usbmouse:button (device "/dev/input/mx500") (button 5)))
+ )
+
+;; EOF ;;
Modified: trunk/pingus/src/input/usbmouse_driver.cpp
===================================================================
--- trunk/pingus/src/input/usbmouse_driver.cpp 2007-09-02 16:09:13 UTC (rev
3065)
+++ trunk/pingus/src/input/usbmouse_driver.cpp 2007-09-02 17:20:57 UTC (rev
3066)
@@ -44,14 +44,15 @@
std::string device;
std::vector<bool> buttons;
- std::vector<Pointer*> pointer_bindings;
+ std::vector<Pointer*> pointer_bindings;
+ std::vector<Scroller*> scroller_bindings;
std::vector<std::vector<Button*> > button_bindings;
public:
USBMouse(const std::string& device_)
: device(device_),
buttons(5),
- button_bindings(5)
+ button_bindings(7)
{
fd = open(device.c_str (), O_RDWR | O_NONBLOCK);
@@ -84,6 +85,11 @@
pointer_bindings.push_back(p);
}
+ void add_listener(Scroller* s)
+ {
+ scroller_bindings.push_back(s);
+ }
+
void add_listener(int i, Button* b)
{
assert(i >= 0 && i < int(button_bindings.size()));
@@ -121,8 +127,8 @@
for(std::vector<Pointer*>::iterator i = pointer_bindings.begin();
i != pointer_bindings.end(); ++i)
(*i)->set_pos(mouse_pos);
- // send_ball_move(delta_x, delta_y);
- // send_pointer_move(mouse_pos);
+ for(std::vector<Scroller*>::iterator i =
scroller_bindings.begin(); i != scroller_bindings.end(); ++i)
+ (*i)->set_delta(Vector2f(-delta_x, delta_y)); // FIXME:
Inversion should be configurable
}
// Scrollwheel move
@@ -133,8 +139,15 @@
while (delta_z != 0)
{
--delta_z;
- //send_key_event(CL_MOUSE_WHEEL_DOWN, true);
- //send_key_event(CL_MOUSE_WHEEL_DOWN, false);
+
+ std::cout << "Wheel Down" << std::endl;
+ for(std::vector<Button*>::iterator j =
button_bindings[5].begin();
+ j != button_bindings[5].end(); ++j)
+ {
+ (*j)->set_state(BUTTON_PRESSED);
+ (*j)->set_state(BUTTON_RELEASED);
+ }
+
}
}
else if (delta_z < 0)
@@ -142,8 +155,14 @@
while (delta_z != 0)
{
++delta_z;
- //send_key_event(CL_MOUSE_WHEEL_UP, true);
- //send_key_event(CL_MOUSE_WHEEL_UP, false);
+
+ std::cout << "Wheel Up" << std::endl;
+ for(std::vector<Button*>::iterator j =
button_bindings[6].begin();
+ j != button_bindings[6].end(); ++j)
+ {
+ (*j)->set_state(BUTTON_PRESSED);
+ (*j)->set_state(BUTTON_RELEASED);
+ }
}
}
@@ -160,6 +179,8 @@
{
if (new_state[i] != buttons[i])
{
+ std::cout << "Button: " << i << std::endl;
+
buttons[i] = new_state[i];
for(std::vector<Button*>::iterator j =
button_bindings[i].begin();
@@ -265,6 +286,38 @@
}
}
+Scroller*
+USBMouseDriver::create_scroller(const FileReader& reader, Control* parent)
+{
+ if (reader.get_name() == "usbmouse:scroller")
+ {
+ std::string device;
+ if (reader.read_string("device", device))
+ {
+ USBMouse* mouse = get_mouse(device);
+ if (mouse)
+ {
+ Scroller* scroller = new Scroller(parent);
+ mouse->add_listener(scroller);
+ return scroller;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ else
+ {
+ std::cout << "USBMouseDriver: 'device' entry is missing" <<
std::endl;
+ return 0;
+ }
+ }
+ else
+ {
+ return 0;
+ }
+}
+
USBMouse*
USBMouseDriver::get_mouse(const std::string& device)
{
Modified: trunk/pingus/src/input/usbmouse_driver.hpp
===================================================================
--- trunk/pingus/src/input/usbmouse_driver.hpp 2007-09-02 16:09:13 UTC (rev
3065)
+++ trunk/pingus/src/input/usbmouse_driver.hpp 2007-09-02 17:20:57 UTC (rev
3066)
@@ -47,7 +47,7 @@
Button* create_button (const FileReader& reader, Control* parent);
Axis* create_axis (const FileReader& reader, Control* parent) {
return 0; }
- Scroller* create_scroller(const FileReader& reader, Control* parent) {
return 0; }
+ Scroller* create_scroller(const FileReader& reader, Control* parent);
Pointer* create_pointer (const FileReader& reader, Control* parent);
private:
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3066 - in trunk/pingus: data/controller src/input,
grumbel at BerliOS <=