跨作業系統自訂鍵盤佈局

跨作業系統自訂鍵盤佈局

有沒有軟體可以同時產生 Macintosh、Windows 和 Linux(xkb) 鍵盤佈局?

編輯:據我了解,Microsoft Keyboard Layout Creator 不支援更改修飾鍵(我讀過,也許 autohotkey 可以解決此問題)

答案1

不幸的是,沒有一種軟體工具或軟體包能夠產生或轉碼(移植)主要桌面作業系統的本機鍵盤佈局檔案(至少沒有一個可供公眾使用)。這樣的工具對於所有必須經常使用多個作業系統的人來說非常有用,無論是否在同一台機器和鍵盤上;這越來越普遍。但到目前為止,還沒有開發和發布過類似的產品。這並非沒有道理。在作業系統之間「移植」鍵盤或嘗試在不同平台上保持精確同步的鍵盤佈局會帶來各種複雜的情況。重要的障礙之一是各種作業系統使用和/或識別的「修飾符」/命令鍵之間的差異。此外,Mac 具有獨特的實體鍵盤,其中一些按鍵不直接對應或轉換為其他作業系統,從而產生了需要解決和克服的第二「層」問題和不一致問題。從本質上講,從技術上來說,在您指定的平台上擁有相同功能的鍵盤佈局實際上是不可能的。

然而,關鍵人物開發者是一個功能強大的第三方軟體工具,用於鍵盤佈局和文字輸入開發,我認為您可以希望找到它,它非常接近滿足您的要求。據我所知,這是唯一可供公眾使用的同類工具。雖然第三方軟體並不理想,但我斷言,考慮到它所提供的所有功能,Keyman 值得考慮 - 取決於您的目標到底是什麼(以及您的鍵盤佈局有多複雜/獨特)。

Keyman 的開發人員套件是一款強大的工具,能夠產生各種類型的輸出文件,包括一體式安裝程序,包括輸入法/鍵盤佈局的字體,不僅適用於任何近期版本的Microsoft 和Apple 桌面作業系統,也適用於其各自的行動平台/devices,以及基於 *nix 的平台(包括 Android)。這意味著它還促進了螢幕虛擬鍵盤的開發——所有這些都使用一個整合工具,編輯一個統一的專案文件!另外,它最近變得開源且免費!我不認為你可以希望打敗它......為了支援許多複雜腳本所需的靈活、高級功能和特性,Keyman 使用自己的引擎而不是操作系統本機文件/技術(.klc/.dll或.keylayout),它們不支援Keyman 提供的高級上下文相關功能,而這些功能是所謂的「複雜」語言/書寫系統(主要包括印度和西藏等南亞文字,這些系統必須經常重新編寫)所需要的。周圍文字動態排序字符或選擇字符,並且仍然允許在序列完成後進行編輯,而無需重新鍵入整個序列)。 韓國MFL必須在基於 *nix 的系統上安裝和使用,才能從 Keyman 原始檔編譯鍵盤。 (KMFL 是 Keyman 引擎的移植/重寫)。
Keyman 引擎(或同等引擎)看起來非常高效,需要很少的資源,而且它也相當成熟,看起來非常穩定,運作平穩可靠,不會造成問題。

儘管Keyman 支援的大多數各種支援平台和格式都具有某種固有或技術限制(我之前提到過,例如獨特的修飾鍵),或者它們的開發仍在進行中,這可能會限制某些功能的工作/存在(完全) 實施的。 Keyman 允許對每個平台特有的功能進行自訂和最佳化,以包含/編碼以幫助緩解這些問題/差異。

正如我所提到的,由於以下原因,所有 Keyman 產品最近都已從商業遷移到開源:安全等級等級從其原始所有者 Tavultesoft 手中收購 Keyman 專案。 SIL 可以存取資源來支援原始開發人員的持續開發,並添加一些支援人員和使用者論壇。

根據鍵盤設計支援的語言/書寫系統的複雜性,有可能僅使用 Keyman 圖形 UI 支援的功能來完成專案。然而,更複雜的功能,如死鍵、上下文重新排序和替換,需要使用 Keyman 的鍵盤描述語言(一種編碼/腳本語言),這對於典型的最終用戶來說具有相當陡峭的學習曲線。

這種描述語言非常靈活且可擴展,允許複雜的文字處理和處理,包括 Unicode 規範化、基於上下文的字形重新排序和替換。它還提供了更符合正確「輸入法」的功能(意味著它包括一些基本的圖形覆蓋元素/視窗),例如自動或按住彈出可能輸出的清單。它還提供了一個獨特且方便的功能,即使用重複擊鍵/敲擊按鍵來循環顯示循環輸出清單。我特別喜歡這個功能!雖然您可以在一個鍵中儲存一長串字符,但我發現最多 2-5 個字符更實用且有用。我在括號鍵上使用它來存取我使用的腳本語言使用的一些不常見的括號,以及在其他符號鍵上使用它來存取不常用的符號。這很棒,因為我不必記住特定的修飾符組合,我只需點擊按鍵直到打印出我想要的字符,如果我不小心錯過了它,我只需繼續點擊直到它回來。它還可以設定為自動替換,類似於“組合鍵”的工作方式;用 +- 代替 ±,用 -+ 代替 ∓ 以及類似的序列來代替 ≤ ≰ ⪇ ≦ ≨ ≮ ≲ ≠ 等字符。

正如我上面提到的,用於創建高級功能的語言對我來說似乎不太理想和直觀。我還發現了一些文件此鍵盤描述語言的語法和「詞彙」有些模糊、不明確或令人困惑,需要增強、擴展或改進。然而,這似乎正在改進並且仍在開發中。用戶論壇似乎不是很活躍(那裡沒有太多內容!),儘管對問題的答覆似乎很快就發布了。
更重要的是,在我看來,語言本身感覺很麻煩,過於/不必要的複雜,並且就如何在程式碼中註釋/描述某些用法/功能而言,對我來說有點違反直覺——我不是開發人員/編碼員,因此我的評估應該在這種情況下考慮,並且“持保留態度”。我發現開發人員似乎相當願意考慮和評估有關軟體、腳本語言以及文件的功能請求、建議和回饋。

幸運的是,Keyman 已經支援 1,000 多種語言,並且可以觀察、研究、修改甚至複製這些語言的原始檔案/程式碼,以將其插入和回收到您自己的專案中。

可以產生許多不同類型的檔案和套件,從各種類型的來源檔案到包含 Keyman 引擎、圖示、甚至字體,當然還有鍵盤佈局和文字處理檔案的全自動安裝程式包。您甚至可以創建自訂的、用戶可切換的設置,以啟動鍵盤中的不同行為。

不幸的是,Keyman 沒有能力至少導入作業系統本機鍵盤佈局格式。這真的會非常有幫助,而且非常棒!不過它是開源的,所以有技能、動力和時間的人可以開始研究它。透過向他們的論壇提供足夠的請求和評論,也有可能說服他們的開發人員他們應該致力於此。
這樣的專案也可能是個很好的選擇,可以外包給一個在國外尋找工作的廉價自由編碼員。不幸的是,Windows 和 MacOS 的鍵盤佈局/輸入 API 根本不支援 Keyman 的許多功能,因此根本不可能嘗試讓 Keyman 生成本機鍵盤佈局檔案。

~~~~~~ 更改任何不產生文字的鍵的輸出/功能(意思是:修飾符/命令鍵、功能鍵、媒體鍵、編輯鍵(向上、向下、退格等)等)是大多數作業系統不將其視為鍵盤佈局的一部分,而Windows 本身根本不支援它。 MacOS 提供了一種在鍵盤控制面板中重新分配修改鍵的方法,並且有各種針對不同風格的 *nix 的工具,它們允許類似的、通常更廣泛的自訂。
有一個適用於 Windows 的第三方工具,稱為Kbd編輯它實際上為 Windows 產生標準 klc 檔案和 DLL 安裝程式包。 KbdEdit 非常像我想像的 MSKLC 應該如何......非常強大和靈活,足以能夠做任何事情 - 包括創建帶有鏈接死鍵的非常複雜的鍵盤佈局......它還能夠將任何鍵重新分配給許多晦澀的v_keys,其中包括日語/亞洲鍵盤上的修飾鍵。對這些晦澀難懂的修飾鍵進行創造性的再利用可能會彌合我之前提到的作業系統之間的差異;但沒有直接或明顯的方法來實現這一點。我相信 Windows 鍵盤實際上在技術上可以有多達 15 個獨立的 Shift/修飾鍵狀態/等級/層!其中一個(假名鍵)可以像大寫鎖定一樣鎖定/切換。鍵盤無需任何附加或第三方軟體即可運作。但當然沒有工具可以將它們移植到 Mac 或 Linux 上。

卡拉賓納是最接近的 MacOS 模擬,儘管它有一個完全不同的前提,並且與鍵盤佈局本身沒有任何直接關係;儘管它具有基於 xml 的本機語言,可以創建自訂修飾鍵和鍵行為(例如,如果單獨點擊修飾鍵而不用作修飾符,則修飾鍵會輸出一個字符,等等)。儘管自訂修改器要有用,但所有可能的所需輸出都必須使用並非專門為此目的設計的語言進行手動程式設計。但它的用途非常廣泛且功能強大,並且可以執行一些非常酷的低級技巧和功能。它也是免費的!

尤克里裡是用於 MacOS 的免費工具,可生成本機鍵盤佈局文件和捆綁包。它具有比 MSKLC 更強大、更直觀的介面,以及開發人員經常訪問的非常有用的論壇。它也屬於 SIL 所有,但不是開源的。很高興看到 Ukelele 的 GUI 整合到 Keyman Developer 套件中;例如,用於建立死鍵。當然,它不能從其他平台匯入或匯出佈局。

答案2

是的,而且非常簡單。

蘋果系統 在 Mac OS 上,一切都已內置,簡單且可以找到逐步說明這裡

視窗 微軟在這裡提供了自己的指令清單: http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx

Linux 使用以下工具建立自訂 Linux 鍵盤佈局xkb

StackOverflow 上曾經有人問過類似的問題: https://stackoverflow.com/questions/826986/how-to-make-a-custom-keyboard-layout

相關內容