History log of /haiku/src/preferences/keymap/KeyboardLayout.cpp
Revision Date Author Comments
# 3ca2e85b 24-May-2019 Augustin Cavalier <waddlesplash@gmail.com>

Interface: Add casts to memcpy/memset invocations on BPoint & BRect.

Their copy constructors are exactly what GCC would generate,
but we can't remove them because doing so would make them
trivially copyable, and so they would be passed in registers
on x86_64, an ABI breakage.

So instead we have to add explicit casts to void* here.


# 1705656e 24-May-2019 Augustin Cavalier <waddlesplash@gmail.com>

Add (void*) casts to memcpy/memset invocations to appease GCC 8.

A lot of these classes are not *technically* "trivially copyable"
for one reason or another, but in all of these cases it seems
OK to me to use memcpy/memset on them. Adding a cast to void*
tells GCC that "I know what I'm doing here" and shuts up the
warning.


# 3eac8208 09-Jan-2017 Adrien Destugues <pulkomandy@pulkomandy.tk>

Remove BStringRef and users.

As discussed in 2008
(http://www.freelists.org/post/haiku-development/BString-on-GCC4,1),
this class was not efficient because of lack of inlining. Implement the
suggested solution of a SetCharAt method instead. Also add a CompareAt
which covers a specific use case in KeyboardLayout.cpp.

Adjust all places which were using this feature to safer APIs.

Also fixes a copypaste error in FormattingConventions.cpp.


# f6c5dbf8 03-Jan-2014 Humdinger <humdingerb@gmail.com>

Some more code style corrections of Keymap.


# 5084d0d4 10-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Added more things to x86_64 image.

Some preference apps, mount_server and AboutSystem. Removed the check
for x86_64 in the boot script, the normal path through the script will
work now. Also removed a temporary hack to workaround AboutSystem not
being there in build_haiku_image.


# 3cee15aa 28-Mar-2012 John Scipione <jscipione@gmail.com>

Keymap changes from recent activity. No AltGr yet.

Below is a mostly complete summary of the changes in this commit.

* Set the DeadKeys for the US-International Keymap to use the Option map.
* Rename American keymap to US
* Update the US, US-International, and United-Kingdom keymaps to take
out unneeded spaces in the option layer. Also updated the dead keys
and some other keys on the US-International keyboard to use UTF-8
characters rather than there ASCII equivalents when different.
* Make the Option key fall-through when there is no mapping in the Option
table. Option is for special characters, if none, print the regular one.
This is mostly meant for the US keymap which has an empty option map. But
also so that you don't have to repeat the normal, shift, and caps maps in
the option map needlessly. Although the keymaps are still not empty in
some cases that it could be like numpad keys and space.
* Update the /bin/keymap app to use fputs() instead of printf() when there
is no actual formatting taking place. I've gotten into trouble for doing
this before and it is faster to not process the string unnecessarily.
* Also several 80-char limit style fixes and updated comments.
* In Keymap class Reorder the modifier keys to match the keymap files.
Put B_CONTROL_KEY check above B_OPTION_KEY. Neither change has any effect,
they are purely aesthetic.
* Update DumpKeymap() method to use the abbreviated modifier letters so it
will fit in your 80-char wide terminal.
* Tiny style fix in InputServer
* 80-char limit style fix in BWindow and add a comment that the shortcut
gets eaten in the case of Cmd+Q
* Implement IndexForModifier() in KeyboardLayout, although I am not using it.
* Take Caps Lock out of the Modifier keys window because I couldn't get
it to work the way I wanted it to.
* Move key roles to the left column, and the key label on the left. Add column
header labels. Thanks Rimas!
* Add validation and improve marking menu options. Add a 'Disabled' option
to control, option, and command menus to disable the key. Make the key
role text grey if the key roles is disabled. Validation ensures that you
cannot repeat the same key twice in the Modifier keys window since that
won't work. You can't define 2 sets of option keys even if you really want
to. You can disable your control, option, and command keys if you
want, but that is not recommended.
* Rename kUpdateModifiers to kUpdateModifierKeys message to differetiate
it from kUpdateModifier.
* Add shift key to Modifier keys window, use the stop icon instead of the
warning icon to indicate conflicts.
* Allow the Layout system to control the size of the Modifier keys window
again, set the width's of the key role lables to the widest, set the width
of the menu fields to take up the rest of the space minus room for the
conflict views. I didn't like it that the Modifier keys window would change
size based on what options you had selected in the menu fields. Now it
doesn't, but, the layout system still makes it all fit.


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

* The Keymap preferences app will now memorize its window frame and chosen
layout.


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


# 1e855c37 12-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Patch by Fredrik Ekdahl: gcc 4 build fixes (missing headers).
* Added missing header for mountvolume.


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


# 433deca8 05-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Made the 105 key international keyboard the default, since this is probably
more helpful to most people than the 104 key one.


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


# c7fe8932 05-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* _FreeKeys() now also clears the indicator list (so they are no longer copied
each time you load a new layout).
* Fixed the IBM laptop keyboard layout.


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


# c0666602 05-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed drawing the L-shaped enter key; the clipping was constrained on the
wrong view since I added offscreen drawing.
* Added a description of the keyboard layout language; it's unlikely to
undergo much changes anymore now.
* Added a few comments for stippi :-)


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


# 0a39e396 25-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* Add capability to load other keyboard layouts from disk. It even works :-)


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


# c3146718 25-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* Added IBM Laptop international keyboard layout.
* Added LEDs to the 105-key internal one.
* Always choose the variable with the longest matching name instead of the
first.


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


# 3c394ad8 25-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* Added support for LED status indicators.
* The look isn't perfect yet, but well; improvements welcome.


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


# d66f4757 25-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* Forgot to implement DefaultKeySize().
* Renamed default keymap.


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


# 42176b84 23-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* Work in progress commit of the Keymap rework. Should not disturb the
existing code.


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


# f6c5dbf81cf723abdbdae12fc4ec81c780ed2190 03-Jan-2014 Humdinger <humdingerb@gmail.com>

Some more code style corrections of Keymap.


# 5084d0d451501f3c026d593dc109cbb76d7688fc 10-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Added more things to x86_64 image.

Some preference apps, mount_server and AboutSystem. Removed the check
for x86_64 in the boot script, the normal path through the script will
work now. Also removed a temporary hack to workaround AboutSystem not
being there in build_haiku_image.


# 3cee15aac2ef8c6ae8975d9add34c36aa4224c29 28-Mar-2012 John Scipione <jscipione@gmail.com>

Keymap changes from recent activity. No AltGr yet.

Below is a mostly complete summary of the changes in this commit.

* Set the DeadKeys for the US-International Keymap to use the Option map.
* Rename American keymap to US
* Update the US, US-International, and United-Kingdom keymaps to take
out unneeded spaces in the option layer. Also updated the dead keys
and some other keys on the US-International keyboard to use UTF-8
characters rather than there ASCII equivalents when different.
* Make the Option key fall-through when there is no mapping in the Option
table. Option is for special characters, if none, print the regular one.
This is mostly meant for the US keymap which has an empty option map. But
also so that you don't have to repeat the normal, shift, and caps maps in
the option map needlessly. Although the keymaps are still not empty in
some cases that it could be like numpad keys and space.
* Update the /bin/keymap app to use fputs() instead of printf() when there
is no actual formatting taking place. I've gotten into trouble for doing
this before and it is faster to not process the string unnecessarily.
* Also several 80-char limit style fixes and updated comments.
* In Keymap class Reorder the modifier keys to match the keymap files.
Put B_CONTROL_KEY check above B_OPTION_KEY. Neither change has any effect,
they are purely aesthetic.
* Update DumpKeymap() method to use the abbreviated modifier letters so it
will fit in your 80-char wide terminal.
* Tiny style fix in InputServer
* 80-char limit style fix in BWindow and add a comment that the shortcut
gets eaten in the case of Cmd+Q
* Implement IndexForModifier() in KeyboardLayout, although I am not using it.
* Take Caps Lock out of the Modifier keys window because I couldn't get
it to work the way I wanted it to.
* Move key roles to the left column, and the key label on the left. Add column
header labels. Thanks Rimas!
* Add validation and improve marking menu options. Add a 'Disabled' option
to control, option, and command menus to disable the key. Make the key
role text grey if the key roles is disabled. Validation ensures that you
cannot repeat the same key twice in the Modifier keys window since that
won't work. You can't define 2 sets of option keys even if you really want
to. You can disable your control, option, and command keys if you
want, but that is not recommended.
* Rename kUpdateModifiers to kUpdateModifierKeys message to differetiate
it from kUpdateModifier.
* Add shift key to Modifier keys window, use the stop icon instead of the
warning icon to indicate conflicts.
* Allow the Layout system to control the size of the Modifier keys window
again, set the width's of the key role lables to the widest, set the width
of the menu fields to take up the rest of the space minus room for the
conflict views. I didn't like it that the Modifier keys window would change
size based on what options you had selected in the menu fields. Now it
doesn't, but, the layout system still makes it all fit.


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

* The Keymap preferences app will now memorize its window frame and chosen
layout.


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


# 1e855c376c4f785f926c0c4d4d08c827c05da643 12-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Patch by Fredrik Ekdahl: gcc 4 build fixes (missing headers).
* Added missing header for mountvolume.


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


# 433deca87e44087997aa55e98faf631295da8446 05-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Made the 105 key international keyboard the default, since this is probably
more helpful to most people than the 104 key one.


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


# c7fe8932fd26c6d5dd715dfd98f08fe63863a7f1 05-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* _FreeKeys() now also clears the indicator list (so they are no longer copied
each time you load a new layout).
* Fixed the IBM laptop keyboard layout.


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


# c06666025667a74c454ad0c34c685304e1fb1a01 05-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed drawing the L-shaped enter key; the clipping was constrained on the
wrong view since I added offscreen drawing.
* Added a description of the keyboard layout language; it's unlikely to
undergo much changes anymore now.
* Added a few comments for stippi :-)


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


# 0a39e396165111d63ef438482bf60125a3903663 25-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* Add capability to load other keyboard layouts from disk. It even works :-)


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


# c31467186f04262d7789d42029237f709c57e06b 25-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* Added IBM Laptop international keyboard layout.
* Added LEDs to the 105-key internal one.
* Always choose the variable with the longest matching name instead of the
first.


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


# 3c394ad89e45ef9bb698e6b1305bb48185a2d913 25-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* Added support for LED status indicators.
* The look isn't perfect yet, but well; improvements welcome.


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


# d66f475749bc72f3090326e269676f10dda09601 25-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* Forgot to implement DefaultKeySize().
* Renamed default keymap.


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


# 42176b84a4423efa3f50629e0ed673be491fdb14 23-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* Work in progress commit of the Keymap rework. Should not disturb the
existing code.


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