pebwindkraft
Member
Hi,
ich habe ein neues MBPro
(Typ A1286, Baujahr Feb 2012, mit schweizer Keyboard Layout), welches sich im OpenBSD52 GENERIC Kernel als Macbbok Pro 8.2 zu erkennen gibt. Jetzt wollte ich mal mein Keyboard anpassen. Zunächst ein bischen mit wsconsctl gespielt, damit ich auf der Konsole (ohne X !) die richtigen Umlaute und Sonderzeichen habe. Aber besonders die Tasten grösser/kleiner und Dollar/Pfund spielen nicht mit. Nur aufgerufen als "wsconsctl keyboard.map" zeigt mir die Konsole an, was gerade eingestellt ist. Das kann man dann eben nach Belieben anpassen:
Am Ende hat das ganz gut funktioniert, habe aber nicht alle Tasten "geschafft". Die richtigen Keycodes zu finden, ist der Trick dabei… Ausserdem funktioniert das im X-Term nicht, da X ja sein eigenes Keyboard Coding mitbringt.
Gut, dann gehen wir das eben richtig an...
MIOD@ hat ja auf verschiedenen Seiten schon was gepostet (u.a. zu türkischem und rumänischem Keyboard), und das habe ich als Beispiel/Grundlage genommen. Ich krieg's nicht hin, ich lande bei "sudo kbd -l" auf diesem Fehler:
Diese Schritte habe ich unternommen:
Damit ich nicht dauernd neu Booten muss, weil ich mir das Keyboard zerschossen habe, habe ich das ganze unter OpenBSD 52, i386, in einer virtuellen Maschine unter VIRTUALBOX aufgesetzt. Da wird ein PC Type Keyboard emuliert, also schonmal gut, da brauchen die Besonderheiten des Apple Keyboards nicht berücksichtigt werden. Wenn das dann alles funktioniert, kann ich das dann "nativ" auf dem MBPro umsetzen. Ziel ist natürlich, die Funktionstasten richtig zu aktivieren, und ein PC Layout für Schweiz zu haben ("ch"), und eines für MBPro ("ch.apple"). MIOD@ hat ja auch schon ein "fr.apple" erstellt. Doch zunächste erstmal die Sonderzeichen und Umlaute in der virtuellen Box:
1.) wskbdmap_mfii.c
ich habe mir das wskbdmap_mfii.c File kopiert, und dann angepasst. Ich habe als Country Code mal "vn" versucht, etwas was im File halt noch nicht auftaucht… Habe mir das original File ins Home Dir als "wskbdmap_mfii_c.52" kopiert. Hier das diff:
2.) wsksymdef.h
analog zum Beispiel zuvor, auch hier den Country Code "vn" mit dazu:
3.) ukbdmap.c
im Header von wskbdmap_mfii.c steht, dass man das ukbdmap.c neu generieren muss:
4.) kernel ...
naja, dann dachte ich mir, musst Du auch den Kernel neu compilen:
[/CODE]
cd /usr/src/sys/arch/i386/conf
config GENERIC
cd ../compile/GENERIC
make clean && make
make install
[/CODE]
Den habe ich dann neu gebootet, und dann halt mal versucht, das neue Keycoding zu laden, leider ohne Erfolg.
Ein "sudo kbd -l" gibt wie gesagt diesen Fehler:
Hat jemand ne Idee, was ich falsch mache / vergessen habe ?
ich habe ein neues MBPro
(Typ A1286, Baujahr Feb 2012, mit schweizer Keyboard Layout), welches sich im OpenBSD52 GENERIC Kernel als Macbbok Pro 8.2 zu erkennen gibt. Jetzt wollte ich mal mein Keyboard anpassen. Zunächst ein bischen mit wsconsctl gespielt, damit ich auf der Konsole (ohne X !) die richtigen Umlaute und Sonderzeichen habe. Aber besonders die Tasten grösser/kleiner und Dollar/Pfund spielen nicht mit. Nur aufgerufen als "wsconsctl keyboard.map" zeigt mir die Konsole an, was gerade eingestellt ist. Das kann man dann eben nach Belieben anpassen:
Code:
wsconsctl keyboard.encoding=de \
keyboard.map+="keycode 30 = 1 plus " \
keyboard.map+="keycode 31 = 2 quotedbl " \
keyboard.map+="keycode 32 = 3 asterisk " \
keyboard.map+="keycode 33 = 4 ccedilla " \
keyboard.map+="keycode 34 = 5 percent " \
keyboard.map+="keycode 35 = 6 ampersand " \
keyboard.map+="keycode 36 = 7 slash " \
keyboard.map+="keycode 37 = 8 parenleft " \
keyboard.map+="keycode 38 = 9 parenright " \
keyboard.map+="keycode 39 = 0 equal " \
keyboard.map+="keycode 45 = apostrophe question backslash " \
keyboard.map+="keycode 46 = dead_circumflex dead_grave " \
keyboard.map+="keycode 48 = asciicircum exclam " \
keyboard.map+="keycode 49 = apostrophe numbersign " \
keyboard.map+="keycode 50 = asciicircum exclam " \
keyboard.map+="keycode 53 = less greater bar " \
keyboard.map+="keycode 100 = dead_circumflex dead_abovering "
Gut, dann gehen wir das eben richtig an...
MIOD@ hat ja auf verschiedenen Seiten schon was gepostet (u.a. zu türkischem und rumänischem Keyboard), und das habe ich als Beispiel/Grundlage genommen. Ich krieg's nicht hin, ich lande bei "sudo kbd -l" auf diesem Fehler:
Code:
encoding <0x1d00>
Unknown encoding or variant. kbd(8) needs to be rebuilt.
Diese Schritte habe ich unternommen:
Damit ich nicht dauernd neu Booten muss, weil ich mir das Keyboard zerschossen habe, habe ich das ganze unter OpenBSD 52, i386, in einer virtuellen Maschine unter VIRTUALBOX aufgesetzt. Da wird ein PC Type Keyboard emuliert, also schonmal gut, da brauchen die Besonderheiten des Apple Keyboards nicht berücksichtigt werden. Wenn das dann alles funktioniert, kann ich das dann "nativ" auf dem MBPro umsetzen. Ziel ist natürlich, die Funktionstasten richtig zu aktivieren, und ein PC Layout für Schweiz zu haben ("ch"), und eines für MBPro ("ch.apple"). MIOD@ hat ja auch schon ein "fr.apple" erstellt. Doch zunächste erstmal die Sonderzeichen und Umlaute in der virtuellen Box:
1.) wskbdmap_mfii.c
ich habe mir das wskbdmap_mfii.c File kopiert, und dann angepasst. Ich habe als Country Code mal "vn" versucht, etwas was im File halt noch nicht auftaucht… Habe mir das original File ins Home Dir als "wskbdmap_mfii_c.52" kopiert. Hier das diff:
Code:
diff -u -p wskbdmap_mfii_c.52 /usr/src/sys/dev/pckbc/wskbdmap_mfii.c
--- wskbdmap_mfii_c.52 Sun Feb 10 17:18:25 2013
+++ /usr/src/sys/dev/pckbc/wskbdmap_mfii.c Sun Feb 10 18:26:46 2013
@@ -1059,6 +1059,26 @@ static const keysym_t pckbd_keydesc_is_nodead[] = {
KC(40), KS_acute, KS_diaeresis, KS_asciicircum,
};
+static const keysym_t pckbd_keydesc_vn[] = {
+/* pos normal shifted altgr shift-altgr */
+ KC(2), KS_1, KS_plus,
+ KC(3), KS_2, KS_quotedbl,
+ KC(4), KS_3, KS_asterisk,
+ KC(5), KS_4, KS_cedilla,
+ KC(6), KS_5, KS_percent, KS_bracketleft,
+ KC(7), KS_6, KS_ampersand, KS_bracketright,
+ KC(8), KS_7, KS_slash, KS_bar,
+ KC(9), KS_8, KS_parenleft, KS_braceleft,
+ KC(10), KS_9, KS_parenright, KS_braceright,
+ KC(11), KS_0, KS_equal,
+ KC(12), KS_apostrophe, KS_question,
+ KC(13), KS_dead_circumflex, KS_grave,
+ KC(16), KS_q, KS_Q, KS_at,
+ KC(31), KS_s, KS_S, KS_ssharp,
+ KC(34), KS_g, KS_G, KS_at,
+ KC(38), KS_l, KS_L, KS_at,
+};
+
#endif /* WSKBD_NO_INTL_LAYOUTS */
#define KBD_MAP(name, base, map) \
@@ -1118,6 +1138,7 @@ const struct wscons_keydesc pckbd_keydesctab[] = {
KBD_MAP(KB_NL | KB_NODEAD, KB_NL, pckbd_keydesc_nl_nodead),
KBD_MAP(KB_IS, KB_US, pckbd_keydesc_is),
KBD_MAP(KB_IS | KB_NODEAD, KB_IS, pckbd_keydesc_is_nodead),
+ KBD_MAP(KB_VN, KB_US, pckbd_keydesc_vn),
#endif /* WSKBD_NO_INTL_LAYOUTS */
{0, 0, 0, 0}
};
2.) wsksymdef.h
analog zum Beispiel zuvor, auch hier den Country Code "vn" mit dazu:
Code:
diff -u -p wsksymdef_h.52 /usr/src/sys/dev/wscons/wsksymdef.h
--- wsksymdef_h.52 Sun Feb 10 17:18:08 2013
+++ /usr/src/sys/dev/wscons/wsksymdef.h Sun Feb 10 15:13:52 2013
@@ -734,6 +734,7 @@
#define KB_CF 0x1a00
#define KB_LV 0x1b00
#define KB_IS 0x1c00
+#define KB_VN 0x1d00
#define KB_NODEAD 0x000001 /* disable dead accents */
#define KB_DECLK 0x000002 /* DEC LKnnn layout */
@@ -773,7 +774,8 @@
{ KB_SI, "si" }, \
{ KB_CF, "cf" }, \
{ KB_LV, "lv" }, \
- { KB_IS, "is" }
+ { KB_IS, "is" }, \
+ { KB_VN, "vn" }
#define KB_VARTAB \
{ KB_NODEAD, "nodead" }, \
3.) ukbdmap.c
im Header von wskbdmap_mfii.c steht, dass man das ukbdmap.c neu generieren muss:
Code:
awk -f makemap.awk ../pckbc/wskbdmap_mfii.c > ukbdmap.c
4.) kernel ...
naja, dann dachte ich mir, musst Du auch den Kernel neu compilen:
[/CODE]
cd /usr/src/sys/arch/i386/conf
config GENERIC
cd ../compile/GENERIC
make clean && make
make install
[/CODE]
Den habe ich dann neu gebootet, und dann halt mal versucht, das neue Keycoding zu laden, leider ohne Erfolg.
Ein "sudo kbd -l" gibt wie gesagt diesen Fehler:
Code:
encoding <0x1d00>
Unknown encoding or variant. kbd(8) needs to be rebuilt.
Hat jemand ne Idee, was ich falsch mache / vergessen habe ?

... Bin für jeden Tipp dankbar