Bug 1186030 - no layout for chromebook keyboard
Summary: no layout for chromebook keyboard
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: xkeyboard-config
Version: 23
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Peter Hutterer
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-01-26 21:04 UTC by Frédéric Parrenin
Modified: 2016-02-04 22:32 UTC (History)
24 users (show)

Fixed In Version: xkeyboard-config-2.16-1.fc23
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-11-30 21:21:06 UTC
Type: Bug


Attachments (Terms of Use)
60-keyboard.hwdb (3.47 KB, text/plain)
2015-04-16 20:09 UTC, Benjamin Tissoires
no flags Details
hwdb entry for Acer C720 (485 bytes, text/plain)
2015-04-16 21:29 UTC, Guillaume Poirier-Morency
no flags Details


Links
System ID Priority Status Summary Last Updated
FreeDesktop.org 90684 None None None Never

Description Frédéric Parrenin 2015-01-26 21:04:08 UTC
Description of problem:
In fedora 21, there is no keyboard layout for chromebooks.
For example, the multimedia keys (volume, brightness, navigation, etc.) are not recognized.
You have to manually set these keys in gnome settings.
I am not sure where to report this problem so I report it here.

Comment 1 Peter Hutterer 2015-01-26 21:25:39 UTC
run evemu-record against the kernel devices and record the keys. We need to know what codes they send. Also pls attach the output of xkbcomp -xkb $DISPLAY -

Comment 2 Frédéric Parrenin 2015-01-26 21:44:11 UTC
The multimedia keys send the KEY_F1 to KEY_F10 codes.
The output of 'xkbcomp -xkb $DISPLAY' is nothing.

Comment 3 Frédéric Parrenin 2015-01-26 22:06:38 UTC
So, to give the details:
F1 -> back (navigation)
F2 -> forward (navigation)
F3 -> refresh (navigation)
F4 -> full screen
F5 -> overview
F6 -> brightness down
F7 -> brightness up
F8 -> mute
F9 -> volume down
F10 -> volume up

I am not sure it is the same for all chromebooks, though.
Mine is an Acer C720P.

Comment 4 Peter Hutterer 2015-01-30 03:44:59 UTC
(In reply to Frédéric Parrenin from comment #2)
> The multimedia keys send the KEY_F1 to KEY_F10 codes.
> The output of 'xkbcomp -xkb $DISPLAY' is nothing.

you forgot the final dash :) but you'll have a server-0.xkb file sitting around somewhere.


either way, if the keyboard sends KEY_F1 etc then that's a kernel issue, the kernel should send us the right keymap for multimedia keys. does this thing have an Fn key to change the key's function?

Benjamin, do you know of any layout plans for the chromebook?

Comment 5 Frédéric Parrenin 2015-01-30 08:17:09 UTC
Sorry, the output of 'xkbcomp -xkb $DISPLAY' is pasted  below.
The chromebook does not have any Fn key.
By the way, I forgot another keyboard problem: the fedora live CD did not automatically detect my keyboard. It was set on an US layout by default and I had to set it manually.



--------------------------------------------
[sandrine@localhost ~]$ xkbcomp -xkb $DISPLAY -
xkb_keymap {
xkb_keycodes "evdev+aliases(azerty)" {
    minimum = 8;
    maximum = 255;
     <ESC> = 9;
    <AE01> = 10;
    <AE02> = 11;
    <AE03> = 12;
    <AE04> = 13;
    <AE05> = 14;
    <AE06> = 15;
    <AE07> = 16;
    <AE08> = 17;
    <AE09> = 18;
    <AE10> = 19;
    <AE11> = 20;
    <AE12> = 21;
    <BKSP> = 22;
     <TAB> = 23;
    <AD01> = 24;
    <AD02> = 25;
    <AD03> = 26;
    <AD04> = 27;
    <AD05> = 28;
    <AD06> = 29;
    <AD07> = 30;
    <AD08> = 31;
    <AD09> = 32;
    <AD10> = 33;
    <AD11> = 34;
    <AD12> = 35;
    <RTRN> = 36;
    <LCTL> = 37;
    <AC01> = 38;
    <AC02> = 39;
    <AC03> = 40;
    <AC04> = 41;
    <AC05> = 42;
    <AC06> = 43;
    <AC07> = 44;
    <AC08> = 45;
    <AC09> = 46;
    <AC10> = 47;
    <AC11> = 48;
    <TLDE> = 49;
    <LFSH> = 50;
    <BKSL> = 51;
    <AB01> = 52;
    <AB02> = 53;
    <AB03> = 54;
    <AB04> = 55;
    <AB05> = 56;
    <AB06> = 57;
    <AB07> = 58;
    <AB08> = 59;
    <AB09> = 60;
    <AB10> = 61;
    <RTSH> = 62;
    <KPMU> = 63;
    <LALT> = 64;
    <SPCE> = 65;
    <CAPS> = 66;
    <FK01> = 67;
    <FK02> = 68;
    <FK03> = 69;
    <FK04> = 70;
    <FK05> = 71;
    <FK06> = 72;
    <FK07> = 73;
    <FK08> = 74;
    <FK09> = 75;
    <FK10> = 76;
    <NMLK> = 77;
    <SCLK> = 78;
     <KP7> = 79;
     <KP8> = 80;
     <KP9> = 81;
    <KPSU> = 82;
     <KP4> = 83;
     <KP5> = 84;
     <KP6> = 85;
    <KPAD> = 86;
     <KP1> = 87;
     <KP2> = 88;
     <KP3> = 89;
     <KP0> = 90;
    <KPDL> = 91;
    <LVL3> = 92;
    <LSGT> = 94;
    <FK11> = 95;
    <FK12> = 96;
    <AB11> = 97;
    <KATA> = 98;
    <HIRA> = 99;
    <HENK> = 100;
    <HKTG> = 101;
    <MUHE> = 102;
    <JPCM> = 103;
    <KPEN> = 104;
    <RCTL> = 105;
    <KPDV> = 106;
    <PRSC> = 107;
    <RALT> = 108;
    <LNFD> = 109;
    <HOME> = 110;
      <UP> = 111;
    <PGUP> = 112;
    <LEFT> = 113;
    <RGHT> = 114;
     <END> = 115;
    <DOWN> = 116;
    <PGDN> = 117;
     <INS> = 118;
    <DELE> = 119;
    <I120> = 120;
    <MUTE> = 121;
    <VOL-> = 122;
    <VOL+> = 123;
    <POWR> = 124;
    <KPEQ> = 125;
    <I126> = 126;
    <PAUS> = 127;
    <I128> = 128;
    <I129> = 129;
    <HNGL> = 130;
    <HJCV> = 131;
    <AE13> = 132;
    <LWIN> = 133;
    <RWIN> = 134;
    <COMP> = 135;
    <STOP> = 136;
    <AGAI> = 137;
    <PROP> = 138;
    <UNDO> = 139;
    <FRNT> = 140;
    <COPY> = 141;
    <OPEN> = 142;
    <PAST> = 143;
    <FIND> = 144;
     <CUT> = 145;
    <HELP> = 146;
    <I147> = 147;
    <I148> = 148;
    <I149> = 149;
    <I150> = 150;
    <I151> = 151;
    <I152> = 152;
    <I153> = 153;
    <I154> = 154;
    <I155> = 155;
    <I156> = 156;
    <I157> = 157;
    <I158> = 158;
    <I159> = 159;
    <I160> = 160;
    <I161> = 161;
    <I162> = 162;
    <I163> = 163;
    <I164> = 164;
    <I165> = 165;
    <I166> = 166;
    <I167> = 167;
    <I168> = 168;
    <I169> = 169;
    <I170> = 170;
    <I171> = 171;
    <I172> = 172;
    <I173> = 173;
    <I174> = 174;
    <I175> = 175;
    <I176> = 176;
    <I177> = 177;
    <I178> = 178;
    <I179> = 179;
    <I180> = 180;
    <I181> = 181;
    <I182> = 182;
    <I183> = 183;
    <I184> = 184;
    <I185> = 185;
    <I186> = 186;
    <I187> = 187;
    <I188> = 188;
    <I189> = 189;
    <I190> = 190;
    <FK13> = 191;
    <FK14> = 192;
    <FK15> = 193;
    <FK16> = 194;
    <FK17> = 195;
    <FK18> = 196;
    <FK19> = 197;
    <FK20> = 198;
    <FK21> = 199;
    <FK22> = 200;
    <FK23> = 201;
    <FK24> = 202;
    <MDSW> = 203;
     <ALT> = 204;
    <META> = 205;
    <SUPR> = 206;
    <HYPR> = 207;
    <I208> = 208;
    <I209> = 209;
    <I210> = 210;
    <I211> = 211;
    <I212> = 212;
    <I213> = 213;
    <I214> = 214;
    <I215> = 215;
    <I216> = 216;
    <I217> = 217;
    <I218> = 218;
    <I219> = 219;
    <I220> = 220;
    <I221> = 221;
    <I222> = 222;
    <I223> = 223;
    <I224> = 224;
    <I225> = 225;
    <I226> = 226;
    <I227> = 227;
    <I228> = 228;
    <I229> = 229;
    <I230> = 230;
    <I231> = 231;
    <I232> = 232;
    <I233> = 233;
    <I234> = 234;
    <I235> = 235;
    <I236> = 236;
    <I237> = 237;
    <I238> = 238;
    <I239> = 239;
    <I240> = 240;
    <I241> = 241;
    <I242> = 242;
    <I243> = 243;
    <I244> = 244;
    <I245> = 245;
    <I246> = 246;
    <I247> = 247;
    <I248> = 248;
    <I249> = 249;
    <I250> = 250;
    <I251> = 251;
    <I252> = 252;
    <I253> = 253;
    indicator 1 = "Caps Lock";
    indicator 2 = "Num Lock";
    indicator 3 = "Scroll Lock";
    indicator 4 = "Compose";
    indicator 5 = "Kana";
    indicator 6 = "Sleep";
    indicator 7 = "Suspend";
    indicator 8 = "Mute";
    indicator 9 = "Misc";
    indicator 10 = "Mail";
    indicator 11 = "Charging";
    virtual indicator 12 = "Shift Lock";
    virtual indicator 13 = "Group 2";
    virtual indicator 14 = "Mouse Keys";
    alias <AC12> = <BKSL>;
    alias <MENU> = <COMP>;
    alias <HZTG> = <TLDE>;
    alias <LMTA> = <LWIN>;
    alias <RMTA> = <RWIN>;
    alias <ALGR> = <RALT>;
    alias <KPPT> = <I129>;
    alias <LatA> = <AD01>;
    alias <LatZ> = <AD02>;
    alias <LatE> = <AD03>;
    alias <LatR> = <AD04>;
    alias <LatT> = <AD05>;
    alias <LatY> = <AD06>;
    alias <LatU> = <AD07>;
    alias <LatI> = <AD08>;
    alias <LatO> = <AD09>;
    alias <LatP> = <AD10>;
    alias <LatQ> = <AC01>;
    alias <LatS> = <AC02>;
    alias <LatD> = <AC03>;
    alias <LatF> = <AC04>;
    alias <LatG> = <AC05>;
    alias <LatH> = <AC06>;
    alias <LatJ> = <AC07>;
    alias <LatK> = <AC08>;
    alias <LatL> = <AC09>;
    alias <LatM> = <AC10>;
    alias <LatW> = <AB01>;
    alias <LatX> = <AB02>;
    alias <LatC> = <AB03>;
    alias <LatV> = <AB04>;
    alias <LatB> = <AB05>;
    alias <LatN> = <AB06>;
};

xkb_types "complete" {

    virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;

    type "ONE_LEVEL" {
        modifiers= none;
        level_name[Level1]= "Any";
    };
    type "TWO_LEVEL" {
        modifiers= Shift;
        map[Shift]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
    };
    type "ALPHABETIC" {
        modifiers= Shift+Lock;
        map[Shift]= Level2;
        map[Lock]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Caps";
    };
    type "KEYPAD" {
        modifiers= Shift+NumLock;
        map[Shift]= Level2;
        map[NumLock]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Number";
    };
    type "SHIFT+ALT" {
        modifiers= Shift+Alt;
        map[Shift+Alt]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift+Alt";
    };
    type "PC_SUPER_LEVEL2" {
        modifiers= Mod4;
        map[Mod4]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Super";
    };
    type "PC_CONTROL_LEVEL2" {
        modifiers= Control;
        map[Control]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Control";
    };
    type "PC_LCONTROL_LEVEL2" {
        modifiers= LControl;
        map[LControl]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "LControl";
    };
    type "PC_RCONTROL_LEVEL2" {
        modifiers= RControl;
        map[RControl]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "RControl";
    };
    type "PC_ALT_LEVEL2" {
        modifiers= Alt;
        map[Alt]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Alt";
    };
    type "PC_LALT_LEVEL2" {
        modifiers= LAlt;
        map[LAlt]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "LAlt";
    };
    type "PC_RALT_LEVEL2" {
        modifiers= RAlt;
        map[RAlt]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "RAlt";
    };
    type "CTRL+ALT" {
        modifiers= Shift+Control+Alt+LevelThree;
        map[Shift]= Level2;
        preserve[Shift]= Shift;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        preserve[Shift+LevelThree]= Shift;
        map[Control+Alt]= Level5;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
        level_name[Level5]= "Ctrl+Alt";
    };
    type "LOCAL_EIGHT_LEVEL" {
        modifiers= Shift+Lock+Control+LevelThree;
        map[Shift+Lock]= Level1;
        map[Shift]= Level2;
        map[Lock]= Level2;
        map[LevelThree]= Level3;
        map[Shift+Lock+LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock+LevelThree]= Level4;
        map[Control]= Level5;
        map[Shift+Lock+Control]= Level5;
        map[Shift+Control]= Level6;
        map[Lock+Control]= Level6;
        map[Control+LevelThree]= Level7;
        map[Shift+Lock+Control+LevelThree]= Level7;
        map[Shift+Control+LevelThree]= Level8;
        map[Lock+Control+LevelThree]= Level8;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Level3";
        level_name[Level4]= "Shift Level3";
        level_name[Level5]= "Ctrl";
        level_name[Level6]= "Shift Ctrl";
        level_name[Level7]= "Level3 Ctrl";
        level_name[Level8]= "Shift Level3 Ctrl";
    };
    type "THREE_LEVEL" {
        modifiers= Shift+LevelThree;
        map[Shift]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level3;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Level3";
    };
    type "EIGHT_LEVEL" {
        modifiers= Shift+LevelThree+LevelFive;
        map[Shift]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[LevelFive]= Level5;
        map[Shift+LevelFive]= Level6;
        map[LevelThree+LevelFive]= Level7;
        map[Shift+LevelThree+LevelFive]= Level8;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
        level_name[Level5]= "X";
        level_name[Level6]= "X Shift";
        level_name[Level7]= "X Alt Base";
        level_name[Level8]= "X Shift Alt";
    };
    type "EIGHT_LEVEL_ALPHABETIC" {
        modifiers= Shift+Lock+LevelThree+LevelFive;
        map[Shift]= Level2;
        map[Lock]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock+LevelThree]= Level4;
        map[Shift+Lock+LevelThree]= Level3;
        map[LevelFive]= Level5;
        map[Shift+LevelFive]= Level6;
        map[Lock+LevelFive]= Level6;
        map[LevelThree+LevelFive]= Level7;
        map[Shift+LevelThree+LevelFive]= Level8;
        map[Lock+LevelThree+LevelFive]= Level8;
        map[Shift+Lock+LevelThree+LevelFive]= Level7;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
        level_name[Level5]= "X";
        level_name[Level6]= "X Shift";
        level_name[Level7]= "X Alt Base";
        level_name[Level8]= "X Shift Alt";
    };
    type "EIGHT_LEVEL_SEMIALPHABETIC" {
        modifiers= Shift+Lock+LevelThree+LevelFive;
        map[Shift]= Level2;
        map[Lock]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock+LevelThree]= Level3;
        preserve[Lock+LevelThree]= Lock;
        map[Shift+Lock+LevelThree]= Level4;
        preserve[Shift+Lock+LevelThree]= Lock;
        map[LevelFive]= Level5;
        map[Shift+LevelFive]= Level6;
        map[Lock+LevelFive]= Level6;
        preserve[Lock+LevelFive]= Lock;
        map[Shift+Lock+LevelFive]= Level6;
        preserve[Shift+Lock+LevelFive]= Lock;
        map[LevelThree+LevelFive]= Level7;
        map[Shift+LevelThree+LevelFive]= Level8;
        map[Lock+LevelThree+LevelFive]= Level7;
        preserve[Lock+LevelThree+LevelFive]= Lock;
        map[Shift+Lock+LevelThree+LevelFive]= Level8;
        preserve[Shift+Lock+LevelThree+LevelFive]= Lock;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
        level_name[Level5]= "X";
        level_name[Level6]= "X Shift";
        level_name[Level7]= "X Alt Base";
        level_name[Level8]= "X Shift Alt";
    };
    type "FOUR_LEVEL" {
        modifiers= Shift+LevelThree;
        map[Shift]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
    };
    type "FOUR_LEVEL_ALPHABETIC" {
        modifiers= Shift+Lock+LevelThree;
        map[Shift]= Level2;
        map[Lock]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock+LevelThree]= Level4;
        map[Shift+Lock+LevelThree]= Level3;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
    };
    type "FOUR_LEVEL_SEMIALPHABETIC" {
        modifiers= Shift+Lock+LevelThree;
        map[Shift]= Level2;
        map[Lock]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock+LevelThree]= Level3;
        preserve[Lock+LevelThree]= Lock;
        map[Shift+Lock+LevelThree]= Level4;
        preserve[Shift+Lock+LevelThree]= Lock;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
    };
    type "FOUR_LEVEL_MIXED_KEYPAD" {
        modifiers= Shift+NumLock+LevelThree;
        map[Shift+NumLock]= Level1;
        map[NumLock]= Level2;
        map[Shift]= Level2;
        map[LevelThree]= Level3;
        map[NumLock+LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Shift+NumLock+LevelThree]= Level4;
        level_name[Level1]= "Base";
        level_name[Level2]= "Number";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
    };
    type "FOUR_LEVEL_X" {
        modifiers= Shift+Control+Alt+LevelThree;
        map[LevelThree]= Level2;
        map[Shift+LevelThree]= Level3;
        map[Control+Alt]= Level4;
        level_name[Level1]= "Base";
        level_name[Level2]= "Alt Base";
        level_name[Level3]= "Shift Alt";
        level_name[Level4]= "Ctrl+Alt";
    };
    type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
        modifiers= Shift+Lock+LevelThree;
        map[Shift]= Level2;
        map[Lock]= Level4;
        preserve[Lock]= Lock;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock+LevelThree]= Level3;
        preserve[Lock+LevelThree]= Lock;
        map[Shift+Lock+LevelThree]= Level3;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "AltGr Base";
        level_name[Level4]= "Shift AltGr";
    };
    type "FOUR_LEVEL_PLUS_LOCK" {
        modifiers= Shift+Lock+LevelThree;
        map[Shift]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[Lock]= Level5;
        map[Shift+Lock]= Level2;
        map[Lock+LevelThree]= Level3;
        map[Shift+Lock+LevelThree]= Level4;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
        level_name[Level5]= "Lock";
    };
    type "FOUR_LEVEL_KEYPAD" {
        modifiers= Shift+NumLock+LevelThree;
        map[Shift]= Level2;
        map[NumLock]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        map[NumLock+LevelThree]= Level4;
        map[Shift+NumLock+LevelThree]= Level3;
        level_name[Level1]= "Base";
        level_name[Level2]= "Number";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Alt Number";
    };
};

xkb_compatibility "complete" {

    virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;

    interpret.useModMapMods= AnyLevel;
    interpret.repeat= False;
    interpret.locking= False;
    interpret ISO_Level2_Latch+Exactly(Shift) {
        useModMapMods=level1;
        action= LatchMods(modifiers=Shift,clearLocks,latchToLock);
    };
    interpret Shift_Lock+AnyOf(Shift+Lock) {
        action= LockMods(modifiers=Shift);
    };
    interpret Num_Lock+AnyOf(all) {
        virtualModifier= NumLock;
        action= LockMods(modifiers=NumLock);
    };
    interpret ISO_Level3_Shift+AnyOf(all) {
        virtualModifier= LevelThree;
        useModMapMods=level1;
        action= SetMods(modifiers=LevelThree,clearLocks);
    };
    interpret ISO_Level3_Latch+AnyOf(all) {
        virtualModifier= LevelThree;
        useModMapMods=level1;
        action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
    };
    interpret ISO_Level3_Lock+AnyOf(all) {
        virtualModifier= LevelThree;
        useModMapMods=level1;
        action= LockMods(modifiers=LevelThree);
    };
    interpret Alt_L+AnyOf(all) {
        virtualModifier= Alt;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Alt_R+AnyOf(all) {
        virtualModifier= Alt;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Meta_L+AnyOf(all) {
        virtualModifier= Meta;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Meta_R+AnyOf(all) {
        virtualModifier= Meta;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Super_L+AnyOf(all) {
        virtualModifier= Super;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Super_R+AnyOf(all) {
        virtualModifier= Super;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Hyper_L+AnyOf(all) {
        virtualModifier= Hyper;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Hyper_R+AnyOf(all) {
        virtualModifier= Hyper;
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    interpret Scroll_Lock+AnyOf(all) {
        virtualModifier= ScrollLock;
        action= LockMods(modifiers=modMapMods);
    };
    interpret ISO_Level5_Shift+AnyOf(all) {
        virtualModifier= LevelFive;
        useModMapMods=level1;
        action= SetMods(modifiers=LevelFive,clearLocks);
    };
    interpret ISO_Level5_Latch+AnyOf(all) {
        virtualModifier= LevelFive;
        useModMapMods=level1;
        action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
    };
    interpret ISO_Level5_Lock+AnyOf(all) {
        virtualModifier= LevelFive;
        useModMapMods=level1;
        action= LockMods(modifiers=LevelFive);
    };
    interpret Mode_switch+AnyOfOrNone(all) {
        virtualModifier= AltGr;
        useModMapMods=level1;
        action= SetGroup(group=+1);
    };
    interpret ISO_Level3_Shift+AnyOfOrNone(all) {
        action= SetMods(modifiers=LevelThree,clearLocks);
    };
    interpret ISO_Level3_Latch+AnyOfOrNone(all) {
        action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
    };
    interpret ISO_Level3_Lock+AnyOfOrNone(all) {
        action= LockMods(modifiers=LevelThree);
    };
    interpret ISO_Group_Latch+AnyOfOrNone(all) {
        virtualModifier= AltGr;
        useModMapMods=level1;
        action= LatchGroup(group=2);
    };
    interpret ISO_Next_Group+AnyOfOrNone(all) {
        virtualModifier= AltGr;
        useModMapMods=level1;
        action= LockGroup(group=+1);
    };
    interpret ISO_Prev_Group+AnyOfOrNone(all) {
        virtualModifier= AltGr;
        useModMapMods=level1;
        action= LockGroup(group=-1);
    };
    interpret ISO_First_Group+AnyOfOrNone(all) {
        action= LockGroup(group=1);
    };
    interpret ISO_Last_Group+AnyOfOrNone(all) {
        action= LockGroup(group=2);
    };
    interpret KP_1+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=+1);
    };
    interpret KP_End+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=+1);
    };
    interpret KP_2+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+0,y=+1);
    };
    interpret KP_Down+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+0,y=+1);
    };
    interpret KP_3+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=+1);
    };
    interpret KP_Next+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=+1);
    };
    interpret KP_4+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=+0);
    };
    interpret KP_Left+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=+0);
    };
    interpret KP_6+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=+0);
    };
    interpret KP_Right+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=+0);
    };
    interpret KP_7+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=-1);
    };
    interpret KP_Home+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=-1);
    };
    interpret KP_8+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+0,y=-1);
    };
    interpret KP_Up+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+0,y=-1);
    };
    interpret KP_9+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=-1);
    };
    interpret KP_Prior+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=-1);
    };
    interpret KP_5+AnyOfOrNone(all) {
        repeat= True;
        action= PtrBtn(button=default);
    };
    interpret KP_Begin+AnyOfOrNone(all) {
        repeat= True;
        action= PtrBtn(button=default);
    };
    interpret KP_F2+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=1);
    };
    interpret KP_Divide+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=1);
    };
    interpret KP_F3+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=2);
    };
    interpret KP_Multiply+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=2);
    };
    interpret KP_F4+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=3);
    };
    interpret KP_Subtract+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=3);
    };
    interpret KP_Separator+AnyOfOrNone(all) {
        repeat= True;
        action= PtrBtn(button=default,count=2);
    };
    interpret KP_Add+AnyOfOrNone(all) {
        repeat= True;
        action= PtrBtn(button=default,count=2);
    };
    interpret KP_0+AnyOfOrNone(all) {
        repeat= True;
        action= LockPtrBtn(button=default,affect=lock);
    };
    interpret KP_Insert+AnyOfOrNone(all) {
        repeat= True;
        action= LockPtrBtn(button=default,affect=lock);
    };
    interpret KP_Decimal+AnyOfOrNone(all) {
        repeat= True;
        action= LockPtrBtn(button=default,affect=unlock);
    };
    interpret KP_Delete+AnyOfOrNone(all) {
        repeat= True;
        action= LockPtrBtn(button=default,affect=unlock);
    };
    interpret F25+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=1);
    };
    interpret F26+AnyOfOrNone(all) {
        repeat= True;
        action= SetPtrDflt(affect=button,button=2);
    };
    interpret F27+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=-1);
    };
    interpret F29+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=-1);
    };
    interpret F31+AnyOfOrNone(all) {
        repeat= True;
        action= PtrBtn(button=default);
    };
    interpret F33+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=-1,y=+1);
    };
    interpret F35+AnyOfOrNone(all) {
        repeat= True;
        action= MovePtr(x=+1,y=+1);
    };
    interpret Pointer_Button_Dflt+AnyOfOrNone(all) {
        action= PtrBtn(button=default);
    };
    interpret Pointer_Button1+AnyOfOrNone(all) {
        action= PtrBtn(button=1);
    };
    interpret Pointer_Button2+AnyOfOrNone(all) {
        action= PtrBtn(button=2);
    };
    interpret Pointer_Button3+AnyOfOrNone(all) {
        action= PtrBtn(button=3);
    };
    interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) {
        action= PtrBtn(button=default,count=2);
    };
    interpret Pointer_DblClick1+AnyOfOrNone(all) {
        action= PtrBtn(button=1,count=2);
    };
    interpret Pointer_DblClick2+AnyOfOrNone(all) {
        action= PtrBtn(button=2,count=2);
    };
    interpret Pointer_DblClick3+AnyOfOrNone(all) {
        action= PtrBtn(button=3,count=2);
    };
    interpret Pointer_Drag_Dflt+AnyOfOrNone(all) {
        action= LockPtrBtn(button=default,affect=both);
    };
    interpret Pointer_Drag1+AnyOfOrNone(all) {
        action= LockPtrBtn(button=1,affect=both);
    };
    interpret Pointer_Drag2+AnyOfOrNone(all) {
        action= LockPtrBtn(button=2,affect=both);
    };
    interpret Pointer_Drag3+AnyOfOrNone(all) {
        action= LockPtrBtn(button=3,affect=both);
    };
    interpret Pointer_EnableKeys+AnyOfOrNone(all) {
        action= LockControls(controls=MouseKeys);
    };
    interpret Pointer_Accelerate+AnyOfOrNone(all) {
        action= LockControls(controls=MouseKeysAccel);
    };
    interpret Pointer_DfltBtnNext+AnyOfOrNone(all) {
        action= SetPtrDflt(affect=button,button=+1);
    };
    interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) {
        action= SetPtrDflt(affect=button,button=-1);
    };
    interpret AccessX_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=AccessXKeys);
    };
    interpret AccessX_Feedback_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=AccessXFeedback);
    };
    interpret RepeatKeys_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=RepeatKeys);
    };
    interpret SlowKeys_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=SlowKeys);
    };
    interpret BounceKeys_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=BounceKeys);
    };
    interpret StickyKeys_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=StickyKeys);
    };
    interpret MouseKeys_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=MouseKeys);
    };
    interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=MouseKeysAccel);
    };
    interpret Overlay1_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=Overlay1);
    };
    interpret Overlay2_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=Overlay2);
    };
    interpret AudibleBell_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=AudibleBell);
    };
    interpret Terminate_Server+AnyOfOrNone(all) {
        action= Terminate();
    };
    interpret Alt_L+AnyOfOrNone(all) {
        action= SetMods(modifiers=Alt,clearLocks);
    };
    interpret Alt_R+AnyOfOrNone(all) {
        action= SetMods(modifiers=Alt,clearLocks);
    };
    interpret Meta_L+AnyOfOrNone(all) {
        action= SetMods(modifiers=Meta,clearLocks);
    };
    interpret Meta_R+AnyOfOrNone(all) {
        action= SetMods(modifiers=Meta,clearLocks);
    };
    interpret Super_L+AnyOfOrNone(all) {
        action= SetMods(modifiers=Super,clearLocks);
    };
    interpret Super_R+AnyOfOrNone(all) {
        action= SetMods(modifiers=Super,clearLocks);
    };
    interpret Hyper_L+AnyOfOrNone(all) {
        action= SetMods(modifiers=Hyper,clearLocks);
    };
    interpret Hyper_R+AnyOfOrNone(all) {
        action= SetMods(modifiers=Hyper,clearLocks);
    };
    interpret Shift_L+AnyOfOrNone(all) {
        action= SetMods(modifiers=Shift,clearLocks);
    };
    interpret XF86Switch_VT_1+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=1,!same);
    };
    interpret XF86Switch_VT_2+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=2,!same);
    };
    interpret XF86Switch_VT_3+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=3,!same);
    };
    interpret XF86Switch_VT_4+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=4,!same);
    };
    interpret XF86Switch_VT_5+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=5,!same);
    };
    interpret XF86Switch_VT_6+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=6,!same);
    };
    interpret XF86Switch_VT_7+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=7,!same);
    };
    interpret XF86Switch_VT_8+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=8,!same);
    };
    interpret XF86Switch_VT_9+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=9,!same);
    };
    interpret XF86Switch_VT_10+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=10,!same);
    };
    interpret XF86Switch_VT_11+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=11,!same);
    };
    interpret XF86Switch_VT_12+AnyOfOrNone(all) {
        repeat= True;
        action= SwitchScreen(screen=12,!same);
    };
    interpret XF86LogGrabInfo+AnyOfOrNone(all) {
        repeat= True;
        action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00);
    };
    interpret XF86LogWindowTree+AnyOfOrNone(all) {
        repeat= True;
        action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00);
    };
    interpret XF86Next_VMode+AnyOfOrNone(all) {
        repeat= True;
        action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
    };
    interpret XF86Prev_VMode+AnyOfOrNone(all) {
        repeat= True;
        action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
    };
    interpret ISO_Level5_Shift+AnyOfOrNone(all) {
        action= SetMods(modifiers=LevelFive,clearLocks);
    };
    interpret ISO_Level5_Latch+AnyOfOrNone(all) {
        action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
    };
    interpret ISO_Level5_Lock+AnyOfOrNone(all) {
        action= LockMods(modifiers=LevelFive);
    };
    interpret Caps_Lock+AnyOfOrNone(all) {
        action= LockMods(modifiers=Lock);
    };
    interpret Any+Exactly(Lock) {
        action= LockMods(modifiers=Lock);
    };
    interpret Any+AnyOf(all) {
        action= SetMods(modifiers=modMapMods,clearLocks);
    };
    group 2 = AltGr;
    group 3 = AltGr;
    group 4 = AltGr;
    indicator "Caps Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= Lock;
    };
    indicator "Num Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= NumLock;
    };
    indicator "Scroll Lock" {
        whichModState= locked;
        modifiers= ScrollLock;
    };
    indicator "Shift Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= Shift;
    };
    indicator "Group 2" {
        !allowExplicit;
        groups= 0xfe;
    };
    indicator "Mouse Keys" {
        indicatorDrivesKeyboard;
        controls= mouseKeys;
    };
};

xkb_symbols "pc+fr(oss)+fr(oss):2+inet(evdev)" {

    name[group1]="French (alternative)";
    name[group2]="French (alternative)";

    key  <ESC> {         [          Escape ] };
    key <AE01> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [       ampersand,               1,      dead_caron,     dead_ogonek ]
    };
    key <AE02> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [          eacute,               2,      asciitilde,          Eacute ]
    };
    key <AE03> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [        quotedbl,               3,      numbersign,      dead_breve ]
    };
    key <AE04> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [      apostrophe,               4,       braceleft,           U2014 ]
    };
    key <AE05> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [       parenleft,               5,     bracketleft,           U2013 ]
    };
    key <AE06> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [           minus,               6,             bar,           U2011 ]
    };
    key <AE07> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [          egrave,               7,           grave,          Egrave ]
    };
    key <AE08> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [      underscore,               8,       backslash,       trademark ]
    };
    key <AE09> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [        ccedilla,               9,     asciicircum,        Ccedilla ]
    };
    key <AE10> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [          agrave,               0,              at,          Agrave ]
    };
    key <AE11> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [      parenright,          degree,    bracketright,        notequal ]
    };
    key <AE12> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [           equal,            plus,      braceright,       plusminus ]
    };
    key <BKSP> {         [       BackSpace,       BackSpace ] };
    key  <TAB> {         [             Tab,    ISO_Left_Tab ] };
    key <AD01> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               a,               A,              ae,              AE ]
    };
    key <AD02> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               z,               Z,     acircumflex,     Acircumflex ]
    };
    key <AD03> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               e,               E,        EuroSign,            cent ]
    };
    key <AD04> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               r,               R,     ecircumflex,     Ecircumflex ]
    };
    key <AD05> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               t,               T,           thorn,           THORN ]
    };
    key <AD06> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               y,               Y,      ydiaeresis,      Ydiaeresis ]
    };
    key <AD07> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               u,               U,     ucircumflex,     Ucircumflex ]
    };
    key <AD08> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               i,               I,     icircumflex,     Icircumflex ]
    };
    key <AD09> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               o,               O,              oe,              OE ]
    };
    key <AD10> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               p,               P,     ocircumflex,     Ocircumflex ]
    };
    key <AD11> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [ dead_circumflex,  dead_diaeresis,      dead_tilde,  dead_abovering ]
    };
    key <AD12> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [          dollar,        sterling,          oslash,          Oslash ]
    };
    key <RTRN> {         [          Return ] };
    key <LCTL> {         [       Control_L ] };
    key <AC01> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               q,               Q,      adiaeresis,      Adiaeresis ]
    };
    key <AC02> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               s,               S,          ssharp, doublelowquotemark ]
    };
    key <AC03> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               d,               D,      ediaeresis,      Ediaeresis ]
    };
    key <AC04> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               f,               F, leftsinglequotemark, singlelowquotemark ]
    };
    key <AC05> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               g,               G, rightsinglequotemark,             yen ]
    };
    key <AC06> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               h,               H,             eth,             ETH ]
    };
    key <AC07> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               j,               J,      udiaeresis,      Udiaeresis ]
    };
    key <AC08> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               k,               K,      idiaeresis,      Idiaeresis ]
    };
    key <AC09> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               l,               L,           U0140,           U013F ]
    };
    key <AC10> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               m,               M,      odiaeresis,      Odiaeresis ]
    };
    key <AC11> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [          ugrave,         percent,      dead_acute,          Ugrave ]
    };
    key <TLDE> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [     twosuperior,   threesuperior,     onesuperior,    dead_cedilla ]
    };
    key <LFSH> {         [         Shift_L ] };
    key <BKSL> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [        asterisk,              mu,      dead_grave,     dead_macron ]
    };
    key <AB01> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               w,               W,   guillemotleft, leftdoublequotemark ]
    };
    key <AB02> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               x,               X,  guillemotright, rightdoublequotemark ]
    };
    key <AB03> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               c,               C,       copyright,      registered ]
    };
    key <AB04> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               v,               V,           U202F,       leftarrow ]
    };
    key <AB05> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               b,               B,       downarrow,         uparrow ]
    };
    key <AB06> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               n,               N,         notsign,      rightarrow ]
    };
    key <AB07> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [           comma,        question,    questiondown,           U2026 ]
    };
    key <AB08> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [       semicolon,          period,        multiply,           U22C5 ]
    };
    key <AB09> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [           colon,           slash,        division,           U2215 ]
    };
    key <AB10> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [          exclam,         section,      exclamdown,           U2212 ]
    };
    key <RTSH> {         [         Shift_R ] };
    key <KPMU> {
        type= "CTRL+ALT",
        symbols[Group1]= [     KP_Multiply,           U22C5,       0x10000d7,      VoidSymbol,   XF86ClearGrab ]
    };
    key <LALT> {         [           Alt_L,          Meta_L ] };
    key <SPCE> {
        type= "EIGHT_LEVEL",
        symbols[Group1]= [           space,           space,           space,    nobreakspace,           space,           U202F,        NoSymbol,        NoSymbol ]
    };
    key <CAPS> {         [       Caps_Lock ] };
    key <FK01> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F1,              F1,              F1,              F1, XF86Switch_VT_1 ]
    };
    key <FK02> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F2,              F2,              F2,              F2, XF86Switch_VT_2 ]
    };
    key <FK03> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F3,              F3,              F3,              F3, XF86Switch_VT_3 ]
    };
    key <FK04> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F4,              F4,              F4,              F4, XF86Switch_VT_4 ]
    };
    key <FK05> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F5,              F5,              F5,              F5, XF86Switch_VT_5 ]
    };
    key <FK06> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F6,              F6,              F6,              F6, XF86Switch_VT_6 ]
    };
    key <FK07> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F7,              F7,              F7,              F7, XF86Switch_VT_7 ]
    };
    key <FK08> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F8,              F8,              F8,              F8, XF86Switch_VT_8 ]
    };
    key <FK09> {
        type= "CTRL+ALT",
        symbols[Group1]= [              F9,              F9,              F9,              F9, XF86Switch_VT_9 ]
    };
    key <FK10> {
        type= "CTRL+ALT",
        symbols[Group1]= [             F10,             F10,             F10,             F10, XF86Switch_VT_10 ]
    };
    key <NMLK> {         [        Num_Lock ] };
    key <SCLK> {         [     Scroll_Lock ] };
    key  <KP7> {
        type= "FOUR_LEVEL_MIXED_KEYPAD",
        symbols[Group1]= [         KP_Home,            KP_7,           U2196,           U21D6 ]
    };
    key  <KP8> {
        type= "FOUR_LEVEL_MIXED_KEYPAD",
        symbols[Group1]= [           KP_Up,            KP_8,           U2191,           U21D1 ]
    };
    key  <KP9> {
        type= "FOUR_LEVEL_MIXED_KEYPAD",
        symbols[Group1]= [        KP_Prior,            KP_9,           U2197,           U21D7 ]
    };
    key <KPSU> {
        type= "CTRL+ALT",
        symbols[Group1]= [     KP_Subtract,           U2212,           U2212,      VoidSymbol,  XF86Prev_VMode ]
    };
    key  <KP4> {
        type= "FOUR_LEVEL_MIXED_KEYPAD",
        symbols[Group1]= [         KP_Left,            KP_4,           U2190,           U21D0 ]
    };
    key  <KP5> {
        type= "FOUR_LEVEL_MIXED_KEYPAD",
        symbols[Group1]= [        KP_Begin,            KP_5,           U2194,           U21D4 ]
    };
    key  <KP6> {
        type= "FOUR_LEVEL_MIXED_KEYPAD",
        symbols[Group1]= [        KP_Right,            KP_6,           U2192,           U21D2 ]
    };
    key <KPAD> {
        type= "CTRL+ALT",
        symbols[Group1]= [          KP_Add,       0x100002b,       0x100002b,      VoidSymbol,  XF86Next_VMode ]
    };
    key  <KP1> {
        type= "FOUR_LEVEL_MIXED_KEYPAD",
        symbols[Group1]= [          KP_End,            KP_1,           U2199,           U21D9 ]
    };
    key  <KP2> {
        type= "FOUR_LEVEL_MIXED_KEYPAD",
        symbols[Group1]= [         KP_Down,            KP_2,           U2193,           U21D3 ]
    };
    key  <KP3> {
        type= "FOUR_LEVEL_MIXED_KEYPAD",
        symbols[Group1]= [         KP_Next,            KP_3,           U2198,           U21D8 ]
    };
    key  <KP0> {
        type= "FOUR_LEVEL_MIXED_KEYPAD",
        symbols[Group1]= [       KP_Insert,            KP_0,           U2195,           U21D5 ]
    };
    key <KPDL> {
        type= "FOUR_LEVEL_MIXED_KEYPAD",
        symbols[Group1]= [       KP_Delete,          period,           comma,           U202F ]
    };
    key <LVL3> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level3_Shift ]
    };
    key <LSGT> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [            less,         greater,   lessthanequal, greaterthanequal ]
    };
    key <FK11> {
        type= "CTRL+ALT",
        symbols[Group1]= [             F11,             F11,             F11,             F11, XF86Switch_VT_11 ]
    };
    key <FK12> {
        type= "CTRL+ALT",
        symbols[Group1]= [             F12,             F12,             F12,             F12, XF86Switch_VT_12 ]
    };
    key <KATA> {         [        Katakana ] };
    key <HIRA> {         [        Hiragana ] };
    key <HENK> {         [     Henkan_Mode ] };
    key <HKTG> {         [ Hiragana_Katakana ] };
    key <MUHE> {         [        Muhenkan ] };
    key <KPEN> {         [        KP_Enter ] };
    key <RCTL> {         [       Control_R ] };
    key <KPDV> {
        type= "CTRL+ALT",
        symbols[Group1]= [       KP_Divide,           U2215,       0x10000f7,      VoidSymbol,      XF86Ungrab ]
    };
    key <PRSC> {
        type= "PC_ALT_LEVEL2",
        symbols[Group1]= [           Print,         Sys_Req ]
    };
    key <RALT> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level3_Shift ],
        symbols[Group2]= [ ISO_Level3_Shift ]
    };
    key <LNFD> {         [        Linefeed ] };
    key <HOME> {         [            Home ] };
    key   <UP> {         [              Up ] };
    key <PGUP> {         [           Prior ] };
    key <LEFT> {         [            Left ] };
    key <RGHT> {         [           Right ] };
    key  <END> {         [             End ] };
    key <DOWN> {         [            Down ] };
    key <PGDN> {         [            Next ] };
    key  <INS> {         [          Insert ] };
    key <DELE> {         [          Delete ] };
    key <MUTE> {         [   XF86AudioMute ] };
    key <VOL-> {         [ XF86AudioLowerVolume ] };
    key <VOL+> {         [ XF86AudioRaiseVolume ] };
    key <POWR> {         [    XF86PowerOff ] };
    key <KPEQ> {         [        KP_Equal ] };
    key <I126> {         [       plusminus ] };
    key <PAUS> {
        type= "PC_CONTROL_LEVEL2",
        symbols[Group1]= [           Pause,           Break ]
    };
    key <I128> {         [     XF86LaunchA ] };
    key <I129> {         [      KP_Decimal,      KP_Decimal ] };
    key <HNGL> {         [          Hangul ] };
    key <HJCV> {         [    Hangul_Hanja ] };
    key <LWIN> {         [         Super_L ] };
    key <RWIN> {         [         Super_R ] };
    key <COMP> {         [            Menu ] };
    key <STOP> {         [          Cancel ] };
    key <AGAI> {         [            Redo ] };
    key <PROP> {         [        SunProps ] };
    key <UNDO> {         [            Undo ] };
    key <FRNT> {         [        SunFront ] };
    key <COPY> {         [        XF86Copy ] };
    key <OPEN> {         [        XF86Open ] };
    key <PAST> {         [       XF86Paste ] };
    key <FIND> {         [            Find ] };
    key  <CUT> {         [         XF86Cut ] };
    key <HELP> {         [            Help ] };
    key <I147> {         [      XF86MenuKB ] };
    key <I148> {         [  XF86Calculator ] };
    key <I150> {         [       XF86Sleep ] };
    key <I151> {         [      XF86WakeUp ] };
    key <I152> {         [    XF86Explorer ] };
    key <I153> {         [        XF86Send ] };
    key <I155> {         [        XF86Xfer ] };
    key <I156> {         [     XF86Launch1 ] };
    key <I157> {         [     XF86Launch2 ] };
    key <I158> {         [         XF86WWW ] };
    key <I159> {         [         XF86DOS ] };
    key <I160> {         [ XF86ScreenSaver ] };
    key <I161> {         [ XF86RotateWindows ] };
    key <I162> {         [    XF86TaskPane ] };
    key <I163> {         [        XF86Mail ] };
    key <I164> {         [   XF86Favorites ] };
    key <I165> {         [  XF86MyComputer ] };
    key <I166> {         [        XF86Back ] };
    key <I167> {         [     XF86Forward ] };
    key <I169> {         [       XF86Eject ] };
    key <I170> {         [       XF86Eject,       XF86Eject ] };
    key <I171> {         [   XF86AudioNext ] };
    key <I172> {         [   XF86AudioPlay,  XF86AudioPause ] };
    key <I173> {         [   XF86AudioPrev ] };
    key <I174> {         [   XF86AudioStop,       XF86Eject ] };
    key <I175> {         [ XF86AudioRecord ] };
    key <I176> {         [ XF86AudioRewind ] };
    key <I177> {         [       XF86Phone ] };
    key <I179> {         [       XF86Tools ] };
    key <I180> {         [    XF86HomePage ] };
    key <I181> {         [      XF86Reload ] };
    key <I182> {         [       XF86Close ] };
    key <I185> {         [    XF86ScrollUp ] };
    key <I186> {         [  XF86ScrollDown ] };
    key <I187> {         [       parenleft ] };
    key <I188> {         [      parenright ] };
    key <I189> {         [         XF86New ] };
    key <I190> {         [            Redo ] };
    key <FK13> {         [       XF86Tools ] };
    key <FK14> {         [     XF86Launch5 ] };
    key <FK15> {         [     XF86Launch6 ] };
    key <FK16> {         [     XF86Launch7 ] };
    key <FK17> {         [     XF86Launch8 ] };
    key <FK18> {         [     XF86Launch9 ] };
    key <FK20> {         [ XF86AudioMicMute ] };
    key <FK21> {         [ XF86TouchpadToggle ] };
    key <FK22> {         [  XF86TouchpadOn ] };
    key <FK23> {         [ XF86TouchpadOff ] };
    key <MDSW> {         [     Mode_switch ] };
    key  <ALT> {         [        NoSymbol,           Alt_L ] };
    key <META> {         [        NoSymbol,          Meta_L ] };
    key <SUPR> {         [        NoSymbol,         Super_L ] };
    key <HYPR> {         [        NoSymbol,         Hyper_L ] };
    key <I208> {         [   XF86AudioPlay ] };
    key <I209> {         [  XF86AudioPause ] };
    key <I210> {         [     XF86Launch3 ] };
    key <I211> {         [     XF86Launch4 ] };
    key <I212> {         [     XF86LaunchB ] };
    key <I213> {         [     XF86Suspend ] };
    key <I214> {         [       XF86Close ] };
    key <I215> {         [   XF86AudioPlay ] };
    key <I216> {         [ XF86AudioForward ] };
    key <I218> {         [           Print ] };
    key <I220> {         [      XF86WebCam ] };
    key <I223> {         [        XF86Mail ] };
    key <I224> {         [   XF86Messenger ] };
    key <I225> {         [      XF86Search ] };
    key <I226> {         [          XF86Go ] };
    key <I227> {         [     XF86Finance ] };
    key <I228> {         [        XF86Game ] };
    key <I229> {         [        XF86Shop ] };
    key <I231> {         [          Cancel ] };
    key <I232> {         [ XF86MonBrightnessDown ] };
    key <I233> {         [ XF86MonBrightnessUp ] };
    key <I234> {         [  XF86AudioMedia ] };
    key <I235> {         [     XF86Display ] };
    key <I236> {         [ XF86KbdLightOnOff ] };
    key <I237> {         [ XF86KbdBrightnessDown ] };
    key <I238> {         [ XF86KbdBrightnessUp ] };
    key <I239> {         [        XF86Send ] };
    key <I240> {         [       XF86Reply ] };
    key <I241> {         [ XF86MailForward ] };
    key <I242> {         [        XF86Save ] };
    key <I243> {         [   XF86Documents ] };
    key <I244> {         [     XF86Battery ] };
    key <I245> {         [   XF86Bluetooth ] };
    key <I246> {         [        XF86WLAN ] };
    modifier_map Control { <LCTL> };
    modifier_map Shift { <LFSH> };
    modifier_map Shift { <RTSH> };
    modifier_map Mod1 { <LALT> };
    modifier_map Lock { <CAPS> };
    modifier_map Mod2 { <NMLK> };
    modifier_map Mod5 { <LVL3> };
    modifier_map Control { <RCTL> };
    modifier_map Mod4 { <LWIN> };
    modifier_map Mod4 { <RWIN> };
    modifier_map Mod5 { <MDSW> };
    modifier_map Mod1 { <META> };
    modifier_map Mod4 { <SUPR> };
    modifier_map Mod4 { <HYPR> };
};

xkb_geometry "pc(pc104)" {

    width=       470;
    height=      180;

    alias <AC00> = <CAPS>;
    alias <AA00> = <LCTL>;

    baseColor=   "white";
    labelColor=  "black";
    xfont=       "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
    description= "Generic 104";

    shape "NORM" {
        corner= 1,
        { [  18,  18 ] },
        { [   2,   1 ], [  16,  16 ] }
    };
    shape "BKSP" {
        corner= 1,
        { [  38,  18 ] },
        { [   2,   1 ], [  36,  16 ] }
    };
    shape "TABK" {
        corner= 1,
        { [  28,  18 ] },
        { [   2,   1 ], [  26,  16 ] }
    };
    shape "BKSL" {
        corner= 1,
        { [  28,  18 ] },
        { [   2,   1 ], [  26,  16 ] }
    };
    shape "RTRN" {
        corner= 1,
        { [  42,  18 ] },
        { [   2,   1 ], [  40,  16 ] }
    };
    shape "CAPS" {
        corner= 1,
        { [  33,  18 ] },
        { [   2,   1 ], [  31,  16 ] }
    };
    shape "LFSH" {
        corner= 1,
        { [  42,  18 ] },
        { [   2,   1 ], [  40,  16 ] }
    };
    shape "RTSH" {
        corner= 1,
        { [  52,  18 ] },
        { [   2,   1 ], [  50,  16 ] }
    };
    shape "MODK" {
        corner= 1,
        { [  27,  18 ] },
        { [   2,   1 ], [  25,  16 ] }
    };
    shape "SMOD" {
        corner= 1,
        { [  23,  18 ] },
        { [   2,   1 ], [  21,  16 ] }
    };
    shape "SPCE" {
        corner= 1,
        { [ 113,  18 ] },
        { [   2,   1 ], [ 111,  16 ] }
    };
    shape "KP0" {
        corner= 1,
        { [  37,  18 ] },
        { [   2,   1 ], [  35,  16 ] }
    };
    shape "KPAD" {
        corner= 1,
        { [  18,  37 ] },
        { [   2,   1 ], [  16,  35 ] }
    };
    shape "LEDS" { { [  75,  20 ] } };
    shape "LED" { { [   5,   1 ] } };
    section "Function" {
        key.color= "grey20";
        priority=  7;
        top=       22;
        left=      19;
        width=     351;
        height=    19;
        row {
            top=  1;
            left= 1;
            keys {
                {  <ESC>, "NORM",   1 },
                { <FK01>, "NORM",  20, color="white" },
                { <FK02>, "NORM",   1, color="white" },
                { <FK03>, "NORM",   1, color="white" },
                { <FK04>, "NORM",   1, color="white" },
                { <FK05>, "NORM",  11, color="white" },
                { <FK06>, "NORM",   1, color="white" },
                { <FK07>, "NORM",   1, color="white" },
                { <FK08>, "NORM",   1, color="white" },
                { <FK09>, "NORM",  11, color="white" },
                { <FK10>, "NORM",   1, color="white" },
                { <FK11>, "NORM",   1, color="white" },
                { <FK12>, "NORM",   1, color="white" },
                { <PRSC>, "NORM",   8, color="white" },
                { <SCLK>, "NORM",   1, color="white" },
                { <PAUS>, "NORM",   1, color="white" }
            };
        };
    }; // End of "Function" section

    section "Alpha" {
        key.color= "white";
        priority=  8;
        top=       61;
        left=      19;
        width=     287;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                { <TLDE>, "NORM",   1 }, { <AE01>, "NORM",   1 },
                { <AE02>, "NORM",   1 }, { <AE03>, "NORM",   1 },
                { <AE04>, "NORM",   1 }, { <AE05>, "NORM",   1 },
                { <AE06>, "NORM",   1 }, { <AE07>, "NORM",   1 },
                { <AE08>, "NORM",   1 }, { <AE09>, "NORM",   1 },
                { <AE10>, "NORM",   1 }, { <AE11>, "NORM",   1 },
                { <AE12>, "NORM",   1 },
                { <BKSP>, "BKSP",   1, color="grey20" }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                {  <TAB>, "TABK",   1, color="grey20" },
                { <AD01>, "NORM",   1 }, { <AD02>, "NORM",   1 },
                { <AD03>, "NORM",   1 }, { <AD04>, "NORM",   1 },
                { <AD05>, "NORM",   1 }, { <AD06>, "NORM",   1 },
                { <AD07>, "NORM",   1 }, { <AD08>, "NORM",   1 },
                { <AD09>, "NORM",   1 }, { <AD10>, "NORM",   1 },
                { <AD11>, "NORM",   1 }, { <AD12>, "NORM",   1 },
                { <BKSL>, "BKSL",   1 }
            };
        };
        row {
            top=  39;
            left= 1;
            keys {
                { <CAPS>, "CAPS",   1, color="grey20" },
                { <AC01>, "NORM",   1 }, { <AC02>, "NORM",   1 },
                { <AC03>, "NORM",   1 }, { <AC04>, "NORM",   1 },
                { <AC05>, "NORM",   1 }, { <AC06>, "NORM",   1 },
                { <AC07>, "NORM",   1 }, { <AC08>, "NORM",   1 },
                { <AC09>, "NORM",   1 }, { <AC10>, "NORM",   1 },
                { <AC11>, "NORM",   1 },
                { <RTRN>, "RTRN",   1, color="grey20" }
            };
        };
        row {
            top=  58;
            left= 1;
            keys {
                { <LFSH>, "LFSH",   1, color="grey20" },
                { <AB01>, "NORM",   1 }, { <AB02>, "NORM",   1 },
                { <AB03>, "NORM",   1 }, { <AB04>, "NORM",   1 },
                { <AB05>, "NORM",   1 }, { <AB06>, "NORM",   1 },
                { <AB07>, "NORM",   1 }, { <AB08>, "NORM",   1 },
                { <AB09>, "NORM",   1 }, { <AB10>, "NORM",   1 },
                { <RTSH>, "RTSH",   1, color="grey20" }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                { <LCTL>, "MODK",   1, color="grey20" },
                { <LWIN>, "SMOD",   1, color="grey20" },
                { <LALT>, "SMOD",   1, color="grey20" },
                { <SPCE>, "SPCE",   1 },
                { <RALT>, "SMOD",   1, color="grey20" },
                { <RWIN>, "SMOD",   1, color="grey20" },
                { <MENU>, "SMOD",   1, color="grey20" },
                { <RCTL>, "SMOD",   1, color="grey20" }
            };
        };
    }; // End of "Alpha" section

    section "Editing" {
        key.color= "grey20";
        priority=  9;
        top=       61;
        left=      312;
        width=     58;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                {  <INS>, "NORM",   1 }, { <HOME>, "NORM",   1 },
                { <PGUP>, "NORM",   1 }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                { <DELE>, "NORM",   1 }, {  <END>, "NORM",   1 },
                { <PGDN>, "NORM",   1 }
            };
        };
        row {
            top=  58;
            left= 20;
            keys {
                {   <UP>, "NORM",   1 }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                { <LEFT>, "NORM",   1 }, { <DOWN>, "NORM",   1 },
                { <RGHT>, "NORM",   1 }
            };
        };
    }; // End of "Editing" section

    section "Keypad" {
        key.color= "grey20";
        priority=  10;
        top=       61;
        left=      376;
        width=     77;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                { <NMLK>, "NORM",   1 }, { <KPDV>, "NORM",   1 },
                { <KPMU>, "NORM",   1 }, { <KPSU>, "NORM",   1 }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                {  <KP7>, "NORM",   1, color="white" },
                {  <KP8>, "NORM",   1, color="white" },
                {  <KP9>, "NORM",   1, color="white" },
                { <KPAD>, "KPAD",   1 }
            };
        };
        row {
            top=  39;
            left= 1;
            keys {
                {  <KP4>, "NORM",   1, color="white" },
                {  <KP5>, "NORM",   1, color="white" },
                {  <KP6>, "NORM",   1, color="white" }
            };
        };
        row {
            top=  58;
            left= 1;
            keys {
                {  <KP1>, "NORM",   1, color="white" },
                {  <KP2>, "NORM",   1, color="white" },
                {  <KP3>, "NORM",   1, color="white" },
                { <KPEN>, "KPAD",   1 }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                {  <KP0>, "KP0",   1, color="white" },
                { <KPDL>, "NORM",   1, color="white" }
            };
        };
    }; // End of "Keypad" section

    solid "LedPanel" {
        top=      22;
        left=     377;
        priority= 0;
        color= "grey10";
        shape= "LEDS";
    };
    indicator "Num Lock" {
        top=      37;
        left=     382;
        priority= 1;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    indicator "Caps Lock" {
        top=      37;
        left=     407;
        priority= 2;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    indicator "Scroll Lock" {
        top=      37;
        left=     433;
        priority= 3;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    text "NumLockLabel" {
        top=      25;
        left=     378;
        priority= 4;
        width=  19.8;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Num\nLock";
    };
    text "CapsLockLabel" {
        top=      25;
        left=     403;
        priority= 5;
        width=  26.4;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Caps\nLock";
    };
    text "ScrollLockLabel" {
        top=      25;
        left=     428;
        priority= 6;
        width=  39.6;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Scroll\nLock";
    };
};

};

Comment 6 Benjamin Tissoires 2015-01-30 15:21:38 UTC
(In reply to Peter Hutterer from comment #4)
> either way, if the keyboard sends KEY_F1 etc then that's a kernel issue, the
> kernel should send us the right keymap for multimedia keys. does this thing
> have an Fn key to change the key's function?
> 
> Benjamin, do you know of any layout plans for the chromebook?

I remember having seen someone (Bastien?) working on this. I am not sure we want to solve this in the kernel in the first place. IIRC the keyboard shows up as a regular keyboard, and ChromeOS just remaps F* keys to their shortcuts drawn on them.

Frédéric, could you attach a dmesg output after a fresh boot so we can have an idea if the keybooard is easily identifiable?

Comment 7 Frédéric Parrenin 2015-01-30 18:07:30 UTC
Below is the output of dmesg.
By the way, I am surprised that this chromebook is not better supported by fedora. Chrome os is based on linux and X after all. Is google not contributing to upstream projects? Is there not any way to recopy their settings?

---------------------------------------------------------------

[root@localhost sandrine]# dmesg
[    0.000000] CPU0 microcode updated early to revision 0x18, date = 2014-05-23
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.17.8-300.fc21.x86_64 (mockbuild@bkernel01.phx2.fedoraproject.org) (gcc version 4.9.2 20141101 (Red Hat 4.9.2-1) (GCC) ) #1 SMP Thu Jan 8 23:32:49 UTC 2015
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.17.8-300.fc21.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet quiet splash tpm_tis.force=1 tpm_tis.interrupts=0
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007bebdfff] usable
[    0.000000] BIOS-e820: [mem 0x000000007bebe000-0x000000007e9fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000f0000000-0x00000000f3ffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed10000-0x00000000fed19fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed84000-0x00000000fed84fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x00000001005fffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: GOOGLE Peppy/Peppy, BIOS 4.0-6588-g4acd8ea-dirty 09/04/2014
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] e820: last_pfn = 0x100600 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-FFFFF write-back
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0000000000 mask 7F80000000 write-back
[    0.000000]   1 base 007C800000 mask 7FFF800000 uncachable
[    0.000000]   2 base 007D000000 mask 7FFF000000 uncachable
[    0.000000]   3 base 007E000000 mask 7FFE000000 uncachable
[    0.000000]   4 base 00D0000000 mask 7FF0000000 write-combining
[    0.000000]   5 base 0100000000 mask 7F00000000 write-back
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000]   8 disabled
[    0.000000]   9 disabled
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] e820: last_pfn = 0x7bebe max_arch_pfn = 0x400000000
[    0.000000] Base memory trampoline at [ffff880000099000] 99000 size 24576
[    0.000000] Using GB pages for direct mapping
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] BRK [0x0202c000, 0x0202cfff] PGTABLE
[    0.000000] BRK [0x0202d000, 0x0202dfff] PGTABLE
[    0.000000] BRK [0x0202e000, 0x0202efff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x100400000-0x1005fffff]
[    0.000000]  [mem 0x100400000-0x1005fffff] page 2M
[    0.000000] BRK [0x0202f000, 0x0202ffff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x100000000-0x1003fffff]
[    0.000000]  [mem 0x100000000-0x1003fffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x00100000-0x7bebdfff]
[    0.000000]  [mem 0x00100000-0x001fffff] page 4k
[    0.000000]  [mem 0x00200000-0x7bdfffff] page 2M
[    0.000000]  [mem 0x7be00000-0x7bebdfff] page 4k
[    0.000000] RAMDISK: [mem 0x35b9c000-0x36dc5fff]
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI: RSDP 0x00000000000F6980 000024 (v02 CORE  )
[    0.000000] ACPI: XSDT 0x000000007BFD90E0 000054 (v01 CORE   COREBOOT 00000000 CORE 00000000)
[    0.000000] ACPI: FACP 0x000000007BFDD850 0000F4 (v03 CORE   COREBOOT 00000000 CORE 00000001)
[    0.000000] ACPI: DSDT 0x000000007BFD9250 0045FF (v02 COREv4 COREBOOT 20110725 INTL 20140114)
[    0.000000] ACPI: FACS 0x000000007BFD9210 000040
[    0.000000] ACPI: HPET 0x000000007BFDD950 000038 (v01 CORE   COREBOOT 00000000 CORE 00000000)
[    0.000000] ACPI: APIC 0x000000007BFDD990 00005C (v01 CORE   COREBOOT 00000000 CORE 00000000)
[    0.000000] ACPI: MCFG 0x000000007BFDD9F0 00003C (v01 CORE   COREBOOT 00000000 CORE 00000000)
[    0.000000] ACPI: SSDT 0x000000007BFDEA30 0008A0 (v02 CORE   COREBOOT 0000002A CORE 0000002A)
[    0.000000] ACPI: SSDT 0x000000007BFDF2D0 00005C (v02 CORE   COREBOOT 0000002A CORE 0000002A)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] No NUMA configuration found
[    0.000000] Faking a node at [mem 0x0000000000000000-0x00000001005fffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x1005fffff]
[    0.000000]   NODE_DATA [mem 0x1005ea000-0x1005fdfff]
[    0.000000]  [ffffea0000000000-ffffea00041fffff] PMD -> [ffff880079800000-ffff88007b9fffff] on node 0
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   [mem 0x100000000-0x1005fffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0009efff]
[    0.000000]   node   0: [mem 0x00100000-0x7bebdfff]
[    0.000000]   node   0: [mem 0x100000000-0x1005fffff]
[    0.000000] On node 0 totalpages: 509020
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 21 pages reserved
[    0.000000]   DMA zone: 3998 pages, LIFO batch:0
[    0.000000]   DMA32 zone: 7867 pages used for memmap
[    0.000000]   DMA32 zone: 503486 pages, LIFO batch:31
[    0.000000]   Normal zone: 24 pages used for memmap
[    0.000000]   Normal zone: 1536 pages, LIFO batch:0
[    0.000000] Reserving Intel graphics stolen memory at 0x7ca00000-0x7e9fffff
[    0.000000] ACPI: PM-Timer IO Port: 0x1008
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x02] enabled)
[    0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-39
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] smpboot: Allowing 2 CPUs, 0 hotplug CPUs
[    0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000effff]
[    0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x7bebe000-0x7e9fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x7ea00000-0xefffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xf0000000-0xf3ffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xf4000000-0xfed0ffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed10000-0xfed19fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed1a000-0xfed83fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed84000-0xfed84fff]
[    0.000000] PM: Registered nosave memory: [mem 0xfed85000-0xffffffff]
[    0.000000] e820: [mem 0x7ea00000-0xefffffff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] setup_percpu: NR_CPUS:1024 nr_cpumask_bits:2 nr_cpu_ids:2 nr_node_ids:1
[    0.000000] PERCPU: Embedded 28 pages/cpu @ffff880100200000 s84352 r8192 d22144 u1048576
[    0.000000] pcpu-alloc: s84352 r8192 d22144 u1048576 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 0 1 
[    0.000000] Built 1 zonelists in Node order, mobility grouping on.  Total pages: 501044
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.17.8-300.fc21.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet quiet splash tpm_tis.force=1 tpm_tis.interrupts=0
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] xsave: enabled xstate_bv 0x3, cntxt size 0x240 using standard form
[    0.000000] Memory: 1899380K/2036080K available (7479K kernel code, 1220K rwdata, 3256K rodata, 1468K init, 1540K bss, 136700K reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] 	RCU dyntick-idle grace-period acceleration is enabled.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=1024 to nr_cpu_ids=2.
[    0.000000] 	Offload RCU callbacks from all CPUs
[    0.000000] 	Offload RCU callbacks from CPUs: 0-1.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS:65792 nr_irqs:512 0
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [tty0] enabled
[    0.000000] allocated 8912896 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] hpet clockevent registered
[    0.000000] tsc: Fast TSC calibration using PIT
[    0.000000] tsc: Detected 1396.787 MHz processor
[    0.000046] Calibrating delay loop (skipped), value calculated using timer frequency.. 2793.57 BogoMIPS (lpj=1396787)
[    0.000051] pid_max: default: 32768 minimum: 301
[    0.000062] ACPI: Core revision 20140724
[    0.004167] ACPI: All ACPI Tables successfully acquired
[    0.007025] Security Framework initialized
[    0.007037] SELinux:  Initializing.
[    0.007046] SELinux:  Starting in permissive mode
[    0.007363] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.008013] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.008282] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.008288] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.008543] Initializing cgroup subsys memory
[    0.008550] Initializing cgroup subsys devices
[    0.008553] Initializing cgroup subsys freezer
[    0.008556] Initializing cgroup subsys net_cls
[    0.008558] Initializing cgroup subsys blkio
[    0.008561] Initializing cgroup subsys perf_event
[    0.008564] Initializing cgroup subsys net_prio
[    0.008567] Initializing cgroup subsys hugetlb
[    0.008601] CPU: Physical Processor ID: 0
[    0.008603] CPU: Processor Core ID: 0
[    0.009963] mce: CPU supports 7 MCE banks
[    0.009982] CPU0: Thermal monitoring enabled (TM1)
[    0.009997] Last level iTLB entries: 4KB 1024, 2MB 1024, 4MB 1024
Last level dTLB entries: 4KB 1024, 2MB 1024, 4MB 1024, 1GB 4
[    0.010153] Freeing SMP alternatives memory: 28K (ffffffff81ea2000 - ffffffff81ea9000)
[    0.011542] ftrace: allocating 27255 entries in 107 pages
[    0.030383] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.040386] smpboot: CPU0: Intel(R) Celeron(R) 2955U @ 1.40GHz (fam: 06, model: 45, stepping: 01)
[    0.040395] TSC deadline timer enabled
[    0.040429] Performance Events: PEBS fmt2+, 16-deep LBR, Haswell events, full-width counters, Intel PMU driver.
[    0.040460] ... version:                3
[    0.040462] ... bit width:              48
[    0.040463] ... generic registers:      8
[    0.040465] ... value mask:             0000ffffffffffff
[    0.040466] ... max period:             0000ffffffffffff
[    0.040467] ... fixed-purpose events:   3
[    0.040469] ... event mask:             00000007000000ff
[    0.042547] x86: Booting SMP configuration:
[    0.042550] .... node  #0, CPUs:      #1
[    0.054745] CPU1 microcode updated early to revision 0x18, date = 2014-05-23
[    0.058301] x86: Booted up 1 node, 2 CPUs
[    0.058305] smpboot: Total of 2 processors activated (5587.14 BogoMIPS)
[    0.058341] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[    0.060455] devtmpfs: initialized
[    0.064596] atomic64_test: passed for x86-64 platform with CX8 and with SSE
[    0.064603] pinctrl core: initialized pinctrl subsystem
[    0.064667] RTC time: 18:02:02, date: 01/30/15
[    0.064797] NET: Registered protocol family 16
[    0.065007] cpuidle: using governor menu
[    0.065126] ACPI: bus type PCI registered
[    0.065129] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.065230] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xf0000000-0xf3ffffff] (base 0xf0000000)
[    0.065233] PCI: MMCONFIG at [mem 0xf0000000-0xf3ffffff] reserved in E820
[    0.065369] PCI: Using configuration type 1 for base access
[    0.070753] ACPI: Added _OSI(Module Device)
[    0.070756] ACPI: Added _OSI(Processor Device)
[    0.070758] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.070760] ACPI: Added _OSI(Processor Aggregator Device)
[    0.077284] ACPI: Interpreter enabled
[    0.077293] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20140724/hwxface-580)
[    0.077299] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20140724/hwxface-580)
[    0.077319] ACPI: (supports S0 S3 S4 S5)
[    0.077321] ACPI: Using IOAPIC for interrupt routing
[    0.077348] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.084886] ACPI: Power Resource [TNP0] (off)
[    0.084929] ACPI: Power Resource [TNP1] (on)
[    0.085537] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.085544] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[    0.085591] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME AER PCIeCapability]
[    0.085710] acpi PNP0A08:00: ignoring host bridge window [mem 0x000cc000-0x000cffff] (conflicts with Video ROM [mem 0x000c0000-0x000cebff])
[    0.085717] acpi PNP0A08:00: [Firmware Info]: MMCONFIG for domain 0000 [bus 00-3f] only partially covers this bridge
[    0.085928] PCI host bridge to bus 0000:00
[    0.085932] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.085935] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7]
[    0.085937] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.085939] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.085942] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000c3fff]
[    0.085944] pci_bus 0000:00: root bus resource [mem 0x000c4000-0x000c7fff]
[    0.085946] pci_bus 0000:00: root bus resource [mem 0x000c8000-0x000cbfff]
[    0.085948] pci_bus 0000:00: root bus resource [mem 0x000d0000-0x000d3fff]
[    0.085950] pci_bus 0000:00: root bus resource [mem 0x000d4000-0x000d7fff]
[    0.085953] pci_bus 0000:00: root bus resource [mem 0x000d8000-0x000dbfff]
[    0.085955] pci_bus 0000:00: root bus resource [mem 0x000dc000-0x000dffff]
[    0.085957] pci_bus 0000:00: root bus resource [mem 0x000e0000-0x000e3fff]
[    0.085959] pci_bus 0000:00: root bus resource [mem 0x000e4000-0x000e7fff]
[    0.085961] pci_bus 0000:00: root bus resource [mem 0x000e8000-0x000ebfff]
[    0.085963] pci_bus 0000:00: root bus resource [mem 0x000ec000-0x000effff]
[    0.085966] pci_bus 0000:00: root bus resource [mem 0x000f0000-0x000fffff]
[    0.085968] pci_bus 0000:00: root bus resource [mem 0x7ea00001-0xfebfffff]
[    0.085970] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed44fff]
[    0.085981] pci 0000:00:00.0: [8086:0a04] type 00 class 0x060000
[    0.086108] pci 0000:00:02.0: [8086:0a06] type 00 class 0x030000
[    0.086125] pci 0000:00:02.0: reg 0x10: [mem 0xe0000000-0xe03fffff 64bit]
[    0.086135] pci 0000:00:02.0: reg 0x18: [mem 0xd0000000-0xdfffffff 64bit pref]
[    0.086143] pci 0000:00:02.0: reg 0x20: [io  0x1800-0x183f]
[    0.086257] pci 0000:00:03.0: [8086:0a0c] type 00 class 0x040300
[    0.086270] pci 0000:00:03.0: reg 0x10: [mem 0xe0510000-0xe0513fff 64bit]
[    0.086418] pci 0000:00:14.0: [8086:9c31] type 00 class 0x0c0330
[    0.086440] pci 0000:00:14.0: reg 0x10: [mem 0xe0500000-0xe050ffff 64bit]
[    0.086509] pci 0000:00:14.0: PME# supported from D3hot D3cold
[    0.086561] pci 0000:00:14.0: System wakeup disabled by ACPI
[    0.086615] pci 0000:00:15.0: [8086:9c60] type 00 class 0x080102
[    0.086635] pci 0000:00:15.0: reg 0x10: [mem 0xe0518000-0xe0518fff]
[    0.086647] pci 0000:00:15.0: reg 0x14: [mem 0xe0519000-0xe0519fff]
[    0.086806] pci 0000:00:15.1: [8086:9c61] type 00 class 0x0c8000
[    0.086826] pci 0000:00:15.1: reg 0x10: [mem 0xe051a000-0xe051afff]
[    0.086838] pci 0000:00:15.1: reg 0x14: [mem 0xe051b000-0xe051bfff]
[    0.086994] pci 0000:00:15.2: [8086:9c62] type 00 class 0x0c8000
[    0.087014] pci 0000:00:15.2: reg 0x10: [mem 0xe051c000-0xe051cfff]
[    0.087026] pci 0000:00:15.2: reg 0x14: [mem 0xe051d000-0xe051dfff]
[    0.087195] pci 0000:00:1b.0: [8086:9c20] type 00 class 0x040300
[    0.087213] pci 0000:00:1b.0: reg 0x10: [mem 0xe0514000-0xe0517fff 64bit]
[    0.087291] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.087346] pci 0000:00:1b.0: System wakeup disabled by ACPI
[    0.087394] pci 0000:00:1c.0: [8086:9c10] type 01 class 0x060400
[    0.087470] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.087581] pci 0000:00:1d.0: [8086:9c26] type 00 class 0x0c0320
[    0.087605] pci 0000:00:1d.0: reg 0x10: [mem 0xe051f800-0xe051fbff]
[    0.087706] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[    0.087761] pci 0000:00:1d.0: System wakeup disabled by ACPI
[    0.087813] pci 0000:00:1f.0: [8086:9c45] type 00 class 0x060100
[    0.088020] pci 0000:00:1f.2: [8086:9c03] type 00 class 0x010601
[    0.088038] pci 0000:00:1f.2: reg 0x10: [io  0x1860-0x1867]
[    0.088047] pci 0000:00:1f.2: reg 0x14: [io  0x1870-0x1873]
[    0.088055] pci 0000:00:1f.2: reg 0x18: [io  0x1868-0x186f]
[    0.088064] pci 0000:00:1f.2: reg 0x1c: [io  0x1874-0x1877]
[    0.088073] pci 0000:00:1f.2: reg 0x20: [io  0x1840-0x185f]
[    0.088082] pci 0000:00:1f.2: reg 0x24: [mem 0xe051f000-0xe051f7ff]
[    0.088124] pci 0000:00:1f.2: PME# supported from D3hot
[    0.088214] pci 0000:00:1f.3: [8086:9c22] type 00 class 0x0c0500
[    0.088231] pci 0000:00:1f.3: reg 0x10: [mem 0xe051fc00-0xe051fcff 64bit]
[    0.088255] pci 0000:00:1f.3: reg 0x20: [io  0x0400-0x041f]
[    0.088371] pci 0000:00:1f.6: [8086:9c24] type 00 class 0x118000
[    0.088405] pci 0000:00:1f.6: reg 0x10: [mem 0xe051e000-0xe051efff 64bit]
[    0.088671] pci 0000:01:00.0: [168c:0034] type 00 class 0x028000
[    0.088699] pci 0000:01:00.0: reg 0x10: [mem 0xe0400000-0xe047ffff 64bit]
[    0.088758] pci 0000:01:00.0: reg 0x30: [mem 0xe0480000-0xe048ffff pref]
[    0.088831] pci 0000:01:00.0: supports D1 D2
[    0.088834] pci 0000:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.090327] pci 0000:00:1c.0: PCI bridge to [bus 01]
[    0.090333] pci 0000:00:1c.0:   bridge window [mem 0xe0400000-0xe04fffff]
[    0.090461] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 7 10 12 14 15) *11, disabled.
[    0.090520] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10, disabled.
[    0.090573] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 12 14 15) *11, disabled.
[    0.090625] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 *11 12 14 15), disabled.
[    0.090676] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled.
[    0.090728] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *0, disabled.
[    0.090779] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled.
[    0.090830] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 11 12 14 15) *0, disabled.
[    0.091592] ACPI : EC: GPE = 0x24, I/O: command/status = 0x66, data = 0x62
[    0.091733] vgaarb: setting as boot device: PCI:0000:00:02.0
[    0.091736] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.091740] vgaarb: loaded
[    0.091742] vgaarb: bridge control possible 0000:00:02.0
[    0.091839] SCSI subsystem initialized
[    0.091892] libata version 3.00 loaded.
[    0.091929] ACPI: bus type USB registered
[    0.091955] usbcore: registered new interface driver usbfs
[    0.091967] usbcore: registered new interface driver hub
[    0.092000] usbcore: registered new device driver usb
[    0.092111] PCI: Using ACPI for IRQ routing
[    0.093738] PCI: pci_cache_line_size set to 64 bytes
[    0.093792] e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
[    0.093794] e820: reserve RAM buffer [mem 0x7bebe000-0x7bffffff]
[    0.093796] e820: reserve RAM buffer [mem 0x100600000-0x103ffffff]
[    0.093949] NetLabel: Initializing
[    0.093951] NetLabel:  domain hash size = 128
[    0.093952] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.093968] NetLabel:  unlabeled traffic allowed by default
[    0.094053] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[    0.094061] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[    0.096099] Switched to clocksource hpet
[    0.105055] pnp: PnP ACPI init
[    0.105189] system 00:00: [mem 0xfed1c000-0xfed1ffff] has been reserved
[    0.105192] system 00:00: [mem 0xfed10000-0xfed17fff] has been reserved
[    0.105195] system 00:00: [mem 0xfed18000-0xfed18fff] has been reserved
[    0.105198] system 00:00: [mem 0xfed19000-0xfed19fff] has been reserved
[    0.105200] system 00:00: [mem 0xf0000000-0xf3ffffff] has been reserved
[    0.105203] system 00:00: [mem 0xfed20000-0xfed3ffff] has been reserved
[    0.105206] system 00:00: [mem 0xfed40000-0xfed44fff] has been reserved
[    0.105208] system 00:00: [mem 0xfed45000-0xfed8ffff] could not be reserved
[    0.105213] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.105499] system 00:01: [mem 0xfed00000-0xfed003ff] has been reserved
[    0.105503] system 00:01: Plug and Play ACPI device, IDs PNP0103 PNP0c01 (active)
[    0.105578] system 00:02: [io  0x1000-0x10fe] could not be reserved
[    0.105581] system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.105611] pnp 00:03: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.105663] system 00:04: [io  0x0900-0x09fe] has been reserved
[    0.105666] system 00:04: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.105711] system 00:05: [io  0x0200] has been reserved
[    0.105713] system 00:05: [io  0x0204] has been reserved
[    0.105716] system 00:05: [io  0x0800-0x087f] has been reserved
[    0.105718] system 00:05: [io  0x0880-0x08ff] has been reserved
[    0.105721] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.105765] pnp 00:06: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.105803] pnp 00:07: Plug and Play ACPI device, IDs PNP0303 PNP030b (active)
[    0.105907] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.106033] pnp: PnP ACPI: found 9 devices
[    0.113007] pci 0000:00:1c.0: PCI bridge to [bus 01]
[    0.113015] pci 0000:00:1c.0:   bridge window [mem 0xe0400000-0xe04fffff]
[    0.113025] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7]
[    0.113028] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff]
[    0.113030] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
[    0.113032] pci_bus 0000:00: resource 7 [mem 0x000c0000-0x000c3fff]
[    0.113035] pci_bus 0000:00: resource 8 [mem 0x000c4000-0x000c7fff]
[    0.113037] pci_bus 0000:00: resource 9 [mem 0x000c8000-0x000cbfff]
[    0.113039] pci_bus 0000:00: resource 10 [mem 0x000d0000-0x000d3fff]
[    0.113041] pci_bus 0000:00: resource 11 [mem 0x000d4000-0x000d7fff]
[    0.113043] pci_bus 0000:00: resource 12 [mem 0x000d8000-0x000dbfff]
[    0.113046] pci_bus 0000:00: resource 13 [mem 0x000dc000-0x000dffff]
[    0.113048] pci_bus 0000:00: resource 14 [mem 0x000e0000-0x000e3fff]
[    0.113050] pci_bus 0000:00: resource 15 [mem 0x000e4000-0x000e7fff]
[    0.113052] pci_bus 0000:00: resource 16 [mem 0x000e8000-0x000ebfff]
[    0.113054] pci_bus 0000:00: resource 17 [mem 0x000ec000-0x000effff]
[    0.113057] pci_bus 0000:00: resource 18 [mem 0x000f0000-0x000fffff]
[    0.113059] pci_bus 0000:00: resource 19 [mem 0x7ea00001-0xfebfffff]
[    0.113061] pci_bus 0000:00: resource 20 [mem 0xfed40000-0xfed44fff]
[    0.113064] pci_bus 0000:01: resource 1 [mem 0xe0400000-0xe04fffff]
[    0.113109] NET: Registered protocol family 2
[    0.113362] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[    0.113421] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
[    0.113469] TCP: Hash tables configured (established 16384 bind 16384)
[    0.113494] TCP: reno registered
[    0.113501] UDP hash table entries: 1024 (order: 3, 32768 bytes)
[    0.113516] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
[    0.113579] NET: Registered protocol family 1
[    0.113599] pci 0000:00:02.0: Video device with shadowed ROM
[    0.114084] PCI: CLS 64 bytes, default 64
[    0.114154] Unpacking initramfs...
[    0.550469] Freeing initrd memory: 18600K (ffff880035b9c000 - ffff880036dc6000)
[    0.550482] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.550486] software IO TLB [mem 0x75800000-0x79800000] (64MB) mapped at [ffff880075800000-ffff8800797fffff]
[    0.550708] RAPL PMU detected, hw unit 2^-14 Joules, API unit is 2^-32 Joules, 4 fixed counters 655360 ms ovfl timer
[    0.550766] microcode: CPU0 sig=0x40651, pf=0x40, revision=0x18
[    0.550776] microcode: CPU1 sig=0x40651, pf=0x40, revision=0x18
[    0.550842] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    0.551470] futex hash table entries: 512 (order: 3, 32768 bytes)
[    0.551489] Initialise system trusted keyring
[    0.551534] audit: initializing netlink subsys (disabled)
[    0.551551] audit: type=2000 audit(1422640922.538:1): initialized
[    0.552028] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    0.554033] zpool: loaded
[    0.554038] zbud: loaded
[    0.554312] VFS: Disk quotas dquot_6.5.2
[    0.554366] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.554852] msgmni has been set to 3746
[    0.554932] Key type big_key registered
[    0.554936] SELinux:  Registering netfilter hooks
[    0.556033] alg: No test for stdrng (krng)
[    0.556046] NET: Registered protocol family 38
[    0.556059] Key type asymmetric registered
[    0.556064] Asymmetric key parser 'x509' registered
[    0.556123] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    0.556164] io scheduler noop registered
[    0.556169] io scheduler deadline registered
[    0.556213] io scheduler cfq registered (default)
[    0.556499] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X
[    0.556624] aer 0000:00:1c.0:pcie02: service driver aer loaded
[    0.556643] pcieport 0000:00:1c.0: Signaling PME through PCIe PME interrupt
[    0.556646] pci 0000:01:00.0: Signaling PME through PCIe PME interrupt
[    0.556650] pcie_pme 0000:00:1c.0:pcie01: service driver pcie_pme loaded
[    0.556669] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[    0.556690] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[    0.556750] intel_idle: MWAIT substates: 0x11142120
[    0.556753] intel_idle: v0.4 model 0x45
[    0.556754] intel_idle: lapic_timer_reliable_states 0xffffffff
[    0.557000] ACPI: AC Adapter [AC] (off-line)
[    0.557119] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
[    0.557146] ACPI: Lid Switch [LID0]
[    0.557196] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1
[    0.557200] ACPI: Power Button [PWRB]
[    0.557245] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input2
[    0.557248] ACPI: Sleep Button [TPAD]
[    0.557292] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:01/input/input3
[    0.557295] ACPI: Sleep Button [TSCR]
[    0.557353] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input4
[    0.557356] ACPI: Power Button [PWRF]
[    0.557431] ACPI: Fan [TDP0] (off)
[    0.557470] ACPI: Fan [TDP1] (on)
[    0.558276] thermal LNXTHERM:00: registered as thermal_zone0
[    0.558279] ACPI: Thermal Zone [THRM] (38 C)
[    0.558322] GHES: HEST is not enabled!
[    0.558424] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.558845] ACPI: Battery Slot [BAT0] (battery present)
[    0.559067] Non-volatile memory driver v1.3
[    0.559074] Linux agpgart interface v0.103
[    0.559244] ahci 0000:00:1f.2: version 3.0
[    0.559400] ahci 0000:00:1f.2: irq 41 for MSI/MSI-X
[    0.559418] ahci 0000:00:1f.2: SSS flag set, parallel bus scan disabled
[    0.559435] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 2 ports 6 Gbps 0x1 impl SATA mode
[    0.559439] ahci 0000:00:1f.2: flags: 64bit ncq ilck stag pm led clo only pio slum part deso sadm sds apst 
[    0.559791] scsi host0: ahci
[    0.560001] scsi host1: ahci
[    0.560066] ata1: SATA max UDMA/133 abar m2048@0xe051f000 port 0xe051f100 irq 41
[    0.560068] ata2: DUMMY
[    0.560173] libphy: Fixed MDIO Bus: probed
[    0.560270] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.560275] ehci-pci: EHCI PCI platform driver
[    0.560425] ehci-pci 0000:00:1d.0: EHCI Host Controller
[    0.560500] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 1
[    0.560514] ehci-pci 0000:00:1d.0: debug port 2
[    0.564410] ehci-pci 0000:00:1d.0: cache line size of 64 is not supported
[    0.564427] ehci-pci 0000:00:1d.0: irq 19, io mem 0xe051f800
[    0.570033] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[    0.570093] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    0.570096] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.570098] usb usb1: Product: EHCI Host Controller
[    0.570100] usb usb1: Manufacturer: Linux 3.17.8-300.fc21.x86_64 ehci_hcd
[    0.570102] usb usb1: SerialNumber: 0000:00:1d.0
[    0.570267] hub 1-0:1.0: USB hub found
[    0.570274] hub 1-0:1.0: 2 ports detected
[    0.570408] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.570414] ohci-pci: OHCI PCI platform driver
[    0.570428] uhci_hcd: USB Universal Host Controller Interface driver
[    0.570588] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    0.570668] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[    0.570759] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[    0.570777] xhci_hcd 0000:00:14.0: irq 42 for MSI/MSI-X
[    0.570840] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[    0.570842] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.570844] usb usb2: Product: xHCI Host Controller
[    0.570847] usb usb2: Manufacturer: Linux 3.17.8-300.fc21.x86_64 xhci_hcd
[    0.570849] usb usb2: SerialNumber: 0000:00:14.0
[    0.571008] hub 2-0:1.0: USB hub found
[    0.571027] hub 2-0:1.0: 8 ports detected
[    0.571307] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    0.571378] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 3
[    0.571416] usb usb3: New USB device found, idVendor=1d6b, idProduct=0003
[    0.571419] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.571421] usb usb3: Product: xHCI Host Controller
[    0.571423] usb usb3: Manufacturer: Linux 3.17.8-300.fc21.x86_64 xhci_hcd
[    0.571425] usb usb3: SerialNumber: 0000:00:14.0
[    0.571577] hub 3-0:1.0: USB hub found
[    0.571587] hub 3-0:1.0: 4 ports detected
[    0.571799] usbcore: registered new interface driver usbserial
[    0.571808] usbcore: registered new interface driver usbserial_generic
[    0.571818] usbserial: USB Serial support registered for generic
[    0.571857] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
[    0.571859] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
[    0.572403] i8042: Warning: Keylock active
[    0.572541] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.572661] mousedev: PS/2 mouse device common for all mice
[    0.572999] rtc_cmos 00:03: RTC can wake from S4
[    0.573191] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0
[    0.573223] rtc_cmos 00:03: alarms up to one month, 242 bytes nvram, hpet irqs
[    0.573319] device-mapper: uevent: version 1.0.3
[    0.573410] device-mapper: ioctl: 4.27.0-ioctl (2013-10-30) initialised: dm-devel@redhat.com
[    0.573499] Intel P-state driver initializing.
[    0.573846] hidraw: raw HID events driver (C) Jiri Kosina
[    0.574224] usbcore: registered new interface driver usbhid
[    0.574227] usbhid: USB HID core driver
[    0.574363] drop_monitor: Initializing network drop monitor service
[    0.574535] ip_tables: (C) 2000-2006 Netfilter Core Team
[    0.574623] TCP: cubic registered
[    0.574638] Initializing XFRM netlink socket
[    0.574904] NET: Registered protocol family 10
[    0.575349] mip6: Mobile IPv6
[    0.575359] NET: Registered protocol family 17
[    0.575600] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input5
[    0.576246] Loading compiled-in X.509 certificates
[    0.578607] Loaded X.509 cert 'Fedora kernel signing key: f48ffca3c962d6470f1a63e032d1f5f1932a036a'
[    0.578652] registered taskstats version 1
[    0.579249]   Magic number: 15:95:40
[    0.579368] rtc_cmos 00:03: setting system clock to 2015-01-30 18:02:03 UTC (1422640923)
[    0.579497] PM: Hibernation image not present or could not be loaded.
[    0.865055] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    0.865312] ata1.00: ATA-10: SC2 M2 SSD, S9FM01.9, max UDMA/133
[    0.865318] ata1.00: 234441648 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[    0.865603] ata1.00: configured for UDMA/133
[    0.865807] scsi 0:0:0:0: Direct-Access     ATA      SC2 M2 SSD       01.9 PQ: 0 ANSI: 5
[    0.866140] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    0.866159] sd 0:0:0:0: [sda] 234441648 512-byte logical blocks: (120 GB/111 GiB)
[    0.866272] sd 0:0:0:0: [sda] Write Protect is off
[    0.866276] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    0.866293] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    0.866652]  sda: sda1
[    0.866904] sd 0:0:0:0: [sda] Attached SCSI disk
[    0.868368] Freeing unused kernel memory: 1468K (ffffffff81d33000 - ffffffff81ea2000)
[    0.868371] Write protecting the kernel read-only data: 12288k
[    0.871008] Freeing unused kernel memory: 700K (ffff880001751000 - ffff880001800000)
[    0.872042] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    0.873765] Freeing unused kernel memory: 840K (ffff880001b2e000 - ffff880001c00000)
[    0.875938] random: systemd urandom read with 11 bits of entropy available
[    0.986275] usb 1-1: New USB device found, idVendor=8087, idProduct=8000
[    0.986280] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    0.986564] hub 1-1:1.0: USB hub found
[    0.986647] hub 1-1:1.0: 8 ports detected
[    1.140979] usb 2-3: new high-speed USB device number 2 using xhci_hcd
[    1.206695] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    1.206857] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input6
[    1.217046] sdhci: Secure Digital Host Controller Interface driver
[    1.217051] sdhci: Copyright(c) Pierre Ossman
[    1.272993] [drm] Initialized drm 1.1.0 20060810
[    1.372112] usb 2-3: New USB device found, idVendor=1bcf, idProduct=2c67
[    1.372118] usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.372121] usb 2-3: Product: HD WebCam
[    1.372123] usb 2-3: Manufacturer: SunplusIT Inc
[    1.382429] [drm] Memory usable by graphics device = 2048M
[    1.382434] [drm] Replacing VGA console driver
[    1.383795] Console: switching to colour dummy device 80x25
[    1.384739] i915 0000:00:02.0: irq 43 for MSI/MSI-X
[    1.384750] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    1.384752] [drm] Driver supports precise vblank timestamp query.
[    1.384791] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    1.384843] [drm] applying backlight present quirk
[    1.418832] [drm] VBT doesn't support DRRS
[    1.431923] fbcon: inteldrmfb (fb0) is primary device
[    1.550943] tsc: Refined TSC clocksource calibration: 1396.766 MHz
[    1.598013] usb 2-4: new full-speed USB device number 3 using xhci_hcd
[    1.763728] usb 2-4: string descriptor 0 malformed (err = -61), defaulting to 0x0409
[    1.766026] usb 2-4: New USB device found, idVendor=0489, idProduct=e056
[    1.766030] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    2.490771] Console: switching to colour frame buffer device 170x48
[    2.494873] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[    2.494874] i915 0000:00:02.0: registered panic notifier
[    2.500936] [drm] Initialized i915 1.6.0 20140725 for 0000:00:02.0 on minor 0
[    2.550770] Switched to clocksource tsc
[    2.687443] PM: Starting manual resume from disk
[    2.687450] PM: Hibernation image partition 253:0 present
[    2.687452] PM: Looking for hibernation image.
[    2.687630] PM: Image not found (code -22)
[    2.687632] PM: Hibernation image not present or could not be loaded.
[    2.702837] EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: (null)
[    3.012495] systemd-journald[99]: Received SIGTERM from PID 1 (systemd).
[    3.076200] audit: type=1404 audit(1422640925.995:2): enforcing=1 old_enforcing=0 auid=4294967295 ses=4294967295
[    3.105547] SELinux: 2048 avtab hash slots, 104326 rules.
[    3.130643] SELinux: 2048 avtab hash slots, 104326 rules.
[    3.176280] SELinux:  8 users, 102 roles, 4981 types, 294 bools, 1 sens, 1024 cats
[    3.176285] SELinux:  83 classes, 104326 rules
[    3.182415] SELinux:  Permission audit_read in class capability2 not defined in policy.
[    3.182424] SELinux: the above unknown classes and permissions will be allowed
[    3.182434] SELinux:  Completing initialization.
[    3.182435] SELinux:  Setting up existing superblocks.
[    3.182444] SELinux: initialized (dev rootfs, type rootfs), uses genfs_contexts
[    3.182455] SELinux: initialized (dev bdev, type bdev), uses genfs_contexts
[    3.182462] SELinux: initialized (dev proc, type proc), uses genfs_contexts
[    3.182542] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs
[    3.182591] SELinux: initialized (dev devtmpfs, type devtmpfs), uses transition SIDs
[    3.183254] SELinux: initialized (dev debugfs, type debugfs), uses genfs_contexts
[    3.184362] SELinux: initialized (dev sockfs, type sockfs), uses task SIDs
[    3.184366] SELinux: initialized (dev pipefs, type pipefs), uses task SIDs
[    3.184372] SELinux: initialized (dev anon_inodefs, type anon_inodefs), uses genfs_contexts
[    3.184375] SELinux: initialized (dev aio, type aio), not configured for labeling
[    3.184379] SELinux: initialized (dev devpts, type devpts), uses transition SIDs
[    3.184400] SELinux: initialized (dev hugetlbfs, type hugetlbfs), uses transition SIDs
[    3.184407] SELinux: initialized (dev mqueue, type mqueue), uses transition SIDs
[    3.184417] SELinux: initialized (dev selinuxfs, type selinuxfs), uses genfs_contexts
[    3.184430] SELinux: initialized (dev sysfs, type sysfs), uses genfs_contexts
[    3.184738] SELinux: initialized (dev securityfs, type securityfs), uses genfs_contexts
[    3.184741] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs
[    3.184748] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs
[    3.184849] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs
[    3.184886] SELinux: initialized (dev cgroup, type cgroup), uses genfs_contexts
[    3.184892] SELinux: initialized (dev pstore, type pstore), uses genfs_contexts
[    3.184894] SELinux: initialized (dev cgroup, type cgroup), uses genfs_contexts
[    3.184897] SELinux: initialized (dev cgroup, type cgroup), uses genfs_contexts
[    3.184900] SELinux: initialized (dev cgroup, type cgroup), uses genfs_contexts
[    3.184907] SELinux: initialized (dev cgroup, type cgroup), uses genfs_contexts
[    3.184912] SELinux: initialized (dev cgroup, type cgroup), uses genfs_contexts
[    3.184914] SELinux: initialized (dev cgroup, type cgroup), uses genfs_contexts
[    3.184916] SELinux: initialized (dev cgroup, type cgroup), uses genfs_contexts
[    3.184924] SELinux: initialized (dev cgroup, type cgroup), uses genfs_contexts
[    3.184926] SELinux: initialized (dev cgroup, type cgroup), uses genfs_contexts
[    3.184930] SELinux: initialized (dev configfs, type configfs), uses genfs_contexts
[    3.184934] SELinux: initialized (dev drm, type drm), not configured for labeling
[    3.184942] SELinux: initialized (dev dm-1, type ext4), uses xattr
[    3.189675] audit: type=1403 audit(1422640926.109:3): policy loaded auid=4294967295 ses=4294967295
[    3.197609] systemd[1]: Successfully loaded SELinux policy in 124.798ms.
[    3.243176] systemd[1]: Relabelled /dev and /run in 24.564ms.
[    3.297702] random: nonblocking pool is initialized
[    3.407686] SELinux: initialized (dev autofs, type autofs), uses genfs_contexts
[    3.442347] SELinux: initialized (dev hugetlbfs, type hugetlbfs), uses transition SIDs
[    3.462490] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs
[    3.501707] RPC: Registered named UNIX socket transport module.
[    3.501712] RPC: Registered udp transport module.
[    3.501714] RPC: Registered tcp transport module.
[    3.501716] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    3.502100] SELinux: initialized (dev rpc_pipefs, type rpc_pipefs), uses genfs_contexts
[    3.565833] EXT4-fs (dm-1): re-mounted. Opts: (null)
[    3.609239] systemd-journald[461]: Received request to flush runtime journal from PID 1
[    3.700181] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[    3.700777] SELinux: initialized (dev nfsd, type nfsd), uses genfs_contexts
[    3.924693] acpi INT33C2:00: Cannot transition to non-D0 state from D3
[    3.935973] acpi INT33C3:00: Cannot transition to non-D0 state from D3
[    3.936847] dw_dmac_pci: probe of 0000:00:15.0 failed with error -2
[    3.936883] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    4.049810] i801_smbus 0000:00:1f.3: SMBus using PCI Interrupt
[    4.101832] media: Linux media interface: v0.10
[    4.203483] alg: No test for crc32 (crc32-pclmul)
[    4.253452] snd_hda_intel 0000:00:03.0: irq 44 for MSI/MSI-X
[    4.257338] Linux video capture interface: v2.00
[    4.258989] snd_hda_intel 0000:00:1b.0: irq 45 for MSI/MSI-X
[    4.283688] input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card0/input7
[    4.283825] input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card0/input8
[    4.283908] input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card0/input9
[    4.317213] sound hdaudioC1D0: autoconfig: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[    4.317219] sound hdaudioC1D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    4.317222] sound hdaudioC1D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    4.317224] sound hdaudioC1D0:    mono: mono_out=0x0
[    4.317226] sound hdaudioC1D0:    inputs:
[    4.317228] sound hdaudioC1D0:      Internal Mic=0x1a
[    4.317231] sound hdaudioC1D0:      Mic=0x19
[    4.327867] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1b.0/sound/card1/input10
[    4.327968] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card1/input11
[    4.404923] uvcvideo: Found UVC 1.00 device HD WebCam (1bcf:2c67)
[    4.413568] input: HD WebCam as /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0/input/input12
[    4.413666] usbcore: registered new interface driver uvcvideo
[    4.413668] USB Video Class driver (1.1.1)
[    4.433486] iTCO_vendor_support: vendor-support=0
[    4.441753] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.11
[    4.441795] iTCO_wdt: Found a Lynx Point_LP TCO device (Version=2, TCOBASE=0x1060)
[    4.444008] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
[    4.472677] atmel_mxt_ts 8-004a: Direct firmware load for maxtouch.cfg failed with error -2
[    4.474875] input: Atmel maXTouch Touchscreen as /devices/pci0000:00/0000:00:15.2/i2c-8/8-004a/input/input13
[    4.477332] atmel_mxt_ts 8-004a: Family: 162 Variant: 0 Firmware V2.0.AB Objects: 33
[    4.514683] cfg80211: Calling CRDA to update world regulatory domain
[    4.524727] Adding 8388604k swap on /dev/mapper/fedora-swap.  Priority:-1 extents:1 across:8388604k SSFS
[    4.527500] Bluetooth: Core ver 2.19
[    4.527525] NET: Registered protocol family 31
[    4.527527] Bluetooth: HCI device and connection manager initialized
[    4.527602] Bluetooth: HCI socket layer initialized
[    4.527605] Bluetooth: L2CAP socket layer initialized
[    4.527614] Bluetooth: SCO socket layer initialized
[    4.548806] usbcore: registered new interface driver btusb
[    4.575709] intel_rapl: Found RAPL domain package
[    4.575714] intel_rapl: Found RAPL domain core
[    4.575717] intel_rapl: Found RAPL domain uncore
[    4.575719] intel_rapl: Found RAPL domain dram
[    4.599855] cfg80211: World regulatory domain updated:
[    4.599861] cfg80211:  DFS Master region: unset
[    4.599863] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[    4.599867] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[    4.599869] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[    4.599871] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A)
[    4.599874] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (N/A)
[    4.599876] cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s)
[    4.599879] cfg80211:   (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s)
[    4.599881] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[    4.599883] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A)
[    4.606604] usb 2-4: USB disconnect, device number 3
[    4.606988] usbcore: registered new interface driver ath3k
[    4.614244] input: Cypress APA Trackpad (cyapa) as /devices/pci0000:00/0000:00:15.1/i2c-7/7-0067/input/input14
[    4.642910] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: (null)
[    4.642922] SELinux: initialized (dev dm-2, type ext4), uses xattr
[    4.761159] audit: type=1305 audit(1422640927.680:4): audit_pid=601 old=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:auditd_t:s0 res=1
[    4.805659] ath: phy0: ASPM enabled: 0x43
[    4.805665] ath: EEPROM regdomain: 0x6c
[    4.805667] ath: EEPROM indicates we should expect a direct regpair map
[    4.805670] ath: Country alpha2 being used: 00
[    4.805671] ath: Regpair used: 0x6c
[    4.824993] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[    4.825993] ieee80211 phy0: Atheros AR9462 Rev:2 mem=0xffffc90016400000, irq=16
[    4.855051] ath9k 0000:01:00.0 wlp1s0: renamed from wlan0
[    4.890754] usb 2-4: new full-speed USB device number 4 using xhci_hcd
[    4.940243] cfg80211: Calling CRDA for country: FR
[    4.949787] cfg80211: Regulatory domain changed to country: FR
[    4.949793] cfg80211:  DFS Master region: ETSI
[    4.949795] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[    4.949798] cfg80211:   (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[    4.949801] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (N/A)
[    4.949804] cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s)
[    4.949806] cfg80211:   (5490000 KHz - 5710000 KHz @ 160000 KHz), (N/A, 2700 mBm), (0 s)
[    4.949809] cfg80211:   (57000000 KHz - 66000000 KHz @ 2160000 KHz), (N/A, 4000 mBm), (N/A)
[    5.060919] usb 2-4: string descriptor 0 malformed (err = -61), defaulting to 0x0409
[    5.065570] usb 2-4: New USB device found, idVendor=0489, idProduct=e056
[    5.065575] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    5.223787] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    5.223792] Bluetooth: BNEP filters: protocol multicast
[    5.223804] Bluetooth: BNEP socket layer initialized
[    5.236627] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs
[    5.307004] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[    5.333744] ip6_tables: (C) 2000-2006 Netfilter Core Team
[    5.390280] Ebtables v2.0 registered
[    5.417151] Bridge firewalling registered
[    5.690562] IPv6: ADDRCONF(NETDEV_UP): wlp1s0: link is not ready
[    7.479562] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs
[    8.304268] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs
[   11.825066] wlp1s0: authenticate with c0:d9:62:68:2b:f7
[   11.836035] wlp1s0: send auth to c0:d9:62:68:2b:f7 (try 1/3)
[   11.837999] wlp1s0: authenticated
[   11.839164] wlp1s0: associate with c0:d9:62:68:2b:f7 (try 1/3)
[   11.843123] wlp1s0: RX AssocResp from c0:d9:62:68:2b:f7 (capab=0x1411 status=0 aid=3)
[   11.843233] wlp1s0: associated
[   11.843267] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready
[   16.106331] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SIDs
[   17.160351] fuse init (API version 7.23)
[   17.181919] SELinux: initialized (dev fuse, type fuse), uses genfs_contexts
[   17.503330] Bluetooth: RFCOMM TTY layer initialized
[   17.503347] Bluetooth: RFCOMM socket layer initialized
[   17.503574] Bluetooth: RFCOMM ver 1.11

Comment 8 Benjamin Tissoires 2015-02-02 15:29:19 UTC
So, the keyboard seems to be a perfectly classic PS/2 one, so that means that the tweaks have to be put in hwdb.

We already have one for HP chromebooks:
http://cgit.freedesktop.org/systemd/systemd/tree/hwdb/60-keyboard.hwdb#n460

And we should adapt this rule for yours.

Peter, would it be complicate to extract the key codes from the above and generate the correct hwdb rule?

Re-assigning to systemd/hwdb

Comment 9 Guillaume Poirier-Morency 2015-04-01 06:21:03 UTC
These are the function keys and what they should be mapped to in hwdb:

Keycodes are in decimal (tip: 66 = 42)

key      code  hwdb
<CAPS> = 66; # search
<FK01> = 67; # back
<FK02> = 68; # forward
<FK03> = 69; # refresh
<FK04> = 70; # switchvideomode
<FK05> = 71; #
<FK06> = 72; # brightnessdown
<FK07> = 73; # brightnessup
<FK08> = 74; # mute
<FK09> = 75; # volumedown
<FK10> = 76; # volumeup

Have a nice day!

Comment 10 Benjamin Tissoires 2015-04-16 20:09:40 UTC
Created attachment 1015378 [details]
60-keyboard.hwdb

I played a little bit with both the 2013 and 2015 today and came out with the following hwdb entry.

To test it, just drop it under /etc/udev/hwdb.d (yes, the directory does not exists by default).
Then run:
$ sudo udevadm hwdb --update
$ sudo udevadm trigger

This should make the refresh, switchvideomode, brightness(up|down) and volume (mute, up, down) key working.

I personally prefer not remapping the search key because I found it more interesting to have a super-L key, and back/forward either to be able to switch to a VT :)

Unless there are strong opinion, I'll submit this upstream soonish after I made the tests against the latest systemd version.

Comment 11 Guillaume Poirier-Morency 2015-04-16 20:41:24 UTC
(In reply to Benjamin Tissoires from comment #10)
> Created attachment 1015378 [details]
> 60-keyboard.hwdb
> 
> I played a little bit with both the 2013 and 2015 today and came out with
> the following hwdb entry.
> 
> To test it, just drop it under /etc/udev/hwdb.d (yes, the directory does not
> exists by default).
> Then run:
> $ sudo udevadm hwdb --update
> $ sudo udevadm trigger
> 
> This should make the refresh, switchvideomode, brightness(up|down) and
> volume (mute, up, down) key working.
> 
> I personally prefer not remapping the search key because I found it more
> interesting to have a super-L key, and back/forward either to be able to
> switch to a VT :)
> 
> Unless there are strong opinion, I'll submit this upstream soonish after I
> made the tests against the latest systemd version.

I agree that we should keep access to the VT and the super key, but can we map 
the function keys such that:

 * they work normally
 * ctrl-alt + fn_key triggers the appropriate VT?

For the search key, I'm not sure but I think that the GNOME shell triggers the
overlay, so it's functionnaly equivalent (and semantically better).

What do you think?

(I will test the configuration in a few..)

Comment 12 Guillaume Poirier-Morency 2015-04-16 21:29:36 UTC
Created attachment 1015385 [details]
hwdb entry for Acer C720

This configuration entry should be inlined in /usr/lib/udev/hwdb/60-keyboard.hwdb

Comment 13 Guillaume Poirier-Morency 2015-04-16 21:33:15 UTC
I attached a tested configuration based on Chromebook 14 entry in
/usr/lib/udev/hwdb/60-keyboard.hwdb

I bound back & forward, but not search as 'Super_L' is more important than a 
search key.

It would be nice if someone could check if the fullscreen event exists?

Comment 14 Peter Hutterer 2015-04-16 23:53:43 UTC
sorry about the delay, this slipped through.

reassigning to xkeyboard-config, I consider this a keyboard layout issue because (especially under linux) you probably still want some of these keys to send the F-keys under certain conditions (even if it's just for the vt-switch). one question though: what are the key codes the device sends on fn+F-key? different or the same as normal F-keys?

Comment 15 Benjamin Tissoires 2015-04-17 02:25:51 UTC
I already mentioned it over IRC, but just putting here for the record.

On the 2 Pixels, there is no fn key. All is emulated through the regular "alt-left" key.

The xkb solution is more elegant and works much better (no loss of functionality with VT switching). It will also allow to map the missing keys too (delete, home, end, page up, page down).
I'll try to come up with a patch soonish.

Comment 16 Guillaume Poirier-Morency 2015-05-16 00:01:22 UTC
I agree(In reply to Benjamin Tissoires from comment #15)
> I already mentioned it over IRC, but just putting here for the record.
> 
> On the 2 Pixels, there is no fn key. All is emulated through the regular
> "alt-left" key.
> 
> The xkb solution is more elegant and works much better (no loss of
> functionality with VT switching). It will also allow to map the missing keys
> too (delete, home, end, page up, page down).
> I'll try to come up with a patch soonish.

Any updates on this? Alt would still work as usual?

I already have submitted the keyboard mapping in attachment and I have been using it for a while already.

Comment 17 Benjamin Tissoires 2015-05-26 14:04:02 UTC
(In reply to Guillaume Poirier-Morency from comment #16)
> Any updates on this? Alt would still work as usual?

Apologies for the delay. I have a somewhat working XKB patch that I still need to send out upstream. The problem I have is that the chromebook keyboard layout is lacking at least one key (the "function") one so I have to either use the right alt or ctrl one to do so. With this hack, we can have a working keyboard with the US layout, but it might break the French or German layouts.

I'll update the bug as soon as I moved it forward upstream.

Comment 18 Kent W. Nixon 2015-06-13 04:04:16 UTC
(In reply to Benjamin Tissoires from comment #10)
> Created attachment 1015378 [details]
> 60-keyboard.hwdb
> 
> I played a little bit with both the 2013 and 2015 today and came out with
> the following hwdb entry.
> 
> To test it, just drop it under /etc/udev/hwdb.d (yes, the directory does not
> exists by default).
> Then run:
> $ sudo udevadm hwdb --update
> $ sudo udevadm trigger
> 
> This should make the refresh, switchvideomode, brightness(up|down) and
> volume (mute, up, down) key working.
> 
> I personally prefer not remapping the search key because I found it more
> interesting to have a super-L key, and back/forward either to be able to
> switch to a VT :)
> 
> Unless there are strong opinion, I'll submit this upstream soonish after I
> made the tests against the latest systemd version.

I installed Fedora 22 on my 2013 Pixel (Link) the other day and have been messing around trying to get the keymaps working correctly. Thanks to everyone here for posting this great info.

Ben, your posted keymaps for the 2013 Pixel to not line up with what I have over here. My keyboard scancodes line up with the ones you posted from the 2015 Pixel (shown below [no idea how to attach things]). I don't know where or how you got your scan codes, but please be aware that I nuked Chrome OS off of my Pixel thing pretty much as soon as I got it from Google I/O 2013. I am also running a custom version of coreboot courtesy of johnlewis.ie. A later hardware revision or a firmware update through Chrome OS may have changed it to match what you posted for others.

Hope this helps!


# Chromebook Pixel 2013 (Link)
# Top row keys (between ESC and power button)
keyboard:dmi:bvn*:bvr*:svnGOOGLE:pnLink:pvr*
 KEYBOARD_KEY_3b=back
 KEYBOARD_KEY_3c=forward
 KEYBOARD_KEY_3d=refresh
# KEYBOARD_KEY_3e=fullscreen -> no defined symbol
 KEYBOARD_KEY_3f=switchvideomode
 KEYBOARD_KEY_40=brightnessdown
 KEYBOARD_KEY_41=brightnessup
 KEYBOARD_KEY_42=mute
 KEYBOARD_KEY_43=volumedown
 KEYBOARD_KEY_44=volumeup
# KEYBOARD_KEY_db=search # Same position as caps lock key -> kept as Super_L

Comment 19 Benjamin Tissoires 2015-06-15 15:54:20 UTC
(In reply to Kent W. Nixon from comment #18)
> Ben, your posted keymaps for the 2013 Pixel to not line up with what I have
> over here. My keyboard scancodes line up with the ones you posted from the
> 2015 Pixel (shown below [no idea how to attach things]). I don't know where
> or how you got your scan codes, but please be aware that I nuked Chrome OS
> off of my Pixel thing pretty much as soon as I got it from Google I/O 2013.
> I am also running a custom version of coreboot courtesy of johnlewis.ie. A
> later hardware revision or a firmware update through Chrome OS may have
> changed it to match what you posted for others.
> 

OK. thanks for the notice, but hopefully we will not have to tune any custom scancodes. As mentioned in comment #14, the idea is to use xkb, and not a custom keymap config.

I have opened fdo bug #90684 for this and we are still waiting on upstream.

If you want to give a try, you can:
- revert the hwdb changes (and reboot)
- add the "inet" section from the patch in the fdo bug in /usr/share/X11/xkb/symbols/inet (without the leading '+')
- run "setxkbmap -layout us -model chromebook"

This should make the right Alt key as a modifier and the function keys working like they should.

Comment 20 Kent W. Nixon 2015-07-31 01:24:53 UTC
(In reply to Benjamin Tissoires from comment #19)
> (In reply to Kent W. Nixon from comment #18)
> > Ben, your posted keymaps for the 2013 Pixel to not line up with what I have
> > over here. My keyboard scancodes line up with the ones you posted from the
> > 2015 Pixel (shown below [no idea how to attach things]). I don't know where
> > or how you got your scan codes, but please be aware that I nuked Chrome OS
> > off of my Pixel thing pretty much as soon as I got it from Google I/O 2013.
> > I am also running a custom version of coreboot courtesy of johnlewis.ie. A
> > later hardware revision or a firmware update through Chrome OS may have
> > changed it to match what you posted for others.
> > 
> 
> OK. thanks for the notice, but hopefully we will not have to tune any custom
> scancodes. As mentioned in comment #14, the idea is to use xkb, and not a
> custom keymap config.
> 
> I have opened fdo bug #90684 for this and we are still waiting on upstream.
> 
> If you want to give a try, you can:
> - revert the hwdb changes (and reboot)
> - add the "inet" section from the patch in the fdo bug in
> /usr/share/X11/xkb/symbols/inet (without the leading '+')
> - run "setxkbmap -layout us -model chromebook"
> 
> This should make the right Alt key as a modifier and the function keys
> working like they should.

Sorry, the link seems to have changed. Do you have a new link to this? WOuld really appreciate this.

Comment 21 Benjamin Tissoires 2015-07-31 15:27:34 UTC
(In reply to Kent W. Nixon from comment #20)
> Sorry, the link seems to have changed. Do you have a new link to this? WOuld
> really appreciate this.

Actually, bugzilla thought that the fdo bug was a bugzilla one. The correct full link is:
https://bugs.freedesktop.org/show_bug.cgi?id=90684

Comment 22 Kent W. Nixon 2015-08-01 20:20:43 UTC
(In reply to Benjamin Tissoires from comment #21)
> (In reply to Kent W. Nixon from comment #20)
> > Sorry, the link seems to have changed. Do you have a new link to this? WOuld
> > really appreciate this.
> 
> Actually, bugzilla thought that the fdo bug was a bugzilla one. The correct
> full link is:
> https://bugs.freedesktop.org/show_bug.cgi?id=90684

Great! Just applied your patch - works a charm. Thank you!

Comment 23 Fedora End Of Life 2015-11-04 15:20:18 UTC
This message is a reminder that Fedora 21 is nearing its end of life.
Approximately 4 (four) weeks from now Fedora will stop maintaining
and issuing updates for Fedora 21. It is Fedora's policy to close all
bug reports from releases that are no longer maintained. At that time
this bug will be closed as EOL if it remains open with a Fedora  'version'
of '21'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora 21 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora, you are encouraged  change the 'version' to a later Fedora 
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

Comment 24 Dave Maley 2015-11-19 21:42:13 UTC
moving to Fedora 23 as support's still lacking in xkeyboard-config 2.15:

[dave@sideshowbob BUILD]$ grep chromebook xkeyboard-config-2.15/rules/base.m_s.part 
[dave@sideshowbob BUILD]$ grep chromebook xkeyboard-config-2.15/rules/evdev.m_s.part 
[dave@sideshowbob BUILD]$ grep chromebook xkeyboard-config-2.15/symbols/inet
[dave@sideshowbob BUILD]$


Checking rawhide it appears to be added in 2.16:

[dave@sideshowbob BUILD]$ grep chromebook xkeyboard-config-2.16/rules/base.m_s.part 
  chromebook    =       +inet(chromebook)
[dave@sideshowbob BUILD]$ grep chromebook xkeyboard-config-2.16/rules/evdev.m_s.part 
  chromebook    =   +inet(evdev)+inet(chromebook)
[dave@sideshowbob BUILD]$ grep chromebook xkeyboard-config-2.16/symbols/inet 
xkb_symbols "chromebook" {
[dave@sideshowbob BUILD]$ 


Is there chance of moving to 2.16 in F23? Or have this backported to 2.15? Thanks!

Comment 25 Nathaniel Nutter 2015-11-20 03:50:25 UTC
I applied the 90684 patch to `/usr/share/X11/xkb/symbols/inet` and then ran `setxkbmap -layout us -model chromebook` but it didn't seem to work.  Then I tried installing xkeyboard-config-2.16,

$ sudo dnf install fedora-repos-rawhide
$ sudo dnf install --enablerepo=rawhide --best --allowerasing xkeyboard-config
$ rpm -qa | grep fc24
xkeyboard-config-2.16-1.fc24.noarch

but that also did not work.  I'm running Fedora 23 on the Chromebook Pixel (2015).  I don't know if I am doing something wrong or if additional changes are necessary to make this work in Fedora 23.

Comment 26 Nathaniel Nutter 2015-11-20 03:52:50 UTC
I guess I forgot to do `setxkbmap -layout us -model chromebook` after installing xkeyboard-config-2.16.  So it's working! =)

Comment 27 Benjamin Tissoires 2015-11-20 08:17:05 UTC
(In reply to Dave Maley from comment #24)
> moving to Fedora 23 as support's still lacking in xkeyboard-config 2.15:
> 
> Is there chance of moving to 2.16 in F23? Or have this backported to 2.15?

I think it's reasonable to ask 2.16 in F23.
However, I don't have the right to push on xkeyboard-config. Peter, can you merge with rawhide?

Comment 28 Guillaume Poirier-Morency 2015-11-21 00:12:59 UTC
xkeyboard-config is great, but how is it supposed to work in Wayland?

Comment 29 Peter Hutterer 2015-11-23 04:48:32 UTC
Wayland uses the the xkb keyboard descriptions though libxkbcommon.

Comment 30 Fedora Update System 2015-11-23 04:57:37 UTC
xkeyboard-config-2.16-1.fc23 has been submitted as an update to Fedora 23. https://bodhi.fedoraproject.org/updates/FEDORA-2015-9b1b3e9a5c

Comment 31 Fedora Update System 2015-11-24 02:23:27 UTC
xkeyboard-config-2.16-1.fc23 has been pushed to the Fedora 23 testing repository. If problems still persist, please make note of it in this bug report.
If you want to test the update, you can install it with
$ su -c 'dnf --enablerepo=updates-testing update xkeyboard-config'
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2015-9b1b3e9a5c

Comment 32 Nathaniel Nutter 2015-11-25 02:24:07 UTC
I have libxkbcommon installed but the keyboard does not work in my GNOME on Wayland session (and does work in my normal GNOME session).

$ rpm -qa | grep -P 'libxkbcommon|xkeyboard-config'
libxkbcommon-x11-0.5.0-2.fc23.x86_64
libxkbcommon-0.5.0-2.fc23.x86_64
xkeyboard-config-2.16-1.fc24.noarch

$ localectl 
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us
       X11 Model: chromebook

Comment 33 Fedora Update System 2015-11-30 21:20:55 UTC
xkeyboard-config-2.16-1.fc23 has been pushed to the Fedora 23 stable repository. If problems still persist, please make note of it in this bug report.

Comment 34 Peter Hutterer 2015-12-09 05:32:46 UTC
Nathaniel, does this one work?
http://koji.fedoraproject.org/koji/taskinfo?taskID=12118873

Comment 35 Nathaniel Nutter 2015-12-10 02:39:59 UTC
Peter, it still did not work in GNOME on Wayland.

Comment 36 Peter Hutterer 2015-12-10 06:31:50 UTC
huh, I admit I don't actually know how to select an xkb model in gnome-on-wayland. does "gsettings set org.gnome.libgnomekbd.keyboard model 'chromebook'" work?

Comment 37 Dave Maley 2015-12-10 20:27:59 UTC
The updated xkeyboard-config is working for me however the `setxkbmap -layout us -model chromebook` isn't persisting. Is there a config someplace where I need to be setting this?

Comment 38 Guillaume Poirier-Morency 2015-12-10 20:45:50 UTC
(In reply to Dave Maley from comment #37)
> The updated xkeyboard-config is working for me however the `setxkbmap
> -layout us -model chromebook` isn't persisting. Is there a config someplace
> where I need to be setting this?

In /etc/X11/xorg.conf.d/00-keyboard.conf

Section "InputClass"
    Option "XkbModel" "chromebook"
EndSection

Comment 39 Nathaniel Nutter 2015-12-11 02:20:45 UTC
Peter, that setting doesn't seem to have had any effect.

Dave, if you set it with `localectl set-x110keymap us chromebook` then I believe it creates that xorg.conf.d entry for you.

Comment 40 Dave Maley 2016-02-03 03:45:18 UTC
(In reply to Nathaniel Nutter from comment #39)
> Dave, if you set it with `localectl set-x110keymap us chromebook` then I
> believe it creates that xorg.conf.d entry for you.

yep `localectl set-x11-keymap us chromebook` does indeed create /etc/X11/xorg.conf.d/00-keyboard.conf

many thanks!

Comment 41 Peter Hutterer 2016-02-04 22:32:32 UTC
I guess if that xorg.conf snippet works it means that gnome doesn't override the keyboard model. that would also indicate that gnome doesn't have a setting for the keyboard model. historically, that makes sense since the model has been forced to 'evdev' for a number of years anyway.


Note You need to log in before you can comment on or make changes to this bug.