History log of /haiku/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp
Revision Date Author Comments
# 61ed1470 31-Jan-2023 Augustin Cavalier <waddlesplash@gmail.com>

keyboard: Store errno right after calling open() if an error occurred.

errno is a thread-local variable, we can't read it in another thread
and have the value make any sense. Thus we need to store it.

Fortunately, as our errors are all negative already, we can just put it
directly in fFD instead of having to make a new variable altogether.

Should help with diagnosing a problem seen in some syslogs.


# 9d06690e 11-Jul-2019 Augustin Cavalier <waddlesplash@gmail.com>

userland: Pass more sizes with ioctls where we can.

No "functional" change intended.


# 4e8a13a5 06-Oct-2016 Murai Takashi <tmurai01@gmail.com>

KeyboardInputDevice.cpp: Fix int-in-bool-context warning

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# c14658c7 23-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

keyboard input device: Fix 64 bit debug build.


# 47b0d5f5 10-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

<input>keyboard: Fix use-after-free on dead key completion.

When completing a dead key the already freed string was used to build
the input method changed notification. Use an ArrayDeleter to simplify
management of the two strings.


# 124759d0 20-Jan-2012 czeidler <haiku@clemens-zeidler.de>

This makes keyboard input working when leaving the consoled debugger.
* Fix trace.
* Try to read key input again when the device is just B_BUSY.


# 0fa3181d 31-Oct-2011 François Revol <revol@free.fr>

Implemented the patch on #7963 in a different way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43037 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eab06f5f 03-Jun-2011 Rene Gollent <anevilyak@gmail.com>

Keyboard and Tablet were likewise using the aforementioned ioctls incorrectly.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41896 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 924253e4 12-Apr-2011 Jonas Sundström <jonas@kirilla.com>

Localization. Cleanup.
CID 6338, 6339, 8912 - Replace strcpy with strlcpy.
CID 9523 - Initialize class member.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41243 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fcde0c62 11-Apr-2011 Jonas Sundström <jonas@kirilla.com>

Cleanup. Removal of superfluous UpdateList() call.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41216 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5a3eee33 10-Dec-2010 Jérôme Duval <korli@users.berlios.de>

* Keyboard input device addon: fix deadkey string leak.
* consoled: CID 1696, the found deadkey string is unused.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39811 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b19e758b 21-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* The Keymap::IsDeadKey() of the Keymap preferences which was the main source
of BKeymap was not compatible with IsDeadKey() of the other Keymap
incarnations.
* Now, I've renamed IsDeadKey() to DeadKey(), and introduced a new
ActiveDeadKey() method that works like the other former IsDeadKey().
* This fixes the dead key problems my earlier BKeymap work introduced.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36400 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b44c25de 16-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* Factored out a single base class out of the three Keymap implementations we
had in our tree.
* Adapted Keymap, <input>keyboard, and consoled to use it - the additional
functionality is implemented via a subclass in the first two cases.
* "keymap" will come next.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36328 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2c494653 14-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* Removed the at_kbd_io and AT keyboard stuff; this is now done within the PS/2
driver, and that driver is using the raw_key_info structure as well.
* Renamed kb_mouse_driver.h to keyboard_mouse_driver.h.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36267 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 64e57f07 13-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* Added a bit of code to Keymap that lets it load a keymap from disk; I might
unify the three or so version we have of that class into one in the not so
distant future.
* Moved the AT keycode map into its own file.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36259 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0296ba19 18-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* For dead keys, the keyboard input device now sends a B_UNMAPPED_KEY_DOWN
event.
* This allows applications to listen to keys independent to their dead key
status.
* The app_server keyboard filter now also check for B_UNMAPPED_KEY_DOWN.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34112 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bac2cf0b 17-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34111 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 676d2751 23-Oct-2009 Jérôme Duval <korli@users.berlios.de>

Fixed the dead key misbehavior when typing fast: we don't change the deadkey status on key up anymore.
I thought there was a ticket about this bug, but couldn't find it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33750 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 81c431d2 05-Oct-2009 Michael Lotz <mmlr@mlotz.ch>

Include the terminating 0 byte when adding as string type. Otherwise someone
reading the message as an actual string will run into problems.
Should fix #4697.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33442 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8a5e590d 28-Sep-2009 Stephan Aßmus <superstippi@gmx.de>

Work based on a patch by Joshua R. Elsasser:
* Some key-sequences cause \0 chars in the "bytes" data which is supposed to
be passed to BView::KeyDown() and BView::KeyUp(). Therefor, one cannot use
string methods for adding/extracting the data to/from the events. For
example, Control-Space now works in the Terminal.

Thanks a lot for the original patch, Joshua!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33338 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c8d10a52 01-May-2009 Michael Lotz <mmlr@mlotz.ch>

* Ensure that we don't clear a combined B_*_KEY as long as one of the
B_{LEFT|RIGHT}_*_KEYs is pressed for shift, command, control and option.
This fixes bug #3841.
* Only send a B_MODIFIERS_CHANGED message when the modifiers actually changed.
* Minor simplification to only check for the lock keys once.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30538 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4f8e7ecc 08-Dec-2008 Jérôme Duval <korli@users.berlios.de>

* use the keymap control and command keys to trigger the team monitor
* this fixes part of #3176


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28782 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e02ed691 14-Nov-2008 Rene Gollent <anevilyak@gmail.com>

Patch by Adrian Panasiuk: fix broken TRACE macro definitions (ticket #3133). Thanks!



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28656 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9195fe6e 13-Nov-2008 Stephan Aßmus <superstippi@gmx.de>

* Don't return B_OK from Start() if opening the device failed. Then Stop()
won't be called, the control thread will remove the device anyways.
* Turned off the debug output I left on accidentally in KeyboardInputDevice.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28642 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5125eae2 10-Nov-2008 Stephan Aßmus <superstippi@gmx.de>

* Cleanup and refactoring, made several Mouse-/Keyboard-/TouchpadDevice
functions private and moved them accordingly in the file.
* I forgot to initialize the BObjectList to own the items in
TouchpadInputDevice.
* Changed the methods that read and apply settings in all three addons to be
executed from the control threads only, which fixes race conditions.
* The success of opening a device is no longer checked in the Start() method
of the *Devices. Instead, the control thread checks the device before it
enters the polling loop and cleans up if there was an error. This fixes
non-running devices in the input_server because the PS/2 driver publishes
devices which is has not checked yet for other reasons. It is important,
however, to open() the devices in the Start() hook and not the control
thread, otherwise there are unwanted race conditions in case node monitoring
events are received more than once for the same device. That's the case
for some reason on one of my computers for the AT 0 keyboard.

TODO:
* Combine the Touchpad and Mouse device addon into one, it's almost the
same code except the Touchpad knows more settings and one more control
message.
* Refactor a common base class for Keyboard and Mouse device addon.
* Fix the mouse speed/acceleration. If the speed is lowered from the default
in the preflet, the mouse becomes almost unusable. To fix this, the same
trick should be used as I used in the touchpad kernel driver, which is to
sum up previous mouse moved fractional offsets.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28590 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 239fd643 01-Nov-2008 Stephan Aßmus <superstippi@gmx.de>

* Added Clemens Zeidler to list of authors of the Touchpad add-on.
* Added myself to Mouse and Keyboard add-ons for my recent work on them.
* Small cleanup in KeyboardInputDevice.h-


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28420 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e01a0431 27-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Sorry for the confusing patch...
* Made KeyboardInputDevice more similar to MouseInputDevice, the object to
track individual keyboards has become the class KeyboardDevice. Moved
much functionality that used to be in KeyboardInputDevice into
KeyboardDevice.
Functionally, it should still be the same, but there are two important
changes:
- Each KeyboardDevice now has it's own Keymap. At first, it is not
visible by the user, since all KeyboardDevices still adopt the keymap
if the user reconfigures it. But it will make it easier to assign
individual keymaps to each attached keyboard (and perhaps associate them
with a vendor/product or some other means). The more immediate side effect
is that there is no longer a confusion about the keyboard locks. If
you press NumLock on your external keyboard, it will no longer enable
NumLock on your notebooks internal keyboard.
- KeyboardDevice now has a Stop() method, which it will call in it's
destructor. This will make sure that the control thread is cleanly
exited and does not end up invoking methods on a deleted object.
* Rewrote the tracing implementation in MouseInputDevice.cpp. At least it
helped track me down the following problem:
* Both KeyboardDevice and MouseDevice now set fActive to "false" *before*
closing the device. Since the control threads run at high priority, chances
are high that rescheduling happens as soon as the device unblocks in
ioctl() and returns an error. In that case, the control threads would
check fActive and it would still be "true" and the whole idea of bailing
out because we're already in Stop() would not work, causing a double free
in the end.

All of this is nice and more correct, but input_server is still crashing
when restarting it via "input_server -q"... :-(


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28352 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9dd2d40e 27-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Fixed a race condition and resulting deadlock I introduced, which
resulted in the keyboard not working (at least on my Lenovo/IBM T60).
The device control thread could become aware of a dead device
at the time another thread (for example the add-on manager thread)
is already waiting for it. Then it tried to remove the device and
got stuck on locks that the other thread already holds (InputDeviceItem
list lock). Now the control threads check the "active" flag before
trying to remove the devices themselves, which, when set, is a sure
sign that the devices are already being removed and they don't need
to take care of it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28342 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c5555ad3 24-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

* Ignore B_ENTRY_REMOVED node monitor messages.
* When the device watcher/control thread encounteres an error when
read()ing or ioctl()ing the device, don't just quit the thread and
leave a stale device add-on hanging there, but instead trigger
_RemoveDevice() to exit this cleanly. This also takes care of calling
_RemoveDevice() only from one thread. However, it adds a race condition
should a mouse or keyboard be unplugged and plugged at the same time.
I need to think about how to fix that cleanly, although the situation
may be theoretical only... This fix seems to fix another problem with
hot-plugging USB mice, before this change, the first mouse entry in
/dev/input/mouse/usb/ was never gone and I got two entries after unplugging
and replugging.
* When using BObjectList configured to own the entries - don't delete the
entries! Also don't call RemoveItem() before still using the item. Took
me all day to find this one, because the code looked so... correct. :-}
* In _AddDevice() call _RemoveDevice() just for the sake of it. It is really
important that no device with the same name is published twice. The PS/2
driver behaves strange in that it publishes device more than once, if
I understand correctly, until it decides that there is no device.
* Only StartMonitoringDevice() /after/ having performed the initial device
scan! Or else we may get ourselves confused. I don't know if this was
an actual problem, but the code was like that before and it seems saner
to me. Seeing there is no locking in the device add-on itself, we may
already enter the code from the node monitor thread.

This should fix #2894.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28321 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 997c3d8a 20-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* Renamed TMWindow to TeamMonitorWindow, TMListItem to TeamListItem, TMDescView
to TeamDescriptionView.
* Renamed files accordingly.
* Minor cleanup (made TeamListItem::fFound private, and added accessor methods).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28261 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4d34c4eb 20-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* The description shown in the team monitor is now actually true: if you keep
ctrl-alt-del pressed for 4 seconds, the system will reboot.
* Not sure if this makes any sense, though, as the button can be selected via
the keyboard as well (in BeOS, the reboot is triggered in the device, so it
will also work if the input_server hangs).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28260 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b6a7b204 19-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* Removed the log file stuff; debug output is now using debug_printf() instead.
* Removed an inconsistency: both mouse and keyboad input device add-ons would
scan /dev/input/keyboard respectively /dev/input/mouse when loaded, but then
only monitor certain subdirectories from it. Now they monitor all.
* Made KeyboardInputDevice::InitCheck() do what the name says, ie. nothing
else.
* Now uses BObjectList instead of BList, which also simplifies the code a bit.
* Make use of the new BPathMonitor messages: as those contain a path, they
greatly simplify their handling.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28242 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9179339c 15-Sep-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

free the allocated strings in error case. CID 864

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27515 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d246d9be 10-Dec-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Some old changes I forgot to commit... BInputServerDevice::InitCheck()
now checks if the fOwner allocation went fine (and returns B_NO_MEMORY
in case it didn't). Since it can fail, inherited classes should call it
as well (I modified MouseInputDevice's and KeyboardInputDevice's
versions for now)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23106 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ac66f539 09-Aug-2007 Jérôme Duval <korli@users.berlios.de>

added a lock around keymap uses to avoid a reload in the middle of the key event process
this fixes bug #1177


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21881 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e7e4c08f 30-Apr-2007 Jérôme Duval <korli@users.berlios.de>

starts monitoring after recursive scanning
node monitoring requires the node directory to exist
this fixes PS2 keyboard node monitoring when unpublishing/publishing


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20916 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a8038bf 27-Jan-2007 Axel Dörfler <axeld@pinc-software.de>

Fixed the wrong "be:key_repeats" we were sending to our clients.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19985 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bd506186 24-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

The keyboard_device now also acts as the target for input method messages from
the input method aware view.
This was necessary to support stopping an input method on the fly: if you press
the dead key first, then change to another view and press a key that is changed
by the dead key, the resulting key now reaches its target, and will no longer
be ignored.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19119 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d32e5bae 25-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

The keyboard input device is now using the new inline-only input method extension
for dead keys - IOW you'll now see dead keys in BTextViews as you would see real
input methods like canna. Non-input-method-aware views won't see a difference to
the previous behaviour, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19117 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 304d5927 29-Aug-2006 Axel Dörfler <axeld@pinc-software.de>

Made the keyboard device more resistant against any kind of error:
* Scancodes greater 255 are now handled correctly, and will no longer crash
the input_server. This fixes bug #830.
* Use new (std:nothrow) instead of a simple new
* Now checks all allocations and appropriately handle failure
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18694 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2bd9d1e3 29-Aug-2006 Axel Dörfler <axeld@pinc-software.de>

Style cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18687 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0d9075c6 28-Aug-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

open() error is reported in errno


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18676 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 099e4434 12-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

Minor cleanup and array orientation helper.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17805 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8a986634 13-Apr-2006 Jérôme Duval <korli@users.berlios.de>

added checks for locking
also assigning the window field to null when quitting the window


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17128 a95241bf-73f2-0310-859d-f6bbb57e9c96


# dbb98f2b 29-Mar-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

Cleanup:
- keyboard_device now frees device_ref.name by itself when it's deleted
- made 'active' variable volatile
Bugfixes:
- delete keyboard_device from fDevices list when the object is deleted.
- removed deadlock from RemoveDevice
- call UnregisterDevice from inside RemoveDevice
- terminate devicer watcher thread on read error


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16926 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d361f6fa 19-Feb-2006 Jérôme Duval <korli@users.berlios.de>

added monitoring for input/keyboard/at, hope this fix bug #155


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16468 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7be5a254 12-Feb-2006 Jérôme Duval <korli@users.berlios.de>

it is dumb to open and close devices before starting them
hopefully fixed bug #150


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16369 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca228cbf 11-Feb-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

use the definitions from driver header file, instead of defining a second set of constants


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16356 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a71a4d81 10-Feb-2006 Jérôme Duval <korli@users.berlios.de>

fix bug #140


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16324 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 54fc29e3 16-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

gcc 4 fix. White-space after a \ character at the end of a line is
ignored and the line concatenated with the next one -- making it a
comment, too. Either a bug or a newly implemented feature.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14974 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 106d748c 22-Oct-2005 Marcus Overhagen <marcusoverhagen@gmail.com>

Prevent input_server from hogging the CPU when input devices fail.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14476 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 497d01f0 25-Apr-2005 Axel Dörfler <axeld@pinc-software.de>

Some minor visual improvements: the keyboard input device now reports
"AT Keyboard" and "USB Keyboard", instead of "at|usb Keyboard".
Also, the mouse input device now reports a "PS/2 Mouse" instead of
a "ps2 Mouse".
Generally, both now capitalize the device name when reporting the name.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12465 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 65018030 26-Oct-2004 Jérôme Duval <korli@users.berlios.de>

Completed Team Monitor
Unimplemented : 4 seconds pressing reboot


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9515 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca471994 24-Oct-2004 Jérôme Duval <korli@users.berlios.de>

added initial team monitor
fixed device naming


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9492 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c2fbfb71 05-Oct-2004 Jérôme Duval <korli@users.berlios.de>

clean up, now avoid locking when shutdowning


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9208 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4c2a769c 23-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Now uses a global header


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9046 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3b464cb0 22-Sep-2004 Jérôme Duval <korli@users.berlios.de>

fixed debug macro


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9030 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 743554c6 18-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Forgot the timestamp for non at devices


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9001 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 39394f41 18-Sep-2004 Jérôme Duval <korli@users.berlios.de>

This one is better


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8998 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 711d19bd 18-Sep-2004 Jérôme Duval <korli@users.berlios.de>

fix for leds and modifiers
NOTE : modifiers are per device


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8997 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 421f4885 16-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Support for LEDS
Support for keymap reloading


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8992 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 08acc659 17-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Fix menu key handling so that message is sent only when pressed alone


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8987 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 95b39719 16-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Added support for USB keyboards


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8983 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f78e17fc 16-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Added a brazilian keyboard mapping ABNT2 Keypad . to 0x70
Added handling for CtrlAltDel key combination, atm it only ensures we don't reboot ...
Added handling for Menu key => send BeMn to Deskbar asking to show menu, could be moved somewhere else in the future (filter?)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8982 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c6d4260 15-Sep-2004 Jérôme Duval <korli@users.berlios.de>

added japanese keys support , untested


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8979 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ba35b2bd 15-Sep-2004 Jérôme Duval <korli@users.berlios.de>

added several missing keys


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8976 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 05f76930 14-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Support for locks


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8953 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 80c565ca 14-Sep-2004 Jérôme Duval <korli@users.berlios.de>

bug fix for new dead key behaviour


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8950 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5447827d 14-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Added key events generation
Working!


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8949 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a725f634 14-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Added AT keyboard mapping


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8937 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7072c960 06-Sep-2004 Jérôme Duval <korli@users.berlios.de>

adding comments


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8881 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 43ca8892 06-Sep-2004 Jérôme Duval <korli@users.berlios.de>

fixed logging, a bit of worker


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8879 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e73537f4 06-Sep-2004 Jérôme Duval <korli@users.berlios.de>

rebased on the mouse device addon, cleaned, untested
still lacks better logging, thread worker, settings handling, keymap management and that's all!


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8878 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 600f089e 02-Sep-2004 Jérôme Duval <korli@users.berlios.de>

added a base keyboard addon
added a grist to addons


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8808 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c14658c763507689b8b62a9294b50cb15c6630f8 23-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

keyboard input device: Fix 64 bit debug build.


# 47b0d5f52a03b4d2602ab6bb72cb051428cf0d79 10-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

<input>keyboard: Fix use-after-free on dead key completion.

When completing a dead key the already freed string was used to build
the input method changed notification. Use an ArrayDeleter to simplify
management of the two strings.


# 124759d0dfcc525e5eddf5b77c4409639a02365e 20-Jan-2012 czeidler <haiku@clemens-zeidler.de>

This makes keyboard input working when leaving the consoled debugger.
* Fix trace.
* Try to read key input again when the device is just B_BUSY.


# 0fa3181d95582cdf165a9f9e1cfb08ab5bad158f 31-Oct-2011 François Revol <revol@free.fr>

Implemented the patch on #7963 in a different way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43037 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eab06f5f401982f01bfca3388b9c0bfabadf0b55 03-Jun-2011 Rene Gollent <anevilyak@gmail.com>

Keyboard and Tablet were likewise using the aforementioned ioctls incorrectly.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41896 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 924253e4ffc3d677f12ddf8bfd68aa4500398e92 12-Apr-2011 Jonas Sundström <jonas@kirilla.com>

Localization. Cleanup.
CID 6338, 6339, 8912 - Replace strcpy with strlcpy.
CID 9523 - Initialize class member.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41243 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fcde0c6292166ba7cdf22028a20a5fa61bf45a36 11-Apr-2011 Jonas Sundström <jonas@kirilla.com>

Cleanup. Removal of superfluous UpdateList() call.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41216 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5a3eee3350124080011922f654c511b4120e76a1 10-Dec-2010 Jérôme Duval <korli@users.berlios.de>

* Keyboard input device addon: fix deadkey string leak.
* consoled: CID 1696, the found deadkey string is unused.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39811 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b19e758b80e6eca2e5d81b75c738b4b5c9e70f18 21-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* The Keymap::IsDeadKey() of the Keymap preferences which was the main source
of BKeymap was not compatible with IsDeadKey() of the other Keymap
incarnations.
* Now, I've renamed IsDeadKey() to DeadKey(), and introduced a new
ActiveDeadKey() method that works like the other former IsDeadKey().
* This fixes the dead key problems my earlier BKeymap work introduced.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36400 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b44c25de42ce39022f701d5637797b2f57e63679 16-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* Factored out a single base class out of the three Keymap implementations we
had in our tree.
* Adapted Keymap, <input>keyboard, and consoled to use it - the additional
functionality is implemented via a subclass in the first two cases.
* "keymap" will come next.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36328 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2c4946532910e3cc9f66a92228a2334098e6de49 14-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* Removed the at_kbd_io and AT keyboard stuff; this is now done within the PS/2
driver, and that driver is using the raw_key_info structure as well.
* Renamed kb_mouse_driver.h to keyboard_mouse_driver.h.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36267 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 64e57f07ce6c09400c5515447e149e5cafbe46db 13-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* Added a bit of code to Keymap that lets it load a keymap from disk; I might
unify the three or so version we have of that class into one in the not so
distant future.
* Moved the AT keycode map into its own file.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36259 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0296ba19bb829479d2b955b211509fb34324c84d 18-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* For dead keys, the keyboard input device now sends a B_UNMAPPED_KEY_DOWN
event.
* This allows applications to listen to keys independent to their dead key
status.
* The app_server keyboard filter now also check for B_UNMAPPED_KEY_DOWN.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34112 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bac2cf0b577b43dc6fdf4dbbdbe29cf35930a023 17-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34111 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 676d27510df28a8a9b7f456b889dc9ed676b5604 23-Oct-2009 Jérôme Duval <korli@users.berlios.de>

Fixed the dead key misbehavior when typing fast: we don't change the deadkey status on key up anymore.
I thought there was a ticket about this bug, but couldn't find it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33750 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 81c431d23d8cc3d40ec1a9f3fdbcd45faba73839 05-Oct-2009 Michael Lotz <mmlr@mlotz.ch>

Include the terminating 0 byte when adding as string type. Otherwise someone
reading the message as an actual string will run into problems.
Should fix #4697.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33442 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8a5e590d5e01f1d3221dc5351f78f73268b9b568 28-Sep-2009 Stephan Aßmus <superstippi@gmx.de>

Work based on a patch by Joshua R. Elsasser:
* Some key-sequences cause \0 chars in the "bytes" data which is supposed to
be passed to BView::KeyDown() and BView::KeyUp(). Therefor, one cannot use
string methods for adding/extracting the data to/from the events. For
example, Control-Space now works in the Terminal.

Thanks a lot for the original patch, Joshua!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33338 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c8d10a521fe8882daa1c23d932cfca31328a2731 01-May-2009 Michael Lotz <mmlr@mlotz.ch>

* Ensure that we don't clear a combined B_*_KEY as long as one of the
B_{LEFT|RIGHT}_*_KEYs is pressed for shift, command, control and option.
This fixes bug #3841.
* Only send a B_MODIFIERS_CHANGED message when the modifiers actually changed.
* Minor simplification to only check for the lock keys once.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30538 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4f8e7ecc5a6fe3cf1c1de6ca1add47e03fc2ac82 08-Dec-2008 Jérôme Duval <korli@users.berlios.de>

* use the keymap control and command keys to trigger the team monitor
* this fixes part of #3176


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28782 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e02ed691ca60a2f537dd60910649e9b78100e924 14-Nov-2008 Rene Gollent <anevilyak@gmail.com>

Patch by Adrian Panasiuk: fix broken TRACE macro definitions (ticket #3133). Thanks!



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28656 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9195fe6efef569af90d0c62a2c68d79b4b562033 13-Nov-2008 Stephan Aßmus <superstippi@gmx.de>

* Don't return B_OK from Start() if opening the device failed. Then Stop()
won't be called, the control thread will remove the device anyways.
* Turned off the debug output I left on accidentally in KeyboardInputDevice.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28642 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5125eae25d9089bf2961a33d69ce26761150b0aa 10-Nov-2008 Stephan Aßmus <superstippi@gmx.de>

* Cleanup and refactoring, made several Mouse-/Keyboard-/TouchpadDevice
functions private and moved them accordingly in the file.
* I forgot to initialize the BObjectList to own the items in
TouchpadInputDevice.
* Changed the methods that read and apply settings in all three addons to be
executed from the control threads only, which fixes race conditions.
* The success of opening a device is no longer checked in the Start() method
of the *Devices. Instead, the control thread checks the device before it
enters the polling loop and cleans up if there was an error. This fixes
non-running devices in the input_server because the PS/2 driver publishes
devices which is has not checked yet for other reasons. It is important,
however, to open() the devices in the Start() hook and not the control
thread, otherwise there are unwanted race conditions in case node monitoring
events are received more than once for the same device. That's the case
for some reason on one of my computers for the AT 0 keyboard.

TODO:
* Combine the Touchpad and Mouse device addon into one, it's almost the
same code except the Touchpad knows more settings and one more control
message.
* Refactor a common base class for Keyboard and Mouse device addon.
* Fix the mouse speed/acceleration. If the speed is lowered from the default
in the preflet, the mouse becomes almost unusable. To fix this, the same
trick should be used as I used in the touchpad kernel driver, which is to
sum up previous mouse moved fractional offsets.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28590 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 239fd643df005e1d41f6d7fd19c2b6020987c743 01-Nov-2008 Stephan Aßmus <superstippi@gmx.de>

* Added Clemens Zeidler to list of authors of the Touchpad add-on.
* Added myself to Mouse and Keyboard add-ons for my recent work on them.
* Small cleanup in KeyboardInputDevice.h-


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28420 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e01a04319073ac6a9b55cf2afb857d78a41aa2c8 27-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Sorry for the confusing patch...
* Made KeyboardInputDevice more similar to MouseInputDevice, the object to
track individual keyboards has become the class KeyboardDevice. Moved
much functionality that used to be in KeyboardInputDevice into
KeyboardDevice.
Functionally, it should still be the same, but there are two important
changes:
- Each KeyboardDevice now has it's own Keymap. At first, it is not
visible by the user, since all KeyboardDevices still adopt the keymap
if the user reconfigures it. But it will make it easier to assign
individual keymaps to each attached keyboard (and perhaps associate them
with a vendor/product or some other means). The more immediate side effect
is that there is no longer a confusion about the keyboard locks. If
you press NumLock on your external keyboard, it will no longer enable
NumLock on your notebooks internal keyboard.
- KeyboardDevice now has a Stop() method, which it will call in it's
destructor. This will make sure that the control thread is cleanly
exited and does not end up invoking methods on a deleted object.
* Rewrote the tracing implementation in MouseInputDevice.cpp. At least it
helped track me down the following problem:
* Both KeyboardDevice and MouseDevice now set fActive to "false" *before*
closing the device. Since the control threads run at high priority, chances
are high that rescheduling happens as soon as the device unblocks in
ioctl() and returns an error. In that case, the control threads would
check fActive and it would still be "true" and the whole idea of bailing
out because we're already in Stop() would not work, causing a double free
in the end.

All of this is nice and more correct, but input_server is still crashing
when restarting it via "input_server -q"... :-(


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28352 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9dd2d40e390a95d522ac9074ac9d0e46b894cab2 27-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Fixed a race condition and resulting deadlock I introduced, which
resulted in the keyboard not working (at least on my Lenovo/IBM T60).
The device control thread could become aware of a dead device
at the time another thread (for example the add-on manager thread)
is already waiting for it. Then it tried to remove the device and
got stuck on locks that the other thread already holds (InputDeviceItem
list lock). Now the control threads check the "active" flag before
trying to remove the devices themselves, which, when set, is a sure
sign that the devices are already being removed and they don't need
to take care of it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28342 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c5555ad3c04e295fccf9600cb0aa6eb45eadfbf5 24-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

* Ignore B_ENTRY_REMOVED node monitor messages.
* When the device watcher/control thread encounteres an error when
read()ing or ioctl()ing the device, don't just quit the thread and
leave a stale device add-on hanging there, but instead trigger
_RemoveDevice() to exit this cleanly. This also takes care of calling
_RemoveDevice() only from one thread. However, it adds a race condition
should a mouse or keyboard be unplugged and plugged at the same time.
I need to think about how to fix that cleanly, although the situation
may be theoretical only... This fix seems to fix another problem with
hot-plugging USB mice, before this change, the first mouse entry in
/dev/input/mouse/usb/ was never gone and I got two entries after unplugging
and replugging.
* When using BObjectList configured to own the entries - don't delete the
entries! Also don't call RemoveItem() before still using the item. Took
me all day to find this one, because the code looked so... correct. :-}
* In _AddDevice() call _RemoveDevice() just for the sake of it. It is really
important that no device with the same name is published twice. The PS/2
driver behaves strange in that it publishes device more than once, if
I understand correctly, until it decides that there is no device.
* Only StartMonitoringDevice() /after/ having performed the initial device
scan! Or else we may get ourselves confused. I don't know if this was
an actual problem, but the code was like that before and it seems saner
to me. Seeing there is no locking in the device add-on itself, we may
already enter the code from the node monitor thread.

This should fix #2894.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28321 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 997c3d8afb7f0f2cbbb9c7b918304806757d6770 20-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* Renamed TMWindow to TeamMonitorWindow, TMListItem to TeamListItem, TMDescView
to TeamDescriptionView.
* Renamed files accordingly.
* Minor cleanup (made TeamListItem::fFound private, and added accessor methods).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28261 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4d34c4eba65784b5d292b6fd0ea6086b5abf03eb 20-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* The description shown in the team monitor is now actually true: if you keep
ctrl-alt-del pressed for 4 seconds, the system will reboot.
* Not sure if this makes any sense, though, as the button can be selected via
the keyboard as well (in BeOS, the reboot is triggered in the device, so it
will also work if the input_server hangs).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28260 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b6a7b20419195d04b1a157e45f745cf123d48a61 19-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* Removed the log file stuff; debug output is now using debug_printf() instead.
* Removed an inconsistency: both mouse and keyboad input device add-ons would
scan /dev/input/keyboard respectively /dev/input/mouse when loaded, but then
only monitor certain subdirectories from it. Now they monitor all.
* Made KeyboardInputDevice::InitCheck() do what the name says, ie. nothing
else.
* Now uses BObjectList instead of BList, which also simplifies the code a bit.
* Make use of the new BPathMonitor messages: as those contain a path, they
greatly simplify their handling.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28242 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9179339c4af4d6b5c4b4233070a89e2c7bf68f3e 15-Sep-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

free the allocated strings in error case. CID 864

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27515 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d246d9be8858c760576574109315332d6fd11f8a 10-Dec-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Some old changes I forgot to commit... BInputServerDevice::InitCheck()
now checks if the fOwner allocation went fine (and returns B_NO_MEMORY
in case it didn't). Since it can fail, inherited classes should call it
as well (I modified MouseInputDevice's and KeyboardInputDevice's
versions for now)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23106 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ac66f539e66377bcc8e26d19811bbe1fe28f3808 09-Aug-2007 Jérôme Duval <korli@users.berlios.de>

added a lock around keymap uses to avoid a reload in the middle of the key event process
this fixes bug #1177


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21881 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e7e4c08faff0dc14c74b5a7415430eb5b59dab18 30-Apr-2007 Jérôme Duval <korli@users.berlios.de>

starts monitoring after recursive scanning
node monitoring requires the node directory to exist
this fixes PS2 keyboard node monitoring when unpublishing/publishing


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20916 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a8038bf5dd1a29dd5851e4257ce47bdb9737d93 27-Jan-2007 Axel Dörfler <axeld@pinc-software.de>

Fixed the wrong "be:key_repeats" we were sending to our clients.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19985 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bd5061869781239d65711d3e38f1268c91bbafdb 24-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

The keyboard_device now also acts as the target for input method messages from
the input method aware view.
This was necessary to support stopping an input method on the fly: if you press
the dead key first, then change to another view and press a key that is changed
by the dead key, the resulting key now reaches its target, and will no longer
be ignored.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19119 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d32e5bae5e2ca351f035f77dc7daa5bd51b67e48 25-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

The keyboard input device is now using the new inline-only input method extension
for dead keys - IOW you'll now see dead keys in BTextViews as you would see real
input methods like canna. Non-input-method-aware views won't see a difference to
the previous behaviour, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19117 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 304d5927608dfb5379a1e9bd0f51018c1cd4265b 29-Aug-2006 Axel Dörfler <axeld@pinc-software.de>

Made the keyboard device more resistant against any kind of error:
* Scancodes greater 255 are now handled correctly, and will no longer crash
the input_server. This fixes bug #830.
* Use new (std:nothrow) instead of a simple new
* Now checks all allocations and appropriately handle failure
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18694 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2bd9d1e3d8d00166fb5132c523036add727868a7 29-Aug-2006 Axel Dörfler <axeld@pinc-software.de>

Style cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18687 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0d9075c677dffec98f124dea1da00dd24eb80cdb 28-Aug-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

open() error is reported in errno


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18676 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 099e443467c6a6dc52b7eff458ed1e401c4b350d 12-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

Minor cleanup and array orientation helper.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17805 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8a9866347def84341a611890b9f567dbce7b23cb 13-Apr-2006 Jérôme Duval <korli@users.berlios.de>

added checks for locking
also assigning the window field to null when quitting the window


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17128 a95241bf-73f2-0310-859d-f6bbb57e9c96


# dbb98f2b76f551ec7886fd7dc6b10ceff0c55d48 29-Mar-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

Cleanup:
- keyboard_device now frees device_ref.name by itself when it's deleted
- made 'active' variable volatile
Bugfixes:
- delete keyboard_device from fDevices list when the object is deleted.
- removed deadlock from RemoveDevice
- call UnregisterDevice from inside RemoveDevice
- terminate devicer watcher thread on read error


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16926 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d361f6fa3b5d4ad42f4a9e40108a05df9fd2883b 19-Feb-2006 Jérôme Duval <korli@users.berlios.de>

added monitoring for input/keyboard/at, hope this fix bug #155


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16468 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7be5a254fa47751e0c5c1d636e6656a9a11ffcc7 12-Feb-2006 Jérôme Duval <korli@users.berlios.de>

it is dumb to open and close devices before starting them
hopefully fixed bug #150


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16369 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca228cbfcb9bcd2b35d9236a823f4cc42dda607f 11-Feb-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

use the definitions from driver header file, instead of defining a second set of constants


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16356 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a71a4d81992cf02fe3456896c9a3777e7bb33e67 10-Feb-2006 Jérôme Duval <korli@users.berlios.de>

fix bug #140


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16324 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 54fc29e319e05e6842a95d47c5e3416f3bb7bd2a 16-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

gcc 4 fix. White-space after a \ character at the end of a line is
ignored and the line concatenated with the next one -- making it a
comment, too. Either a bug or a newly implemented feature.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14974 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 106d748c458add4c752fd871b4f0bfc3ae51a605 22-Oct-2005 Marcus Overhagen <marcusoverhagen@gmail.com>

Prevent input_server from hogging the CPU when input devices fail.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14476 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 497d01f0b98027b73616cabbb37df775ab9a898a 25-Apr-2005 Axel Dörfler <axeld@pinc-software.de>

Some minor visual improvements: the keyboard input device now reports
"AT Keyboard" and "USB Keyboard", instead of "at|usb Keyboard".
Also, the mouse input device now reports a "PS/2 Mouse" instead of
a "ps2 Mouse".
Generally, both now capitalize the device name when reporting the name.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12465 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 65018030ea571f5a7f62911a2ed53e9ac2fff60d 26-Oct-2004 Jérôme Duval <korli@users.berlios.de>

Completed Team Monitor
Unimplemented : 4 seconds pressing reboot


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9515 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca4719945cca2b11ef198b205c490fb96bddee9a 24-Oct-2004 Jérôme Duval <korli@users.berlios.de>

added initial team monitor
fixed device naming


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9492 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c2fbfb71f0f3834b2d53b1a98c75ea6672cb36d0 05-Oct-2004 Jérôme Duval <korli@users.berlios.de>

clean up, now avoid locking when shutdowning


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9208 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4c2a769c68e3290d544d2ee1ddbc61ca645bfd59 23-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Now uses a global header


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9046 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3b464cb0ce971576cb0d40992a1c77f5f2102bc4 22-Sep-2004 Jérôme Duval <korli@users.berlios.de>

fixed debug macro


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9030 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 743554c63a727b4500e21be78ec8b4acfd5c07d3 18-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Forgot the timestamp for non at devices


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9001 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 39394f418342500baa6886378214b573b00f0b4b 18-Sep-2004 Jérôme Duval <korli@users.berlios.de>

This one is better


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8998 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 711d19bd29c0143eba13ae710fc97990ffadb75c 18-Sep-2004 Jérôme Duval <korli@users.berlios.de>

fix for leds and modifiers
NOTE : modifiers are per device


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8997 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 421f4885ed0e313b6760dec03313ce1a7d6ce8ef 16-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Support for LEDS
Support for keymap reloading


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8992 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 08acc659ec9e098f3c25678821f61512df313c22 17-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Fix menu key handling so that message is sent only when pressed alone


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8987 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 95b397199c344ba1269fbabf2d46b359047bee14 16-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Added support for USB keyboards


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8983 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f78e17fccc14c301158b6eabdc4bb96d85e55276 16-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Added a brazilian keyboard mapping ABNT2 Keypad . to 0x70
Added handling for CtrlAltDel key combination, atm it only ensures we don't reboot ...
Added handling for Menu key => send BeMn to Deskbar asking to show menu, could be moved somewhere else in the future (filter?)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8982 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c6d4260cb9e99a6e535024e128eda6db371b17f 15-Sep-2004 Jérôme Duval <korli@users.berlios.de>

added japanese keys support , untested


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8979 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ba35b2bdf7b726c54c2e30599b1f3a80065aa6db 15-Sep-2004 Jérôme Duval <korli@users.berlios.de>

added several missing keys


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8976 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 05f76930023fc475fc25ba6baf248b3a3dc6607f 14-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Support for locks


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8953 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 80c565ca25c0b62ef8c5a1483257772e8e093c67 14-Sep-2004 Jérôme Duval <korli@users.berlios.de>

bug fix for new dead key behaviour


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8950 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5447827d2469696216f35f86b0a860c6ee93e58f 14-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Added key events generation
Working!


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8949 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a725f63418fd8a295f21fe20ef319638c40d9b66 14-Sep-2004 Jérôme Duval <korli@users.berlios.de>

Added AT keyboard mapping


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8937 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7072c960f8fb8a569fff6251ce2c8abca8e859ad 06-Sep-2004 Jérôme Duval <korli@users.berlios.de>

adding comments


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8881 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 43ca889200bc77465991e806bd6d467bd5662512 06-Sep-2004 Jérôme Duval <korli@users.berlios.de>

fixed logging, a bit of worker


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8879 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e73537f4596bdb48dbcc7ef803a0a58b2cf701d8 06-Sep-2004 Jérôme Duval <korli@users.berlios.de>

rebased on the mouse device addon, cleaned, untested
still lacks better logging, thread worker, settings handling, keymap management and that's all!


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8878 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 600f089e43de0fa886b4604dc7fb52a14004536d 02-Sep-2004 Jérôme Duval <korli@users.berlios.de>

added a base keyboard addon
added a grist to addons


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8808 a95241bf-73f2-0310-859d-f6bbb57e9c96