Shift-Space trong ít hơn


9

Trong các trình duyệt web hiện đại và phần mềm khác có nội dung văn bản, Spacecuộn xuống ít nhiều một màn hình. ShiftSpacecuộn lên trong mọi thứ nhưng less.

Làm thế nào một người có thể sử dụng ShiftSpaceđể cuộn lên trong less? Hoặc cách khác, có một máy nhắn tin khác (tương thích POSIX là yêu cầu duy nhất của tôi) có thể thực hiện công việc không?

Tôi đã nói với một số trình giả lập thiết bị đầu cuối và một số thư viện UI thiết bị đầu cuối (ncurses?), Không nhận ra ShiftSpace. Đó có phải là một vấn đề hợp lệ?


Có gì sai với nút PGUp của bạn ? Không đủ lớn?
goldilocks

@goldilocks: Không có gì sai khi muốn sử dụng Shift-Space, đặc biệt nếu bạn đã quen sử dụng nó với các công cụ khác. Không thể lessphân biệt giữa Không gian và Shift-Space.
Keith Thompson

Bạn có thể định cấu hình thiết bị đầu cuối (trình giả lập) để gửi bhoặc ^B(0x2) <shift-Space>. Lưu ý rằng bngay phía trên thanh không gian trong nhiều cấu hình bàn phím
Stéphane Chazelas

@KeithThndry: Tôi chỉ là một nhóm thân thiện. Tôi đồng cảm; Tôi muốn /sử dụng phổ biến dưới dạng "văn bản tìm kiếm" ala các công cụ phổ biến khác nhau, nhưng đồng thời tôi cũng cảnh giác với việc áp dụng các tiêu chuẩn meglomaniacal quá mức, điều đó thậm chí còn dễ dàng hơn để làm một cái gì đó có thể được thực hiện bằng một tổ hợp phím (có thể nhận biết phổ biến). Thật thú vị khi biết rằng trong trường hợp này, đó là một giới hạn kỹ thuật (xem câu trả lời của 200_success) và không phải là thiết kế cộc lốc giải thích.
goldilocks

1
@KeithThndry, xem translationstài nguyên cho tiện ích VT100.
Stéphane Chazelas

Câu trả lời:


6

Tôi nghĩ rằng bạn đã đưa ra một cuộc xung đột văn hóa gây ra bởi một hạn chế kỹ thuật. Vì Shift+ Spacetạo ra cùng một đầu ra như Space, mô hình thiết bị đầu cuối Unix xử lý chúng giống hệt nhau. Để phân biệt giữa hai loại này, bạn cần một môi trường lập trình hỗ trợ các sự kiện tăng / giảm phím. Điều đó có thể có trong X11 và trong các trình giả lập thiết bị đầu cuối hỗ trợ các phím ánh xạ lại. Một ví dụ về ánh xạ lại Shift+ Spaceđến PageUp:

# For [u]rxvt, in ~/.Xdefaults:
URxvt.keysym.Shift-space: \033[5~

1
Hầu hết các trình giả lập thiết bị đầu cuối đều hỗ trợ các phím ánh xạ lại, do đó, có thể thực hiện với hầu hết các trình giả lập thiết bị đầu cuối ( xterm -xrm 'XTerm.VT100.translations: #override Shift <KeyPress> space: string(0x2)'ví dụ như trong xterm hoặc bạn gửi cùng một chuỗi như đã gửi <PageUp>). Tất nhiên, điều đó sẽ khiến việc nhập văn bản trong khi giữ phím shift khó xử.
Stéphane Chazelas

1

Trong trình giả lập thiết bị đầu cuối, tính năng này sẽ ngắt nhập văn bản chữ hoa với các khoảng trắng được nhúng bằng cách giữ phím Shift. Ví dụ: nếu bạn muốn nhập "Đó là Tiêu đề", bạn phải phát hành Shift giữa "A" và "T". Giữ nó nhấn sẽ di chuyển con trỏ của bạn và sử dụng sai phần còn lại của những gì bạn nhập. Tôi tin rằng nó sẽ khó chịu hơn nhiều so với những gì bạn đạt được với tính năng cuộn lên.

Có hành vi thường xuyên khi gõ văn bản và cuộn lên bất cứ khi nào Space cuộn xuống sẽ yêu cầu thiết kế lại và hợp tác nặng nề từ các ứng dụng (ví dụ: một ứng dụng có thể chuyển đổi những gì Shift + Space gửi), tôi chắc chắn điều đó sẽ không xảy ra.

Sự khác biệt chính là một ứng dụng GUI biết "bối cảnh" cho dù bạn đang chỉnh sửa hay xem nội dung, trình giả lập thiết bị đầu cuối không có cách nào để biết điều này.


1

Trình giả lập thiết bị đầu cuối gửi cùng một ký tự trên SpaceShift+Space. Nếu họ không làm như vậy, thì sẽ rất khó để nhập văn bản trong khi giữ Shiftphím (xem câu trả lời của @ egmont mở rộng đối số đó).

Tuy nhiên, bạn có thể giải quyết vấn đề đó bằng cách ánh xạ Shift+Spacetới một chuỗi các ký tự sẽ kết thúc việc chèn một khoảng trắng theo mặc định và bạn có thể định cấu hình các ứng dụng như lesscuộn lên trên một phím nhấn như vậy.

Ví dụ, một chuỗi như vậy có thể là ` DEL SPC(thay đổi DELthành BStrên các hệ thống trong đó BS là erasenhân vật).

Đối với xterm, thêm tài nguyên:

XTerm.VT100.translations: #override \
  Shift <KeyPress> space: string("`") string(0x7f) string(" ") 

Và cấu hình lessvới:

printf '%s\n' '#command' '`\177\40 back-screen' | lesskey -

1

lesshiện không hỗ trợ này, nhưng nó chắc chắn có thể được thêm vào .

Nếu một chương trình sử dụng chuỗi điều khiển xterm để đặt modifyOtherKeysthành 2 bằng cách ghi \e[>4;2mvào thiết bị đầu cuối, thì xtermchú thích các khóa có thông tin bổ sung về các phím bổ trợ nào đang hoạt động. Cụ thể cho Spacekhóa, với modifyOtherKeyshoạt động trong xterm, Shift+ Spacebiến thành \e[27;2;32~. lesssẽ phải giải thích chính xác điều này là Shift+ Spacevà sau đó kích hoạt cuộn lên.

Mặc dù điều này chắc chắn sẽ hoạt động trong xterm, nhưng nó sẽ không hoạt động trong mọi ứng dụng đầu cuối. Nhưng những thiết bị đầu cuối không nhận ra chuỗi thoát này để bật modifyOtherKeyssẽ chỉ bỏ qua chuỗi thoát đó và tiếp tục gửi các chương trình một ký tự không gian bình thường khi bạn nhấn Shift+ Space.

Có một trang khá chi tiết trên trang web xterm giải thích cách tính modifyOtherKeysmã: https://invisible-island.net/xterm/modified-keys.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.