Hóa ra “Enter” và “Return” lại khác nhau

Hóa ra “Enter” và “Return” lại khác nhau
Photo from Pixabay

Từ ngày có bàn phím rời tôi để ý rằng, phím Enter trên bàn phím của tôi được gọi là Return trên máy Mac. Lúc đầu tôi không suy nghĩ nhiều lắm, vì vốn bàn phím dành cho Windows và macOS đã khác nhau nhiều phím rồi, thêm một phím nữa cũng không nhiều hay ít hơn là bao 😄. Thế nhưng thật tình cờ, giờ đây tôi biết được rằng, Enter và Return hóa ra là hai phím khác nhau.

Vậy Enter và Return khác nhau như thế nào? Bài viết này sẽ giải đáp phần nào thắc mắc này.

Sự khác biệt lịch sử

Ngày xửa ngày xưa, khi mà người ta vẫn dùng máy đánh chữ thì chưa có phím Enter hay Return. Để xuống dòng trong văn bản, người đánh máy phải dùng tay trái gạt một cái đòn bẩy sang bên phải. Khi đòn bẩy được gạt, nó có một cơ chế tác động đến cuộn giấy, khiến tờ giấy sẽ được cuộn lên một dòng (hành động này gọi là line feed). Khi gạt đòn bẩy về hết cỡ thì cũng là lúc con trỏ ở đầu dòng sẵn sàng để viết dòng mới (hành động này gọi là carriage return).

carriage return
Nguồn: Typewriter talk

Dần dần, máy đánh chữ điện được phát minh với cơ chế hiện đại hơn. Hành động xuống dòng bởi hoạt động cơ khí được tự động hóa bởi động cơ điện. Theo đó, người đánh máy sẽ không cần phải rời tay khỏi bàn phím để thao tác nữa. Để thuận tiện cho việc xuống dòng thì một phím mới được thêm vào. Và với ý nghĩa của hành động “carriage return”, phím đó được gọi là “Return”.

Sau này, khi máy teletype được phát minh và sử dụng rộng rãi, phím Return thậm chí còn bị chia đôi thành hai phím riêng biệt: Return và Line Feed. Một ví dụ điển hình là máy teletype ARS-33 (loại máy rất được ưa chuộng dùng làm terminal) có cả phím Return và Line Feed.

Nguyên nhân là do những cỗ máy teletype có một máy in tích hợp sẵn và sẽ in dữ liệu text nhận được. Việc in ấn này gần như là theo thời gian thực, nghĩa là nhận được ký tự nào sẽ in ra ngay ký tự đó. Với công nghệ thời đó thì máy in không có tốc độ đủ cao để có thể thực hiện hai hành động (xuống dòng và nhảy về đầu dòng) khi chỉ nhận được dữ liệu là một ký tự điều khiển. Vì vậy xuống dòng đã được tách thành CR và LF.

Trước đây hệ điều hành DOS và sau này hệ điều hành Windows vẫn dùng 2 ký tự này để làm dấu xuống dòng. Nhưng không hiểu tại sao lại là CRLF nhỉ 😁. Nếu đúng theo ý nghĩa (xuống dòng và nhảy về đầu dòng) thì LFCR hợp hơn 😂.

Phím Enter được phát minh muộn hơn, xuất hiện lần đầu trên các máy video terminal. Lúc này, phát sinh nhu cầu cần thiết phải có một phím với chức năng gửi thông tin từ terminal cho máy tính, tách biệt với chức năng soạn thảo của phím Return.

Những video terminal của IBM như IBM 2260 (1964) and 3270 (1971) là những video terminal đầu tiên bổ sung nút Enter. Những terminal này có một chế độ gọi là “block mode”, nghĩa là việc chỉnh sửa lệnh sẽ được thực hiện hoàn toàn trên terminal (terminal có buffer riêng để lưu trữ dữ liệu người dùng nhập vào). Chỉ sau khi người dùng nhấn phím Enter thì toàn bộ dữ liệu từ buffer của terminal sẽ được gửi đến máy tính để xử lý.

Thời bấy giờ, những cỗ máy mainframe của IBM dù rất mạnh (so với máy tính cùng thời) nhưng chưa là gì nếu so với máy vi tính ngày nay. Đồng thời chi phí vận hành máy mainframe cũng rất lớn (chi phí tính theo giây luôn). Vì vậy, cơ chế hoạt động của những terminal này cực kỳ phù hợp trong hoàn cảnh đó. Máy tính chỉ cần xử lý những yêu cầu hoàn chỉnh từ người dùng, thay vì nhận từng ký tự, lưu trữ lại (vào bộ nhớ tạm nào đó) rồi sau đó mới xử lý.

Với cơ chế hoạt động như vậy, rõ ràng là ngoài phím Return (và Line Feed) dùng để xuống dòng trong soạn thảo văn bản, một phím khác để gửi yêu cầu cho máy tính là cần thiết. Bàn phím trên những video terminal này bố trí phím Enter ở bên phải phím cách còn phím Return lúc này vẫn ở vị trí cũ.

IBM-3277
Nguồn: Wikimedia Commons

Những năm 1980, lịch sử ngành máy tính xuất hiện các máy tính gia đình cỡ nhỏ. Những máy tính này thường dùng bàn phím với form nhỏ nên số lượng các phím rất hạn chế. Không rõ ý tưởng từ đâu, nhưng một số nhà sản xuất đã tích hợp các phím Return, Line Feed và Enter thành một phím.

Ví dụ máy Commodore 64 (mẫu máy tính bán chạy nhất mọi thời đại, ra mắt năm 1982) chỉ có duy nhất phím Return. Và ngôn ngữ lập trình BASIC (chính xác hơn là trình dịch của ngôn ngữ này) được cài đặt sẵn trên máy tính này khiến Return hoạt động với chức năng của cả Return và Enter (và cả Line Feed). Cụ thể là với các dòng code có số ở đầu, code sẽ được máy tính lưu lại (hoạt động tương tự Return), còn các dòng không có số sẽ được thực thi ngay (hoạt động như Enter). Rất nhiều máy tính đã sử dụng cách kết hợp này.

C64
Nguồn: Wikimedia Commons

Dần dần máy tính được dùng phổ biến hơn, phím Return cũng dần chuyển thành Enter. Không rõ lý do tại sao phím đó lại là Enter mà không giữ nguyên nhãn Return như ban đầu. Tôi đoán là Enter phù hợp hơn về mặt ý nghĩa khi làm việc với máy tính. Việc xuống dòng trên máy tính rõ ràng là không giống với máy đánh chữ nên không nhất thiết phải dùng nhãn cũ. Return thì mang nghĩa quay lại, trở lại chỉ phù hợp với máy đánh chữ còn với máy tính thì người dùng làm việc với câu lệnh, với form hay tương tự thế, thì người ta muốn tiến lên, như vậy thì “enter” phù hợp hơn.

Thế nhưng không phải hãng nào cũng gọi phím đó là Enter, ít nhất có một ngoại lệ là Apple. Đến tận bây giờ, máy Mac vẫn gọi phím đó là phím Return chứ không phải Enter như đa số các hãng khác.

Thời thế bây giờ thì sao?

Về mặt lịch sử thì rõ ràng Return và Enter là hai phím riêng biệt. Thế nhưng thời đại ngày nay đã khác xa ngày xưa. Giờ này có lẽ máy đánh chữ hay terminal không còn mấy ai sử dụng nữa rồi. Máy tính ngày nay cũng không hoạt động với những cơ chế cổ điển đó. Việc nó phải làm là nhận tín hiệu từ bàn phím và sẽ tự quyết định thực hiện hành động gì với mỗi phím người dùng bấm. Vì vậy cùng một phím nhưng có thể có rất nhiều tác dụng khác nhau, tùy thuộc vào phần mềm.

Ngày nay, phím Return/Enter trên bàn phím khi được bấm sẽ có những hành động sau:

  • Xuống dòng, con trỏ sẽ nhảy về đầu dòng tiếp theo (hoạt động của phím Return)
  • Gửi lệnh để máy tính thực hiện (hoạt động của phím Enter)

Ngoài ra máy tính đều có giao diện đồ họa, và Return/Enter có thể được dùng để gửi form, gửi input (giống như ấn OK hay Submit một hộp thoại vậy).

Với các bàn phím dành cho PC (bắt đầu từ IBM Model F), phím Enter sẽ có chữ “Enter” kèm với ký hiệu . Đây là ký hiệu của Return với hàm ý là phím này có chức năng của cả hai phím. Nhưng vì Return không được ghi lên phím, rất nhiều người (trong đó có tôi) đã hiểu nhầm rằng ký hiệu là ký hiệu của Enter.

Thực ra chuẩn Unicode thì phải là ký hiệu . Nhưng ký hiệu này được hiển thị với đa số các font sẽ có móc ở đầu. Khiến cho ý nghĩa của nó về việc xuống dòng không hoàn toàn chính xác nên ký hiệu trên được dùng để thay thế.

Để ý kỹ một chút thì bàn phím dành cho PC sẽ có hai phím Enter như hình ảnh dưới đây. Trong đó chỉ có phím Enter bên trái là có ký hiệu Return.

windows keyboard
Nguồn: Diatec

Mặc dù vậy, với Windows, hai phím Enter này đều hoạt động như nhau. Cụ thể cả hai đều được hệ điều hành nhận keycode 13 (Carriage Return chuẩn ASCII). Nghĩa là các phần mềm chạy trên Windows sẽ không thể phân biệt được hai phím này. Vẫn có thể có ngoại lệ nếu phần mềm đó hoạt động ở tầng thấp (làm việc trực tiếp với tín hiệu từ cổng USB chẳng hạn), vì suy cho cùng, đây vẫn là hai phím riêng biệt trên bàn phím và nó sẽ truyền những tín hiệu khác nhau thông qua các cổng kết nối.

Máy Mac thì khác, phím Return tiếp tục được gọi là Return (và không kèm theo ký hiệu nào). Với bàn phím full size mà Apple bán ra, sẽ có thêm phím Enter ở khu phím số. Vậy là máy Mac vẫn có đủ Return và Enter. Cách sắp xếp bàn phím này xuất hiện trên máy Apple Lisa vào năm 1983, được chuyển sang Mac vào năm 1984 và vẫn tiếp tục được duy trì đến tận bây giờ.

apple keyboard
Nguồn: Apple

Trong môi trường phát triển cũ của máy Mac gọi là Macintosh Programmer’s Workshop, Return được sử dụng để soạn thảo trong khi Enter được dùng để thực thi lệnh.

Ngày nay, với hệ điều hành macOS, hai phím này sẽ cho ra hai mã khác nhau (36 và 76). Mặc dù vậy, hầu hết phần mềm hoạt động trên macOS vẫn giống như Windows, nghĩa là xử lý hai phím này giống hệt nhau. Một ví dụ hiếm hoi coi đây là hai phím riêng biệt là phần mềm iTunes: Return là lệnh bắt đầu phát một bài hát còn Enter là để đổi tên.

Với macOS, người dùng có thể nhấn Fn+Return để nhận kết quả là phím Enter. Tổ hợp phím này xuất hiện vì hầu hết bàn phím đi kèm theo máy MacBook đều không có phím Enter.

Với các bản phân phối Linux thì hơi đặc thù một chút. Gần như người dùng sẽ không thể mua được bàn phím nào sản xuất riêng cho Linux trên thị trường. Hệ điều hành này được xây dựng để tương thích tốt với bàn phím dành cho Windows.

Với Linux, hai phím Enter trên bàn phím sẽ có keycode khác nhau (28 và 96). Tuy nhiên, khác với macOS, hai phím này được gọi là Enter (hoặc Keyboard Enter) và Keypad Enter. Có rất nhiều bản phân phối khác nhau, nên khó mà kết luận được hai phím này hoạt động như thế nào trên Linux. Từ trải nghiệm cá nhân của tôi thì phần mềm hoạt động trên Linux cũng xử lý hai phím này giống hệt nhau.

Kết luận

Tóm lại là Return và Enter thực sự là hai phím khác nhau. Từ xưa chúng đã khác nhau và ngày nay chúng vẫn là hai phím khác nhau. Nhưng chỉ có máy Mac mới có phím Return và cả Enter, còn Windows thì chỉ có phím Enter thôi. Dù là hai phím khác nhau nhưng về mặt trải nghiệm người dùng thì trong hầu hết trường hợp, không có sự khác biệt giữa hai phím này.

Biết được thông tin này sẽ rất có ích. Ví dụ như viết một chương trình trên macOS, thay vì thông báo

Press Enter to continue..

thì thông báo

Press Return to continue..

sẽ pro hơn.

Tôi xin lỗi nếu bài viết có bất kỳ typo nào. Nếu bạn nhận thấy điều gì bất thường, xin hãy cho tôi biết.

Nếu có bất điều gì muốn nói, bạn có thể liên hệ với tôi qua các mạng xã hội, tạo discussion hoặc report issue trên Github.