Question

Je suis actuellement en utilisant ce code à saisir les coups de clés, mais je suis absent par exemple Maj / Alt clés comme Ctrl + Maj + S , Ctrl + Maj + ? , Alt + S , etc.

  require 'curses'

  Curses.noecho
  Curses.raw
  Curses.stdscr.keypad(true)
  Curse.nonl

  count = 0
  loop do
    count = (count + 1) % 20
    key = Curses.getch
    break if key == ?\C-c
    Curses.setpos(count,0)
    Curses.addstr("#{key.inspect}     ");
  end

Est-il possible de les capturer?

Aussi: Comment distinguer Ctrl + J / Ctrl + M de Ctrl + Entrée / Entrée , qui donnent les mêmes codes-clés (10 / 13)?

Était-ce utile?

La solution

  

également: comment distinguer ctrl + j / Ctrl + m + ctr entrer / entrée,   qui donnent les mêmes codes de clés (10/13)

Longue histoire courte - vous ne pouvez pas. Le terminal donnera presque certainement les mêmes octets pour chacun. S'il vous plaît lire

http://www.leonerd.org.uk/hacks/fixterms/

Cela dit, si vous vous sentez particulièrement courageux, vous pouvez essayer mon libtermkey

http://www.leonerd.org.uk/code/libtermkey/

qui sera au moins analyser correctement les choses comme Ctrl-arrow. Il n'a pas (encore) un binding Ruby, mais la présence des deux les Perl et Python suggère qu'il devrait être assez facile à une écriture.

Enfin, si vous vous sentez même vous pouvez exécuter courageux le terminal je l'ai écrit, pangoterm, qui a des moyens génériques de coder toutes les clés Unicode arbitrairement modifiées, il peut donc distinguer Ctrl-m Entrez, etc ...

https://launchpad.net/pangoterm

Cependant, en dehors de ceux-ci, les restes de réponse « vous ne pouvez pas ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top