This file is indexed.

/usr/share/X11/xkb/symbols/nbsp is in xkb-data 2.5-1ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
// Let Space key provide No-Break Space (NBSP), Narrow No-Break Space (NNBSP),
// Zero-Width Non-Joiner (ZWNJ), and Zero-Width Joiner (ZWJ) for the desired
// levels.


////////////////////////////////////////
// Only Space

partial
xkb_symbols "none" {
  key <SPCE> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1]= [ space ]
  };
};


////////////////////////////////////////
// No-Break Space

partial
xkb_symbols "level2" {
  key <SPCE> {
    type[Group1]="TWO_LEVEL",
    symbols[Group1]= [ space, nobreakspace ]
  };
};


// level3 & level3ns provide no-breaking spaces starting from level3
// This is good for typographers but experience shows many users accidently
// type no-breaking spaces on the CLI (resulting in errors)
// Used by fr(latin9) and lt(std)
partial
xkb_symbols "level3" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, space, nobreakspace ]
  };
};

// level3s kills fourth level
// Used by ca(multix)
partial
xkb_symbols "level3s" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, space, nobreakspace, NoSymbol ]
  };
};

// for this reason pushing no-breaking spaces to level4 is the safe default nowadays
partial
xkb_symbols "level4" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, space, space, nobreakspace ]
  };
};


////////////////////////////////////////
// Narrow No-Break Space

// level3n provides narrow no-breaking space in addition to the normal one
partial
xkb_symbols "level3n" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, space, nobreakspace, 0x100202F ]
  };
};

// level4n provides narrow no-breaking space in addition to the normal one
partial
xkb_symbols "level4n" {
 key <SPCE> {
   type[Group1]="EIGHT_LEVEL",
   symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ]
 };
};

// level4nl provides narrow no-breaking space in addition to the normal one
// without forcing the use of level5 for mostly four-level layouts
// Used by fr(oss), be(oss)…
partial
xkb_symbols "level4nl" {
 key <SPCE> {
   type[Group1]="LOCAL_EIGHT_LEVEL",
   symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ]
 };
};


////////////////////////////////////////
// Zero-Width Non-Joiner & Zero-Width Joiner
// Author: Behnam Esfahbod <behnam@esfahbod.info>

// ZWNJ and ZWJ are widely used in Persian, Kurdinsh, Pashto, Uzbek and other
// languages that use PersoArabic script.


// ZWNJ on level 2
partial
xkb_symbols "zwnj2" {
  key <SPCE> {
    type[Group1]="TWO_LEVEL",
    symbols[Group1]= [ space, 0x100200c ]
  };
};


// ZWNJ on level 2
// ZWJ on level 3
partial
xkb_symbols "zwnj2zwj3" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, 0x100200c, 0x100200d ]
  };
};


// ZWNJ on level 2
// ZWJ on level 3
// NBSP on level 4
partial
xkb_symbols "zwnj2zwj3nb4" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, 0x100200c, 0x100200d, nobreakspace ]
  };
};

// ZWNJ on level 2
// NBSP on level 3
// Used by ir(ku_ara), af(basic), af(ps), af(uz), af(olpc-fa), af(olpc-ps), af(olpc-uz)
partial
xkb_symbols "zwnj2nb3" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, 0x100200c, nobreakspace ]
  };
};


// ZWNJ on level 2
// NBSP on level 3
partial
xkb_symbols "zwnj2nb3s" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, 0x100200c, nobreakspace, NoSymbol ]
  };
};


// ZWNJ on level 2
// NBSP on level 3
// ZWJ on level 4
partial
xkb_symbols "zwnj2nb3zwj4" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100200d ]
  };
};


// ZWNJ on level 2
// NBSP on level 3
// NNBSP on level 4
// Used by ir(pes)
partial
xkb_symbols "zwnj2nb3nnb4" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100202F ]
  };
};


// ZWNJ on level 3
// ZWJ on level 4
// Used by in(deva), in(olpc)
partial
xkb_symbols "zwnj3zwj4" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, space, 0x100200c, 0x100200d ]
  };
};


// NBSP on level 2
// ZWNJ on level 3
// Used by lk(sin_phonetic)
partial
xkb_symbols "nb2zwnj3s" {
  key <SPCE> {
    type[Group1]="FOUR_LEVEL",
    symbols[Group1]= [ space, nobreakspace, 0x100200c, NoSymbol ]
  };
};