Ubuntuで新しいキーボードレイアウトを作成するために必要な手順は何ですか?


43

私が作成しようとしているキーボードは多くのUnicodeを持ち、次のようになります。 作成しようとしているキーボード

次のチュートリアルで失敗する:

私は誰かがステップバイステップの手順でより良いチュートリアルを提供するためにとても親切になるのだろうかと思っていましたか?


2
うーん、これは私には複製のように見えます。すでにあなたの質問に賞金をかけているのは残念です:/。
グルタニメート14

@Glutanimate Ohきちんと; それを見なかった。私はまだ、より良い答えを得るために恵まれていただろう。
アキバ14

このリンクを使用できます。help.ubuntu.com/community/ComposeKey
Anandu M Das

回答:


69

Ubuntu 14.04、キーボードレイアウトはに保管されています

/usr/share/X11/xkb/symbols/


このディレクトリ内の各ファイルには、次のタイプの一連のエントリが含まれています。

    キー<AC01> {[a、A、aacute、Aacute]};

このエントリは、次の規則を使用して、キーボードのキーを特定の文字の数にマップします。

  1. < A C01は>最初の文字は、A私たちは、英数字キーブロック(他のオプションが含まに見ている示しKP [for keypad]及びFK [for Function Key])。

  2. <A C 01> 2番目の文字Cは、キーが見つかった下から数えて行を示します。(標準のUSキーボードでは、スペースバーが行にAAあり、数字キーが行にありますAE)。

  3. <AC 01 >数字01はキーの位置を示し、左から数えて、TABまたは~(チルダ)のような特別な名前のキーをAC01無視しCaps Lockます。標準のUSキーボードでは、これは「a」とマークされたキーです。

  4. 括弧は、各キーに割り当てられた文字のリストを囲みます。これには、コンマで区切られた最大4つのエントリが含まれます。

    1. A -無修正キー。
    2. A - Shift文字。
    3. á - Alt Gr文字。(急性
    4. Á - Shift+のAlt Gr文字。(アキュート

カスタムキーボードマップを作成するのは、特定の行で不要な文字を実際の文字に置き換えるのと同じくらい簡単です。

例えば:

アングロSaxonistとして、私はタイプáÁはるかに少ない頻度でIタイプよりæÆ

私のリストにアングロサクソンの文字を追加するには、私は単純に置き換えるaacuteAacute、エンティティ名やとUnicodeコード・ポイントのためæÆ(「aelig」またはU00E6と「AElig」またはU00C6それぞれ、):

    キー{[a、A、aelig、AElig]};

または

    キー{[a、A、U00E6、U00C6]};

キーボードレイアウトの変更が完了したら、同じディレクトリに新しい名前「oe」でファイルを保存します。

evdev.xmlファイルに新しいキーボードレイアウトを追加します。

新しいキーボードレイアウトを使用するにはX11、それが存在することを伝える必要があります。Ubuntu 14.04ではX11、インストールされたキーボードを/usr/share/X11/xkb/rules/evdev.xmlファイルに記録します。次に、新しいレイアウトを追加します。

  1. X11/xkb/rules/evdev.xmlエディターで開く
  2. <layoutList>セクションの最後に移動します(検索</layoutList>)。最後の</layout>タグの後に次を追加します。ここXで、キーボードレイアウトのファイル名は/usr/share/X11/xkb/symbols(私の場合oe)です。Y適切な短い名前; そしてZ一の以上の言語で、適切な長い名前や法的な3つの文字(ISO 639-2)言語コード(例えばENG英語):aaa

    <layout>
     <configItem>
       <name> X </name>
       <shortDescription> Y </shortDescription>
       <description> Z </description>
       <languageList>
          <iso639Id> aaa </iso639Id>
       </languageList>
     </configItem>
     <variantList/>
    </layout>
    

ここにあります、完全な紹介に従ってください

その他の関連リンク:
http : //ubuntuforums.org/showthread.php ? t = 188761&p = 1092145#post1092145 http://www.charvolant.org/~doug/xkb/html/index.html


私はこの投稿に少し取り組みました。あなたが提供したコンテンツは非常に高品質でしたが、私の意見ではまだ作業が必要です。リンクしたチュートリアルは非常に古く、時代遅れであり、「8.04を使用している場合は、xyとzを実行します」でいっぱいです。私は完全なチュートリアルの答え(私は、私は懸賞金を増やすことがしたい)見てみたいと思います
アキヴァ

@Akivaこの答えを助けてくれませんでしたか?どこに問題がありますか?
αғsнιη

3
答えは役に立ちました。AC01の説明は非常によく書かれていましたが、すべての手順について完全な回答が必要でした。他のチュートリアルにリンクしたとき; それらは古く、そのうちの3つがあります。他のユーザーのために、ここで完全な答えを提供したいと思います。たとえば、キー<ac01> {[a、b、c、d]}を超えてテキストファイルにさらに要素があり、編集が必要なXMLファイルもあります。これをテストする方法の問題もあります。言われるように; 良いチュートリアルを作成することはかなり大きなタスクであるため、これに500の報奨金を置くべきでした。
アキバ14

2
とにかくキーボードのレイアウトを定義しなければならないので、私はこの本格的な回答に取り掛かります。私がそれに近づいたら、適切に答えます。
アキバ14年

Xorgのみで動作しますか、それともttyでも動作しますか?
ナルコレッシコ

18

:Waylandはxkbを使用しますが、多くのxToolsは正常に動作しなくなりました(xdotoolなど)

:これは完全なチュートリアルではありません。新しい8レベルのレイアウトを作成し、構文を理解しようとしている個人にとって最も便利です。

注:迅速で汚れたソリューションが提供されます。必要なコードを自動的に生成するスプレッドシートが含まれています。


XKBディレクトリについて

cd /usr/share/X11/xkb/ && ls
  1. types-生成されたキーがActive Modifiersによってどのように変更されるか。(Shift、Control、Alt〜)
    修飾キーをカスタマイズする場合は重要です。
  2. geometry-キーボードグラフィックスの描画に使用。
    非標準のキーボードハードウェアを設計する場合は重要です。
  3. rules-現在の設定に適した構成を取得します。
    これを定義する必要があります
  4. keycodes-キーボードハードウェアのキーコードのインタープリター。
    例:Macintoshキーボードはスペースバーをとして認識し57ます。ただし、<SPCE>
  5. symbols-どのキーコードにどのが割り当てられますか。 ここで、カスタムレイアウトを定義します。
  6. compat- 互換性の略修飾子の
    内部動作(Shift、Control、Alt ...)

ワークフロー

keycodes > symbols > compat

タッチするだけsymbolsです:Quick and Dirtyソリューションについては以下を参照してください。


シンボルマップ

/symbols/us このディレクトリ内のファイルはすべて同じ構造に従います。

partial alphanumeric_keys
xkb_symbols "basic" {
    name[Group1]= "US/ASCII";
    key <TLDE> {        [ quoteleft,    asciitilde      ]       };
    key <AE01> {        [         1,    exclam          ]       };
    modifier_map Shift  { Shift_L, Shift_R };
};

partial -完全なキーボードマップではありません

alphanumeric_keysマッピングされるキーボードのセクション。複数を使用できます
注:*_keys指定しない場合は、完全なキーボードが想定されます。

"basic" -シンボルマップの名前

name[Group1]= "US/ASCII";与えるユニークなこのキーボードのグループに名前を。

modifier_map修飾キーの編集用。(ctrl、shift、alt〜)

Shift { Shift_L, Shift_R };通常は必要ありません。両方のシフトをシフト修飾子、別名レベル2にマッピングします。

key <TLDE> Tildeキー -通常、Tabのすぐ上の左上キー

key <AE01> イラスト -3つの部分で構成され、AE01

  1. A=英数字キーブロック。
    KP=キーパッド
    FK=ファンクションキー

  2. E=キーボードの行。
    Space Key= A
    Shift Key= B
    Caps Lock= C
    Tab Key= D

  3. 01=行のキーの位置。
    AE01= 1
    AB02= X
    AC05=G

[+ ]-C言語。角カッコはリストを示し、これによりアイテムがで分割され,ます。リストの長さはレベルの量を決定します。例えば:

key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }

通常、レベルは次のキー入力を示します。

  1. 修飾キーなし
  2. Shift
  3. Alt Gr
  4. Shift + Alt Gr
  5. Custom -レベル4を超えるものはほとんどありません。

要するに、shift + altgrにキーをマッピングする場合、リストは少なくとも4項目の長さが必要です。


警告-一般的なエラー

これらの行のいずれかが重大なエラーを引き起こし、使用可能なキーボードがなくなります。

key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
  • Backspaceする必要がありますBackSpace:スペルに特に注意を払ってください。
  • 空のエントリはである必要がありますVoidSymbol

最高の安全対策!

  1. 編集しているファイルをバックアップします。

    sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP

  2. rootパスワードなしで実行できるスクリプトを作成します

何かのようなもの:

#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us

何か問題が発生した場合は、マウスを使用してそのコード行を実行します(sudoersに許可を与えたbashスクリプトに含まれています。忘れずchmod +xに実行可能ファイルとして実行してください)。


破損したシステムを回復するためのバックアップ戦略

  • 警告:キーボードとスクリーンキーボードは、わずかなエラーで動作なくなります。
  • マウスが動作します。入力するには、文字を強調表示し、中クリックを使用して貼り付けます。Bashではreturn、改行を貼り付けることで(Enterキーを押す)できます。
  • キーボードはルートシェルのリカバリモード動作します。(bashからアクセス)
  • いつでもライブ環境を使用してファイルを修正できます。

迅速で汚れたソリューション

  1. ここに行く
  2. ファイル>コピーを作成
  3. Mapper シートは、レイアウトを定義する場所です。
    • 単一文字のエントリは、プログラムが理解できるコードに変換されます。
      (に!なりますU0021)。Unicodeがサポートされています!
    • 文字列は翻訳されず、そのまま扱われます。スペルやケースのエラーがないことを確認してください!
    • 空の四角は自動的にで埋められVoidSymbolます。
  4. XKB-Sort シートには、次のようなキーグループが含まれます。
    key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
    key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
    key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
    key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
    key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
    key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
    key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
    key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
    key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
    key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
    key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
    key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
    
    8つのすべてのレベルでこれを変更します。
    1234567890-= // Physical Keys
    ![]"*{}/')(\ // Changed to these characters
  5. XKBタブにも線があります。他のタブはすべて無視できます(そのコード)。
  6. sudo vim /usr/share/X11/xkb/symbols/us
  7. レイアウトのコンテンツを置き換えます。使用しないものを選択してください。たとえば、構造をそのまま残してcolemakエントリを変更し、キーを置き換えました。

関心のある行:

key.type[group1]="EIGHT_LEVEL";          // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key  { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] }; 
key  { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left  Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5


答えの一番上の行には、「(WIP-投票しないでください。)」とあります。答えは私には比較的完全なようです-おそらくこのメモは削除する必要がありますか?
マットケリー

1
@MattKellyああ、私はそれを更新するのを手に入れていない。実際に、模擬キーボードレイアウトに配置する文字に基づいてコードを自動生成するスプレッドシートを作成しました。
アキバ

これは便利なスプレッドシートのように聞こえますが、一般に公開されていますか?
マットケリー

@MattKellyこれはコピーです。多くのクラフトを取り出し、いくつかのハンドルバーを追加する必要がありますが、ご覧のとおり、
Akiva

このアプローチでは、RALTを別のバックスペースとして機能するように設定したり、挿入キーをバッククォート/チルダとして機能するように設定することはできません。
クレイグヒックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.