diff --git a/build/jam/packages/Haiku b/build/jam/packages/Haiku index 2d206bd870..ccf63237cd 100644 --- a/build/jam/packages/Haiku +++ b/build/jam/packages/Haiku @@ -183,13 +183,13 @@ AddFilesToPackage data Canna dic canna : $(cannaDicCanna) ; # TODO: If those serve any purpose, they should probably live in a writable # subtree. -local keymapFiles = [ Glob [ FDirName $(HAIKU_TOP) src data keymaps ] - : *.keymap ] ; -keymapFiles = $(keymapFiles:BG=keymap) ; -AddFilesToPackage data Keymaps : $(keymapFiles) ; -AddSymlinkToPackage data Keymaps : Swedish : Finnish ; -AddSymlinkToPackage data Keymaps : Slovene : Croatian ; -AddSymlinkToPackage data Keymaps : US-International : Brazilian ; +# keymaps +AddFilesToPackage data Keymaps : $(HAIKU_KEYMAP_FILES) ; +local keymapAlias ; +for keymapAlias in $(HAIKU_KEYMAP_ALIASES) { + local aliasedTo = [ on $(keymapAlias) return $(HAIKU_KEYMAP_FILE) ] ; + AddSymlinkToPackage data Keymaps : $(aliasedTo:BSM) : $(keymapAlias:BSM) ; +} # Copy keyboard layout files to the image one-by-one. local keyboardLayoutsDir diff --git a/build/jam/packages/HaikuBootstrap b/build/jam/packages/HaikuBootstrap index bbb15b02df..a16e0a3471 100644 --- a/build/jam/packages/HaikuBootstrap +++ b/build/jam/packages/HaikuBootstrap @@ -148,13 +148,13 @@ local ttFonts = [ Glob $(fontDir)/ttfonts : *.ttf ] ; AddFilesToPackage data fonts psfonts : $(psFonts) ; AddFilesToPackage data fonts ttfonts : $(ttFonts) ; -local keymapFiles = [ Glob [ FDirName $(HAIKU_TOP) src data keymaps ] - : *.keymap ] ; -keymapFiles = $(keymapFiles:BG=keymap) ; -AddFilesToPackage data Keymaps : $(keymapFiles) ; -AddSymlinkToPackage data Keymaps : Swedish : Finnish ; -AddSymlinkToPackage data Keymaps : Slovene : Croatian ; -AddSymlinkToPackage data Keymaps : US-International : Brazilian ; +# keymaps +AddFilesToPackage data Keymaps : $(HAIKU_KEYMAP_FILES) ; +local keymapAlias ; +for keymapAlias in $(HAIKU_KEYMAP_ALIASES) { + local aliasedTo = [ on $(keymapAlias) return $(HAIKU_KEYMAP_FILE) ] ; + AddSymlinkToPackage data Keymaps : $(aliasedTo:BSM) : $(keymapAlias:BSM) ; +} # Copy keyboard layout files to the image one-by-one. local keyboardLayoutsDir diff --git a/src/data/keymaps/Jamfile b/src/data/keymaps/Jamfile index a2358cc90c..da6ddcf3c5 100644 --- a/src/data/keymaps/Jamfile +++ b/src/data/keymaps/Jamfile @@ -25,6 +25,36 @@ actions MkKeymapComp1 $(2[1]) -o "$(1)" -c "$(2[2-])" ; } + +rule AddKeymapAlias alias : keymap +{ + alias = $(alias:G=keymap) ; + HAIKU_KEYMAP_FILE on $(alias) = $(keymap:G=keymap) ; + HAIKU_KEYMAP_ALIASES += $(alias) ; +} + + +rule GenerateKeymapLocalizationHeader keymaps +{ + local keymapNames = $(HAIKU_KEYMAP_FILES:BSM) $(HAIKU_KEYMAP_ALIASES:BSM) ; + local header = KeymapNames.h ; + MakeLocateCommonPlatform $(header) ; + Always $(header) ; + HAIKU_KEYMAP_NAMES on $(header) = $(keymapNames) ; + GenerateKeymapLocalizationHeader1 $(header) ; + LocalClean clean : $(header) ; +} + + +actions GenerateKeymapLocalizationHeader1 +{ + $(RM) $(1) + for name in "$(HAIKU_KEYMAP_NAMES)" ; do + echo "B_TRANSLATE_MARK_VOID(\"$name\")" >> $(1) + done +} + + local keymapFiles = [ GLOB $(SUBDIR) : *.keymap ] ; # generate the binary file for the keymap files @@ -32,5 +62,11 @@ local keymapFile ; for keymapFile in [ FGristFiles $(keymapFiles:D=) ] { local binary = $(keymapFile:BG=keymap) ; MkKeymapComp $(binary) : $(keymapFile) ; + HAIKU_KEYMAP_FILES += $(binary) ; } +AddKeymapAlias Finnish : Swedish ; +AddKeymapAlias Croatian : Slovene ; +AddKeymapAlias Brazilian : US-International ; + +GenerateKeymapLocalizationHeader ; diff --git a/src/preferences/keymap/Jamfile b/src/preferences/keymap/Jamfile index 9ffc182ace..b856cbf291 100644 --- a/src/preferences/keymap/Jamfile +++ b/src/preferences/keymap/Jamfile @@ -1,9 +1,13 @@ SubDir HAIKU_TOP src preferences keymap ; +UseHeaders [ FDirName $(HAIKU_COMMON_PLATFORM_OBJECT_DIR) data keymaps ] ; + SetSubDirSupportedPlatformsBeOSCompatible ; UsePrivateHeaders interface shared ; +Includes [ FGristFiles KeymapWindow.cpp ] : KeymapNames.h ; + Preference Keymap : KeyboardLayout.cpp KeyboardLayoutView.cpp diff --git a/src/preferences/keymap/KeymapWindow.cpp b/src/preferences/keymap/KeymapWindow.cpp index bee9325d5e..af1b152ae0 100644 --- a/src/preferences/keymap/KeymapWindow.cpp +++ b/src/preferences/keymap/KeymapWindow.cpp @@ -38,6 +38,7 @@ #include "KeyboardLayoutView.h" #include "KeymapApplication.h" #include "KeymapListItem.h" +#include "KeymapNames.h" #undef B_TRANSLATION_CONTEXT @@ -897,7 +898,8 @@ KeymapWindow::_FillSystemMaps() if (directory.SetTo(path.Path()) == B_OK) { while (directory.GetNextRef(&ref) == B_OK) { - fSystemListView->AddItem(new KeymapListItem(ref)); + fSystemListView->AddItem( + new KeymapListItem(ref, B_TRANSLATE_NOCOLLECT(ref.name))); } }