Add info about Backspace and Delete to the FAQ
Here is a modest attempt at cleaning it up a little bit. I changed a few phrases that seemed awkward, but I think the content is the same. -- Wolfgang Corcoran-Mathe Signed-off-by: Roberto E. Vargas Caballero <k0ga@shike2.com>
This commit is contained in:
		
				
					committed by
					
						 Roberto E. Vargas Caballero
						Roberto E. Vargas Caballero
					
				
			
			
				
	
			
			
			
						parent
						
							f210ea26c4
						
					
				
				
					commit
					e8f3513bf4
				
			
							
								
								
									
										85
									
								
								FAQ
									
									
									
									
									
								
							
							
						
						
									
										85
									
								
								FAQ
									
									
									
									
									
								
							| @@ -104,54 +104,53 @@ This is an issue that was discussed in suckless mailing list | ||||
| <http://lists.suckless.org/dev/1404/20697.html>: | ||||
|  | ||||
| 	Well, I am going to comment why I want to change the behaviour | ||||
| 	of this key. When ascii was defined in 1968 communication | ||||
| 	with computers were done using punched cards, or hardcopy | ||||
| 	terminals (basically a typewritter machine connected with | ||||
| 	the computer using a serial port). Due to this, ascii defines | ||||
| 	DELETE as 7F, because in the puched cards, it means all the | ||||
| 	holes of the card punched, so it is a kind of 'phisical | ||||
| 	delete'. In the same way, BACKSPACE key was a non destructive | ||||
| 	back space, as in typewriter machines.  So, if you wanted | ||||
| 	to delete a character, you had to BACKSPACE and then DELETE. | ||||
| 	Other use of BACKSPACE was accented characters, for example | ||||
| 	'a BACKSPACE `'. The VT100 had no BACKSPACE key, it was | ||||
| 	generated using the CONTROL key as another control character | ||||
| 	(CONTROL key sets to 0 b7 b6 b5, so it converts H (code | ||||
| 	0x48) into BACKSPACE (code 0x08)), but it had a DELETE key | ||||
| 	in a similar position where BACKSPACE key is located today | ||||
| 	in common PC keyboards. All the terminal emulators emulated | ||||
| 	correctly the difference between these keys, and backspace | ||||
| 	key generated a BACKSPACE (^H) and delete key generated a | ||||
| 	DELETE (^?). | ||||
| 	of this key. When ASCII was defined in 1968, communication | ||||
| 	with computers was done using punched cards, or hardcopy | ||||
| 	terminals (basically a typewriter machine connected with the | ||||
| 	computer using a serial port).  ASCII defines DELETE as 7F, | ||||
| 	because, in punched-card terms, it means all the holes of the | ||||
| 	card punched; it is thus a kind of 'physical delete'. In the | ||||
| 	same way, the BACKSPACE key was a non-destructive backspace, | ||||
| 	as on a typewriter.  So, if you wanted to delete a character, | ||||
| 	you had to BACKSPACE and then DELETE.  Another use of BACKSPACE | ||||
| 	was to type accented characters, for example 'a BACKSPACE `'. | ||||
| 	The VT100 had no BACKSPACE key; it was generated using the | ||||
| 	CONTROL key as another control character (CONTROL key sets to | ||||
| 	0 b7 b6 b5, so it converts H (code 0x48) into BACKSPACE (code | ||||
| 	0x08)), but it had a DELETE key in a similar position where | ||||
| 	the BACKSPACE key is located today on common PC keyboards. | ||||
| 	All the terminal emulators emulated the difference between | ||||
| 	these keys correctly: the backspace key generated a BACKSPACE | ||||
| 	(^H) and delete key generated a DELETE (^?). | ||||
|  | ||||
| 	But the problem arised when Linus Torvald wrote Linux, and | ||||
| 	he did that the virtual terminal (the terminal emulator | ||||
| 	integrated in the kernel) returns a DELETE when backspace | ||||
| 	was pressed, due to the fact of the key in that position | ||||
| 	in VT100 was a delete key. This created a lot of problems | ||||
| 	(you can see it in [1] and [2]), and how Linux became the | ||||
| 	king, a lot of terminal emulators today generate a DELETE | ||||
| 	when backspace key is pressed in order to avoid problems | ||||
| 	with linux. It causes that the only way of generating a | ||||
| 	BACKSPACE in these systems is using CONTROL + H. I also | ||||
| 	think that emacs had an important point here because CONTROL | ||||
| 	+ H prefix is used in emacs in some commands (help commands). | ||||
| 	But a problem arose when Linus Torvalds wrote Linux. Unlike | ||||
| 	earlier terminals, the Linux virtual terminal (the terminal | ||||
| 	emulator integrated in the kernel) returned a DELETE when | ||||
| 	backspace was pressed, due to the VT100 having a DELETE key in | ||||
| 	the same position.  This created a lot of problems (see [1] | ||||
| 	and [2]). Since Linux has become the king, a lot of terminal | ||||
| 	emulators today generate a DELETE when the backspace key is | ||||
| 	pressed in order to avoid problems with Linux. The result is | ||||
| 	that the only way of generating a BACKSPACE on these systems | ||||
| 	is by using CONTROL + H. (I also think that emacs had an | ||||
| 	important point here because the CONTROL + H prefix is used | ||||
| 	in emacs in some commands (help commands).) | ||||
|  | ||||
| 	From point of view of the kernel, you can change the key | ||||
| 	for deleting a previous character with stty erase. When you | ||||
| 	connect a real terminal into a machine you describe the | ||||
| 	type of terminal, so getty configure the correct value of | ||||
| 	stty erase for this terminal, but in the case of terminal | ||||
| 	emulators you don't have any getty that can set the correct | ||||
| 	connect a real terminal into a machine you describe the type | ||||
| 	of terminal, so getty configures the correct value of stty | ||||
| 	erase for this terminal. In the case of terminal emulators, | ||||
| 	however, you don't have any getty that can set the correct | ||||
| 	value of stty erase, so you always get the default value. | ||||
| 	So it means that in case of changing the value of the | ||||
| 	backspace keyboard, you have to add a 'stty erase ^H' into | ||||
| 	your profile. Of course, other solution can be that st | ||||
| 	itself modify the value of stty erase.  I have usually the | ||||
| 	inverse problem, when I connect with non Unix machines, and | ||||
| 	I have to press control + h to get a BACKSPACE, or the | ||||
| 	inverse, when a user connects to my unix machines from a | ||||
| 	different system with a correct backspace key. | ||||
| 	For this reason, it is necessary to add 'stty erase ^H' to your | ||||
| 	profile if you have changed the value of the backspace key. | ||||
| 	Of course, another solution is for st itself to modify the | ||||
| 	value of stty erase.  I usually have the inverse problem: | ||||
| 	when I connect to non-Unix machines, I have to press CONTROL + | ||||
| 	h to get a BACKSPACE. The inverse problem occurs when a user | ||||
| 	connects to my Unix machines from a different system with a | ||||
| 	correct backspace key. | ||||
|  | ||||
| 	[1] http://www.ibb.net/~anne/keyboard.html | ||||
| 	[2] http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-5.html | ||||
|   | ||||
		Reference in New Issue
	
	Block a user