From 636b5d9c88c04d6a3eb9ab5db27b629345bcbf38 Mon Sep 17 00:00:00 2001 From: Becky Conning Date: Fri, 14 Jun 2013 13:50:25 +0200 Subject: [PATCH 1/5] Potentially fix for single character string keycodes in 1.9 and above --- lib/net/vnc.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/net/vnc.rb b/lib/net/vnc.rb index 1af5c8e..cc34d56 100644 --- a/lib/net/vnc.rb +++ b/lib/net/vnc.rb @@ -178,11 +178,11 @@ def key_press(*args) end def get_key_code which - if String === which + if which.class == String if which.length != 1 raise ArgumentError, 'can only get key_code of single character strings' end - which[0] + which[0].ord else KEY_MAP[which] end From 0fbccbc5bfc9f5bbb91cab0aa5f4d6e4f01a4c2f Mon Sep 17 00:00:00 2001 From: Becky Conning Date: Mon, 17 Jun 2013 12:00:39 +0200 Subject: [PATCH 2/5] Fixing type for ruby >= 1.9 --- lib/net/vnc.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/net/vnc.rb b/lib/net/vnc.rb index cc34d56..4e1c298 100644 --- a/lib/net/vnc.rb +++ b/lib/net/vnc.rb @@ -149,7 +149,7 @@ def type text, options={} packet = 0.chr * 8 packet[0] = 4.chr text.split(//).each do |char| - packet[7] = char[0] + packet[7] = char.ord packet[1] = 1.chr socket.write packet packet[1] = 0.chr From 2fca0d2de4ecb95916d65c9dac368c68b9567598 Mon Sep 17 00:00:00 2001 From: Becky Conning Date: Mon, 17 Jun 2013 12:12:48 +0200 Subject: [PATCH 3/5] Update vnc.rb --- lib/net/vnc.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/net/vnc.rb b/lib/net/vnc.rb index 4e1c298..04d300b 100644 --- a/lib/net/vnc.rb +++ b/lib/net/vnc.rb @@ -149,7 +149,7 @@ def type text, options={} packet = 0.chr * 8 packet[0] = 4.chr text.split(//).each do |char| - packet[7] = char.ord + packet[7] = char.ord.chr packet[1] = 1.chr socket.write packet packet[1] = 0.chr From 2e4d012290787010ba7bf3028c77cf74c074691e Mon Sep 17 00:00:00 2001 From: Becky Conning Date: Mon, 17 Jun 2013 12:33:10 +0200 Subject: [PATCH 4/5] Fixing Ruby >= 1.9 issues --- lib/net/vnc.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/net/vnc.rb b/lib/net/vnc.rb index 04d300b..83a3da6 100644 --- a/lib/net/vnc.rb +++ b/lib/net/vnc.rb @@ -279,7 +279,7 @@ def read_packet type case type when 3 # ServerCutText socket.read 3 # discard padding bytes - len = socket.read(4).unpack('N')[0] + len = socket.read(4).unpack('N').ord @mutex.synchronize { @clipboard = socket.read len } else raise NotImplementedError, 'unhandled server packet type - %d' % type @@ -292,7 +292,7 @@ def packet_reading_thread begin break if @packet_reading_state != :loop next unless IO.select [socket], nil, nil, 2 - type = socket.read(1)[0] + type = socket.read(1).ord read_packet type rescue warn "exception in packet_reading_thread: #{$!.class}:#{$!}" From c0a2bfb08cdd7210d4acd817a7e757a57a9a0340 Mon Sep 17 00:00:00 2001 From: Becky Conning Date: Mon, 17 Jun 2013 12:54:40 +0200 Subject: [PATCH 5/5] Update vnc.rb --- lib/net/vnc.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/net/vnc.rb b/lib/net/vnc.rb index 83a3da6..b01fdc6 100644 --- a/lib/net/vnc.rb +++ b/lib/net/vnc.rb @@ -279,7 +279,7 @@ def read_packet type case type when 3 # ServerCutText socket.read 3 # discard padding bytes - len = socket.read(4).unpack('N').ord + len = socket.read(4).unpack('N')[0] @mutex.synchronize { @clipboard = socket.read len } else raise NotImplementedError, 'unhandled server packet type - %d' % type