Sometimes, on some setups, when turning up the brightness while at max, it will loop back to minimum. Also, the minimum will turn the backlight off completely.
Install build dependencies (for Trisquel 6. Adapt if your distro is different):
$ sudo apt-get install build-essential
Go into the libreboot source code. Under coreboot/util/nvramtool/ do that to compile it: $ make
Now do that:
$ ./nvramtool -y ../../src/mainboard/lenovo/x60/cmos.layout -w tft_brightness=0xff
The next time you boot, the looping issue should be gone.
If you have anything special in a directory called libreboot_bin, just outside of libreboot_src, then back it up first.
You don't need to do much: there are scripts already written for you that can build everything automatically.
Install dependencies (works on apt-get distros)
$ sudo ./builddeb
If your distro uses a different package manager or package names, then you'll need to adapt what you see in 'builddeb' and install it yourself - maybe you could share the script for your distro!
If running for the first time, run this:
$ ./buildall
Or if you only want to build dependencies (crossgcc, grub and so on):
$ ./builddeps
If you've already run ./builddeps and/or ./buildall before, you don't need to run them again.
Just run that from now on to build your ROM's:
$ ./build
To un-build (clean) the build dependencies that you bought before, do that:
$ ./cleandeps
After 'build' or 'buildall' has finished, an ../libreboot_bin directory will exist outside of libreboot_src containing the ROM's and other files. In libreboot_src will also be a directory called 'bin' which contains all of the ROM's that you compiled.
Reading all of those scripts will teach you how everything is built. It should also be simple to modify it to your needs.
(this assumes that you already have coreboot or libreboot running)
(if you have Lenovo BIOS currently running, then follow this guide instead: http://www.coreboot.org/Board:lenovo/x60/Installation)
(note, if you are running Lenovo BIOS and flashing for the first time, steps 3-5 in that link have already been done for you with these ROM's)
Build dependencies (works on apt-get distros):
$ sudo ./builddeb
^ If you don't have an apt-get distro, adapt what you see in 'builddeb'.
$ cd libreboot_src/flashrom
or
$ cd libreboot_bin/flashrom
Compile it if you didn't already:
$ make
Look in libreboot_src/bin (if you just built the ROM's) or libreboot_bin/bin and copy the ROM into libreboot_bin/flashrom or libreboot_src/flashrom (depending on which one you want to use), renaming the copy to 'coreboot.rom'.
Flash it!
$ sudo ./flashrom -p internal -w coreboot.rom
If it complains about 3 Macronix flash chips (on the ThinkPad X60) detected then do that:
$ sudo ./flashrom -p internal -w coreboot.rom -c "MX25L1605D/MX25L1608D"
You don't have to flash the default coreboot.rom; there are other ROM's aswell, so look at the list below.
You should see "VERIFIED" written at the end of the flashrom output.
If so, SHUT DOWN FULLY! DO NOT RESTART - YOU NEED TO SHUT DOWN *FULLY*. THAT IS, *POWER OFF*!
WAIT A FEW SECS, THEN BOOT!
Recommended ROM's to flash:
This will give you your native keyboard layout in GRUB. The preferences in your OS are not affected, it just makes using the GRUB command line easier (if you ever need to do that). #grub_keyboardshows you how this was done. If your native keyboard layout differs, you can adapt those notes and hack the 'build' script for your needs.
You don't need to do this unless you would like to change the default font yourself. (this is just for reference. It has already been done for you)
The old font used was Unifont, and this had some missing characters: for instance, the border showed ??? characters instead of lines.
I tried DeJavu Sans Mono from this website: dejavu-fonts.org
Specifically, the version that I chose was the latest at the time of writing (Saturday 21 June 2014): this one
This is a free font that is also contained in GNU/Linux distributions like Trisquel or Parabola.
$ cd libreboot_src/grub
compile grub ('build' script has the info on how to do this)
come back out into libreboot_src/resources/grub:
$ cd ../libreboot_src/resources/grub/font
I took Dejavu Sans Mono from dejavu (included in this version of libreboot) and did:
$ ../../../grub/grub-mkfont -o dejavusansmono.pf2 ../../../dejavu-fonts-ttf-2.34/ttf/DejaVuSansMono.ttf
I then added the instructions to 'build' script to include resources/grub/dejavusansmono.pf2 in all of the ROM's in root of cbfs.
I then added that instructions to the grub.cfg files (to load the font):
loadfont (cbfsdisk)/dejavusansmono.pf2
You can adapt the notes below and update the 'build' script to make it build a ROM with your custom/other keyboard layout in GRUB.
$ cd libreboot_src/grub
compile grub ('build' script has the info on how to do this)
come back out into libreboot_src
$ cd ../
Generate the layout file:
$ ckbcomp us > usqwerty
$ cat usqwerty | ./grub/grub-mklayout -o usqwerty.gkb
Note: these files are already included ('build' script also makes use of them). You don't need to do any of this.
$ ckbcomp gb > ukqwerty
$ cat ukqwerty | ./grub/grub-mklayout -o ukqwerty.gkb
Note: these files are already included ('build' script makes use of them). You don't need to do it.
How the dvorak.gkb was made (for US Dvorak layout in GRUB).
$ cd libreboot_src/grub
compile grub ('build' script has the info on how to do this)
come back out into libreboot_src:
$ cd ../
Generate the layout file:
$ ckbcomp dvorak > usdvorak
$ cat usdvorak | ./grub/grub-mklayout -o dvorak.gkb
Note: these files are already included ('build' script makes use of them). You don't need to do it.
There isn't much difference.
$ cp usdvorak ukdvorak
Patch ukdvorak like so (diff usdvorak ukdvorak):
SEE PATCH AT END OF README!
Now create ukdvorak.gkb
$ cat ukdvorak | ./grub/grub-mklayout -o ukdvorak.gkb
Note: these files are already included ('build' script makes use of them). You don't need to do any of this.
Install build dependencies in Trisquel 6 (adapt for other distro):
$ sudo apt-get install build-essential
nvramtool is in coreboot or libreboot source tree until util/:
$ cd libreboot_src/coreboot/util/nvramtool
$ make
Enable wifi:
$ sudo ./nvramtool -w wlan=Enable
Disable wifi:
$ sudo ./nvramtool -w wlan=Disable
If that doesn't work, try one of these instead:
$ sudo ./nvramtool -y ../../src/mainboard/lenovo/x60/cmos.layout -w wlan=Enable
$ sudo ./nvramtool -y ../../src/mainboard/lenovo/x60/cmos.layout -w wlan=Disable
Reboot for changes to take effect.
Install build dependencies in Trisquel 6 (adapt for other distro):
$ sudo apt-get install build-essential
nvramtool is in coreboot or libreboot source tree until util/:
$ cd libreboot_src/coreboot/util/nvramtool
$ make
Enable wifi:
$ sudo ./nvramtool -w trackpoint=Enable
Disable wifi:
$ sudo ./nvramtool -w trackpoint=Disable
If that doesn't work, try one of these instead:
$ sudo ./nvramtool -y ../../src/mainboard/lenovo/x60/cmos.layout -w trackpoint=Enable
$ sudo ./nvramtool -y ../../src/mainboard/lenovo/x60/cmos.layout -w trackpoint=Disable
Reboot for changes to take effect.
Now you can use this command to kill that noise:
$ sudo powertop --auto-tune
You can also run it without parameters and then go into 'Tunables' and set everything to 'Good'
Note: On Trisquel 6, you will need to use a later powertop version from git. The one in the repositories is too old. See below:
Included with libreboot is a script called 'powertop.trisquel6'. Run this and it will setup powertop to run with --auto-tune at boot time. Load the file in your text editor to see how it does that.
$ ./powertop.trisquel6
This has been tested on Trisquel 6.
The following removes most of the noise. It reduces what is a high frequency whine (that not everyone can hear) to a slight buzz (which most people can't hear or doesn't bother most people).
This is not perfect! The full solution is still not discovered but this is a step towards that. Also, in some instances you will need to run 'sudo powertop --auto-tune' again. This needs to be implemented properly in coreboot itself!
On the X60 with coreboot or libreboot, there is a high pitched sound when idle. So far we have use processor.max_cstate=2 or idle=halt in GRUB. These consume power. Stop using them!
Be root
$ su -
Installed powertop:
# pacman -S powertop
and added the following to /etc/systemd/system/powertop.service :
[Unit] Description=Powertop tunings [Service] Type=oneshot RemainAfterExit=no ExecStart=/usr/bin/powertop --auto-tune # "powertop --auto-tune" still needs a terminal for some reason. Possibly a bug? Environment="TERM=xterm" [Install] WantedBy=multi-user.target
Finally, as root do that:
# systemctl enable powertop
# systemctl start powertop
The next time you boot the machine, the buzz will be gone.
If you are using one of the ROM's with 'serial' in the name, then you have serial port enabled in libreboot and you have memtest86+ included inside the ROM. Connect your null modem cable to the serial port on the dock and connect the other end to a 2nd machine using your USB Serial adapter.
On the 2nd machine, you can try this (using GNU Screen):
$ sudo screen /dev/ttyUSB0 115200
How to quit GNU Screen: Ctrl+A then release and press K, and then pressy Y.
There are also others like Minicom but I like GNU Screen
By doing this before booting the X60, you will see console output from libreboot. You will also see GRUB displaying on the serial output, and you will be able to see MemTest86+ on the serial output aswell. You can also configure your distro so that a terminal (TTY) is accessible from the serial console.
The following guide is for Ubuntu, and can be followed for Trisquel 6.0 which is based on Ubuntu 12.04
(should also work in Trisquel 7, based on Ubuntu 14.04) to enable a serial console using GeTTY:
https://help.ubuntu.com/community/SerialConsoleHowto
---------------------------------------------------------------------------------------- Unlisted notes: -------------------- Memtest86+ modifications! In config.h in memtest source code, these things are changed for libreboot: #define SERIAL_CONSOLE_DEFAULT 1 #define SERIAL_TTY 0 #define SERIAL_BAUD_RATE 115200 /* BEEP_MODE - Beep on error. Default off, Change to 1 to enable */ #define BEEP_MODE 1 ------------------------ usdvorak -> ukdvorak patch (edited by hand): $ diff usdvorak ukdvorak 4,5c4,5 < keycode 3 = U+0032 U+0040 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0040 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0040 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0040 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0040 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0040 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0040 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0040 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul < keycode 4 = U+0033 U+0023 U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+0023 U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+0023 U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+0023 U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+0023 U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+0023 U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+0023 U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+0023 U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape --- > keycode 3 = U+0032 U+0022 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0040 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0022 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0022 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0022 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0022 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0022 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul U+0032 U+0022 U+0032 U+0032 nul nul nul nul Meta_two Meta_at Meta_two Meta_two Meta_nul Meta_nul Meta_nul Meta_nul > keycode 4 = U+0033 U+009c U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+009c U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+009c U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+009c U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+009c U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+009c U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+009c U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape U+0033 U+009c U+0033 U+0033 Escape Escape Escape Escape Meta_three Meta_numbersign Meta_three Meta_three Meta_Escape Meta_Escape Meta_Escape Meta_Escape 17c17 < keycode 16 = U+0027 U+0022 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0022 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0022 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0022 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0022 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0022 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0022 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0022 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis --- > keycode 16 = U+0027 U+0040 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0040 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0040 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0040 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0040 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0040 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0040 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis U+0027 U+0040 dead_acute dead_diaeresis Control_g Control_g dead_acute dead_diaeresis Meta_apostrophe Meta_quotedbl dead_acute dead_diaeresis Meta_Control_g Meta_Control_g dead_acute dead_diaeresis 42c42 < keycode 41 = U+0060 U+007e dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+007e dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+007e dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+007e dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+007e dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+007e dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+007e dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+007e dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde --- > keycode 41 = U+0060 U+00ac dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+00ac dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+00ac dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+00ac dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+00ac dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+00ac dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+00ac dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde U+0060 U+00ac dead_grave dead_tilde nul nul dead_grave dead_tilde Meta_grave Meta_asciitilde dead_grave dead_tilde Meta_nul Meta_nul dead_grave dead_tilde 44c44 < keycode 43 = U+005c U+007c U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+005c U+007c U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+005c U+007c U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+005c U+007c U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+005c U+007c U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+005c U+007c U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+005c U+007c U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+005c U+007c U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash --- > keycode 43 = U+0023 U+007e U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+0023 U+007e U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+0023 U+007e U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+0023 U+007e U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+0023 U+007e U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+0023 U+007e U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+0023 U+007e U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash U+0023 U+007e U+005c U+005c Control_backslash Control_backslash Control_backslash Control_backslash Meta_backslash Meta_bar Meta_backslash Meta_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash Meta_Control_backslash 85c85 < keycode 86 = U+003c U+003e U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+003c U+003e U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+003c U+003e U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+003c U+003e U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+003c U+003e U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+003c U+003e U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+003c U+003e U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+003c U+003e U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol --- > keycode 86 = U+005c U+007c U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+005c U+007c U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+005c U+007c U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+005c U+007c U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+005c U+007c U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+005c U+007c U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+005c U+007c U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol U+005c U+007c U+007c U+00a6 VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar Meta_bar VoidSymbol VoidSymbol VoidSymbol VoidSymbol